Showing preview only (3,372K chars total). Download the full file or copy to clipboard to get everything.
Repository: denoland/denokv
Branch: main
Commit: 7a2ab6250e94
Files: 149
Total size: 3.2 MB
Directory structure:
gitextract_yq2a4xir/
├── .dockerignore
├── .github/
│ ├── npm_publish.sh
│ └── workflows/
│ ├── ci.yml
│ ├── docker.yml
│ └── npm.yml
├── .gitignore
├── .rustfmt.toml
├── Cargo.toml
├── Dockerfile
├── LICENSE
├── README.md
├── denokv/
│ ├── Cargo.toml
│ ├── config.rs
│ ├── main.rs
│ └── tests/
│ └── integration.rs
├── npm/
│ ├── LICENSE
│ ├── README.md
│ ├── deno.jsonc
│ ├── napi/
│ │ ├── .editorconfig
│ │ ├── .eslintrc.yml
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── .prettierignore
│ │ ├── .taplo.toml
│ │ ├── .yarn/
│ │ │ └── releases/
│ │ │ └── yarn-4.0.1.cjs
│ │ ├── .yarnrc.yml
│ │ ├── Cargo.toml
│ │ ├── __test__/
│ │ │ └── index.spec.ts
│ │ ├── build.rs
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── npm/
│ │ │ ├── darwin-arm64/
│ │ │ │ ├── README.md
│ │ │ │ └── package.json
│ │ │ ├── darwin-x64/
│ │ │ │ ├── README.md
│ │ │ │ └── package.json
│ │ │ ├── linux-x64-gnu/
│ │ │ │ ├── README.md
│ │ │ │ └── package.json
│ │ │ └── win32-x64-msvc/
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── lib.rs
│ │ └── tsconfig.json
│ └── src/
│ ├── bytes.ts
│ ├── check.ts
│ ├── e2e.ts
│ ├── e2e_test.ts
│ ├── in_memory.ts
│ ├── kv_connect_api.ts
│ ├── kv_key.ts
│ ├── kv_key_test.ts
│ ├── kv_types.ts
│ ├── kv_u64.ts
│ ├── kv_u64_test.ts
│ ├── kv_util.ts
│ ├── napi_based.ts
│ ├── native.ts
│ ├── npm.ts
│ ├── proto/
│ │ ├── index.ts
│ │ ├── messages/
│ │ │ ├── com/
│ │ │ │ ├── deno/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── kv/
│ │ │ │ │ ├── backup/
│ │ │ │ │ │ ├── BackupKvMutationKind.ts
│ │ │ │ │ │ ├── BackupKvPair.ts
│ │ │ │ │ │ ├── BackupMutationRange.ts
│ │ │ │ │ │ ├── BackupReplicationLogEntry.ts
│ │ │ │ │ │ ├── BackupSnapshotRange.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── datapath/
│ │ │ │ │ │ ├── AtomicWrite.ts
│ │ │ │ │ │ ├── AtomicWriteOutput.ts
│ │ │ │ │ │ ├── AtomicWriteStatus.ts
│ │ │ │ │ │ ├── Check.ts
│ │ │ │ │ │ ├── Enqueue.ts
│ │ │ │ │ │ ├── KvEntry.ts
│ │ │ │ │ │ ├── KvValue.ts
│ │ │ │ │ │ ├── Mutation.ts
│ │ │ │ │ │ ├── MutationType.ts
│ │ │ │ │ │ ├── ReadRange.ts
│ │ │ │ │ │ ├── ReadRangeOutput.ts
│ │ │ │ │ │ ├── SnapshotRead.ts
│ │ │ │ │ │ ├── SnapshotReadOutput.ts
│ │ │ │ │ │ ├── SnapshotReadStatus.ts
│ │ │ │ │ │ ├── ValueEncoding.ts
│ │ │ │ │ │ ├── Watch.ts
│ │ │ │ │ │ ├── WatchKey.ts
│ │ │ │ │ │ ├── WatchKeyOutput.ts
│ │ │ │ │ │ ├── WatchOutput.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── index.ts
│ │ │ │ └── index.ts
│ │ │ └── index.ts
│ │ └── runtime/
│ │ ├── Long.ts
│ │ ├── array.ts
│ │ ├── async/
│ │ │ ├── async-generator.ts
│ │ │ ├── event-buffer.ts
│ │ │ ├── event-emitter.ts
│ │ │ ├── observer.ts
│ │ │ └── wait.ts
│ │ ├── base64.ts
│ │ ├── client-devtools.ts
│ │ ├── json/
│ │ │ └── scalar.ts
│ │ ├── rpc.ts
│ │ ├── scalar.ts
│ │ └── wire/
│ │ ├── deserialize.ts
│ │ ├── index.ts
│ │ ├── scalar.ts
│ │ ├── serialize.ts
│ │ ├── varint.ts
│ │ └── zigzag.ts
│ ├── proto_based.ts
│ ├── remote.ts
│ ├── scripts/
│ │ ├── build_npm.ts
│ │ ├── generate_napi_index.ts
│ │ └── process.ts
│ ├── sleep.ts
│ ├── unraw_watch_stream.ts
│ ├── v8.ts
│ └── v8_test.ts
├── proto/
│ ├── Cargo.toml
│ ├── README.md
│ ├── build.rs
│ ├── codec.rs
│ ├── convert.rs
│ ├── interface.rs
│ ├── kv-connect.md
│ ├── lib.rs
│ ├── limits.rs
│ ├── protobuf/
│ │ ├── com.deno.kv.backup.rs
│ │ └── com.deno.kv.datapath.rs
│ ├── protobuf.rs
│ ├── schema/
│ │ ├── backup.proto
│ │ ├── datapath.proto
│ │ ├── kv-metadata-exchange-request.json
│ │ ├── kv-metadata-exchange-response.v1.json
│ │ └── kv-metadata-exchange-response.v2.json
│ └── time.rs
├── remote/
│ ├── Cargo.toml
│ ├── lib.rs
│ └── time.rs
├── rust-toolchain.toml
├── scripts/
│ └── benchmark.ts
├── sqlite/
│ ├── Cargo.toml
│ ├── backend.rs
│ ├── lib.rs
│ ├── sum_operand.rs
│ └── time.rs
└── timemachine/
├── Cargo.toml
└── src/
├── backup.rs
├── backup_source_s3.rs
├── key_metadata.rs
├── lib.rs
└── time_travel.rs
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
target/
================================================
FILE: .github/npm_publish.sh
================================================
#!/bin/sh
# abort on any non-zero exit code
set -e
# ensure required environment variables are defined
if [ -z "$VERSION" ]; then
echo "\$VERSION is required"
exit 1
fi
# install deno
DENO_VERSION="v1.38.3"
curl -fsSL https://deno.land/x/install/install.sh | DENO_INSTALL=./deno-$DENO_VERSION sh -s $DENO_VERSION
# run unit tests as a sanity check
NO_COLOR=1 ./deno-$DENO_VERSION/bin/deno test --allow-read --allow-write --unstable
# build root package, then publish it (and native subpackages)
NO_COLOR=1 ./deno-$DENO_VERSION/bin/deno run --unstable --allow-all ./src/scripts/build_npm.ts $VERSION --napi=$VERSION --publish=$(which npm) ${DRY_RUN:+--dry-run}
================================================
FILE: .github/workflows/ci.yml
================================================
name: ci
on:
push:
branches: ["main"]
tags: ["[0-9]+.[0-9]+.[0-9]+"]
pull_request:
branches: ["main"]
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: full
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
fail-fast: false
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- name: Install Rust
uses: dsherret/rust-toolchain-file@v1
- uses: Swatinem/rust-cache@v2
- name: Install protoc
uses: arduino/setup-protoc@v2
with:
version: "21.12"
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Check formatting
run: cargo fmt -- --check
- name: Check linting
run: cargo clippy --release --all-targets --all-features -- -D clippy::all
- name: Check generated protobuf sources are up to date
if: runner.os == 'Linux' || runner.os == 'macOS'
run: |-
cargo check -p denokv_proto --features='build_protos'
cargo fmt -p denokv_proto
git diff --exit-code
- name: Build
run: cargo build --release --all-targets --all-features --tests -v
- name: Test
run: cargo test --release -- --nocapture
- name: Prepare artifact (Linux)
if: runner.os == 'Linux'
run: |-
cd target/release
zip -r denokv-x86_64-unknown-linux-gnu.zip denokv
- name: Prepare artifact (macOS)
if: runner.os == 'macOS'
run: |-
cd target/release
zip -r denokv-x86_64-apple-darwin.zip denokv
- name: Prepare artifact (Windows)
if: runner.os == 'Windows'
run: |-
Compress-Archive -CompressionLevel Optimal -Force -Path target/release/denokv.exe -DestinationPath target/release/denokv-x86_64-pc-windows-msvc.zip
- name: Upload artifact (Linux)
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: denokv-x86_64-unknown-linux-gnu.zip
path: target/release/denokv-x86_64-unknown-linux-gnu.zip
- name: Upload artifact (macOS)
if: runner.os == 'macOS'
uses: actions/upload-artifact@v4
with:
name: denokv-x86_64-apple-darwin.zip
path: target/release/denokv-x86_64-apple-darwin.zip
- name: Upload artifact (Windows)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v4
with:
name: denokv-x86_64-pc-windows-msvc.zip
path: target/release/denokv-x86_64-pc-windows-msvc.zip
- name: Upload release to GitHub
uses: softprops/action-gh-release@v0.1.15
if: github.repository == 'denoland/denokv' && startsWith(github.ref, 'refs/tags/')
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
with:
files: |-
target/release/denokv-x86_64-pc-windows-msvc.zip
target/release/denokv-x86_64-unknown-linux-gnu.zip
target/release/denokv-x86_64-apple-darwin.zip
draft: true
- name: Publish to crates.io
if: runner.os == 'Linux' && github.repository == 'denoland/denokv' && startsWith(github.ref, 'refs/tags/')
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: |-
git reset --hard
cargo publish -vv -p denokv_proto
cargo publish -vv -p denokv_sqlite
cargo publish -vv -p denokv_remote
cargo publish -vv -p denokv_timemachine
cargo publish -vv -p denokv
================================================
FILE: .github/workflows/docker.yml
================================================
name: docker
on:
push:
branches: ["main"]
tags: ["[0-9]+.[0-9]+.[0-9]+"]
pull_request:
branches: ["main"]
jobs:
build:
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Set up QEMU (for multi-platform builds)
uses: docker/setup-qemu-action@v2
- name: Clone repository
uses: actions/checkout@v3
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build amd64 image for testing
run: |
docker buildx create --use
docker buildx build --platform linux/amd64 \
--tag denokv:test \
--output type=docker .
- name: Smoke test image
run: |
docker run --platform linux/amd64 -i --init denokv:test --help
- name: Log in to ghcr.io
if: github.repository == 'denoland/denokv' && startsWith(github.ref, 'refs/tags/')
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin
- name: Build and push multi-platform image
if: github.repository == 'denoland/denokv' && startsWith(github.ref, 'refs/tags/')
run: |
docker buildx build --platform linux/amd64,linux/arm64 \
--tag ghcr.io/denoland/denokv:${GITHUB_REF#refs/*/} \
--tag ghcr.io/denoland/denokv:latest \
--push .
================================================
FILE: .github/workflows/npm.yml
================================================
name: npm
env:
DEBUG: napi:*
APP_NAME: deno-kv-napi
MACOSX_DEPLOYMENT_TARGET: '10.13'
'on':
push:
branches:
- main
tags:
- '**'
paths:
- '.github/workflows/npm.yml'
- '.github/*.sh'
- 'npm/src/**'
- 'npm/napi/**'
- '!npm/napi/**/*.md'
- '!npm/napi/**/*.gitignore'
- '!npm/napi/.editorconfig'
- '!npm/napi/docs/**'
pull_request: null
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
strategy:
fail-fast: false
matrix:
settings:
- host: macos-latest
target: x86_64-apple-darwin
build: |
brew install protobuf
yarn build
strip -x *.node
- host: windows-latest
build: |
vcpkg install protobuf
export PROTOC=C:/vcpkg/packages/protobuf_x64-windows/tools/protobuf/protoc.exe
yarn build
target: x86_64-pc-windows-msvc
- host: ubuntu-latest
target: x86_64-unknown-linux-gnu
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
build: |-
set -e &&
rustup install 1.88.0 &&
rustup default 1.88.0 &&
apt-get update &&
apt-get -y install protobuf-compiler &&
yarn build --target x86_64-unknown-linux-gnu &&
strip *.node
- host: macos-latest
target: aarch64-apple-darwin
build: |
sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*;
export CC=$(xcrun -f clang);
export CXX=$(xcrun -f clang++);
SYSROOT=$(xcrun --sdk macosx --show-sdk-path);
export CFLAGS="-isysroot $SYSROOT -isystem $SYSROOT";
brew install protobuf
yarn build --target aarch64-apple-darwin
strip -x *.node
name: stable - ${{ matrix.settings.target }} - node@18
runs-on: ${{ matrix.settings.host }}
steps:
- uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
if: ${{ !matrix.settings.docker }}
with:
node-version: 18
cache: yarn
cache-dependency-path: ./npm/napi/yarn.lock
- name: Remove rust-toolchain.toml (conflicts with mac arm64 build)
run: rm rust-toolchain.toml
- name: Install
uses: dtolnay/rust-toolchain@stable
if: ${{ !matrix.settings.docker }}
with:
toolchain: stable
targets: ${{ matrix.settings.target }}
- name: Cache cargo
uses: actions/cache@v3
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
.cargo-cache
target/
key: ${{ matrix.settings.target }}-cargo-${{ matrix.settings.host }}
- name: Check formatting
run: cargo fmt -- --check
working-directory: ./npm/napi
- name: Setup node x86
if: matrix.settings.target == 'i686-pc-windows-msvc'
run: yarn config set supportedArchitectures.cpu "ia32"
shell: bash
working-directory: ./npm/napi
- name: Install dependencies
run: yarn install
working-directory: ./npm/napi
- name: Setup node x86
uses: actions/setup-node@v4
if: matrix.settings.target == 'i686-pc-windows-msvc'
with:
node-version: 18
cache: yarn
architecture: x86
cache-dependency-path: ./npm/napi/yarn.lock
- name: Build in docker
uses: addnab/docker-run-action@v3
if: ${{ matrix.settings.docker }}
with:
image: ${{ matrix.settings.docker }}
options: '--user 0:0 -v ${{ github.workspace }}/.cargo-cache/git/db:/usr/local/cargo/git/db -v ${{ github.workspace }}/.cargo/registry/cache:/usr/local/cargo/registry/cache -v ${{ github.workspace }}/.cargo/registry/index:/usr/local/cargo/registry/index -v ${{ github.workspace }}:/build -w /build/npm/napi'
run: ${{ matrix.settings.build }}
- name: Build
run: ${{ matrix.settings.build }}
if: ${{ !matrix.settings.docker }}
shell: bash
working-directory: ./npm/napi
- name: Check linting # needs to run after build so protoc is available
run: cargo clippy --release --all-targets --all-features -- -D clippy::all
if: ${{ !matrix.settings.docker }}
working-directory: ./npm/napi
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: bindings-${{ matrix.settings.target }}
path: npm/napi/${{ env.APP_NAME }}.*.node
if-no-files-found: error
test-macOS-windows-binding:
name: Test bindings on ${{ matrix.settings.target }} - node@${{ matrix.node }}
needs:
- build
strategy:
fail-fast: false
matrix:
settings:
- host: windows-latest
target: x86_64-pc-windows-msvc
- host: macos-latest
target: x86_64-apple-darwin
node:
- '18'
- '20'
runs-on: ${{ matrix.settings.host }}
steps:
- uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: yarn
cache-dependency-path: ./npm/napi/yarn.lock
- name: Install dependencies
run: yarn install
working-directory: ./npm/napi
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: bindings-${{ matrix.settings.target }}
path: ./npm/napi
- name: List packages
run: ls -R .
shell: bash
working-directory: ./npm/napi
- name: Test bindings
run: yarn test
working-directory: ./npm/napi
test-linux-x64-gnu-binding:
name: Test bindings on Linux-x64-gnu - node@${{ matrix.node }}
needs:
- build
strategy:
fail-fast: false
matrix:
node:
- '18'
- '20'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: yarn
cache-dependency-path: ./npm/napi/yarn.lock
- name: Install dependencies
run: yarn install
working-directory: ./npm/napi
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: bindings-x86_64-unknown-linux-gnu
path: ./npm/napi
- name: List packages
run: ls -R .
shell: bash
working-directory: ./npm/napi
- name: Test bindings
run: docker run --rm -v $(pwd):/build -w /build node:${{ matrix.node }}-slim yarn test
working-directory: ./npm/napi
publish:
name: Publish
runs-on: ubuntu-latest
permissions:
id-token: write # to publish provenance
needs:
- test-macOS-windows-binding
- test-linux-x64-gnu-binding
steps:
- uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 18
cache: yarn
cache-dependency-path: ./npm/napi/yarn.lock
- name: Install dependencies
run: yarn install
working-directory: ./npm/napi
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: npm/napi/artifacts
- name: Move artifacts
run: yarn artifacts
working-directory: ./npm/napi
- name: List packages
run: ls -R ./npm
working-directory: ./npm/napi
shell: bash
- name: Publish Dry-Run
if: "!(github.repository == 'denoland/denokv' && startsWith(github.ref, 'refs/tags/'))"
run: |
npm config set provenance true
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
VERSION=0.0.0-dryrun DRY_RUN=1 ../.github/npm_publish.sh
working-directory: ./npm
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish
if: github.repository == 'denoland/denokv' && startsWith(github.ref, 'refs/tags/')
run: |
echo "$TAG_NAME"
npm config set provenance true
if grep "^v\?[0-9]\+\.[0-9]\+\.[0-9]\+" <<< $TAG_NAME;
then
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
VERSION=$TAG_NAME ../.github/npm_publish.sh
else
echo "Not a release, skipping publish"
fi
working-directory: ./npm
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
TAG_NAME: ${{ github.ref_name }}
================================================
FILE: .gitignore
================================================
target/
/*.sqlite*
================================================
FILE: .rustfmt.toml
================================================
max_width = 80
tab_spaces = 2
edition = "2021"
================================================
FILE: Cargo.toml
================================================
[workspace]
members = ["denokv", "proto", "remote", "sqlite", "timemachine"]
resolver = "2"
[workspace.package]
license = "MIT"
repository = "https://github.com/denoland/denokv"
authors = ["the Deno authors"]
edition = "2021"
[workspace.dependencies]
denokv_proto = { version = "0.13.0", path = "./proto" }
denokv_sqlite = { version = "0.13.0", path = "./sqlite" }
denokv_remote = { version = "0.13.0", path = "./remote" }
denokv_timemachine = { version = "0.13.0", path = "./timemachine" }
anyhow = "1"
async-stream = "0.3"
async-trait = "0.1"
aws-config = "0.55.3"
aws-sdk-s3 = "0.28.0"
aws-smithy-async = "0.55.3"
aws-smithy-client = "0.55.3"
aws-smithy-types = "0.55.3"
axum = { version = "0.6", features = ["macros", "http2"] }
bytes = "1"
chrono = { version = "0.4", default-features = false, features = ["std", "serde"] }
clap = { version = "4", features = ["derive", "env"] }
constant_time_eq = "0.3"
env_logger = "0.10.0"
futures = "0.3.28"
hex = "0.4"
http = "1"
hyper = { version = "0.14", features = ["client"] }
hyper-proxy = { version = "0.9.1", default-features = false }
log = "0.4.20"
num-bigint = "0.4"
prost = "0.13"
prost-build = "0.13"
rand = "0.8.5"
reqwest = { version = "0.12.4", default-features = false, features = ["json", "stream"] }
rusqlite = "0.37.0"
serde = { version = "1", features = ["derive"] }
serde_json = "1.0.107"
tempfile = "3"
thiserror = "2"
deno_error = { version = "0.7.0", features = ["url", "serde_json", "serde"] }
tokio = { version = "1.33.0", features = ["full"] }
tokio-stream = "0.1"
tokio-util = { version = "0.7", features = ["full"] }
url = "2"
uuid = { version = "1.4.1", features = ["v4", "serde"] }
v8_valueserializer = "0.1.1"
================================================
FILE: Dockerfile
================================================
FROM rust:1.83-bookworm as builder
RUN apt-get update && apt-get install -y protobuf-compiler
WORKDIR /usr/src/denokv
COPY . .
RUN cargo build --release
FROM gcr.io/distroless/cc-debian12:debug
LABEL org.opencontainers.image.source=https://github.com/denoland/denokv
LABEL org.opencontainers.image.description="A self-hosted backend for Deno KV"
LABEL org.opencontainers.image.licenses=MIT
COPY --from=builder /usr/src/denokv/target/release/denokv /usr/local/bin/
ENTRYPOINT ["/usr/local/bin/denokv"]
CMD ["serve"]
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2023 the Deno authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# denokv
A self-hosted backend for [Deno KV](https://deno.com/kv), the JavaScript first key-value database:
- Seamlessly integrated JavaScript APIs
- ACID transactions
- Multiple consistency levels for optimal performance for every usecase


Deno KV can be used with the built-in single instance database in the CLI,
useful for testing and development, with a hosted and [scalable backend](https://deno.com/blog/building-deno-kv) on
[Deno Deploy](https://deno.com/deploy), or with this self-hostable Deno KV
backend.
To run `denokv`, just run:
```sh
docker run -it --init -p 4512:4512 -v ./data:/data ghcr.io/denoland/denokv --sqlite-path /data/denokv.sqlite serve --access-token <random-token>
```
Then run your Deno program and specify the access token in the
`DENO_KV_ACCESS_TOKEN` environment variable:
```ts
const kv = await Deno.openKv("http://localhost:4512");
```
The self-hosted `denokv` backend is built on the same robust SQLite backend as
the built-in single instance database in the CLI. It is designed to be run on a
VPS or Kubernetes cluster statefully, with Deno processes connecting via the
network using [KV Connect](https://docs.deno.com/kv/manual/on_deploy#connect-to-managed-databases-from-outside-of-deno-deploy).
The standalone `denokv` binary is designed to handle thousands of concurrent
requests, from hundreds of different Deno processes. It is built on top of the
robust SQLite database, and uses non-blocking IO to ensure excellent performance
even in the face of hundreds of concurrent connections.
Just like the Deno CLI, `denokv` is MIT licensed, free and open source.
Read more in [the announcement of self-hosted Deno KV](https://deno.com/blog/kv-is-open-source-with-continuous-backup).
## When should I use this?
If you need more than a single Deno process to access the same KV database, and
you are ok with running a server, keeping `denokv` updated, handling backups,
and performing regular maintenance, then this is for you.
You can use a hosted KV database on Deno Deploy if you don't want to self-host
and manage a `denokv` server.
If you are just need a backend for local development or testing, you can use the
Deno KV backend built into the Deno CLI. You can open a temporary in memory KV
database with `Deno.openKv(":memory:")` or a persistent database by specifying a
path like `Deno.openKv("./my-database.sqlite")`.
## How to run
### Docker on a VPS
> Ensure that you are running on a service that supports persistent storage, and
> does not perform auto-scaling beyond a single instance. This means you can not
> run `denokv` on Google Cloud Run or AWS Lambda.
Install Docker on your VPS and create a directory for the database to store data
in.
```sh
$ mkdir -p /data
```
Then run the `denokv` Docker image, mounting the `/data` directory as a volume
and specifying a random access token.
```sh
docker run -it --init -p 4512:4512 -v ./data:/data ghcr.io/denoland/denokv --sqlite-path /data/denokv.sqlite serve --access-token <random-token>
```
You can now access the database from your Deno programs by specifying the access
token in the `DENO_KV_ACCESS_TOKEN` environment variable, and the host and port
of your VPS in the URL passed to `Deno.openKv`.
You should additionally add a HTTPS terminating proxy or loadbalancer in front
of `denokv` to ensure that all communication happens over TLS. Not using TLS can
pose a significant security risk. The HTTP protocol used by Deno KV is
compatible with any HTTP proxy, such as `caddy`, `nginx`, or a loadbalancer.
### Fly.io
You can easily host `denokv` on https://fly.io.
> Note: Fly.io is a paid service. You will need to add a credit card to your
> account to use it.
Sign up to Fly.io and
[install the `flyctl` CLI](https://fly.io/docs/hands-on/install-flyctl/).
Sign into the CLI with `flyctl auth login`.
Create a new app with `flyctl apps create`.
Create a `fly.toml` file with the following contents. Make sure to replace the
`<your-app-name>` and `<region>` placeholders with your app name and the region
you want to deploy to.
```toml
app = "<your-app-name>"
primary_region = "<region>"
[build]
image = "ghcr.io/denoland/denokv:latest"
[http_service]
internal_port = 4512
force_https = true
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
[env]
DENO_KV_SQLITE_PATH="/data/denokv.sqlite3"
# access token is set via `flyctl secrets set`
[mounts]
destination = "/data"
source = "denokv_data"
```
Run `flyctl volumes create denokv_data` to create a volume to store the database
in.
Run `flyctl secrets set DENO_KV_ACCESS_TOKEN=<random-token>` to set the access
token. Make sure to replace `<random-token>` with a random string. Keep this
token secret, and don't share it with anyone. You will need this token to
connect to your database from Deno.
Run `flyctl deploy` to deploy your app.
You can now access the database from your Deno programs by specifying the access
token in the `DENO_KV_ACCESS_TOKEN` environment variable, and the URL provided
by `flyctl deploy` in the URL passed to `Deno.openKv`.
Be aware that with this configuration, your database can scale to 0 instances
when not in use. This means that the first request to your database after a
period of inactivity will be slow, as the database needs to be started. You can
avoid this by setting `min_machines_running` to `1`, and setting
`auto_stop_machines = false`.
### Install binary
You can download a prebuilt binary from the
[releases page](https://github.com/denoland/denokv/releases/tag/0.1.0) and place
it in your `PATH`.
You can also compile from source by running `cargo install denokv --locked`.
## How to connect
### Deno
To connect to a `denokv` server from Deno, use the `Deno.openKv` API:
```ts
const kv = await Deno.openKv("http://localhost:4512");
```
Make sure to specify your access token in the `DENO_KV_ACCESS_TOKEN` environment
variable.
<!-- TBD: ### Node.js -->
## Advanced setup
### Running as a replica of a hosted KV database
`denokv` has a mode for running as a replica of a KV database hosted on Deno
Deploy through the S3 backup feature.
To run as a replica:
```sh
docker run -it --init -p 4512:4512 -v ./data:/data \
-e AWS_ACCESS_KEY_ID="<aws-access-key-id>" \
-e AWS_SECRET_ACCESS_KEY="<aws-secret-access-key>" \
-e AWS_REGION="<aws-region>" \
ghcr.io/denoland/denokv --sqlite-path /data/denokv.sqlite serve \
--access-token <random-token> --sync-from-s3 --s3-bucket your-bucket --s3-prefix some-prefix/6aea9765-2b1e-41c7-8904-0bdcd70b21d3/
```
To sync the local database from S3, without updating the snapshot:
```sh
denokv --sqlite-path /data/denokv.sqlite pitr sync --s3-bucket your-bucket --s3-prefix some-prefix/6aea9765-2b1e-41c7-8904-0bdcd70b21d3/
```
To list recoverable points:
```sh
denokv --sqlite-path /data/denokv.sqlite pitr list
```
To checkout the snapshot at a specific recoverable point:
```sh
denokv --sqlite-path /data/denokv.sqlite pitr checkout 0100000002c0f4c10000
```
### Continuous backup using LiteFS
TODO
## Other things in this repo
This repository contains two crates:
- `denokv_proto` (`/proto`): Shared interfaces backing KV, like definitions of
`Key`, `Database`, and `Value`.
- `denokv_sqlite` (`/sqlite`): An implementation of `Database` backed by SQLite.
- `denokv_remote` (`/remote`): An implementation of `Database` backed by a
remote KV database, acessible via the KV Connect protocol.
These crates are used by the `deno_kv` crate in the Deno repository to provide a
JavaScript API for interacting with Deno KV.
The Deno KV Connect protocol used for communication between Deno and a remote KV
database is defined in [`/proto/kv-connect.md`](./proto/kv-connect.md).
================================================
FILE: denokv/Cargo.toml
================================================
[package]
name = "denokv"
version = "0.13.0"
description = "A self-hosted backend for Deno KV"
edition.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
[[bin]]
path = "main.rs"
name = "denokv"
[features]
default = ["bundled-sqlite"]
bundled-sqlite = ["rusqlite/bundled"]
[dependencies]
anyhow.workspace = true
aws-config.workspace = true
aws-sdk-s3.workspace = true
aws-smithy-async.workspace = true
aws-smithy-client.workspace = true
aws-smithy-types.workspace = true
axum.workspace = true
chrono.workspace = true
clap.workspace = true
constant_time_eq.workspace = true
denokv_proto.workspace = true
denokv_sqlite.workspace = true
denokv_timemachine.workspace = true
env_logger.workspace = true
futures.workspace = true
hex.workspace = true
hyper.workspace = true
hyper-proxy.workspace = true
log.workspace = true
prost.workspace = true
rand.workspace = true
rusqlite.workspace = true
serde.workspace = true
thiserror.workspace = true
tokio.workspace = true
uuid.workspace = true
deno_error.workspace = true
[dev-dependencies]
bytes.workspace = true
denokv_remote.workspace = true
http.workspace = true
num-bigint.workspace = true
tempfile.workspace = true
reqwest.workspace = true
url.workspace = true
v8_valueserializer.workspace = true
================================================
FILE: denokv/config.rs
================================================
use std::net::SocketAddr;
use clap::Parser;
#[derive(Parser)]
pub struct Config {
/// The path to the SQLite database KV will persist to.
#[clap(long, env = "DENO_KV_SQLITE_PATH")]
pub sqlite_path: String,
#[command(subcommand)]
pub subcommand: SubCmd,
}
#[derive(Parser)]
pub enum SubCmd {
/// Starts the Deno KV HTTP server.
Serve(ServeOptions),
/// Point-in-time recovery tools.
Pitr(PitrOptions),
}
#[derive(Parser)]
pub struct ServeOptions {
/// The access token used by the CLI to connect to this KV instance.
#[clap(long, env = "DENO_KV_ACCESS_TOKEN")]
pub access_token: String,
/// The address to bind the Deno KV HTTP endpoint to.
#[clap(long = "addr", default_value = "0.0.0.0:4512")]
pub addr: SocketAddr,
/// Open in read-only mode.
#[clap(long)]
pub read_only: bool,
/// Sync changes from S3 continuously.
#[clap(long, conflicts_with = "read_only")]
pub sync_from_s3: bool,
/// Atomic write batch timeout. Batching is disabled if this is not set.
#[clap(long, env = "DENO_KV_ATOMIC_WRITE_BATCH_TIMEOUT_MS")]
pub atomic_write_batch_timeout_ms: Option<u64>,
/// Number of worker threads.
#[clap(long, env = "DENO_KV_NUM_WORKERS", default_value = "1")]
pub num_workers: usize,
#[command(flatten)]
pub replica: ReplicaOptions,
}
#[derive(Parser)]
pub struct ReplicaOptions {
/// The name of the S3 bucket to sync changes from.
#[clap(long, env = "DENO_KV_S3_BUCKET")]
pub s3_bucket: Option<String>,
/// Prefix in the S3 bucket.
#[clap(long, env = "DENO_KV_S3_PREFIX")]
pub s3_prefix: Option<String>,
/// S3 endpoint URL like `https://storage.googleapis.com`.
/// Only needed for S3-compatible services other than Amazon S3.
#[clap(long, env = "DENO_KV_S3_ENDPOINT")]
pub s3_endpoint: Option<String>,
}
#[derive(Parser)]
pub struct PitrOptions {
#[command(subcommand)]
pub subcommand: PitrSubCmd,
}
#[derive(Parser)]
pub enum PitrSubCmd {
/// Sync changes from S3 to the SQLite database, without updating the current snapshot.
Sync(SyncOptions),
/// List available recovery points.
List(PitrListOptions),
/// Show information about the current snapshot.
Info,
/// Checkout the snapshot at a specific versionstamp.
Checkout(PitrCheckoutOptions),
}
#[derive(Parser)]
pub struct SyncOptions {
#[command(flatten)]
pub replica: ReplicaOptions,
}
#[derive(Parser)]
pub struct PitrListOptions {
/// Start time in RFC3339 format, e.g. 2021-01-01T00:00:00Z
#[clap(long = "start")]
pub start: Option<String>,
/// End time in RFC3339 format, e.g. 2021-01-01T00:00:00Z
#[clap(long = "end")]
pub end: Option<String>,
}
#[derive(Parser)]
pub struct PitrCheckoutOptions {
pub versionstamp: String,
}
================================================
FILE: denokv/main.rs
================================================
use std::borrow::Cow;
use std::io::Write;
use std::path::Path;
use std::sync::Arc;
use anyhow::Context;
use aws_smithy_async::rt::sleep::TokioSleep;
use aws_smithy_types::retry::RetryConfig;
use axum::async_trait;
use axum::body::Body;
use axum::body::Bytes;
use axum::body::StreamBody;
use axum::debug_handler;
use axum::extract::FromRequest;
use axum::extract::State;
use axum::http::HeaderMap;
use axum::http::Request;
use axum::http::StatusCode;
use axum::middleware;
use axum::middleware::Next;
use axum::response::IntoResponse;
use axum::response::Response;
use axum::routing::post;
use axum::Json;
use axum::Router;
use chrono::DateTime;
use chrono::Duration;
use chrono::SecondsFormat;
use chrono::Utc;
use clap::Parser;
use config::Config;
use config::PitrOptions;
use config::ReplicaOptions;
use config::ServeOptions;
use config::SubCmd;
use constant_time_eq::constant_time_eq;
use denokv_proto::datapath as pb;
use denokv_proto::time::utc_now;
use denokv_proto::AtomicWrite;
use denokv_proto::Consistency;
use denokv_proto::ConvertError;
use denokv_proto::DatabaseMetadata;
use denokv_proto::EndpointInfo;
use denokv_proto::MetadataExchangeRequest;
use denokv_proto::ReadRange;
use denokv_proto::SnapshotReadOptions;
use denokv_sqlite::Connection;
use denokv_sqlite::Sqlite;
use denokv_sqlite::SqliteBackendError;
use denokv_sqlite::SqliteConfig;
use denokv_sqlite::SqliteNotifier;
use denokv_timemachine::backup_source_s3::DatabaseBackupSourceS3;
use denokv_timemachine::backup_source_s3::DatabaseBackupSourceS3Config;
use denokv_timemachine::time_travel::TimeTravelControl;
use futures::stream::unfold;
use futures::stream_select;
use futures::StreamExt;
use futures::TryStreamExt;
use hyper::client::HttpConnector;
use hyper_proxy::Intercept;
use hyper_proxy::Proxy;
use hyper_proxy::ProxyConnector;
use log::error;
use log::info;
use prost::DecodeError;
use prost::Message;
use rand::Rng;
use rand::SeedableRng;
use rusqlite::OpenFlags;
use std::env;
use thiserror::Error;
use tokio::sync::oneshot;
use tokio::time::MissedTickBehavior;
use uuid::Uuid;
use crate::config::PitrSubCmd;
mod config;
const SYNC_INTERVAL_BASE_MS: u64 = 10000;
const SYNC_INTERVAL_JITTER_MS: u64 = 5000;
#[derive(Clone)]
struct AppState {
sqlite: Sqlite,
access_token: &'static str,
}
#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
let config: &'static Config = Box::leak(Box::new(Config::parse()));
if std::env::var("RUST_LOG").is_err() {
std::env::set_var("RUST_LOG", "info");
}
env_logger::init();
match &config.subcommand {
SubCmd::Serve(options) => {
let (initial_sync_ok_tx, initial_sync_ok_rx) = oneshot::channel();
let sync_fut = async move {
if options.sync_from_s3 {
run_sync(config, &options.replica, true, Some(initial_sync_ok_tx))
.await
} else {
drop(initial_sync_ok_tx);
futures::future::pending().await
}
.with_context(|| "Failed to sync from S3")
};
let serve_fut = async move {
drop(initial_sync_ok_rx.await);
run_serve(config, options).await
};
let sync_fut = std::pin::pin!(sync_fut);
let serve_fut = std::pin::pin!(serve_fut);
futures::future::try_join(sync_fut, serve_fut).await?;
}
SubCmd::Pitr(options) => {
run_pitr(config, options).await?;
}
}
Ok(())
}
async fn run_pitr(
config: &'static Config,
options: &'static PitrOptions,
) -> anyhow::Result<()> {
match &options.subcommand {
PitrSubCmd::Sync(options) => {
run_sync(config, &options.replica, false, None).await?;
}
PitrSubCmd::List(options) => {
let db = rusqlite::Connection::open(&config.sqlite_path)?;
let mut ttc = TimeTravelControl::open(db)?;
let start = if let Some(start) = &options.start {
DateTime::parse_from_rfc3339(start)
.ok()
.with_context(|| format!("invalid start time {:?}", options.start))?
.with_timezone(&Utc)
} else {
Default::default()
};
let end = if let Some(end) = &options.end {
Some(
DateTime::parse_from_rfc3339(end)
.ok()
.with_context(|| format!("invalid end time {:?}", options.end))?
.with_timezone(&Utc),
)
} else {
None
};
let versionstamps =
ttc.lookup_versionstamps_around_timestamp(start, end)?;
for (versionstamp, ts) in versionstamps {
// Users will want to pipe output of this command into e.g. `less`
if writeln!(
&mut std::io::stdout(),
"{}\t{}",
hex::encode(versionstamp),
ts.to_rfc3339_opts(SecondsFormat::Millis, true)
)
.is_err()
{
break;
}
}
}
PitrSubCmd::Info => {
let db = rusqlite::Connection::open(&config.sqlite_path)?;
let mut ttc = TimeTravelControl::open(db)?;
let current_versionstamp = ttc.get_current_versionstamp()?;
println!(
"Current versionstamp: {}",
hex::encode(current_versionstamp)
);
}
PitrSubCmd::Checkout(options) => {
let db = rusqlite::Connection::open(&config.sqlite_path)?;
let mut ttc = TimeTravelControl::open(db)?;
let versionstamp = hex::decode(&options.versionstamp)
.ok()
.and_then(|x| <[u8; 10]>::try_from(x).ok())
.with_context(|| {
format!("invalid versionstamp {}", options.versionstamp)
})?;
ttc.checkout(versionstamp)?;
let versionstamp = ttc.get_current_versionstamp()?;
println!(
"Snapshot is now at versionstamp {}",
hex::encode(versionstamp)
);
}
}
Ok(())
}
async fn run_serve(
config: &'static Config,
options: &'static ServeOptions,
) -> anyhow::Result<()> {
if options.access_token.len() < 12 {
anyhow::bail!("Access token must be at minimum 12 chars long.");
}
let path = Path::new(&config.sqlite_path);
let read_only = options.read_only || options.sync_from_s3;
let sqlite_config = SqliteConfig {
batch_timeout: options
.atomic_write_batch_timeout_ms
.map(std::time::Duration::from_millis),
num_workers: options.num_workers,
};
let sqlite = open_sqlite(path, read_only, sqlite_config.clone())?;
info!(
"Opened{} database at {}. Batch timeout: {:?}",
if read_only { " read only" } else { "" },
path.to_string_lossy(),
sqlite_config.batch_timeout,
);
let access_token = options.access_token.as_str();
let state = AppState {
sqlite,
access_token,
};
let v1 = Router::new()
.route("/snapshot_read", post(snapshot_read_endpoint))
.route("/atomic_write", post(atomic_write_endpoint))
.route("/watch", post(watch_endpoint))
.route_layer(middleware::from_fn_with_state(
state.clone(),
authentication_middleware,
));
let app = Router::new()
.route("/", post(metadata_endpoint))
.nest("/v2", v1)
.fallback(fallback_handler)
.with_state(state);
let listener = std::net::TcpListener::bind(options.addr)
.context("Failed to start server")?;
info!("Listening on http://{}", listener.local_addr().unwrap());
axum::Server::from_tcp(listener)?
.serve(app.into_make_service())
.await?;
Ok(())
}
async fn run_sync(
config: &Config,
options: &ReplicaOptions,
continuous: bool,
initial_sync_ok_tx: Option<oneshot::Sender<()>>,
) -> anyhow::Result<()> {
let mut s3_config = aws_config::from_env()
.sleep_impl(Arc::new(TokioSleep::new()))
.retry_config(RetryConfig::standard().with_max_attempts(u32::MAX));
if let Some(endpoint) = &options.s3_endpoint {
s3_config = s3_config.endpoint_url(endpoint);
}
let https_proxy = env::var("https_proxy")
.or_else(|_| env::var("HTTPS_PROXY"))
.ok();
if let Some(https_proxy) = https_proxy {
let proxy = {
let proxy_uri = https_proxy.parse().unwrap();
let proxy = Proxy::new(Intercept::All, proxy_uri);
let connector = HttpConnector::new();
ProxyConnector::from_proxy_unsecured(connector, proxy)
};
let hyper_client =
aws_smithy_client::hyper_ext::Adapter::builder().build(proxy);
s3_config = s3_config.http_connector(hyper_client);
}
let s3_config = s3_config.load().await;
let s3_client = aws_sdk_s3::Client::new(&s3_config);
let db = rusqlite::Connection::open(&config.sqlite_path)?;
let mut ttc = TimeTravelControl::open(db)?;
let s3_config = DatabaseBackupSourceS3Config {
bucket: options
.s3_bucket
.clone()
.ok_or_else(|| anyhow::anyhow!("--s3-bucket not set"))?,
prefix: options.s3_prefix.clone().unwrap_or_default(),
};
if !s3_config.prefix.ends_with('/') {
anyhow::bail!("--s3-prefix must end with a slash")
}
ttc.init_s3(&s3_config)?;
let source = DatabaseBackupSourceS3::new(s3_client, s3_config);
ttc.ensure_initial_snapshot_completed(&source).await?;
log::info!("Initial snapshot is complete, starting sync.");
ttc.checkout([0xffu8; 10])?;
drop(initial_sync_ok_tx);
loop {
ttc.sync(&source).await?;
if !continuous {
return Ok(());
}
// In continuous mode, always advance snapshot to latest version
ttc.checkout([0xffu8; 10])?;
let sleep_duration = std::time::Duration::from_millis(
SYNC_INTERVAL_BASE_MS
+ rand::thread_rng().gen_range(0..SYNC_INTERVAL_JITTER_MS),
);
tokio::time::sleep(sleep_duration).await;
}
}
fn open_sqlite(
path: &Path,
read_only: bool,
config: SqliteConfig,
) -> Result<Sqlite, anyhow::Error> {
let flags = if read_only {
OpenFlags::SQLITE_OPEN_READ_ONLY | OpenFlags::SQLITE_OPEN_NO_MUTEX
} else {
OpenFlags::SQLITE_OPEN_READ_WRITE
| OpenFlags::SQLITE_OPEN_CREATE
| OpenFlags::SQLITE_OPEN_NO_MUTEX
};
let notifier = SqliteNotifier::default();
let sqlite = Sqlite::new(
|| {
Ok((
Connection::open_with_flags(path, flags)
.map_err(|e| deno_error::JsErrorBox::generic(e.to_string()))?,
Box::new(rand::rngs::StdRng::from_entropy()),
))
},
notifier,
config,
)?;
Ok(sqlite)
}
#[axum::debug_handler]
async fn metadata_endpoint(
State(state): State<AppState>,
headers: HeaderMap,
maybe_req: Option<Json<MetadataExchangeRequest>>,
) -> Result<Json<DatabaseMetadata>, ApiError> {
let Some(Json(req)) = maybe_req else {
return Err(ApiError::MinumumProtocolVersion);
};
let version = if req.supported_versions.contains(&3) {
3
} else if req.supported_versions.contains(&2) {
2
} else {
return Err(ApiError::NoMatchingProtocolVersion);
};
let Some(authorization) =
headers.get("authorization").and_then(|v| v.to_str().ok())
else {
return Err(ApiError::MalformedAuthorizationHeader);
};
let Some((bearer, token)) = authorization.split_once(' ') else {
return Err(ApiError::MalformedAuthorizationHeader);
};
if bearer.to_lowercase() != "bearer"
|| !constant_time_eq(token.as_bytes(), state.access_token.as_bytes())
{
return Err(ApiError::InvalidAccessToken);
}
let expires_at = utc_now() + Duration::days(1);
Ok(Json(DatabaseMetadata {
version,
database_id: Uuid::nil(),
endpoints: vec![EndpointInfo {
url: Cow::Borrowed("/v2"),
consistency: Cow::Borrowed("strong"),
}],
token: Cow::Borrowed(state.access_token),
expires_at,
}))
}
// #[axum::debug_handler]
async fn authentication_middleware(
State(state): State<AppState>,
req: Request<Body>,
next: Next<Body>,
) -> Result<Response, ApiError> {
let Some(protocol_version) = req
.headers()
.get("x-denokv-version")
.and_then(|v| v.to_str().ok())
else {
return Err(ApiError::InvalidProtocolVersion);
};
if protocol_version != "2" && protocol_version != "3" {
return Err(ApiError::InvalidProtocolVersion);
}
let Some(authorization) = req
.headers()
.get("authorization")
.and_then(|v| v.to_str().ok())
else {
return Err(ApiError::MalformedAuthorizationHeader);
};
let Some((bearer, token)) = authorization.split_once(' ') else {
return Err(ApiError::MalformedAuthorizationHeader);
};
if bearer.to_lowercase() != "bearer" || token != state.access_token {
return Err(ApiError::InvalidAccessToken);
}
let Some(td_id) = req
.headers()
.get("x-denokv-database-id")
.and_then(|v| v.to_str().ok())
else {
return Err(ApiError::InvalidDatabaseId);
};
let td_id = match Uuid::parse_str(td_id) {
Ok(td_id) => td_id,
Err(_) => return Err(ApiError::InvalidDatabaseId),
};
if !td_id.is_nil() {
return Err(ApiError::InvalidDatabaseId);
}
Ok(next.run(req).await)
}
#[axum::debug_handler]
async fn snapshot_read_endpoint(
State(state): State<AppState>,
Protobuf(snapshot_read): Protobuf<pb::SnapshotRead>,
) -> Result<Protobuf<pb::SnapshotReadOutput>, ApiError> {
let requests: Vec<ReadRange> = snapshot_read.try_into()?;
let options = SnapshotReadOptions {
consistency: Consistency::Strong,
};
let result_ranges = state.sqlite.snapshot_read(requests, options).await?;
let res = result_ranges.into();
Ok(Protobuf(res))
}
#[debug_handler]
async fn atomic_write_endpoint(
State(state): State<AppState>,
Protobuf(atomic_write): Protobuf<pb::AtomicWrite>,
) -> Result<Protobuf<pb::AtomicWriteOutput>, ApiError> {
let atomic_write: AtomicWrite = atomic_write.try_into()?;
let res = state.sqlite.atomic_write(atomic_write).await?;
Ok(Protobuf(res.into()))
}
async fn watch_endpoint(
State(state): State<AppState>,
Protobuf(watch): Protobuf<pb::Watch>,
) -> Result<impl IntoResponse, ApiError> {
let keys = watch.try_into()?;
let watcher = state.sqlite.watch(keys);
let data_stream = watcher.map_ok(|outs| {
let output = pb::WatchOutput::from(outs);
output.encode_to_vec()
});
let mut timer = tokio::time::interval(std::time::Duration::from_secs(5));
timer.set_missed_tick_behavior(MissedTickBehavior::Delay);
let ping_stream = unfold(timer, |mut timer| async move {
timer.tick().await;
Some((Ok::<_, deno_error::JsErrorBox>(vec![]), timer))
})
.boxed();
let body_stream = stream_select!(data_stream, ping_stream).map_ok(|data| {
Bytes::from([&(data.len() as u32).to_le_bytes()[..], &data[..]].concat())
});
let mut res = StreamBody::new(body_stream).into_response();
res
.headers_mut()
.insert("content-type", "application/octet-stream".parse().unwrap());
Ok(res)
}
#[debug_handler]
async fn fallback_handler() -> ApiError {
ApiError::NotFound
}
#[derive(Error, Debug)]
enum ApiError {
#[error("Resource not found.")]
NotFound,
#[error("Malformed authorization header.")]
MalformedAuthorizationHeader,
#[error("Invalid access token.")]
InvalidAccessToken,
#[error("Invalid database id.")]
InvalidDatabaseId,
#[error("Expected protocol version 2.")]
InvalidProtocolVersion,
#[error("Request protobuf is invalid: {}.", .0)]
InvalidRequestProto(DecodeError),
#[error("A key exceeds the key size limit.")]
KeyTooLong,
#[error("A value exceeds the value size limit.")]
ValueTooLong,
#[error("The total number of entries requested across read ranges in the read request is too large.")]
ReadRangeTooLarge,
#[error("The total size of the atomic write is too large.")]
AtomicWriteTooLarge,
#[error("Too many read ranges requested in one read request.")]
TooManyReadRanges,
#[error("Too many keys watched in a single watch request.")]
TooManyWatchedKeys,
#[error("Too many checks included in atomic write.")]
TooManyChecks,
#[error("Too many mutations / enqueues included in atomic write.")]
TooManyMutations,
#[error("Too many dead letter keys for a single queue message.")]
TooManyQueueUndeliveredKeys,
#[error("Too many backoff intervals for a single queue message.")]
TooManyQueueBackoffIntervals,
#[error("A backoff interval exceeds the maximum allowed backoff interval.")]
QueueBackoffIntervalTooLarge,
#[error("The read range limit of the snapshot read request is invalid.")]
InvalidReadRangeLimit,
#[error("An internal server error occurred.")]
InternalServerError,
#[error("Invalid versionstamp.")]
InvalidVersionstamp,
#[error("Invalid mutation kind or arguments.")]
InvalidMutationKind,
#[error("Invalid mutation expire at.")]
InvalidMutationExpireAt,
#[error("Invalid mutation enqueue deadline.")]
InvalidMutationEnqueueDeadline,
#[error("The server requires at least protocol version 2. Use Deno 1.38.0 or newer.")]
MinumumProtocolVersion,
#[error("The server could not negotiate a protocol version. The server requires protocol version 2 or 3.")]
NoMatchingProtocolVersion,
#[error("The server is temporarially unavailable, try again later.")]
TryAgain,
#[error("This database is read only.")]
// TODO: this should not be used (write_disabled should be used instead)
ReadOnly,
#[error("The value encoding {0} is unknown.")]
UnknownValueEncoding(i64),
#[error("{0}")]
TypeMismatch(String),
}
impl ApiError {
fn status(&self) -> StatusCode {
match self {
ApiError::NotFound => StatusCode::NOT_FOUND,
ApiError::MalformedAuthorizationHeader => StatusCode::UNAUTHORIZED,
ApiError::InvalidAccessToken => StatusCode::UNAUTHORIZED,
ApiError::InvalidDatabaseId => StatusCode::BAD_REQUEST,
ApiError::InvalidProtocolVersion => StatusCode::BAD_REQUEST,
ApiError::InvalidRequestProto(..) => StatusCode::BAD_REQUEST,
ApiError::KeyTooLong => StatusCode::BAD_REQUEST,
ApiError::ValueTooLong => StatusCode::BAD_REQUEST,
ApiError::ReadRangeTooLarge => StatusCode::BAD_REQUEST,
ApiError::AtomicWriteTooLarge => StatusCode::BAD_REQUEST,
ApiError::TooManyReadRanges => StatusCode::BAD_REQUEST,
ApiError::TooManyWatchedKeys => StatusCode::BAD_REQUEST,
ApiError::TooManyChecks => StatusCode::BAD_REQUEST,
ApiError::TooManyMutations => StatusCode::BAD_REQUEST,
ApiError::TooManyQueueUndeliveredKeys => StatusCode::BAD_REQUEST,
ApiError::TooManyQueueBackoffIntervals => StatusCode::BAD_REQUEST,
ApiError::QueueBackoffIntervalTooLarge => StatusCode::BAD_REQUEST,
ApiError::InvalidReadRangeLimit => StatusCode::BAD_REQUEST,
ApiError::InternalServerError => StatusCode::INTERNAL_SERVER_ERROR,
ApiError::InvalidVersionstamp => StatusCode::BAD_REQUEST,
ApiError::InvalidMutationKind => StatusCode::BAD_REQUEST,
ApiError::InvalidMutationExpireAt => StatusCode::BAD_REQUEST,
ApiError::InvalidMutationEnqueueDeadline => StatusCode::BAD_REQUEST,
ApiError::MinumumProtocolVersion => StatusCode::BAD_REQUEST,
ApiError::NoMatchingProtocolVersion => StatusCode::BAD_REQUEST,
ApiError::TryAgain => StatusCode::SERVICE_UNAVAILABLE,
ApiError::ReadOnly => StatusCode::BAD_REQUEST,
ApiError::UnknownValueEncoding(_) => StatusCode::BAD_REQUEST,
ApiError::TypeMismatch(_) => StatusCode::BAD_REQUEST,
}
}
}
impl From<SqliteBackendError> for ApiError {
fn from(value: SqliteBackendError) -> Self {
match value {
SqliteBackendError::SqliteError(err) => {
log::error!("Sqlite error: {}", err);
ApiError::InternalServerError
}
SqliteBackendError::GenericError(err) => {
log::error!("Generic error: {}", err);
ApiError::InternalServerError
}
SqliteBackendError::DatabaseClosed => ApiError::TryAgain,
SqliteBackendError::WriteDisabled => ApiError::ReadOnly,
SqliteBackendError::UnknownValueEncoding(encoding) => {
ApiError::UnknownValueEncoding(encoding)
}
SqliteBackendError::TypeMismatch(msg) => ApiError::TypeMismatch(msg),
x @ SqliteBackendError::SumOutOfRange => {
ApiError::TypeMismatch(x.to_string())
}
}
}
}
impl IntoResponse for ApiError {
fn into_response(self) -> Response {
(self.status(), format!("{self}")).into_response()
}
}
impl From<ConvertError> for ApiError {
fn from(err: ConvertError) -> ApiError {
match err {
ConvertError::KeyTooLong => ApiError::KeyTooLong,
ConvertError::ValueTooLong => ApiError::ValueTooLong,
ConvertError::ReadRangeTooLarge => ApiError::ReadRangeTooLarge,
ConvertError::AtomicWriteTooLarge => ApiError::AtomicWriteTooLarge,
ConvertError::TooManyReadRanges => ApiError::TooManyReadRanges,
ConvertError::TooManyWatchedKeys => ApiError::TooManyWatchedKeys,
ConvertError::TooManyChecks => ApiError::TooManyChecks,
ConvertError::TooManyMutations => ApiError::TooManyMutations,
ConvertError::TooManyQueueUndeliveredKeys => {
ApiError::TooManyQueueUndeliveredKeys
}
ConvertError::TooManyQueueBackoffIntervals => {
ApiError::TooManyQueueBackoffIntervals
}
ConvertError::QueueBackoffIntervalTooLarge => {
ApiError::QueueBackoffIntervalTooLarge
}
ConvertError::InvalidReadRangeLimit => ApiError::InvalidReadRangeLimit,
ConvertError::DecodeError => ApiError::InternalServerError,
ConvertError::InvalidVersionstamp => ApiError::InvalidVersionstamp,
ConvertError::InvalidMutationKind => ApiError::InvalidMutationKind,
ConvertError::InvalidMutationExpireAt => {
ApiError::InvalidMutationExpireAt
}
ConvertError::InvalidMutationEnqueueDeadline => {
ApiError::InvalidMutationEnqueueDeadline
}
}
}
}
struct Protobuf<T: prost::Message>(T);
impl<T: prost::Message> IntoResponse for Protobuf<T> {
fn into_response(self) -> Response {
let body = self.0.encode_to_vec();
(
StatusCode::OK,
[("content-type", "application/x-protobuf")],
body,
)
.into_response()
}
}
#[async_trait]
impl<S: Send + Sync, T: prost::Message + Default> FromRequest<S, Body>
for Protobuf<T>
{
type Rejection = Response;
async fn from_request(
req: Request<Body>,
state: &S,
) -> Result<Self, Self::Rejection> {
let body = Bytes::from_request(req, state)
.await
.map_err(|e| e.into_response())?;
let msg = T::decode(body)
.map_err(|err| ApiError::InvalidRequestProto(err).into_response())?;
Ok(Protobuf(msg))
}
}
================================================
FILE: denokv/tests/integration.rs
================================================
use std::net::SocketAddr;
use std::num::NonZeroU32;
use std::path::PathBuf;
use std::process::Stdio;
use std::time::Duration;
use bytes::Bytes;
use deno_error::JsErrorBox;
use denokv_proto::AtomicWrite;
use denokv_proto::Database;
use denokv_proto::KvValue;
use denokv_proto::ReadRange;
use denokv_proto::WatchKeyOutput;
use denokv_remote::RemotePermissions;
use denokv_remote::RemoteResponse;
use denokv_remote::RemoteTransport;
use futures::Stream;
use futures::StreamExt;
use futures::TryStreamExt;
use tokio::io::AsyncBufReadExt;
use tokio::io::BufReader;
use tokio::task::LocalSet;
use url::Url;
use v8_valueserializer::value_eq;
use v8_valueserializer::Heap;
use v8_valueserializer::Value;
use v8_valueserializer::ValueDeserializer;
use v8_valueserializer::ValueSerializer;
const ACCESS_TOKEN: &str = "1234abcd5678efgh";
#[derive(Clone)]
struct ReqwestClient(reqwest::Client);
struct ReqwestResponse(reqwest::Response);
impl RemoteTransport for ReqwestClient {
type Response = ReqwestResponse;
async fn post(
&self,
url: Url,
headers: http::HeaderMap,
body: Bytes,
) -> Result<(Url, http::StatusCode, Self::Response), JsErrorBox> {
let res = self
.0
.post(url)
.headers(headers)
.body(body)
.send()
.await
.map_err(|e| JsErrorBox::generic(e.to_string()))?;
let url = res.url().clone();
let status = res.status();
Ok((url, status, ReqwestResponse(res)))
}
}
impl RemoteResponse for ReqwestResponse {
async fn bytes(self) -> Result<Bytes, JsErrorBox> {
self
.0
.bytes()
.await
.map_err(|e| JsErrorBox::generic(e.to_string()))
}
fn stream(
self,
) -> impl Stream<Item = Result<Bytes, JsErrorBox>> + Send + Sync {
self
.0
.bytes_stream()
.map_err(|e| JsErrorBox::generic(e.to_string()))
}
async fn text(self) -> Result<String, JsErrorBox> {
self
.0
.text()
.await
.map_err(|e| JsErrorBox::generic(e.to_string()))
}
}
fn denokv_exe() -> PathBuf {
let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
path.push("../target");
if cfg!(debug_assertions) {
path.push("debug");
} else {
path.push("release");
}
if cfg!(target_os = "windows") {
path.push("denokv.exe");
} else {
path.push("denokv");
}
path
}
async fn start_server() -> (tokio::process::Child, SocketAddr) {
let tmp_file = tempfile::NamedTempFile::new().unwrap().keep().unwrap().1;
let mut child = tokio::process::Command::new(denokv_exe())
.arg("--sqlite-path")
.arg(tmp_file)
.arg("serve")
.arg("--addr")
.arg("127.0.0.1:0")
.env("DENO_KV_ACCESS_TOKEN", ACCESS_TOKEN)
.stdout(Stdio::piped())
.stderr(Stdio::piped())
.kill_on_drop(true)
.spawn()
.unwrap();
let stdout = child.stdout.take().unwrap();
let stdout_buf = BufReader::new(stdout);
let mut stdout_lines = stdout_buf.lines();
tokio::spawn(async move {
// Forward stdout to our stdout.
while let Some(line) = stdout_lines.next_line().await.unwrap() {
println!("{line}");
}
});
let stderr = child.stderr.take().unwrap();
let stderr_buf = BufReader::new(stderr);
let mut stderr_lines = stderr_buf.lines();
let addr = loop {
let line = stderr_lines
.next_line()
.await
.expect("server died")
.expect("server died");
eprintln!("{line}");
if let Some((_, addr)) = line.split_once("Listening on http://") {
break addr.parse().unwrap();
}
};
tokio::spawn(async move {
// Forward stderr to our stderr.
while let Some(line) = stderr_lines.next_line().await.unwrap() {
eprintln!("{line}");
}
});
println!("Server started and listening on {addr}");
(child, addr)
}
#[derive(Clone)]
struct DummyPermissions;
impl denokv_remote::RemotePermissions for DummyPermissions {
fn check_net_url(&self, _url: &reqwest::Url) -> Result<(), JsErrorBox> {
Ok(())
}
}
#[tokio::test]
async fn basics() {
let (_child, addr) = start_server().await;
let client = ReqwestClient(reqwest::Client::new());
let url = format!("http://localhost:{}", addr.port()).parse().unwrap();
let metadata_endpoint = denokv_remote::MetadataEndpoint {
url,
access_token: ACCESS_TOKEN.to_string(),
};
let remote =
denokv_remote::Remote::new(client, DummyPermissions, metadata_endpoint);
let ranges = remote
.snapshot_read(
vec![ReadRange {
start: vec![],
end: vec![0xff],
limit: NonZeroU32::try_from(10).unwrap(),
reverse: false,
}],
denokv_proto::SnapshotReadOptions {
consistency: denokv_proto::Consistency::Strong,
},
)
.await
.unwrap();
assert_eq!(ranges.len(), 1);
let range = &ranges[0];
assert_eq!(range.entries.len(), 0);
let commit_result = remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Set(denokv_proto::KvValue::U64(1)),
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
assert_ne!(commit_result.versionstamp, [0; 10]);
let ranges = remote
.snapshot_read(
vec![ReadRange {
start: vec![],
end: vec![0xff],
limit: NonZeroU32::try_from(10).unwrap(),
reverse: false,
}],
denokv_proto::SnapshotReadOptions {
consistency: denokv_proto::Consistency::Strong,
},
)
.await
.unwrap();
assert_eq!(ranges.len(), 1);
let range = &ranges[0];
assert_eq!(range.entries.len(), 1);
assert_eq!(range.entries[0].key, vec![1]);
assert!(matches!(
range.entries[0].value,
denokv_proto::KvValue::U64(1)
));
assert_eq!(range.entries[0].versionstamp, commit_result.versionstamp);
println!("remote");
}
#[tokio::test]
async fn watch() {
let (_child, addr) = start_server().await;
let client = ReqwestClient(reqwest::Client::new());
let url = format!("http://localhost:{}", addr.port()).parse().unwrap();
let metadata_endpoint = denokv_remote::MetadataEndpoint {
url,
access_token: ACCESS_TOKEN.to_string(),
};
let remote =
denokv_remote::Remote::new(client, DummyPermissions, metadata_endpoint);
let remote2 = remote.clone();
let local = LocalSet::new();
let (tx, mut rx) = tokio::sync::mpsc::unbounded_channel();
local.spawn_local(async move {
let mut s = remote2.watch(vec![vec![1]]);
while let Some(w) = s.next().await {
let w = w.expect("watch success");
eprintln!("Watch output: {w:?}");
for w in w {
if let WatchKeyOutput::Changed { entry: Some(_) } = w {
tx.send(w).expect("send success");
return;
}
}
}
});
local.spawn_local(async move {
for i in 0..10 {
_ = remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Set(denokv_proto::KvValue::U64(
i,
)),
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
}
});
tokio::time::timeout(Duration::from_secs(60), local)
.await
.expect("no timeout");
let w = rx.try_recv().expect("recv success");
let WatchKeyOutput::Changed { entry: Some(entry) } = w else {
panic!("Unexpected watch result");
};
assert_eq!(entry.key, vec![1]);
}
#[tokio::test]
async fn no_auth() {
let (_child, addr) = start_server().await;
let client = ReqwestClient(reqwest::Client::new());
let url = format!("http://localhost:{}", addr.port()).parse().unwrap();
let metadata_endpoint = denokv_remote::MetadataEndpoint {
url,
access_token: "".to_string(),
};
let remote =
denokv_remote::Remote::new(client, DummyPermissions, metadata_endpoint);
let res = remote
.snapshot_read(
vec![ReadRange {
start: vec![],
end: vec![0xff],
limit: NonZeroU32::try_from(10).unwrap(),
reverse: false,
}],
denokv_proto::SnapshotReadOptions {
consistency: denokv_proto::Consistency::Strong,
},
)
.await;
assert!(res.is_err());
}
#[tokio::test]
async fn sum_type_mismatch() {
let (_child, addr) = start_server().await;
let client = ReqwestClient(reqwest::Client::new());
let url = format!("http://localhost:{}", addr.port()).parse().unwrap();
let metadata_endpoint = denokv_remote::MetadataEndpoint {
url,
access_token: ACCESS_TOKEN.to_string(),
};
let remote =
denokv_remote::Remote::new(client, DummyPermissions, metadata_endpoint);
let commit_result = remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Set(denokv_proto::KvValue::Bytes(
vec![1, 2, 3],
)),
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
assert_ne!(commit_result.versionstamp, [0; 10]);
let res = remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::U64(1),
min_v8: vec![],
max_v8: vec![],
clamp: false,
},
expire_at: None,
}],
enqueues: vec![],
})
.await;
let err = res.unwrap_err();
assert!(err.to_string().contains(
"Failed to perform 'sum' mutation on a non-U64 value in the database"
));
let res = remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::V8(
ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(1.into()))
.unwrap(),
),
min_v8: vec![],
max_v8: vec![],
clamp: false,
},
expire_at: None,
}],
enqueues: vec![],
})
.await;
let err = res.unwrap_err();
assert!(err.to_string().contains("unsupported value type"));
}
#[tokio::test]
async fn sum_values() {
let (_child, addr) = start_server().await;
let client = ReqwestClient(reqwest::Client::new());
let url = format!("http://localhost:{}", addr.port()).parse().unwrap();
let metadata_endpoint = denokv_remote::MetadataEndpoint {
url,
access_token: ACCESS_TOKEN.to_string(),
};
let remote =
denokv_remote::Remote::new(client, DummyPermissions, metadata_endpoint);
// Sum(nothing, u64) -> u64
let commit_result = remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::U64(42),
min_v8: vec![],
max_v8: vec![],
clamp: false,
},
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
assert_ne!(commit_result.versionstamp, [0; 10]);
// Old sum semantics: u64 + u64 -> u64
remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::U64(1),
min_v8: vec![],
max_v8: vec![],
clamp: false,
},
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
let entry = read_key_1(&remote).await;
assert!(matches!(entry.value, denokv_proto::KvValue::U64(43)));
// Backward compat: u64 + v8(bigint) -> u64
remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::V8(
ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(1.into()))
.unwrap(),
),
min_v8: vec![],
max_v8: vec![],
clamp: false,
},
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
let entry = read_key_1(&remote).await;
assert!(matches!(entry.value, denokv_proto::KvValue::U64(44)));
// Reset to v8(bigint)
remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Set(denokv_proto::KvValue::V8(
ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(42.into()))
.unwrap(),
)),
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
let entry = read_key_1(&remote).await;
let KvValue::V8(value) = &entry.value else {
panic!("expected v8 value");
};
let (value, heap) = ValueDeserializer::default().read(value).unwrap();
assert!(value_eq(
(&value, &heap),
(&Value::BigInt(42.into()), &heap)
));
// v8(bigint) + v8(bigint) -> v8(bigint)
remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::V8(
ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(1.into()))
.unwrap(),
),
min_v8: vec![],
max_v8: vec![],
clamp: false,
},
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
let entry = read_key_1(&remote).await;
let KvValue::V8(value) = &entry.value else {
panic!("expected v8 value");
};
let (value, heap) = ValueDeserializer::default().read(value).unwrap();
assert!(value_eq(
(&value, &heap),
(&Value::BigInt(43.into()), &heap)
));
// v8(bigint) + v8(number) -> error
let res = remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::V8(
ValueSerializer::default()
.finish(&Heap::default(), &Value::I32(1))
.unwrap(),
),
min_v8: vec![],
max_v8: vec![],
clamp: false,
},
expire_at: None,
}],
enqueues: vec![],
})
.await;
let err = res.unwrap_err();
assert!(err.to_string().contains("Cannot sum BigInt with Number"));
// clamp=false error
let res = remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::V8(
ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(2.into()))
.unwrap(),
),
min_v8: vec![],
max_v8: ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(44.into()))
.unwrap(),
clamp: false,
},
expire_at: None,
}],
enqueues: vec![],
})
.await;
let err = res.unwrap_err();
assert!(
err
.to_string()
.contains("The result of a Sum operation would exceed its range limit"),
"{}",
err
);
// clamp=false ok
remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::V8(
ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(1.into()))
.unwrap(),
),
min_v8: vec![],
max_v8: ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(44.into()))
.unwrap(),
clamp: false,
},
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
let entry = read_key_1(&remote).await;
let KvValue::V8(value) = &entry.value else {
panic!("expected v8 value");
};
let (value, heap) = ValueDeserializer::default().read(value).unwrap();
assert!(value_eq(
(&value, &heap),
(&Value::BigInt(44.into()), &heap)
));
// clamp=true
remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![1],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::V8(
ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(10.into()))
.unwrap(),
),
min_v8: vec![],
max_v8: ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(50.into()))
.unwrap(),
clamp: true,
},
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
let entry = read_key_1(&remote).await;
let KvValue::V8(value) = &entry.value else {
panic!("expected v8 value");
};
let (value, heap) = ValueDeserializer::default().read(value).unwrap();
assert!(value_eq(
(&value, &heap),
(&Value::BigInt(50.into()), &heap)
));
// Sum(nothing, v8(bigint)) -> v8(bigint)
let commit_result = remote
.atomic_write(AtomicWrite {
checks: vec![],
mutations: vec![denokv_proto::Mutation {
key: vec![2],
kind: denokv_proto::MutationKind::Sum {
value: denokv_proto::KvValue::V8(
ValueSerializer::default()
.finish(&Heap::default(), &Value::BigInt(10.into()))
.unwrap(),
),
min_v8: vec![],
max_v8: vec![],
clamp: false,
},
expire_at: None,
}],
enqueues: vec![],
})
.await
.unwrap()
.expect("commit success");
assert_ne!(commit_result.versionstamp, [0; 10]);
let ranges = remote
.snapshot_read(
vec![ReadRange {
start: vec![2],
end: vec![3],
limit: NonZeroU32::try_from(1).unwrap(),
reverse: false,
}],
denokv_proto::SnapshotReadOptions {
consistency: denokv_proto::Consistency::Strong,
},
)
.await
.unwrap();
assert_eq!(ranges.len(), 1);
let range = ranges.into_iter().next().unwrap();
assert_eq!(range.entries.len(), 1);
assert_eq!(range.entries[0].key, vec![2]);
let KvValue::V8(value) = &range.entries[0].value else {
panic!("expected v8 value");
};
let (value, heap) = ValueDeserializer::default().read(value).unwrap();
assert!(value_eq(
(&value, &heap),
(&Value::BigInt(10.into()), &heap)
));
}
async fn read_key_1<P: RemotePermissions, T: RemoteTransport>(
remote: &denokv_remote::Remote<P, T>,
) -> denokv_proto::KvEntry {
let ranges = remote
.snapshot_read(
vec![ReadRange {
start: vec![1],
end: vec![2],
limit: NonZeroU32::try_from(1).unwrap(),
reverse: false,
}],
denokv_proto::SnapshotReadOptions {
consistency: denokv_proto::Consistency::Strong,
},
)
.await
.unwrap();
assert_eq!(ranges.len(), 1);
let range = ranges.into_iter().next().unwrap();
assert_eq!(range.entries.len(), 1);
assert_eq!(range.entries[0].key, vec![1]);
range.entries.into_iter().next().unwrap()
}
================================================
FILE: npm/LICENSE
================================================
MIT License
Copyright (c) 2023 the Deno authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: npm/README.md
================================================
# `@deno/kv`

A [Deno KV](https://deno.com/kv) client library optimized for Node.js.
- Access [Deno Deploy](https://deno.com/deploy) remote databases (or any
endpoint implementing the open
[KV Connect](https://github.com/denoland/denokv/blob/main/proto/kv-connect.md)
protocol) on Node 18+.
- Create local KV databases backed by
[SQLite](https://www.sqlite.org/index.html), using optimized native
[NAPI](https://nodejs.org/docs/latest-v18.x/api/n-api.html) packages for
Node - compatible with databases created by Deno itself.
- Create ephemeral in-memory KV instances backed by SQLite memory files or by a
lightweight JS-only implementation for testing.
- Zero JS dependencies, architecture-specific native code for SQLite backend
(see below).
- Simply call the exported `openKv` function (equiv to
[`Deno.openKv`](https://deno.land/api?s=Deno.openKv&unstable)) with a url or
local path to get started!
### Quick start - Node 18+
_Install the [npm package](https://www.npmjs.com/package/@deno/kv)_ 👉
`npm install @deno/kv`
_Remote KV Database_
```js
import { openKv } from "@deno/kv";
// to open a database connection to an existing Deno Deploy KV database,
// first obtain the database ID from your project dashboard:
// https://dash.deno.com/projects/YOUR_PROJECT/kv
// connect to the remote database
const kv = await openKv(
"https://api.deno.com/databases/YOUR_DATABASE_ID/connect",
);
// access token for auth is the value of environment variable DENO_KV_ACCESS_TOKEN by default
// do anything using the KV api: https://deno.land/api?s=Deno.Kv&unstable
const result = await kv.set(["from-client"], "hello!");
console.log(result);
// close the database connection
kv.close();
// to provide an explicit access token, pass it as an additional option
const kv2 = await openKv(
"https://api.deno.com/databases/YOUR_DATABASE_ID/connect",
{ accessToken: mySecretAccessToken },
);
```
_Local KV Database_
```js
import { openKv } from "@deno/kv";
// create a local KV database instance backed by SQLite
const kv = await openKv("kv.db");
// do anything using the KV api: https://deno.land/api?s=Deno.Kv&unstable
const result = await kv.set(["from-client"], "hello!");
console.log(result);
// close the database connection
kv.close();
```
_In-Memory KV Database (no native code)_
```js
import { openKv } from "@deno/kv";
// create an ephemeral KV instance for testing
const kv = await openKv("");
// do anything using the KV api: https://deno.land/api?s=Deno.Kv&unstable
const result = await kv.set(["from-client"], "hello!");
console.log(result);
// close the database connection
kv.close();
```
> Examples use ESM syntax, but this package supports CJS `require`-based usage
> as well
### Local KV Databases
Local disk-based databases are backed by
[SQLite](https://www.sqlite.org/index.html), and are compatible with databases created
with Deno itself:
- leverages shared Rust code from
[denoland/denokv](https://github.com/denoland/denokv) with a small shim
compiled for Node's native interface via the [NAPI-RS](https://napi.rs/)
framework
- an architecture-specific native package dependency is selected and installed
at `npm install` time via the standard npm
[peer dependency mechanism](https://docs.npmjs.com/cli/v10/configuring-npm/package-json#peerdependencies)
The following native architectures are supported:
| | node18 | node20 |
| ------------- | ------ | ------ |
| Windows x64 | ✓ | ✓ |
| macOS x64 | ✓ | ✓ |
| macOS arm64 | ✓ | ✓ |
| Linux x64 gnu | ✓ | ✓ |
### Credits
- Protobuf code generated with [pb](https://deno.land/x/pbkit/cli/pb/README.md)
- npm package generated with [dnt](https://github.com/denoland/dnt)
- Initial code contributed by
[skymethod/kv-connect-kit](https://github.com/skymethod/kv-connect-kit)
---
### API
This package exports a single convenience function `openKv`, taking an optional
string `path`, with optional `opts`. Depending on the `path` provided, one of
three different implementations are used:
- if `path` is omitted or blank, an ephemeral `in-memory` db implementation is
used, useful for testing
- if `path` is an http or https url, the `remote` client implementation is used
to connect to [Deno Deploy](https://deno.com/deploy) or self-hosted
[denokv](https://github.com/denoland/denokv) instances
- otherwise the `path` is passed to the native `sqlite` implementation - can
specify local paths or `:memory:` for SQLite's
[in-memory mode](https://www.sqlite.org/inmemorydb.html)
You can override the implementation used via the `implementation` option:
```js
const kv = await openKv("https://example.com/not-really-remote", {
implementation: "in-memory",
});
```
Pass the `debug` option to `console.log` additional debugging info:
```js
const kv = await openKv("http://localhost:4512/", {
debug: true
});
```
### Backend-specific options
Each implementation supports different additional options,
via the second parameter to `openKv`:
**Remote backend**
```ts
export interface RemoteServiceOptions {
/** Access token used to authenticate to the remote service */
readonly accessToken: string;
/** Wrap unsupported V8 payloads to instances of UnknownV8 instead of failing.
*
* Only applicable when using the default serializer. */
readonly wrapUnknownValues?: boolean;
/** Enable some console logging */
readonly debug?: boolean;
/** Custom serializer to use when serializing v8-encoded KV values.
*
* When you are running on Node 18+, pass the 'serialize' function in Node's 'v8' module. */
readonly encodeV8?: EncodeV8;
/** Custom deserializer to use when deserializing v8-encoded KV values.
*
* When you are running on Node 18+, pass the 'deserialize' function in Node's 'v8' module. */
readonly decodeV8?: DecodeV8;
/** Custom fetcher to use for the underlying http calls.
*
* Defaults to global 'fetch'`
*/
readonly fetcher?: Fetcher;
/** Max number of times to attempt to retry certain fetch errors (like 5xx) */
readonly maxRetries?: number;
/** Limit to specific KV Connect protocol versions */
readonly supportedVersions?: KvConnectProtocolVersion[];
}
```
**Native SQLite backend**
```ts
export interface NapiBasedServiceOptions {
/** Enable some console logging */
readonly debug?: boolean;
/** Underlying native napi interface */
readonly napi?: NapiInterface;
/** Custom serializer to use when serializing v8-encoded KV values.
*
* When you are running on Node 18+, pass the 'serialize' function in Node's 'v8' module. */
readonly encodeV8: EncodeV8;
/** Custom deserializer to use when deserializing v8-encoded KV values.
*
* When you are running on Node 18+, pass the 'deserialize' function in Node's 'v8' module. */
readonly decodeV8: DecodeV8;
/** The database will be opened as an in-memory database. */
readonly inMemory?: boolean;
}
```
**Lightweight In-Memory backend**
```ts
export interface InMemoryServiceOptions {
/** Enable some console logging */
readonly debug?: boolean;
/** Maximum number of attempts to deliver a failing queue message before giving up. Defaults to 10. */
readonly maxQueueAttempts?: number;
}
```
### Other runtimes
This package is targeted for Node.js, but may work on other runtimes with the following caveats:
**V8 Serialization**
Deno KV uses [V8](https://v8.dev/docs)'s serialization format to serialize values, provided natively by Deno and when using this
package on Node automatically via the [built-in `v8` module](https://nodejs.org/api/v8.html#serialization-api).
[Bun](https://bun.sh/) also provides a `v8` module, but uses a different serialization format under the hood (JavaScriptCore).
This can present data corruption problems if you want to use databases on Deno Deploy or other databases shared
with Node/Deno that use actual V8 serialization: you might create data you cannot read, or vice versa.
For this reason, `openKV` on Bun will throw by default to avoid unexpected data corruption.
If you are only going to read and write to your local databases in Bun, you can force the use of Bun's serializers by providing
a custom `encodeV8`, `decodeV8` explicitly as the second parameter to `openKv`. Note any data will be unreadable by
Node (using @deno/kv), or Deno - since they use the actual V8 format.
```js
import { openKv } from "@deno/kv";
import { serialize as encodeV8, deserialize as decodeV8 } from "v8"; // actually JavaScriptCore format on Bun!
const kv = await openKv("kv.db", { encodeV8, decodeV8 });
```
If a native `v8` module is not available on your runtime, you can use a limited JS-based V8 serializer provided by this package.
It only supports a limited number of value types (`string`, `boolean`, `null`, `undefined`), so consider using `JSON.parse`/`JSON.stringify`
to marshall values to and from strings for storage.
```js
import { openKv, makeLimitedV8Serializer } from "@deno/kv";
const { encodeV8, decodeV8 } = makeLimitedV8Serializer();
const kv = await openKv("kv.db", { encodeV8, decodeV8 });
```
V8 serialization is only necessary for SQLite and remote databases, the in-memory implementation
used when calling `openKv()` or `openKv('')` uses in-process values and [structuredClone](https://developer.mozilla.org/en-US/docs/Web/API/structuredClone)
instead.
================================================
FILE: npm/deno.jsonc
================================================
{
"lint": {
"exclude": [
"src/proto", // generated
],
"include": [
"src"
],
"rules": {
"tags": [
"recommended"
],
"include": [
"camelcase",
"guard-for-in"
],
"exclude": [
"no-invalid-triple-slash-reference"
]
}
},
"fmt": {
"exclude": [
"src/proto", // generated
],
"include": [
"src"
],
},
"lock": false,
}
================================================
FILE: npm/napi/.editorconfig
================================================
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors or IDEs
# http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
================================================
FILE: npm/napi/.eslintrc.yml
================================================
parser: '@typescript-eslint/parser'
parserOptions:
ecmaFeatures:
jsx: true
ecmaVersion: latest
sourceType: module
project: ./tsconfig.json
env:
browser: true
es6: true
node: true
jest: true
ignorePatterns: ['index.js']
plugins:
- import
- '@typescript-eslint'
extends:
- eslint:recommended
- plugin:prettier/recommended
rules:
# 0 = off, 1 = warn, 2 = error
'space-before-function-paren': 0
'no-useless-constructor': 0
'no-undef': 2
'no-console': [2, { allow: ['error', 'warn', 'info', 'assert'] }]
'comma-dangle': ['error', 'only-multiline']
'no-unused-vars': 0
'no-var': 2
'one-var-declaration-per-line': 2
'prefer-const': 2
'no-const-assign': 2
'no-duplicate-imports': 2
'no-use-before-define': [2, { 'functions': false, 'classes': false }]
'eqeqeq': [2, 'always', { 'null': 'ignore' }]
'no-case-declarations': 0
'no-restricted-syntax':
[
2,
{
'selector': 'BinaryExpression[operator=/(==|===|!=|!==)/][left.raw=true], BinaryExpression[operator=/(==|===|!=|!==)/][right.raw=true]',
'message': Don't compare for equality against boolean literals,
},
]
# https://github.com/benmosher/eslint-plugin-import/pull/334
'import/no-duplicates': 2
'import/first': 2
'import/newline-after-import': 2
'import/order':
[
2,
{
'newlines-between': 'always',
'alphabetize': { 'order': 'asc' },
'groups': ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
},
]
overrides:
- files:
- ./**/*{.ts,.tsx}
rules:
'no-unused-vars': [2, { varsIgnorePattern: '^_', argsIgnorePattern: '^_', ignoreRestSiblings: true }]
'no-undef': 0
# TypeScript declare merge
'no-redeclare': 0
'no-useless-constructor': 0
'no-dupe-class-members': 0
'no-case-declarations': 0
'no-duplicate-imports': 0
# TypeScript Interface and Type
'no-use-before-define': 0
'@typescript-eslint/adjacent-overload-signatures': 2
'@typescript-eslint/await-thenable': 2
'@typescript-eslint/consistent-type-assertions': 2
'@typescript-eslint/ban-types':
[
'error',
{
'types':
{
'String': { 'message': 'Use string instead', 'fixWith': 'string' },
'Number': { 'message': 'Use number instead', 'fixWith': 'number' },
'Boolean': { 'message': 'Use boolean instead', 'fixWith': 'boolean' },
'Function': { 'message': 'Use explicit type instead' },
},
},
]
'@typescript-eslint/explicit-member-accessibility':
[
'error',
{
accessibility: 'explicit',
overrides:
{
accessors: 'no-public',
constructors: 'no-public',
methods: 'no-public',
properties: 'no-public',
parameterProperties: 'explicit',
},
},
]
'@typescript-eslint/method-signature-style': 2
'@typescript-eslint/no-floating-promises': 2
'@typescript-eslint/no-implied-eval': 2
'@typescript-eslint/no-for-in-array': 2
'@typescript-eslint/no-inferrable-types': 2
'@typescript-eslint/no-invalid-void-type': 2
'@typescript-eslint/no-misused-new': 2
'@typescript-eslint/no-misused-promises': 2
'@typescript-eslint/no-namespace': 2
'@typescript-eslint/no-non-null-asserted-optional-chain': 2
'@typescript-eslint/no-throw-literal': 2
'@typescript-eslint/no-unnecessary-boolean-literal-compare': 2
'@typescript-eslint/prefer-for-of': 2
'@typescript-eslint/prefer-nullish-coalescing': 2
'@typescript-eslint/switch-exhaustiveness-check': 2
'@typescript-eslint/prefer-optional-chain': 2
'@typescript-eslint/prefer-readonly': 2
'@typescript-eslint/prefer-string-starts-ends-with': 0
'@typescript-eslint/no-array-constructor': 2
'@typescript-eslint/require-await': 2
'@typescript-eslint/return-await': 2
'@typescript-eslint/ban-ts-comment':
[2, { 'ts-expect-error': false, 'ts-ignore': true, 'ts-nocheck': true, 'ts-check': false }]
'@typescript-eslint/naming-convention':
[
2,
{
selector: 'memberLike',
format: ['camelCase', 'PascalCase'],
modifiers: ['private'],
leadingUnderscore: 'forbid',
},
]
'@typescript-eslint/no-unused-vars':
[2, { varsIgnorePattern: '^_', argsIgnorePattern: '^_', ignoreRestSiblings: true }]
'@typescript-eslint/member-ordering':
[
2,
{
default:
[
'public-static-field',
'protected-static-field',
'private-static-field',
'public-static-method',
'protected-static-method',
'private-static-method',
'public-instance-field',
'protected-instance-field',
'private-instance-field',
'public-constructor',
'protected-constructor',
'private-constructor',
'public-instance-method',
'protected-instance-method',
'private-instance-method',
],
},
]
================================================
FILE: npm/napi/.gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
*.ts text eol=lf merge=union
*.tsx text eol=lf merge=union
*.rs text eol=lf merge=union
*.js text eol=lf merge=union
*.json text eol=lf merge=union
*.debug text eol=lf merge=union
# Generated codes
index.js linguist-detectable=false
index.d.ts linguist-detectable=false
================================================
FILE: npm/napi/.gitignore
================================================
# Created by https://www.toptal.com/developers/gitignore/api/node
# Edit at https://www.toptal.com/developers/gitignore?templates=node
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# Next.js build output
.next
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# End of https://www.toptal.com/developers/gitignore/api/node
#Added by cargo
/target
Cargo.lock
*.node
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
================================================
FILE: npm/napi/.prettierignore
================================================
target
.yarn
================================================
FILE: npm/napi/.taplo.toml
================================================
exclude = ["node_modules/**/*.toml"]
# https://taplo.tamasfe.dev/configuration/formatter-options.html
[formatting]
align_entries = true
indent_tables = true
reorder_keys = true
================================================
FILE: npm/napi/.yarn/releases/yarn-4.0.1.cjs
================================================
#!/usr/bin/env node
/* eslint-disable */
//prettier-ignore
(()=>{var n_e=Object.create;var OR=Object.defineProperty;var i_e=Object.getOwnPropertyDescriptor;var s_e=Object.getOwnPropertyNames;var o_e=Object.getPrototypeOf,a_e=Object.prototype.hasOwnProperty;var Be=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var Et=(t,e)=>()=>(t&&(e=t(t=0)),e);var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Vt=(t,e)=>{for(var r in e)OR(t,r,{get:e[r],enumerable:!0})},l_e=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of s_e(e))!a_e.call(t,a)&&a!==r&&OR(t,a,{get:()=>e[a],enumerable:!(o=i_e(e,a))||o.enumerable});return t};var $e=(t,e,r)=>(r=t!=null?n_e(o_e(t)):{},l_e(e||!t||!t.__esModule?OR(r,"default",{value:t,enumerable:!0}):r,t));var vi={};Vt(vi,{SAFE_TIME:()=>R7,S_IFDIR:()=>wD,S_IFLNK:()=>ID,S_IFMT:()=>Ou,S_IFREG:()=>_w});var Ou,wD,_w,ID,R7,T7=Et(()=>{Ou=61440,wD=16384,_w=32768,ID=40960,R7=456789e3});var ar={};Vt(ar,{EBADF:()=>Io,EBUSY:()=>c_e,EEXIST:()=>g_e,EINVAL:()=>A_e,EISDIR:()=>h_e,ENOENT:()=>f_e,ENOSYS:()=>u_e,ENOTDIR:()=>p_e,ENOTEMPTY:()=>m_e,EOPNOTSUPP:()=>y_e,EROFS:()=>d_e,ERR_DIR_CLOSED:()=>MR});function Tl(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function c_e(t){return Tl("EBUSY",t)}function u_e(t,e){return Tl("ENOSYS",`${t}, ${e}`)}function A_e(t){return Tl("EINVAL",`invalid argument, ${t}`)}function Io(t){return Tl("EBADF",`bad file descriptor, ${t}`)}function f_e(t){return Tl("ENOENT",`no such file or directory, ${t}`)}function p_e(t){return Tl("ENOTDIR",`not a directory, ${t}`)}function h_e(t){return Tl("EISDIR",`illegal operation on a directory, ${t}`)}function g_e(t){return Tl("EEXIST",`file already exists, ${t}`)}function d_e(t){return Tl("EROFS",`read-only filesystem, ${t}`)}function m_e(t){return Tl("ENOTEMPTY",`directory not empty, ${t}`)}function y_e(t){return Tl("EOPNOTSUPP",`operation not supported, ${t}`)}function MR(){return Tl("ERR_DIR_CLOSED","Directory handle was closed")}var BD=Et(()=>{});var Ea={};Vt(Ea,{BigIntStatsEntry:()=>$m,DEFAULT_MODE:()=>HR,DirEntry:()=>UR,StatEntry:()=>Zm,areStatsEqual:()=>jR,clearStats:()=>vD,convertToBigIntStats:()=>C_e,makeDefaultStats:()=>N7,makeEmptyStats:()=>E_e});function N7(){return new Zm}function E_e(){return vD(N7())}function vD(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):_R.types.isDate(r)&&(t[e]=new Date(0))}return t}function C_e(t){let e=new $m;for(let r in t)if(Object.hasOwn(t,r)){let o=t[r];typeof o=="number"?e[r]=BigInt(o):_R.types.isDate(o)&&(e[r]=new Date(o))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function jR(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var _R,HR,UR,Zm,$m,qR=Et(()=>{_R=$e(Be("util")),HR=33188,UR=class{constructor(){this.name="";this.path="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},Zm=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=HR;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},$m=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(HR);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function D_e(t){let e,r;if(e=t.match(B_e))t=e[1];else if(r=t.match(v_e))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function P_e(t){t=t.replace(/\\/g,"/");let e,r;return(e=t.match(w_e))?t=`/${e[1]}`:(r=t.match(I_e))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t}function DD(t,e){return t===ue?O7(e):GR(e)}var Hw,Bt,dr,ue,V,L7,w_e,I_e,B_e,v_e,GR,O7,Ca=Et(()=>{Hw=$e(Be("path")),Bt={root:"/",dot:".",parent:".."},dr={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml",env:".env"},ue=Object.create(Hw.default),V=Object.create(Hw.default.posix);ue.cwd=()=>process.cwd();V.cwd=process.platform==="win32"?()=>GR(process.cwd()):process.cwd;process.platform==="win32"&&(V.resolve=(...t)=>t.length>0&&V.isAbsolute(t[0])?Hw.default.posix.resolve(...t):Hw.default.posix.resolve(V.cwd(),...t));L7=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};ue.contains=(t,e)=>L7(ue,t,e);V.contains=(t,e)=>L7(V,t,e);w_e=/^([a-zA-Z]:.*)$/,I_e=/^\/\/(\.\/)?(.*)$/,B_e=/^\/([a-zA-Z]:.*)$/,v_e=/^\/unc\/(\.dot\/)?(.*)$/;GR=process.platform==="win32"?P_e:t=>t,O7=process.platform==="win32"?D_e:t=>t;ue.fromPortablePath=O7;ue.toPortablePath=GR});async function PD(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.indexPath,{recursive:!0});let o=[];for(let a of r)for(let n of r)o.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(o),e.indexPath}async function M7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtils.normalize(o),A=[],p=[],{atime:h,mtime:C}=a.stableTime?{atime:Ng,mtime:Ng}:await r.lstatPromise(u);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,C]}),await YR(A,p,t,n,r,u,{...a,didParentExist:!0});for(let I of A)await I();await Promise.all(p.map(I=>I()))}async function YR(t,e,r,o,a,n,u){let A=u.didParentExist?await U7(r,o):null,p=await a.lstatPromise(n),{atime:h,mtime:C}=u.stableTime?{atime:Ng,mtime:Ng}:p,I;switch(!0){case p.isDirectory():I=await b_e(t,e,r,o,A,a,n,p,u);break;case p.isFile():I=await Q_e(t,e,r,o,A,a,n,p,u);break;case p.isSymbolicLink():I=await F_e(t,e,r,o,A,a,n,p,u);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(u.linkStrategy?.type!=="HardlinkFromIndex"||!p.isFile())&&((I||A?.mtime?.getTime()!==C.getTime()||A?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(o,h,C)),I=!0),(A===null||(A.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(o,p.mode&511)),I=!0)),I}async function U7(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function b_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(o,{mode:A.mode})}catch(v){if(v.code!=="EEXIST")throw v}}),h=!0);let C=await n.readdirPromise(u),I=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let v of C.sort())await YR(t,e,r,r.pathUtils.join(o,v),n,n.pathUtils.join(u,v),I)&&(h=!0);else(await Promise.all(C.map(async x=>{await YR(t,e,r,r.pathUtils.join(o,x),n,n.pathUtils.join(u,x),I)}))).some(x=>x)&&(h=!0);return h}async function x_e(t,e,r,o,a,n,u,A,p,h){let C=await n.checksumFilePromise(u,{algorithm:"sha1"}),I=r.pathUtils.join(h.indexPath,C.slice(0,2),`${C}.dat`),v;(te=>(te[te.Lock=0]="Lock",te[te.Rename=1]="Rename"))(v||={});let x=1,E=await U7(r,I);if(a){let U=E&&a.dev===E.dev&&a.ino===E.ino,z=E?.mtimeMs!==S_e;if(U&&z&&h.autoRepair&&(x=0,E=null),!U)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1}let R=!E&&x===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,L=!1;return t.push(async()=>{if(!E&&(x===0&&await r.lockPromise(I,async()=>{let U=await n.readFilePromise(u);await r.writeFilePromise(I,U)}),x===1&&R)){let U=await n.readFilePromise(u);await r.writeFilePromise(R,U);try{await r.linkPromise(R,I)}catch(z){if(z.code==="EEXIST")L=!0,await r.unlinkPromise(R);else throw z}}a||await r.linkPromise(I,o)}),e.push(async()=>{E||await r.lutimesPromise(I,Ng,Ng),R&&!L&&await r.unlinkPromise(R)}),!1}async function k_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(u);await r.writeFilePromise(o,h)}),!0}async function Q_e(t,e,r,o,a,n,u,A,p){return p.linkStrategy?.type==="HardlinkFromIndex"?x_e(t,e,r,o,a,n,u,A,p,p.linkStrategy):k_e(t,e,r,o,a,n,u,A,p)}async function F_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(DD(r.pathUtils,await n.readlinkPromise(u)),o)}),!0}var Ng,S_e,WR=Et(()=>{Ca();Ng=new Date(456789e3*1e3),S_e=Ng.getTime()});function SD(t,e,r,o){let a=()=>{let n=r.shift();if(typeof n>"u")return null;let u=t.pathUtils.join(e,n);return Object.assign(t.statSync(u),{name:n,path:void 0})};return new jw(e,a,o)}var jw,_7=Et(()=>{BD();jw=class{constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.closed=!1}throwIfClosed(){if(this.closed)throw MR()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function H7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var j7,ey,q7=Et(()=>{j7=Be("events");qR();ey=class extends j7.EventEmitter{constructor(r,o,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=o,this.bigint=a,this.lastStats=this.stat()}static create(r,o,a){let n=new ey(r,o,a);return n.start(),n}start(){H7(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){H7(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let o=this.bigint?new $m:new Zm;return vD(o)}}makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStats;jR(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?o:o.unref()}registerChangeListener(r,o){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(o))}unregisterChangeListener(r){this.removeListener("change",r);let o=this.changeListeners.get(r);typeof o<"u"&&clearInterval(o),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function ty(t,e,r,o){let a,n,u,A;switch(typeof r){case"function":a=!1,n=!0,u=5007,A=r;break;default:({bigint:a=!1,persistent:n=!0,interval:u=5007}=r),A=o;break}let p=bD.get(t);typeof p>"u"&&bD.set(t,p=new Map);let h=p.get(e);return typeof h>"u"&&(h=ey.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(A,{persistent:n,interval:u}),h}function Lg(t,e,r){let o=bD.get(t);if(typeof o>"u")return;let a=o.get(e);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),o.delete(e)))}function Og(t){let e=bD.get(t);if(!(typeof e>"u"))for(let r of e.keys())Lg(t,r)}var bD,KR=Et(()=>{q7();bD=new WeakMap});function R_e(t){let e=t.match(/\r?\n/g);if(e===null)return Y7.EOL;let r=e.filter(a=>a===`\r
`).length,o=e.length-r;return r>o?`\r
`:`
`}function Mg(t,e){return e.replace(/\r?\n/g,R_e(t))}var G7,Y7,hf,Mu,Ug=Et(()=>{G7=Be("crypto"),Y7=Be("os");WR();Ca();hf=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length>0;){let a=o.shift();if((await this.lstatPromise(a)).isDirectory()){let u=await this.readdirPromise(a);if(r)for(let A of u.sort())o.push(this.pathUtils.join(a,A));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(e,{algorithm:r="sha512"}={}){let o=await this.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,G7.createHash)(r),A=0;for(;(A=await this.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest("hex")}finally{await this.closePromise(o)}}async removePromise(e,{recursive:r=!0,maxRetries:o=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(u=>this.removePromise(this.pathUtils.resolve(e,u))))}for(let n=0;n<=o;n++)try{await this.rmdirPromise(e);break}catch(u){if(u.code!=="EBUSY"&&u.code!=="ENOTEMPTY")throw u;n<o&&await new Promise(A=>setTimeout(A,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a){if(a.code==="ENOENT")return;throw a}if(o.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{await this.mkdirPromise(A)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=A,r!=null&&await this.chmodPromise(A,r),o!=null)await this.utimesPromise(A,o[0],o[1]);else{let p=await this.statPromise(this.pathUtils.dirname(A));await this.utimesPromise(A,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{this.mkdirSync(A)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=A,r!=null&&this.chmodSync(A,r),o!=null)this.utimesSync(A,o[0],o[1]);else{let p=this.statSync(this.pathUtils.dirname(A));this.utimesSync(A,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stableTime:u=!1,linkStrategy:A=null}={}){return await M7(this,e,o,r,{overwrite:a,stableSort:n,stableTime:u,linkStrategy:A})}copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),u=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=o.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),o.pathUtils.join(r,h),{baseFs:o,overwrite:a})}else if(n.isFile()){if(!u||a){u&&this.removeSync(e);let p=o.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!u||a){u&&this.removeSync(e);let p=o.readlinkSync(r);this.symlinkSync(DD(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let A=n.mode&511;this.chmodSync(e,A)}async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,o):this.changeFileTextPromise(e,r,o)}async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:o})}async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n="";try{n=await this.readFilePromise(e,"utf8")}catch{}let u=o?Mg(n,r):r;n!==u&&await this.writeFilePromise(e,u,{mode:a})}changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,o):this.changeFileTextSync(e,r,o)}changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:o})}changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n="";try{n=this.readFileSync(e,"utf8")}catch{}let u=o?Mg(n,r):r;n!==u&&this.writeFileSync(e,u,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.code==="EXDEV")await this.copyPromise(r,e),await this.removePromise(e);else throw o}}moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code==="EXDEV")this.copySync(r,e),this.removeSync(e);else throw o}}async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),u=null,A=async()=>{let p;try{[p]=await this.readJsonPromise(o)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;u===null;)try{u=await this.openPromise(o,"wx")}catch(p){if(p.code==="EEXIST"){if(!await A())try{await this.unlinkPromise(o);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${o})`)}else throw p}await this.writePromise(u,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(u),await this.unlinkPromise(o)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}async writeJsonPromise(e,r,{compact:o=!1}={}){let a=o?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)}
`)}writeJsonSync(e,r,{compact:o=!1}={}){let a=o?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)}
`)}async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await this.lutimesPromise(e,o.atime,o.mtime)}async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<"u"&&(e=a),this.lutimesSync(e,o.atime,o.mtime)}},Mu=class extends hf{constructor(){super(V)}}});var Ps,gf=Et(()=>{Ug();Ps=class extends hf{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,o){return this.baseFs.openPromise(this.mapToBase(e),r,o)}openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,o,a,n){return await this.baseFs.readPromise(e,r,o,a,n)}readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}async writePromise(e,r,o,a,n){return typeof r=="string"?await this.baseFs.writePromise(e,r,o):await this.baseFs.writePromise(e,r,o,a,n)}writeSync(e,r,o,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r,o):this.baseFs.writeSync(e,r,o,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,o){return this.baseFs.fchownPromise(e,r,o)}fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase(e),r,o)}chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,o=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),o)}copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),o)}async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,o)}appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,o)}async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,o)}writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,o)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBase(e),r,o)}utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapToBase(e),r,o)}lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(u,a,o)}symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(u,a,o)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,o){return this.baseFs.watch(this.mapToBase(e),r,o)}watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}}});var Uu,W7=Et(()=>{gf();Uu=class extends Ps{constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(r){return r}mapToBase(r){return r}}});function K7(t){let e=t;return typeof t.path=="string"&&(e.path=ue.toPortablePath(t.path)),e}var V7,Tn,_g=Et(()=>{V7=$e(Be("fs"));Ug();Ca();Tn=class extends Mu{constructor(r=V7.default){super();this.realFs=r}getExtractHint(){return!1}getRealPath(){return Bt.root}resolve(r){return V.resolve(r)}async openPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.open(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}openSync(r,o,a){return this.realFs.openSync(ue.fromPortablePath(r),o,a)}async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<"u"?this.realFs.opendir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.opendir(ue.fromPortablePath(r),this.makeCallback(a,n))}).then(a=>{let n=a;return Object.defineProperty(n,"path",{value:r,configurable:!0,writable:!0}),n})}opendirSync(r,o){let n=typeof o<"u"?this.realFs.opendirSync(ue.fromPortablePath(r),o):this.realFs.opendirSync(ue.fromPortablePath(r));return Object.defineProperty(n,"path",{value:r,configurable:!0,writable:!0}),n}async readPromise(r,o,a=0,n=0,u=-1){return await new Promise((A,p)=>{this.realFs.read(r,o,a,n,u,(h,C)=>{h?p(h):A(C)})})}readSync(r,o,a,n,u){return this.realFs.readSync(r,o,a,n,u)}async writePromise(r,o,a,n,u){return await new Promise((A,p)=>typeof o=="string"?this.realFs.write(r,o,a,this.makeCallback(A,p)):this.realFs.write(r,o,a,n,u,this.makeCallback(A,p)))}writeSync(r,o,a,n,u){return typeof o=="string"?this.realFs.writeSync(r,o,a):this.realFs.writeSync(r,o,a,n,u)}async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this.makeCallback(o,a))})}closeSync(r){this.realFs.closeSync(r)}createReadStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createReadStream(a,o)}createWriteStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createWriteStream(a,o)}async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.realpath(ue.fromPortablePath(r),{},this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}realpathSync(r){return ue.toPortablePath(this.realFs.realpathSync(ue.fromPortablePath(r),{}))}async existsPromise(r){return await new Promise(o=>{this.realFs.exists(ue.fromPortablePath(r),o)})}accessSync(r,o){return this.realFs.accessSync(ue.fromPortablePath(r),o)}async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.access(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}existsSync(r){return this.realFs.existsSync(ue.fromPortablePath(r))}async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.stat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.stat(ue.fromPortablePath(r),this.makeCallback(a,n))})}statSync(r,o){return o?this.realFs.statSync(ue.fromPortablePath(r),o):this.realFs.statSync(ue.fromPortablePath(r))}async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.fstat(r,o,this.makeCallback(a,n)):this.realFs.fstat(r,this.makeCallback(a,n))})}fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync(r)}async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.lstat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.lstat(ue.fromPortablePath(r),this.makeCallback(a,n))})}lstatSync(r,o){return o?this.realFs.lstatSync(ue.fromPortablePath(r),o):this.realFs.lstatSync(ue.fromPortablePath(r))}async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fchmod(r,o,this.makeCallback(a,n))})}fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chmod(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}chmodSync(r,o){return this.realFs.chmodSync(ue.fromPortablePath(r),o)}async fchownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.fchown(r,o,a,this.makeCallback(n,u))})}fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}async chownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.chown(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}chownSync(r,o,a){return this.realFs.chownSync(ue.fromPortablePath(r),o,a)}async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.rename(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}renameSync(r,o){return this.realFs.renameSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async copyFilePromise(r,o,a=0){return await new Promise((n,u)=>{this.realFs.copyFile(ue.fromPortablePath(r),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}copyFileSync(r,o,a=0){return this.realFs.copyFileSync(ue.fromPortablePath(r),ue.fromPortablePath(o),a)}async appendFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.appendFile(A,o,a,this.makeCallback(n,u)):this.realFs.appendFile(A,o,this.makeCallback(n,u))})}appendFileSync(r,o,a){let n=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.appendFileSync(n,o,a):this.realFs.appendFileSync(n,o)}async writeFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.writeFile(A,o,a,this.makeCallback(n,u)):this.realFs.writeFile(A,o,this.makeCallback(n,u))})}writeFileSync(r,o,a){let n=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.writeFileSync(n,o,a):this.realFs.writeFileSync(n,o)}async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unlink(ue.fromPortablePath(r),this.makeCallback(o,a))})}unlinkSync(r){return this.realFs.unlinkSync(ue.fromPortablePath(r))}async utimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.utimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}utimesSync(r,o,a){this.realFs.utimesSync(ue.fromPortablePath(r),o,a)}async lutimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.lutimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}lutimesSync(r,o,a){this.realFs.lutimesSync(ue.fromPortablePath(r),o,a)}async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkdir(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}mkdirSync(r,o){return this.realFs.mkdirSync(ue.fromPortablePath(r),o)}async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.rmdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.rmdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}rmdirSync(r,o){return this.realFs.rmdirSync(ue.fromPortablePath(r),o)}async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}linkSync(r,o){return this.realFs.linkSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async symlinkPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.symlink(ue.fromPortablePath(r.replace(/\/+$/,"")),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}symlinkSync(r,o,a){return this.realFs.symlinkSync(ue.fromPortablePath(r.replace(/\/+$/,"")),ue.fromPortablePath(o),a)}async readFilePromise(r,o){return await new Promise((a,n)=>{let u=typeof r=="string"?ue.fromPortablePath(r):r;this.realFs.readFile(u,o,this.makeCallback(a,n))})}readFileSync(r,o){let a=typeof r=="string"?ue.fromPortablePath(r):r;return this.realFs.readFileSync(a,o)}async readdirPromise(r,o){return await new Promise((a,n)=>{o?o.recursive&&process.platform==="win32"?o.withFileTypes?this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(K7)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(ue.toPortablePath)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.readdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}readdirSync(r,o){return o?o.recursive&&process.platform==="win32"?o.withFileTypes?this.realFs.readdirSync(ue.fromPortablePath(r),o).map(K7):this.realFs.readdirSync(ue.fromPortablePath(r),o).map(ue.toPortablePath):this.realFs.readdirSync(ue.fromPortablePath(r),o):this.realFs.readdirSync(ue.fromPortablePath(r))}async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.readlink(ue.fromPortablePath(r),this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}readlinkSync(r){return ue.toPortablePath(this.realFs.readlinkSync(ue.fromPortablePath(r)))}async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.truncate(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}truncateSync(r,o){return this.realFs.truncateSync(ue.fromPortablePath(r),o)}async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.ftruncate(r,o,this.makeCallback(a,n))})}ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}watch(r,o,a){return this.realFs.watch(ue.fromPortablePath(r),o,a)}watchFile(r,o,a){return this.realFs.watchFile(ue.fromPortablePath(r),o,a)}unwatchFile(r,o){return this.realFs.unwatchFile(ue.fromPortablePath(r),o)}makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}}});var gn,z7=Et(()=>{_g();gf();Ca();gn=class extends Ps{constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils.normalize(r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(r){return this.pathUtils.isAbsolute(r)?V.normalize(r):this.baseFs.resolve(V.join(this.target,r))}mapFromBase(r){return r}mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(this.target,r)}}});var J7,_u,X7=Et(()=>{_g();gf();Ca();J7=Bt.root,_u=class extends Ps{constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils.resolve(Bt.root,r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Bt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsolute(r))return this.pathUtils.resolve(this.target,this.pathUtils.relative(J7,r));if(o.match(/^\.\.\/?/))throw new Error(`Resolving this path (${r}) would escape the jail`);return this.pathUtils.resolve(this.target,r)}mapFromBase(r){return this.pathUtils.resolve(J7,this.pathUtils.relative(this.target,r))}}});var ry,Z7=Et(()=>{gf();ry=class extends Ps{constructor(r,o){super(o);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var Hg,wa,Up,$7=Et(()=>{Hg=Be("fs");Ug();_g();KR();BD();Ca();wa=4278190080,Up=class extends Mu{constructor({baseFs:r=new Tn,filter:o=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:u=!0,maxAge:A=5e3,typeCheck:p=Hg.constants.S_IFREG,getMountPoint:h,factoryPromise:C,factorySync:I}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=u?new Map:null,this.factoryPromise=C,this.factorySync=I,this.filter=o,this.getMountPoint=h,this.magic=a<<24,this.maxAge=A,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(Og(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(Og(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o]),a}async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,o,a),async(n,{subPath:u})=>this.remapFd(n,await n.openPromise(u,o,a)))}openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,a),(n,{subPath:u})=>this.remapFd(n,n.openSync(u,o,a)))}async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,o),async(a,{subPath:n})=>await a.opendirPromise(n,o),{requireSubpath:!1})}opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,o),(a,{subPath:n})=>a.opendirSync(n,o),{requireSubpath:!1})}async readPromise(r,o,a,n,u){if((r&wa)!==this.magic)return await this.baseFs.readPromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Io("read");let[p,h]=A;return await p.readPromise(h,o,a,n,u)}readSync(r,o,a,n,u){if((r&wa)!==this.magic)return this.baseFs.readSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Io("readSync");let[p,h]=A;return p.readSync(h,o,a,n,u)}async writePromise(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o=="string"?await this.baseFs.writePromise(r,o,a):await this.baseFs.writePromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Io("write");let[p,h]=A;return typeof o=="string"?await p.writePromise(h,o,a):await p.writePromise(h,o,a,n,u)}writeSync(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o=="string"?this.baseFs.writeSync(r,o,a):this.baseFs.writeSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Io("writeSync");let[p,h]=A;return typeof o=="string"?p.writeSync(h,o,a):p.writeSync(h,o,a,n,u)}async closePromise(r){if((r&wa)!==this.magic)return await this.baseFs.closePromise(r);let o=this.fdMap.get(r);if(typeof o>"u")throw Io("close");this.fdMap.delete(r);let[a,n]=o;return await a.closePromise(n)}closeSync(r){if((r&wa)!==this.magic)return this.baseFs.closeSync(r);let o=this.fdMap.get(r);if(typeof o>"u")throw Io("closeSync");this.fdMap.delete(r);let[a,n]=o;return a.closeSync(n)}createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,o),(a,{archivePath:n,subPath:u})=>{let A=a.createReadStream(u,o);return A.path=ue.fromPortablePath(this.pathUtils.join(n,u)),A})}createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,o),(a,{subPath:n})=>a.createWriteStream(n,o))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>"u"&&(u=await this.baseFs.realpathPromise(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,await o.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>"u"&&(u=this.baseFs.realpathSync(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,o.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(o,{subPath:a})=>await o.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(o,{subPath:a})=>o.existsSync(a))}async accessPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,o),async(a,{subPath:n})=>await a.accessPromise(n,o))}accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,o),(a,{subPath:n})=>a.accessSync(n,o))}async statPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,o),async(a,{subPath:n})=>await a.statPromise(n,o))}statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(a,{subPath:n})=>a.statSync(n,o))}async fstatPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatPromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("fstat");let[n,u]=a;return n.fstatPromise(u,o)}fstatSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("fstatSync");let[n,u]=a;return n.fstatSync(u,o)}async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,o),async(a,{subPath:n})=>await a.lstatPromise(n,o))}lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o),(a,{subPath:n})=>a.lstatSync(n,o))}async fchmodPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodPromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("fchmod");let[n,u]=a;return n.fchmodPromise(u,o)}fchmodSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("fchmodSync");let[n,u]=a;return n.fchmodSync(u,o)}async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,o),async(a,{subPath:n})=>await a.chmodPromise(n,o))}chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o),(a,{subPath:n})=>a.chmodSync(n,o))}async fchownPromise(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownPromise(r,o,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Io("fchown");let[u,A]=n;return u.fchownPromise(A,o,a)}fchownSync(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownSync(r,o,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Io("fchownSync");let[u,A]=n;return u.fchownSync(A,o,a)}async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,o,a),async(n,{subPath:u})=>await n.chownPromise(u,o,a))}chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,o,a),(n,{subPath:u})=>n.chownSync(u,o,a))}async renamePromise(r,o){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.renamePromise(r,o),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(o,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,A)}))}renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.renameSync(r,o),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(o,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,A)}))}async copyFilePromise(r,o,a=0){let n=async(u,A,p,h)=>{if((a&Hg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:"EXDEV"});if(a&Hg.constants.COPYFILE_EXCL&&await this.existsPromise(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:"EEXIST"});let C;try{C=await u.readFilePromise(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:"EINVAL"})}await p.writeFilePromise(h,C)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.copyFilePromise(r,o,a),async(u,{subPath:A})=>await n(this.baseFs,r,u,A)),async(u,{subPath:A})=>await this.makeCallPromise(o,async()=>await n(u,A,this.baseFs,o),async(p,{subPath:h})=>u!==p?await n(u,A,p,h):await u.copyFilePromise(A,h,a)))}copyFileSync(r,o,a=0){let n=(u,A,p,h)=>{if((a&Hg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:"EXDEV"});if(a&Hg.constants.COPYFILE_EXCL&&this.existsSync(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:"EEXIST"});let C;try{C=u.readFileSync(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:"EINVAL"})}p.writeFileSync(h,C)};return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.copyFileSync(r,o,a),(u,{subPath:A})=>n(this.baseFs,r,u,A)),(u,{subPath:A})=>this.makeCallSync(o,()=>n(u,A,this.baseFs,o),(p,{subPath:h})=>u!==p?n(u,A,p,h):u.copyFileSync(A,h,a)))}async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,o,a),async(n,{subPath:u})=>await n.appendFilePromise(u,o,a))}appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,o,a),(n,{subPath:u})=>n.appendFileSync(u,o,a))}async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,o,a),async(n,{subPath:u})=>await n.writeFilePromise(u,o,a))}writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,o,a),(n,{subPath:u})=>n.writeFileSync(u,o,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(o,{subPath:a})=>await o.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(o,{subPath:a})=>o.unlinkSync(a))}async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,o,a),async(n,{subPath:u})=>await n.utimesPromise(u,o,a))}utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,o,a),(n,{subPath:u})=>n.utimesSync(u,o,a))}async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,o,a),async(n,{subPath:u})=>await n.lutimesPromise(u,o,a))}lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,o,a),(n,{subPath:u})=>n.lutimesSync(u,o,a))}async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,o),async(a,{subPath:n})=>await a.mkdirPromise(n,o))}mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o),(a,{subPath:n})=>a.mkdirSync(n,o))}async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,o),async(a,{subPath:n})=>await a.rmdirPromise(n,o))}rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o),(a,{subPath:n})=>a.rmdirSync(n,o))}async linkPromise(r,o){return await this.makeCallPromise(o,async()=>await this.baseFs.linkPromise(r,o),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=>await this.baseFs.symlinkPromise(r,o,a),async(n,{subPath:u})=>await n.symlinkPromise(r,u))}symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSync(r,o,a),(n,{subPath:u})=>n.symlinkSync(r,u))}async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,o),async(a,{subPath:n})=>await a.readFilePromise(n,o))}readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,o),(a,{subPath:n})=>a.readFileSync(n,o))}async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,o),async(a,{subPath:n})=>await a.readdirPromise(n,o),{requireSubpath:!1})}readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,o),(a,{subPath:n})=>a.readdirSync(n,o),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(o,{subPath:a})=>await o.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(o,{subPath:a})=>o.readlinkSync(a))}async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,o),async(a,{subPath:n})=>await a.truncatePromise(n,o))}truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,o),(a,{subPath:n})=>a.truncateSync(n,o))}async ftruncatePromise(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncatePromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("ftruncate");let[n,u]=a;return n.ftruncatePromise(u,o)}ftruncateSync(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncateSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Io("ftruncateSync");let[n,u]=a;return n.ftruncateSync(u,o)}watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,{subPath:u})=>n.watch(u,o,a))}watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,o,a),()=>ty(this,r,o,a))}unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,o),()=>Lg(this,r,o))}async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await o();let u=this.resolve(r),A=this.findMount(u);return A?n&&A.subPath==="/"?await o():await this.getMountPromise(A.archivePath,async p=>await a(p,A)):await o()}makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return o();let u=this.resolve(r),A=this.findMount(u);return!A||n&&A.subPath==="/"?o():this.getMountSync(A.archivePath,p=>a(p,A))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let o="";for(;;){let a=r.substring(o.length),n=this.getMountPoint(a,o);if(!n)return null;if(o=this.pathUtils.join(o,n),!this.isMount.has(o)){if(this.notMount.has(o))continue;try{if(this.typeCheck!==null&&(this.baseFs.lstatSync(o).mode&Hg.constants.S_IFMT)!==this.typeCheck){this.notMount.add(o);continue}}catch{return null}this.isMount.add(o)}return{archivePath:o,subPath:this.pathUtils.join(Bt.root,r.substring(o.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let o=Date.now(),a=o+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[u,{childFs:A,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||A.hasOpenFileHandles?.())){if(o>=p){A.saveAndClose?.(),this.mountInstances.delete(u),n-=1;continue}else if(r===null||n<=0){a=p;break}A.saveAndClose?.(),this.mountInstances.delete(u),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-o).unref())}async getMountPromise(r,o){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await o(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await o(a)}finally{a.saveAndClose?.()}}}getMountSync(r,o){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,o(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return o(a)}finally{a.saveAndClose?.()}}}}});var Zt,VR,qw,eY=Et(()=>{Ug();Ca();Zt=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),VR=class extends hf{constructor(){super(V)}getExtractHint(){throw Zt()}getRealPath(){throw Zt()}resolve(){throw Zt()}async openPromise(){throw Zt()}openSync(){throw Zt()}async opendirPromise(){throw Zt()}opendirSync(){throw Zt()}async readPromise(){throw Zt()}readSync(){throw Zt()}async writePromise(){throw Zt()}writeSync(){throw Zt()}async closePromise(){throw Zt()}closeSync(){throw Zt()}createWriteStream(){throw Zt()}createReadStream(){throw Zt()}async realpathPromise(){throw Zt()}realpathSync(){throw Zt()}async readdirPromise(){throw Zt()}readdirSync(){throw Zt()}async existsPromise(e){throw Zt()}existsSync(e){throw Zt()}async accessPromise(){throw Zt()}accessSync(){throw Zt()}async statPromise(){throw Zt()}statSync(){throw Zt()}async fstatPromise(e){throw Zt()}fstatSync(e){throw Zt()}async lstatPromise(e){throw Zt()}lstatSync(e){throw Zt()}async fchmodPromise(){throw Zt()}fchmodSync(){throw Zt()}async chmodPromise(){throw Zt()}chmodSync(){throw Zt()}async fchownPromise(){throw Zt()}fchownSync(){throw Zt()}async chownPromise(){throw Zt()}chownSync(){throw Zt()}async mkdirPromise(){throw Zt()}mkdirSync(){throw Zt()}async rmdirPromise(){throw Zt()}rmdirSync(){throw Zt()}async linkPromise(){throw Zt()}linkSync(){throw Zt()}async symlinkPromise(){throw Zt()}symlinkSync(){throw Zt()}async renamePromise(){throw Zt()}renameSync(){throw Zt()}async copyFilePromise(){throw Zt()}copyFileSync(){throw Zt()}async appendFilePromise(){throw Zt()}appendFileSync(){throw Zt()}async writeFilePromise(){throw Zt()}writeFileSync(){throw Zt()}async unlinkPromise(){throw Zt()}unlinkSync(){throw Zt()}async utimesPromise(){throw Zt()}utimesSync(){throw Zt()}async lutimesPromise(){throw Zt()}lutimesSync(){throw Zt()}async readFilePromise(){throw Zt()}readFileSync(){throw Zt()}async readlinkPromise(){throw Zt()}readlinkSync(){throw Zt()}async truncatePromise(){throw Zt()}truncateSync(){throw Zt()}async ftruncatePromise(e,r){throw Zt()}ftruncateSync(e,r){throw Zt()}watch(){throw Zt()}watchFile(){throw Zt()}unwatchFile(){throw Zt()}},qw=VR;qw.instance=new VR});var _p,tY=Et(()=>{gf();Ca();_p=class extends Ps{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return ue.fromPortablePath(r)}mapToBase(r){return ue.toPortablePath(r)}}});var T_e,zR,N_e,mi,rY=Et(()=>{_g();gf();Ca();T_e=/^[0-9]+$/,zR=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,N_e=/^([^/]+-)?[a-f0-9]+$/,mi=class extends Ps{constructor({baseFs:r=new Tn}={}){super(V);this.baseFs=r}static makeVirtualPath(r,o,a){if(V.basename(r)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!V.basename(o).match(N_e))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let u=V.relative(V.dirname(r),a).split("/"),A=0;for(;A<u.length&&u[A]==="..";)A+=1;let p=u.slice(A);return V.join(r,o,String(A),...p)}static resolveVirtual(r){let o=r.match(zR);if(!o||!o[3]&&o[5])return r;let a=V.dirname(o[1]);if(!o[3]||!o[4])return a;if(!T_e.test(o[4]))return r;let u=Number(o[4]),A="../".repeat(u),p=o[5]||".";return mi.resolveVirtual(V.join(a,A,p))}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}realpathSync(r){let o=r.match(zR);if(!o)return this.baseFs.realpathSync(r);if(!o[5])return r;let a=this.baseFs.realpathSync(this.mapToBase(r));return mi.makeVirtualPath(o[1],o[3],a)}async realpathPromise(r){let o=r.match(zR);if(!o)return await this.baseFs.realpathPromise(r);if(!o[5])return r;let a=await this.baseFs.realpathPromise(this.mapToBase(r));return mi.makeVirtualPath(o[1],o[3],a)}mapToBase(r){if(r==="")return r;if(this.pathUtils.isAbsolute(r))return mi.resolveVirtual(r);let o=mi.resolveVirtual(this.baseFs.resolve(Bt.dot)),a=mi.resolveVirtual(this.baseFs.resolve(r));return V.relative(o,a)||Bt.dot}mapFromBase(r){return r}}});function L_e(t,e){return typeof JR.default.isUtf8<"u"?JR.default.isUtf8(t):Buffer.byteLength(e)===t.byteLength}var JR,kD,nY,xD,iY=Et(()=>{JR=$e(Be("buffer")),kD=Be("url"),nY=Be("util");gf();Ca();xD=class extends Ps{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return r}mapToBase(r){if(typeof r=="string")return r;if(r instanceof kD.URL)return(0,kD.fileURLToPath)(r);if(Buffer.isBuffer(r)){let o=r.toString();if(!L_e(r,o))throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return o}throw new Error(`Unsupported path type: ${(0,nY.inspect)(r)}`)}}});var sY,Bo,df,Hp,QD,FD,ny,Tc,Nc,O_e,M_e,U_e,__e,Gw,oY=Et(()=>{sY=Be("readline"),Bo=Symbol("kBaseFs"),df=Symbol("kFd"),Hp=Symbol("kClosePromise"),QD=Symbol("kCloseResolve"),FD=Symbol("kCloseReject"),ny=Symbol("kRefs"),Tc=Symbol("kRef"),Nc=Symbol("kUnref"),Gw=class{constructor(e,r){this[O_e]=1;this[M_e]=void 0;this[U_e]=void 0;this[__e]=void 0;this[Bo]=r,this[df]=e}get fd(){return this[df]}async appendFile(e,r){try{this[Tc](this.appendFile);let o=(typeof r=="string"?r:r?.encoding)??void 0;return await this[Bo].appendFilePromise(this.fd,e,o?{encoding:o}:void 0)}finally{this[Nc]()}}async chown(e,r){try{return this[Tc](this.chown),await this[Bo].fchownPromise(this.fd,e,r)}finally{this[Nc]()}}async chmod(e){try{return this[Tc](this.chmod),await this[Bo].fchmodPromise(this.fd,e)}finally{this[Nc]()}}createReadStream(e){return this[Bo].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Bo].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,r,o,a){try{this[Tc](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??={},n=e.buffer??Buffer.alloc(16384),r=e.offset||0,o=e.length??n.byteLength,a=e.position??null),r??=0,o??=0,o===0?{bytesRead:o,buffer:n}:{bytesRead:await this[Bo].readPromise(this.fd,n,r,o,a),buffer:n}}finally{this[Nc]()}}async readFile(e){try{this[Tc](this.readFile);let r=(typeof e=="string"?e:e?.encoding)??void 0;return await this[Bo].readFilePromise(this.fd,r)}finally{this[Nc]()}}readLines(e){return(0,sY.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Tc](this.stat),await this[Bo].fstatPromise(this.fd,e)}finally{this[Nc]()}}async truncate(e){try{return this[Tc](this.truncate),await this[Bo].ftruncatePromise(this.fd,e)}finally{this[Nc]()}}utimes(e,r){throw new Error("Method not implemented.")}async writeFile(e,r){try{this[Tc](this.writeFile);let o=(typeof r=="string"?r:r?.encoding)??void 0;await this[Bo].writeFilePromise(this.fd,e,o)}finally{this[Nc]()}}async write(...e){try{if(this[Tc](this.write),ArrayBuffer.isView(e[0])){let[r,o,a,n]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,o,a]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o,a),buffer:r}}}finally{this[Nc]()}}async writev(e,r){try{this[Tc](this.writev);let o=0;if(typeof r<"u")for(let a of e){let n=await this.write(a,void 0,void 0,r);o+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);o+=n.bytesWritten}return{buffers:e,bytesWritten:o}}finally{this[Nc]()}}readv(e,r){throw new Error("Method not implemented.")}close(){if(this[df]===-1)return Promise.resolve();if(this[Hp])return this[Hp];if(this[ny]--,this[ny]===0){let e=this[df];this[df]=-1,this[Hp]=this[Bo].closePromise(e).finally(()=>{this[Hp]=void 0})}else this[Hp]=new Promise((e,r)=>{this[QD]=e,this[FD]=r}).finally(()=>{this[Hp]=void 0,this[FD]=void 0,this[QD]=void 0});return this[Hp]}[(Bo,df,O_e=ny,M_e=Hp,U_e=QD,__e=FD,Tc)](e){if(this[df]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=e.name,r}this[ny]++}[Nc](){if(this[ny]--,this[ny]===0){let e=this[df];this[df]=-1,this[Bo].closePromise(e).then(this[QD],this[FD])}}}});function Yw(t,e){e=new xD(e);let r=(o,a,n)=>{let u=o[a];o[a]=n,typeof u?.[iy.promisify.custom]<"u"&&(n[iy.promisify.custom]=u[iy.promisify.custom])};{r(t,"exists",(o,...a)=>{let u=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(o).then(A=>{u(A)},()=>{u(!1)})})}),r(t,"read",(...o)=>{let[a,n,u,A,p,h]=o;if(o.length<=3){let C={};o.length<3?h=o[1]:(C=o[1],h=o[2]),{buffer:n=Buffer.alloc(16384),offset:u=0,length:A=n.byteLength,position:p}=C}if(u==null&&(u=0),A|=0,A===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,u,A,p).then(C=>{h(null,C,n)},C=>{h(C,0,n)})})});for(let o of aY){let a=o.replace(/Promise$/,"");if(typeof t[a]>"u")continue;let n=e[o];if(typeof n>"u")continue;r(t,a,(...A)=>{let h=typeof A[A.length-1]=="function"?A.pop():()=>{};process.nextTick(()=>{n.apply(e,A).then(C=>{h(null,C)},C=>{h(C)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",o=>{try{return e.existsSync(o)}catch{return!1}}),r(t,"readSync",(...o)=>{let[a,n,u,A,p]=o;return o.length<=3&&({offset:u=0,length:A=n.byteLength,position:p}=o[2]||{}),u==null&&(u=0),A|=0,A===0?0:(p==null&&(p=-1),e.readSync(a,n,u,A,p))});for(let o of H_e){let a=o;if(typeof t[a]>"u")continue;let n=e[o];typeof n>"u"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let o=t.promises;for(let a of aY){let n=a.replace(/Promise$/,"");if(typeof o[n]>"u")continue;let u=e[a];typeof u>"u"||a!=="open"&&r(o,n,(A,...p)=>A instanceof Gw?A[n].apply(A,p):u.call(e,A,...p))}r(o,"open",async(...a)=>{let n=await e.openPromise(...a);return new Gw(n,e)})}t.read[iy.promisify.custom]=async(o,a,...n)=>({bytesRead:await e.readPromise(o,a,...n),buffer:a}),t.write[iy.promisify.custom]=async(o,a,...n)=>({bytesWritten:await e.writePromise(o,a,...n),buffer:a})}function RD(t,e){let r=Object.create(t);return Yw(r,e),r}var iy,H_e,aY,lY=Et(()=>{iy=Be("util");iY();oY();H_e=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),aY=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function cY(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${t}${e}`}function uY(){if(XR)return XR;let t=ue.toPortablePath(AY.default.tmpdir()),e=oe.realpathSync(t);return process.once("exit",()=>{oe.rmtempSync()}),XR={tmpdir:t,realTmpdir:e}}var AY,Lc,XR,oe,fY=Et(()=>{AY=$e(Be("os"));_g();Ca();Lc=new Set,XR=null;oe=Object.assign(new Tn,{detachTemp(t){Lc.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=uY();for(;;){let o=cY("xfs-");try{this.mkdirSync(V.join(e,o))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=V.join(r,o);if(Lc.add(a),typeof t>"u")return a;try{return t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=uY();for(;;){let o=cY("xfs-");try{await this.mkdirPromise(V.join(e,o))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=V.join(r,o);if(Lc.add(a),typeof t>"u")return a;try{return await t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Lc.values()).map(async t=>{try{await oe.removePromise(t,{maxRetries:0}),Lc.delete(t)}catch{}}))},rmtempSync(){for(let t of Lc)try{oe.removeSync(t),Lc.delete(t)}catch{}}})});var Ww={};Vt(Ww,{AliasFS:()=>Uu,BasePortableFakeFS:()=>Mu,CustomDir:()=>jw,CwdFS:()=>gn,FakeFS:()=>hf,Filename:()=>dr,JailFS:()=>_u,LazyFS:()=>ry,MountFS:()=>Up,NoFS:()=>qw,NodeFS:()=>Tn,PortablePath:()=>Bt,PosixFS:()=>_p,ProxiedFS:()=>Ps,VirtualFS:()=>mi,constants:()=>vi,errors:()=>ar,extendFs:()=>RD,normalizeLineEndings:()=>Mg,npath:()=>ue,opendir:()=>SD,patchFs:()=>Yw,ppath:()=>V,setupCopyIndex:()=>PD,statUtils:()=>Ea,unwatchAllFiles:()=>Og,unwatchFile:()=>Lg,watchFile:()=>ty,xfs:()=>oe});var Pt=Et(()=>{T7();BD();qR();WR();_7();KR();Ug();Ca();Ca();W7();Ug();z7();X7();Z7();$7();eY();_g();tY();gf();rY();lY();fY()});var mY=_((sbt,dY)=>{dY.exports=gY;gY.sync=q_e;var pY=Be("fs");function j_e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var o=0;o<r.length;o++){var a=r[o].toLowerCase();if(a&&t.substr(-a.length).toLowerCase()===a)return!0}return!1}function hY(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:j_e(e,r)}function gY(t,e,r){pY.stat(t,function(o,a){r(o,o?!1:hY(a,t,e))})}function q_e(t,e){return hY(pY.statSync(t),t,e)}});var IY=_((obt,wY)=>{wY.exports=EY;EY.sync=G_e;var yY=Be("fs");function EY(t,e,r){yY.stat(t,function(o,a){r(o,o?!1:CY(a,e))})}function G_e(t,e){return CY(yY.statSync(t),e)}function CY(t,e){return t.isFile()&&Y_e(t,e)}function Y_e(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),u=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),A=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),C=A|p,I=r&h||r&p&&a===u||r&A&&o===n||r&C&&n===0;return I}});var vY=_((lbt,BY)=>{var abt=Be("fs"),TD;process.platform==="win32"||global.TESTING_WINDOWS?TD=mY():TD=IY();BY.exports=ZR;ZR.sync=W_e;function ZR(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(o,a){ZR(t,e||{},function(n,u){n?a(n):o(u)})})}TD(t,e||{},function(o,a){o&&(o.code==="EACCES"||e&&e.ignoreErrors)&&(o=null,a=!1),r(o,a)})}function W_e(t,e){try{return TD.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var QY=_((cbt,kY)=>{var sy=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",DY=Be("path"),K_e=sy?";":":",PY=vY(),SY=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),bY=(t,e)=>{let r=e.colon||K_e,o=t.match(/\//)||sy&&t.match(/\\/)?[""]:[...sy?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],a=sy?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=sy?a.split(r):[""];return sy&&t.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:o,pathExt:n,pathExtExe:a}},xY=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:o,pathExt:a,pathExtExe:n}=bY(t,e),u=[],A=h=>new Promise((C,I)=>{if(h===o.length)return e.all&&u.length?C(u):I(SY(t));let v=o[h],x=/^".*"$/.test(v)?v.slice(1,-1):v,E=DY.join(x,t),R=!x&&/^\.[\\\/]/.test(t)?t.slice(0,2)+E:E;C(p(R,h,0))}),p=(h,C,I)=>new Promise((v,x)=>{if(I===a.length)return v(A(C+1));let E=a[I];PY(h+E,{pathExt:n},(R,L)=>{if(!R&&L)if(e.all)u.push(h+E);else return v(h+E);return v(p(h,C,I+1))})});return r?A(0).then(h=>r(null,h),r):A(0)},V_e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:o,pathExtExe:a}=bY(t,e),n=[];for(let u=0;u<r.length;u++){let A=r[u],p=/^".*"$/.test(A)?A.slice(1,-1):A,h=DY.join(p,t),C=!p&&/^\.[\\\/]/.test(t)?t.slice(0,2)+h:h;for(let I=0;I<o.length;I++){let v=C+o[I];try{if(PY.sync(v,{pathExt:a}))if(e.all)n.push(v);else return v}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw SY(t)};kY.exports=xY;xY.sync=V_e});var RY=_((ubt,$R)=>{"use strict";var FY=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"};$R.exports=FY;$R.exports.default=FY});var OY=_((Abt,LY)=>{"use strict";var TY=Be("path"),z_e=QY(),J_e=RY();function NY(t,e){let r=t.options.env||process.env,o=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let u;try{u=z_e.sync(t.command,{path:r[J_e({env:r})],pathExt:e?TY.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return u&&(u=TY.resolve(a?t.options.cwd:"",u)),u}function X_e(t){return NY(t)||NY(t,!0)}LY.exports=X_e});var MY=_((fbt,tT)=>{"use strict";var eT=/([()\][%!^"`<>&|;, *?])/g;function Z_e(t){return t=t.replace(eT,"^$1"),t}function $_e(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(eT,"^$1"),e&&(t=t.replace(eT,"^$1")),t}tT.exports.command=Z_e;tT.exports.argument=$_e});var _Y=_((pbt,UY)=>{"use strict";UY.exports=/^#!(.*)/});var jY=_((hbt,HY)=>{"use strict";var e8e=_Y();HY.exports=(t="")=>{let e=t.match(e8e);if(!e)return null;let[r,o]=e[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?o:o?`${a} ${o}`:a}});var GY=_((gbt,qY)=>{"use strict";var rT=Be("fs"),t8e=jY();function r8e(t){let r=Buffer.alloc(150),o;try{o=rT.openSync(t,"r"),rT.readSync(o,r,0,150,0),rT.closeSync(o)}catch{}return t8e(r.toString())}qY.exports=r8e});var VY=_((dbt,KY)=>{"use strict";var n8e=Be("path"),YY=OY(),WY=MY(),i8e=GY(),s8e=process.platform==="win32",o8e=/\.(?:com|exe)$/i,a8e=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function l8e(t){t.file=YY(t);let e=t.file&&i8e(t.file);return e?(t.args.unshift(t.file),t.command=e,YY(t)):t.file}function c8e(t){if(!s8e)return t;let e=l8e(t),r=!o8e.test(e);if(t.options.forceShell||r){let o=a8e.test(e);t.command=n8e.normalize(t.command),t.command=WY.command(t.command),t.args=t.args.map(n=>WY.argument(n,o));let a=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${a}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function u8e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:c8e(o)}KY.exports=u8e});var XY=_((mbt,JY)=>{"use strict";var nT=process.platform==="win32";function iT(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function A8e(t,e){if(!nT)return;let r=t.emit;t.emit=function(o,a){if(o==="exit"){let n=zY(a,e,"spawn");if(n)return r.call(t,"error",n)}return r.apply(t,arguments)}}function zY(t,e){return nT&&t===1&&!e.file?iT(e.original,"spawn"):null}function f8e(t,e){return nT&&t===1&&!e.file?iT(e.original,"spawnSync"):null}JY.exports={hookChildProcess:A8e,verifyENOENT:zY,verifyENOENTSync:f8e,notFoundError:iT}});var aT=_((ybt,oy)=>{"use strict";var ZY=Be("child_process"),sT=VY(),oT=XY();function $Y(t,e,r){let o=sT(t,e,r),a=ZY.spawn(o.command,o.args,o.options);return oT.hookChildProcess(a,o),a}function p8e(t,e,r){let o=sT(t,e,r),a=ZY.spawnSync(o.command,o.args,o.options);return a.error=a.error||oT.verifyENOENTSync(a.status,o),a}oy.exports=$Y;oy.exports.spawn=$Y;oy.exports.sync=p8e;oy.exports._parse=sT;oy.exports._enoent=oT});var tW=_((Ebt,eW)=>{"use strict";function h8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function jg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,jg)}h8e(jg,Error);jg.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var C="",I;for(I=0;I<h.parts.length;I++)C+=h.parts[I]instanceof Array?n(h.parts[I][0])+"-"+n(h.parts[I][1]):n(h.parts[I]);return"["+(h.inverted?"^":"")+C+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function u(h){return r[h.type](h)}function A(h){var C=new Array(h.length),I,v;for(I=0;I<h.length;I++)C[I]=u(h[I]);if(C.sort(),C.length>0){for(I=1,v=1;I<C.length;I++)C[I-1]!==C[I]&&(C[v]=C[I],v++);C.length=v}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function p(h){return h?'"'+a(h)+'"':"end of input"}return"Expected "+A(t)+" but "+p(e)+" found."};function g8e(t,e){e=e!==void 0?e:{};var r={},o={Start:fg},a=fg,n=function(N){return N||[]},u=function(N,K,re){return[{command:N,type:K}].concat(re||[])},A=function(N,K){return[{command:N,type:K||";"}]},p=function(N){return N},h=";",C=Br(";",!1),I="&",v=Br("&",!1),x=function(N,K){return K?{chain:N,then:K}:{chain:N}},E=function(N,K){return{type:N,line:K}},R="&&",L=Br("&&",!1),U="||",z=Br("||",!1),te=function(N,K){return K?{...N,then:K}:N},le=function(N,K){return{type:N,chain:K}},he="|&",Ae=Br("|&",!1),ye="|",ae=Br("|",!1),Ie="=",Fe=Br("=",!1),g=function(N,K){return{name:N,args:[K]}},Ee=function(N){return{name:N,args:[]}},De="(",ce=Br("(",!1),ne=")",ee=Br(")",!1),we=function(N,K){return{type:"subshell",subshell:N,args:K}},xe="{",ht=Br("{",!1),H="}",lt=Br("}",!1),Te=function(N,K){return{type:"group",group:N,args:K}},ke=function(N,K){return{type:"command",args:K,envs:N}},be=function(N){return{type:"envs",envs:N}},_e=function(N){return N},Re=function(N){return N},ze=/^[0-9]/,He=Cs([["0","9"]],!1,!1),b=function(N,K,re){return{type:"redirection",subtype:K,fd:N!==null?parseInt(N):null,args:[re]}},w=">>",S=Br(">>",!1),y=">&",F=Br(">&",!1),J=">",X=Br(">",!1),Z="<<<",ie=Br("<<<",!1),Pe="<&",Ne=Br("<&",!1),ot="<",dt=Br("<",!1),jt=function(N){return{type:"argument",segments:[].concat(...N)}},$t=function(N){return N},bt="$'",an=Br("$'",!1),Qr="'",mr=Br("'",!1),br=function(N){return[{type:"text",text:N}]},Wr='""',Kn=Br('""',!1),Ns=function(){return{type:"text",text:""}},Ti='"',ps=Br('"',!1),io=function(N){return N},Si=function(N){return{type:"arithmetic",arithmetic:N,quoted:!0}},Ls=function(N){return{type:"shell",shell:N,quoted:!0}},so=function(N){return{type:"variable",...N,quoted:!0}},cc=function(N){return{type:"text",text:N}},cu=function(N){return{type:"arithmetic",arithmetic:N,quoted:!1}},op=function(N){return{type:"shell",shell:N,quoted:!1}},ap=function(N){return{type:"variable",...N,quoted:!1}},Os=function(N){return{type:"glob",pattern:N}},Dn=/^[^']/,oo=Cs(["'"],!0,!1),Ms=function(N){return N.join("")},ml=/^[^$"]/,yl=Cs(["$",'"'],!0,!1),ao=`\\
`,Vn=Br(`\\
`,!1),On=function(){return""},Ni="\\",Mn=Br("\\",!1),_i=/^[\\$"`]/,tr=Cs(["\\","$",'"',"`"],!1,!1),Oe=function(N){return N},ii="\\a",Ma=Br("\\a",!1),hr=function(){return"a"},uc="\\b",uu=Br("\\b",!1),Ac=function(){return"\b"},El=/^[Ee]/,vA=Cs(["E","e"],!1,!1),Au=function(){return"\x1B"},Ce="\\f",Rt=Br("\\f",!1),fc=function(){return"\f"},Hi="\\n",fu=Br("\\n",!1),Yt=function(){return`
`},Cl="\\r",DA=Br("\\r",!1),lp=function(){return"\r"},pc="\\t",PA=Br("\\t",!1),Qn=function(){return" "},hi="\\v",hc=Br("\\v",!1),SA=function(){return"\v"},sa=/^[\\'"?]/,Li=Cs(["\\","'",'"',"?"],!1,!1),_o=function(N){return String.fromCharCode(parseInt(N,16))},Ze="\\x",lo=Br("\\x",!1),gc="\\u",pu=Br("\\u",!1),ji="\\U",hu=Br("\\U",!1),bA=function(N){return String.fromCodePoint(parseInt(N,16))},Ua=/^[0-7]/,dc=Cs([["0","7"]],!1,!1),hs=/^[0-9a-fA-f]/,_t=Cs([["0","9"],["a","f"],["A","f"]],!1,!1),Fn=lg(),Ci="{}",oa=Br("{}",!1),co=function(){return"{}"},Us="-",aa=Br("-",!1),la="+",Ho=Br("+",!1),wi=".",gs=Br(".",!1),ds=function(N,K,re){return{type:"number",value:(N==="-"?-1:1)*parseFloat(K.join("")+"."+re.join(""))}},ms=function(N,K){return{type:"number",value:(N==="-"?-1:1)*parseInt(K.join(""))}},_s=function(N){return{type:"variable",...N}},Un=function(N){return{type:"variable",name:N}},Pn=function(N){return N},ys="*",We=Br("*",!1),tt="/",It=Br("/",!1),nr=function(N,K,re){return{type:K==="*"?"multiplication":"division",right:re}},$=function(N,K){return K.reduce((re,pe)=>({left:re,...pe}),N)},me=function(N,K,re){return{type:K==="+"?"addition":"subtraction",right:re}},Le="$((",ft=Br("$((",!1),pt="))",Tt=Br("))",!1),er=function(N){return N},Zr="$(",qi=Br("$(",!1),es=function(N){return N},bi="${",jo=Br("${",!1),xA=":-",kA=Br(":-",!1),cp=function(N,K){return{name:N,defaultValue:K}},rg=":-}",gu=Br(":-}",!1),ng=function(N){return{name:N,defaultValue:[]}},du=":+",uo=Br(":+",!1),QA=function(N,K){return{name:N,alternativeValue:K}},mc=":+}",ca=Br(":+}",!1),ig=function(N){return{name:N,alternativeValue:[]}},yc=function(N){return{name:N}},Dm="$",sg=Br("$",!1),$n=function(N){return e.isGlobPattern(N)},up=function(N){return N},og=/^[a-zA-Z0-9_]/,FA=Cs([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Hs=function(){return ag()},mu=/^[$@*?#a-zA-Z0-9_\-]/,Ha=Cs(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),Gi=/^[()}<>$|&; \t"']/,ua=Cs(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),yu=/^[<>&; \t"']/,Es=Cs(["<",">","&",";"," "," ",'"',"'"],!1,!1),Ec=/^[ \t]/,Cc=Cs([" "," "],!1,!1),G=0,Dt=0,wl=[{line:1,column:1}],xi=0,wc=[],ct=0,Eu;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function ag(){return t.substring(Dt,G)}function dw(){return Ic(Dt,G)}function RA(N,K){throw K=K!==void 0?K:Ic(Dt,G),Ag([ug(N)],t.substring(Dt,G),K)}function Ap(N,K){throw K=K!==void 0?K:Ic(Dt,G),Pm(N,K)}function Br(N,K){return{type:"literal",text:N,ignoreCase:K}}function Cs(N,K,re){return{type:"class",parts:N,inverted:K,ignoreCase:re}}function lg(){return{type:"any"}}function cg(){return{type:"end"}}function ug(N){return{type:"other",description:N}}function fp(N){var K=wl[N],re;if(K)return K;for(re=N-1;!wl[re];)re--;for(K=wl[re],K={line:K.line,column:K.column};re<N;)t.charCodeAt(re)===10?(K.line++,K.column=1):K.column++,re++;return wl[N]=K,K}function Ic(N,K){var re=fp(N),pe=fp(K);return{start:{offset:N,line:re.line,column:re.column},end:{offset:K,line:pe.line,column:pe.column}}}function Ct(N){G<xi||(G>xi&&(xi=G,wc=[]),wc.push(N))}function Pm(N,K){return new jg(N,null,null,K)}function Ag(N,K,re){return new jg(jg.buildMessage(N,K),N,K,re)}function fg(){var N,K,re;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(re=Cu(),re===r&&(re=null),re!==r?(Dt=N,K=n(re),N=K):(G=N,N=r)):(G=N,N=r),N}function Cu(){var N,K,re,pe,Je;if(N=G,K=wu(),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();re!==r?(pe=pg(),pe!==r?(Je=Sm(),Je===r&&(Je=null),Je!==r?(Dt=N,K=u(K,pe,Je),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;if(N===r)if(N=G,K=wu(),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();re!==r?(pe=pg(),pe===r&&(pe=null),pe!==r?(Dt=N,K=A(K,pe),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function Sm(){var N,K,re,pe,Je;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=Cu(),re!==r){for(pe=[],Je=Qt();Je!==r;)pe.push(Je),Je=Qt();pe!==r?(Dt=N,K=p(re),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function pg(){var N;return t.charCodeAt(G)===59?(N=h,G++):(N=r,ct===0&&Ct(C)),N===r&&(t.charCodeAt(G)===38?(N=I,G++):(N=r,ct===0&&Ct(v))),N}function wu(){var N,K,re;return N=G,K=Aa(),K!==r?(re=mw(),re===r&&(re=null),re!==r?(Dt=N,K=x(K,re),N=K):(G=N,N=r)):(G=N,N=r),N}function mw(){var N,K,re,pe,Je,mt,fr;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=bm(),re!==r){for(pe=[],Je=Qt();Je!==r;)pe.push(Je),Je=Qt();if(pe!==r)if(Je=wu(),Je!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=E(re,Je),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function bm(){var N;return t.substr(G,2)===R?(N=R,G+=2):(N=r,ct===0&&Ct(L)),N===r&&(t.substr(G,2)===U?(N=U,G+=2):(N=r,ct===0&&Ct(z))),N}function Aa(){var N,K,re;return N=G,K=hg(),K!==r?(re=Bc(),re===r&&(re=null),re!==r?(Dt=N,K=te(K,re),N=K):(G=N,N=r)):(G=N,N=r),N}function Bc(){var N,K,re,pe,Je,mt,fr;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=Il(),re!==r){for(pe=[],Je=Qt();Je!==r;)pe.push(Je),Je=Qt();if(pe!==r)if(Je=Aa(),Je!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=le(re,Je),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function Il(){var N;return t.substr(G,2)===he?(N=he,G+=2):(N=r,ct===0&&Ct(Ae)),N===r&&(t.charCodeAt(G)===124?(N=ye,G++):(N=r,ct===0&&Ct(ae))),N}function Iu(){var N,K,re,pe,Je,mt;if(N=G,K=yg(),K!==r)if(t.charCodeAt(G)===61?(re=Ie,G++):(re=r,ct===0&&Ct(Fe)),re!==r)if(pe=qo(),pe!==r){for(Je=[],mt=Qt();mt!==r;)Je.push(mt),mt=Qt();Je!==r?(Dt=N,K=g(K,pe),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;else G=N,N=r;if(N===r)if(N=G,K=yg(),K!==r)if(t.charCodeAt(G)===61?(re=Ie,G++):(re=r,ct===0&&Ct(Fe)),re!==r){for(pe=[],Je=Qt();Je!==r;)pe.push(Je),Je=Qt();pe!==r?(Dt=N,K=Ee(K),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function hg(){var N,K,re,pe,Je,mt,fr,Cr,yn,oi,Oi;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(t.charCodeAt(G)===40?(re=De,G++):(re=r,ct===0&&Ct(ce)),re!==r){for(pe=[],Je=Qt();Je!==r;)pe.push(Je),Je=Qt();if(pe!==r)if(Je=Cu(),Je!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(G)===41?(fr=ne,G++):(fr=r,ct===0&&Ct(ee)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=ja();oi!==r;)yn.push(oi),oi=ja();if(yn!==r){for(oi=[],Oi=Qt();Oi!==r;)oi.push(Oi),Oi=Qt();oi!==r?(Dt=N,K=we(Je,yn),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(t.charCodeAt(G)===123?(re=xe,G++):(re=r,ct===0&&Ct(ht)),re!==r){for(pe=[],Je=Qt();Je!==r;)pe.push(Je),Je=Qt();if(pe!==r)if(Je=Cu(),Je!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(G)===125?(fr=H,G++):(fr=r,ct===0&&Ct(lt)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=ja();oi!==r;)yn.push(oi),oi=ja();if(yn!==r){for(oi=[],Oi=Qt();Oi!==r;)oi.push(Oi),Oi=Qt();oi!==r?(Dt=N,K=Te(Je,yn),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){for(re=[],pe=Iu();pe!==r;)re.push(pe),pe=Iu();if(re!==r){for(pe=[],Je=Qt();Je!==r;)pe.push(Je),Je=Qt();if(pe!==r){if(Je=[],mt=pp(),mt!==r)for(;mt!==r;)Je.push(mt),mt=pp();else Je=r;if(Je!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=ke(re,Je),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r}else G=N,N=r;if(N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){if(re=[],pe=Iu(),pe!==r)for(;pe!==r;)re.push(pe),pe=Iu();else re=r;if(re!==r){for(pe=[],Je=Qt();Je!==r;)pe.push(Je),Je=Qt();pe!==r?(Dt=N,K=be(re),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}}}return N}function TA(){var N,K,re,pe,Je;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){if(re=[],pe=hp(),pe!==r)for(;pe!==r;)re.push(pe),pe=hp();else re=r;if(re!==r){for(pe=[],Je=Qt();Je!==r;)pe.push(Je),Je=Qt();pe!==r?(Dt=N,K=_e(re),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r;return N}function pp(){var N,K,re;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r?(re=ja(),re!==r?(Dt=N,K=Re(re),N=K):(G=N,N=r)):(G=N,N=r),N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();K!==r?(re=hp(),re!==r?(Dt=N,K=Re(re),N=K):(G=N,N=r)):(G=N,N=r)}return N}function ja(){var N,K,re,pe,Je;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(ze.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(He)),re===r&&(re=null),re!==r?(pe=gg(),pe!==r?(Je=hp(),Je!==r?(Dt=N,K=b(re,pe,Je),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function gg(){var N;return t.substr(G,2)===w?(N=w,G+=2):(N=r,ct===0&&Ct(S)),N===r&&(t.substr(G,2)===y?(N=y,G+=2):(N=r,ct===0&&Ct(F)),N===r&&(t.charCodeAt(G)===62?(N=J,G++):(N=r,ct===0&&Ct(X)),N===r&&(t.substr(G,3)===Z?(N=Z,G+=3):(N=r,ct===0&&Ct(ie)),N===r&&(t.substr(G,2)===Pe?(N=Pe,G+=2):(N=r,ct===0&&Ct(Ne)),N===r&&(t.charCodeAt(G)===60?(N=ot,G++):(N=r,ct===0&&Ct(dt))))))),N}function hp(){var N,K,re;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(re=qo(),re!==r?(Dt=N,K=Re(re),N=K):(G=N,N=r)):(G=N,N=r),N}function qo(){var N,K,re;if(N=G,K=[],re=ws(),re!==r)for(;re!==r;)K.push(re),re=ws();else K=r;return K!==r&&(Dt=N,K=jt(K)),N=K,N}function ws(){var N,K;return N=G,K=Ii(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=G,K=xm(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=G,K=km(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=G,K=Go(),K!==r&&(Dt=N,K=$t(K)),N=K))),N}function Ii(){var N,K,re,pe;return N=G,t.substr(G,2)===bt?(K=bt,G+=2):(K=r,ct===0&&Ct(an)),K!==r?(re=ln(),re!==r?(t.charCodeAt(G)===39?(pe=Qr,G++):(pe=r,ct===0&&Ct(mr)),pe!==r?(Dt=N,K=br(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function xm(){var N,K,re,pe;return N=G,t.charCodeAt(G)===39?(K=Qr,G++):(K=r,ct===0&&Ct(mr)),K!==r?(re=dp(),re!==r?(t.charCodeAt(G)===39?(pe=Qr,G++):(pe=r,ct===0&&Ct(mr)),pe!==r?(Dt=N,K=br(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function km(){var N,K,re,pe;if(N=G,t.substr(G,2)===Wr?(K=Wr,G+=2):(K=r,ct===0&&Ct(Kn)),K!==r&&(Dt=N,K=Ns()),N=K,N===r)if(N=G,t.charCodeAt(G)===34?(K=Ti,G++):(K=r,ct===0&&Ct(ps)),K!==r){for(re=[],pe=NA();pe!==r;)re.push(pe),pe=NA();re!==r?(t.charCodeAt(G)===34?(pe=Ti,G++):(pe=r,ct===0&&Ct(ps)),pe!==r?(Dt=N,K=io(re),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function Go(){var N,K,re;if(N=G,K=[],re=gp(),re!==r)for(;re!==r;)K.push(re),re=gp();else K=r;return K!==r&&(Dt=N,K=io(K)),N=K,N}function NA(){var N,K;return N=G,K=Gr(),K!==r&&(Dt=N,K=Si(K)),N=K,N===r&&(N=G,K=mp(),K!==r&&(Dt=N,K=Ls(K)),N=K,N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=so(K)),N=K,N===r&&(N=G,K=dg(),K!==r&&(Dt=N,K=cc(K)),N=K))),N}function gp(){var N,K;return N=G,K=Gr(),K!==r&&(Dt=N,K=cu(K)),N=K,N===r&&(N=G,K=mp(),K!==r&&(Dt=N,K=op(K)),N=K,N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=ap(K)),N=K,N===r&&(N=G,K=yw(),K!==r&&(Dt=N,K=Os(K)),N=K,N===r&&(N=G,K=pa(),K!==r&&(Dt=N,K=cc(K)),N=K)))),N}function dp(){var N,K,re;for(N=G,K=[],Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo));re!==r;)K.push(re),Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo));return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function dg(){var N,K,re;if(N=G,K=[],re=fa(),re===r&&(ml.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(yl))),re!==r)for(;re!==r;)K.push(re),re=fa(),re===r&&(ml.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(yl)));else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function fa(){var N,K,re;return N=G,t.substr(G,2)===ao?(K=ao,G+=2):(K=r,ct===0&&Ct(Vn)),K!==r&&(Dt=N,K=On()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(_i.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(tr)),re!==r?(Dt=N,K=Oe(re),N=K):(G=N,N=r)):(G=N,N=r)),N}function ln(){var N,K,re;for(N=G,K=[],re=Ao(),re===r&&(Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo)));re!==r;)K.push(re),re=Ao(),re===r&&(Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo)));return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function Ao(){var N,K,re;return N=G,t.substr(G,2)===ii?(K=ii,G+=2):(K=r,ct===0&&Ct(Ma)),K!==r&&(Dt=N,K=hr()),N=K,N===r&&(N=G,t.substr(G,2)===uc?(K=uc,G+=2):(K=r,ct===0&&Ct(uu)),K!==r&&(Dt=N,K=Ac()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(El.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(vA)),re!==r?(Dt=N,K=Au(),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Ce?(K=Ce,G+=2):(K=r,ct===0&&Ct(Rt)),K!==r&&(Dt=N,K=fc()),N=K,N===r&&(N=G,t.substr(G,2)===Hi?(K=Hi,G+=2):(K=r,ct===0&&Ct(fu)),K!==r&&(Dt=N,K=Yt()),N=K,N===r&&(N=G,t.substr(G,2)===Cl?(K=Cl,G+=2):(K=r,ct===0&&Ct(DA)),K!==r&&(Dt=N,K=lp()),N=K,N===r&&(N=G,t.substr(G,2)===pc?(K=pc,G+=2):(K=r,ct===0&&Ct(PA)),K!==r&&(Dt=N,K=Qn()),N=K,N===r&&(N=G,t.substr(G,2)===hi?(K=hi,G+=2):(K=r,ct===0&&Ct(hc)),K!==r&&(Dt=N,K=SA()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(sa.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Li)),re!==r?(Dt=N,K=Oe(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=LA()))))))))),N}function LA(){var N,K,re,pe,Je,mt,fr,Cr,yn,oi,Oi,Cg;return N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(re=qa(),re!==r?(Dt=N,K=_o(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Ze?(K=Ze,G+=2):(K=r,ct===0&&Ct(lo)),K!==r?(re=G,pe=G,Je=qa(),Je!==r?(mt=si(),mt!==r?(Je=[Je,mt],pe=Je):(G=pe,pe=r)):(G=pe,pe=r),pe===r&&(pe=qa()),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=N,K=_o(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===gc?(K=gc,G+=2):(K=r,ct===0&&Ct(pu)),K!==r?(re=G,pe=G,Je=si(),Je!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(Je=[Je,mt,fr,Cr],pe=Je):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=N,K=_o(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===ji?(K=ji,G+=2):(K=r,ct===0&&Ct(hu)),K!==r?(re=G,pe=G,Je=si(),Je!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(yn=si(),yn!==r?(oi=si(),oi!==r?(Oi=si(),Oi!==r?(Cg=si(),Cg!==r?(Je=[Je,mt,fr,Cr,yn,oi,Oi,Cg],pe=Je):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=N,K=bA(re),N=K):(G=N,N=r)):(G=N,N=r)))),N}function qa(){var N;return Ua.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(dc)),N}function si(){var N;return hs.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(_t)),N}function pa(){var N,K,re,pe,Je;if(N=G,K=[],re=G,t.charCodeAt(G)===92?(pe=Ni,G++):(pe=r,ct===0&&Ct(Mn)),pe!==r?(t.length>G?(Je=t.charAt(G),G++):(Je=r,ct===0&&Ct(Fn)),Je!==r?(Dt=re,pe=Oe(Je),re=pe):(G=re,re=r)):(G=re,re=r),re===r&&(re=G,t.substr(G,2)===Ci?(pe=Ci,G+=2):(pe=r,ct===0&&Ct(oa)),pe!==r&&(Dt=re,pe=co()),re=pe,re===r&&(re=G,pe=G,ct++,Je=Qm(),ct--,Je===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(Je=t.charAt(G),G++):(Je=r,ct===0&&Ct(Fn)),Je!==r?(Dt=re,pe=Oe(Je),re=pe):(G=re,re=r)):(G=re,re=r))),re!==r)for(;re!==r;)K.push(re),re=G,t.charCodeAt(G)===92?(pe=Ni,G++):(pe=r,ct===0&&Ct(Mn)),pe!==r?(t.length>G?(Je=t.charAt(G),G++):(Je=r,ct===0&&Ct(Fn)),Je!==r?(Dt=re,pe=Oe(Je),re=pe):(G=re,re=r)):(G=re,re=r),re===r&&(re=G,t.substr(G,2)===Ci?(pe=Ci,G+=2):(pe=r,ct===0&&Ct(oa)),pe!==r&&(Dt=re,pe=co()),re=pe,re===r&&(re=G,pe=G,ct++,Je=Qm(),ct--,Je===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(Je=t.charAt(G),G++):(Je=r,ct===0&&Ct(Fn)),Je!==r?(Dt=re,pe=Oe(Je),re=pe):(G=re,re=r)):(G=re,re=r)));else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function vc(){var N,K,re,pe,Je,mt;if(N=G,t.charCodeAt(G)===45?(K=Us,G++):(K=r,ct===0&&Ct(aa)),K===r&&(t.charCodeAt(G)===43?(K=la,G++):(K=r,ct===0&&Ct(Ho))),K===r&&(K=null),K!==r){if(re=[],ze.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(He)),pe!==r)for(;pe!==r;)re.push(pe),ze.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(He));else re=r;if(re!==r)if(t.charCodeAt(G)===46?(pe=wi,G++):(pe=r,ct===0&&Ct(gs)),pe!==r){if(Je=[],ze.test(t.charAt(G))?(mt=t.charAt(G),G++):(mt=r,ct===0&&Ct(He)),mt!==r)for(;mt!==r;)Je.push(mt),ze.test(t.charAt(G))?(mt=t.charAt(G),G++):(mt=r,ct===0&&Ct(He));else Je=r;Je!==r?(Dt=N,K=ds(K,re,Je),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;if(N===r){if(N=G,t.charCodeAt(G)===45?(K=Us,G++):(K=r,ct===0&&Ct(aa)),K===r&&(t.charCodeAt(G)===43?(K=la,G++):(K=r,ct===0&&Ct(Ho))),K===r&&(K=null),K!==r){if(re=[],ze.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(He)),pe!==r)for(;pe!==r;)re.push(pe),ze.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(He));else re=r;re!==r?(Dt=N,K=ms(K,re),N=K):(G=N,N=r)}else G=N,N=r;if(N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=_s(K)),N=K,N===r&&(N=G,K=Ga(),K!==r&&(Dt=N,K=Un(K)),N=K,N===r)))if(N=G,t.charCodeAt(G)===40?(K=De,G++):(K=r,ct===0&&Ct(ce)),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();if(re!==r)if(pe=ts(),pe!==r){for(Je=[],mt=Qt();mt!==r;)Je.push(mt),mt=Qt();Je!==r?(t.charCodeAt(G)===41?(mt=ne,G++):(mt=r,ct===0&&Ct(ee)),mt!==r?(Dt=N,K=Pn(pe),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r}return N}function Bl(){var N,K,re,pe,Je,mt,fr,Cr;if(N=G,K=vc(),K!==r){for(re=[],pe=G,Je=[],mt=Qt();mt!==r;)Je.push(mt),mt=Qt();if(Je!==r)if(t.charCodeAt(G)===42?(mt=ys,G++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(G)===47?(mt=tt,G++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=pe,Je=nr(K,mt,Cr),pe=Je):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r;for(;pe!==r;){for(re.push(pe),pe=G,Je=[],mt=Qt();mt!==r;)Je.push(mt),mt=Qt();if(Je!==r)if(t.charCodeAt(G)===42?(mt=ys,G++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(G)===47?(mt=tt,G++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=pe,Je=nr(K,mt,Cr),pe=Je):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r}re!==r?(Dt=N,K=$(K,re),N=K):(G=N,N=r)}else G=N,N=r;return N}function ts(){var N,K,re,pe,Je,mt,fr,Cr;if(N=G,K=Bl(),K!==r){for(re=[],pe=G,Je=[],mt=Qt();mt!==r;)Je.push(mt),mt=Qt();if(Je!==r)if(t.charCodeAt(G)===43?(mt=la,G++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(G)===45?(mt=Us,G++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=pe,Je=me(K,mt,Cr),pe=Je):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r;for(;pe!==r;){for(re.push(pe),pe=G,Je=[],mt=Qt();mt!==r;)Je.push(mt),mt=Qt();if(Je!==r)if(t.charCodeAt(G)===43?(mt=la,G++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(G)===45?(mt=Us,G++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=pe,Je=me(K,mt,Cr),pe=Je):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r}re!==r?(Dt=N,K=$(K,re),N=K):(G=N,N=r)}else G=N,N=r;return N}function Gr(){var N,K,re,pe,Je,mt;if(N=G,t.substr(G,3)===Le?(K=Le,G+=3):(K=r,ct===0&&Ct(ft)),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();if(re!==r)if(pe=ts(),pe!==r){for(Je=[],mt=Qt();mt!==r;)Je.push(mt),mt=Qt();Je!==r?(t.substr(G,2)===pt?(mt=pt,G+=2):(mt=r,ct===0&&Ct(Tt)),mt!==r?(Dt=N,K=er(pe),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;return N}function mp(){var N,K,re,pe;return N=G,t.substr(G,2)===Zr?(K=Zr,G+=2):(K=r,ct===0&&Ct(qi)),K!==r?(re=Cu(),re!==r?(t.charCodeAt(G)===41?(pe=ne,G++):(pe=r,ct===0&&Ct(ee)),pe!==r?(Dt=N,K=es(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Dc(){var N,K,re,pe,Je,mt;return N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=Ga(),re!==r?(t.substr(G,2)===xA?(pe=xA,G+=2):(pe=r,ct===0&&Ct(kA)),pe!==r?(Je=TA(),Je!==r?(t.charCodeAt(G)===125?(mt=H,G++):(mt=r,ct===0&&Ct(lt)),mt!==r?(Dt=N,K=cp(re,Je),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=Ga(),re!==r?(t.substr(G,3)===rg?(pe=rg,G+=3):(pe=r,ct===0&&Ct(gu)),pe!==r?(Dt=N,K=ng(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=Ga(),re!==r?(t.substr(G,2)===du?(pe=du,G+=2):(pe=r,ct===0&&Ct(uo)),pe!==r?(Je=TA(),Je!==r?(t.charCodeAt(G)===125?(mt=H,G++):(mt=r,ct===0&&Ct(lt)),mt!==r?(Dt=N,K=QA(re,Je),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=Ga(),re!==r?(t.substr(G,3)===mc?(pe=mc,G+=3):(pe=r,ct===0&&Ct(ca)),pe!==r?(Dt=N,K=ig(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=Ga(),re!==r?(t.charCodeAt(G)===125?(pe=H,G++):(pe=r,ct===0&&Ct(lt)),pe!==r?(Dt=N,K=yc(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.charCodeAt(G)===36?(K=Dm,G++):(K=r,ct===0&&Ct(sg)),K!==r?(re=Ga(),re!==r?(Dt=N,K=yc(re),N=K):(G=N,N=r)):(G=N,N=r)))))),N}function yw(){var N,K,re;return N=G,K=mg(),K!==r?(Dt=G,re=$n(K),re?re=void 0:re=r,re!==r?(Dt=N,K=up(K),N=K):(G=N,N=r)):(G=N,N=r),N}function mg(){var N,K,re,pe,Je;if(N=G,K=[],re=G,pe=G,ct++,Je=Eg(),ct--,Je===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(Je=t.charAt(G),G++):(Je=r,ct===0&&Ct(Fn)),Je!==r?(Dt=re,pe=Oe(Je),re=pe):(G=re,re=r)):(G=re,re=r),re!==r)for(;re!==r;)K.push(re),re=G,pe=G,ct++,Je=Eg(),ct--,Je===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(Je=t.charAt(G),G++):(Je=r,ct===0&&Ct(Fn)),Je!==r?(Dt=re,pe=Oe(Je),re=pe):(G=re,re=r)):(G=re,re=r);else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function yg(){var N,K,re;if(N=G,K=[],og.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(FA)),re!==r)for(;re!==r;)K.push(re),og.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(FA));else K=r;return K!==r&&(Dt=N,K=Hs()),N=K,N}function Ga(){var N,K,re;if(N=G,K=[],mu.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ha)),re!==r)for(;re!==r;)K.push(re),mu.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ha));else K=r;return K!==r&&(Dt=N,K=Hs()),N=K,N}function Qm(){var N;return Gi.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(ua)),N}function Eg(){var N;return yu.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(Es)),N}function Qt(){var N,K;if(N=[],Ec.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,ct===0&&Ct(Cc)),K!==r)for(;K!==r;)N.push(K),Ec.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,ct===0&&Ct(Cc));else N=r;return N}if(Eu=a(),Eu!==r&&G===t.length)return Eu;throw Eu!==r&&G<t.length&&Ct(cg()),Ag(wc,xi<t.length?t.charAt(xi):null,xi<t.length?Ic(xi,xi+1):Ic(xi,xi))}eW.exports={SyntaxError:jg,parse:g8e}});function LD(t,e={isGlobPattern:()=>!1}){try{return(0,rW.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function ay(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a)=>`${OD(r)}${o===";"?a!==t.length-1||e?";":"":" &"}`).join(" ")}function OD(t){return`${ly(t.chain)}${t.then?` ${lT(t.then)}`:""}`}function lT(t){return`${t.type} ${OD(t.line)}`}function ly(t){return`${uT(t)}${t.then?` ${cT(t.then)}`:""}`}function cT(t){return`${t.type} ${ly(t.chain)}`}function uT(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>ND(e)).join(" ")} `:""}${t.args.map(e=>AT(e)).join(" ")}`;case"subshell":return`(${ay(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Kw(e)).join(" ")}`:""}`;case"group":return`{ ${ay(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Kw(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>ND(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function ND(t){return`${t.name}=${t.args[0]?qg(t.args[0]):""}`}function AT(t){switch(t.type){case"redirection":return Kw(t);case"argument":return qg(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function Kw(t){return`${t.subtype} ${t.args.map(e=>qg(e)).join(" ")}`}function qg(t){return t.segments.map(e=>fT(e)).join("")}function fT(t){let e=(o,a)=>a?`"${o}"`:o,r=o=>o===""?"''":o.match(/[()}<>$|&;"'\n\t ]/)?o.match(/['\t\p{C}]/u)?o.match(/'/)?`"${o.replace(/["$\t\p{C}]/u,m8e)}"`:`$'${o.replace(/[\t\p{C}]/u,iW)}'`:`'${o}'`:o;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${ay(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue>"u"?typeof t.alternativeValue>"u"?`\${${t.name}}`:t.alternativeValue.length===0?`\${${t.name}:+}`:`\${${t.name}:+${t.alternativeValue.map(o=>qg(o)).join(" ")}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(o=>qg(o)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${MD(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function MD(t){let e=a=>{switch(a){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${a}"`)}},r=(a,n)=>n?`( ${a} )`:a,o=a=>r(MD(a),!["number","variable"].includes(a.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${o(t.left)} ${e(t.type)} ${o(t.right)}`}}var rW,nW,d8e,iW,m8e,sW=Et(()=>{rW=$e(tW());nW=new Map([["\f","\\f"],[`
`,"\\n"],["\r","\\r"],[" ","\\t"],["\v","\\v"],["\0","\\0"]]),d8e=new Map([["\\","\\\\"],["$","\\$"],['"','\\"'],...Array.from(nW,([t,e])=>[t,`"$'${e}'"`])]),iW=t=>nW.get(t)??`\\x${t.charCodeAt(0).toString(16).padStart(2,"0")}`,m8e=t=>d8e.get(t)??`"$'${iW(t)}'"`});var aW=_((Rbt,oW)=>{"use strict";function y8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Gg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Gg)}y8e(Gg,Error);Gg.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var C="",I;for(I=0;I<h.parts.length;I++)C+=h.parts[I]instanceof Array?n(h.parts[I][0])+"-"+n(h.parts[I][1]):n(h.parts[I]);return"["+(h.inverted?"^":"")+C+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function u(h){return r[h.type](h)}function A(h){var C=new Array(h.length),I,v;for(I=0;I<h.length;I++)C[I]=u(h[I]);if(C.sort(),C.length>0){for(I=1,v=1;I<C.length;I++)C[I-1]!==C[I]&&(C[v]=C[I],v++);C.length=v}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function p(h){return h?'"'+a(h)+'"':"end of input"}return"Expected "+A(t)+" but "+p(e)+" found."};function E8e(t,e){e=e!==void 0?e:{};var r={},o={resolution:ke},a=ke,n="/",u=De("/",!1),A=function(He,b){return{from:He,descriptor:b}},p=function(He){return{descriptor:He}},h="@",C=De("@",!1),I=function(He,b){return{fullName:He,description:b}},v=function(He){return{fullName:He}},x=function(){return Ie()},E=/^[^\/@]/,R=ce(["/","@"],!0,!1),L=/^[^\/]/,U=ce(["/"],!0,!1),z=0,te=0,le=[{line:1,column:1}],he=0,Ae=[],ye=0,ae;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function Ie(){return t.substring(te,z)}function Fe(){return ht(te,z)}function g(He,b){throw b=b!==void 0?b:ht(te,z),Te([we(He)],t.substring(te,z),b)}function Ee(He,b){throw b=b!==void 0?b:ht(te,z),lt(He,b)}function De(He,b){return{type:"literal",text:He,ignoreCase:b}}function ce(He,b,w){return{type:"class",parts:He,inverted:b,ignoreCase:w}}function ne(){return{type:"any"}}function ee(){return{type:"end"}}function we(He){return{type:"other",description:He}}function xe(He){var b=le[He],w;if(b)return b;for(w=He-1;!le[w];)w--;for(b=le[w],b={line:b.line,column:b.column};w<He;)t.charCodeAt(w)===10?(b.line++,b.column=1):b.column++,w++;return le[He]=b,b}function ht(He,b){var w=xe(He),S=xe(b);return{start:{offset:He,line:w.line,column:w.column},end:{offset:b,line:S.line,column:S.column}}}function H(He){z<he||(z>he&&(he=z,Ae=[]),Ae.push(He))}function lt(He,b){return new Gg(He,null,null,b)}function Te(He,b,w){return new Gg(Gg.buildMessage(He,b),He,b,w)}function ke(){var He,b,w,S;return He=z,b=be(),b!==r?(t.charCodeAt(z)===47?(w=n,z++):(w=r,ye===0&&H(u)),w!==r?(S=be(),S!==r?(te=He,b=A(b,S),He=b):(z=He,He=r)):(z=He,He=r)):(z=He,He=r),He===r&&(He=z,b=be(),b!==r&&(te=He,b=p(b)),He=b),He}function be(){var He,b,w,S;return He=z,b=_e(),b!==r?(t.charCodeAt(z)===64?(w=h,z++):(w=r,ye===0&&H(C)),w!==r?(S=ze(),S!==r?(te=He,b=I(b,S),He=b):(z=He,He=r)):(z=He,He=r)):(z=He,He=r),He===r&&(He=z,b=_e(),b!==r&&(te=He,b=v(b)),He=b),He}function _e(){var He,b,w,S,y;return He=z,t.charCodeAt(z)===64?(b=h,z++):(b=r,ye===0&&H(C)),b!==r?(w=Re(),w!==r?(t.charCodeAt(z)===47?(S=n,z++):(S=r,ye===0&&H(u)),S!==r?(y=Re(),y!==r?(te=He,b=x(),He=b):(z=He,He=r)):(z=He,He=r)):(z=He,He=r)):(z=He,He=r),He===r&&(He=z,b=Re(),b!==r&&(te=He,b=x()),He=b),He}function Re(){var He,b,w;if(He=z,b=[],E.test(t.charAt(z))?(w=t.charAt(z),z++):(w=r,ye===0&&H(R)),w!==r)for(;w!==r;)b.push(w),E.test(t.charAt(z))?(w=t.charAt(z),z++):(w=r,ye===0&&H(R));else b=r;return b!==r&&(te=He,b=x()),He=b,He}function ze(){var He,b,w;if(He=z,b=[],L.test(t.charAt(z))?(w=t.charAt(z),z++):(w=r,ye===0&&H(U)),w!==r)for(;w!==r;)b
gitextract_yq2a4xir/
├── .dockerignore
├── .github/
│ ├── npm_publish.sh
│ └── workflows/
│ ├── ci.yml
│ ├── docker.yml
│ └── npm.yml
├── .gitignore
├── .rustfmt.toml
├── Cargo.toml
├── Dockerfile
├── LICENSE
├── README.md
├── denokv/
│ ├── Cargo.toml
│ ├── config.rs
│ ├── main.rs
│ └── tests/
│ └── integration.rs
├── npm/
│ ├── LICENSE
│ ├── README.md
│ ├── deno.jsonc
│ ├── napi/
│ │ ├── .editorconfig
│ │ ├── .eslintrc.yml
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── .prettierignore
│ │ ├── .taplo.toml
│ │ ├── .yarn/
│ │ │ └── releases/
│ │ │ └── yarn-4.0.1.cjs
│ │ ├── .yarnrc.yml
│ │ ├── Cargo.toml
│ │ ├── __test__/
│ │ │ └── index.spec.ts
│ │ ├── build.rs
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── npm/
│ │ │ ├── darwin-arm64/
│ │ │ │ ├── README.md
│ │ │ │ └── package.json
│ │ │ ├── darwin-x64/
│ │ │ │ ├── README.md
│ │ │ │ └── package.json
│ │ │ ├── linux-x64-gnu/
│ │ │ │ ├── README.md
│ │ │ │ └── package.json
│ │ │ └── win32-x64-msvc/
│ │ │ ├── README.md
│ │ │ └── package.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── lib.rs
│ │ └── tsconfig.json
│ └── src/
│ ├── bytes.ts
│ ├── check.ts
│ ├── e2e.ts
│ ├── e2e_test.ts
│ ├── in_memory.ts
│ ├── kv_connect_api.ts
│ ├── kv_key.ts
│ ├── kv_key_test.ts
│ ├── kv_types.ts
│ ├── kv_u64.ts
│ ├── kv_u64_test.ts
│ ├── kv_util.ts
│ ├── napi_based.ts
│ ├── native.ts
│ ├── npm.ts
│ ├── proto/
│ │ ├── index.ts
│ │ ├── messages/
│ │ │ ├── com/
│ │ │ │ ├── deno/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── kv/
│ │ │ │ │ ├── backup/
│ │ │ │ │ │ ├── BackupKvMutationKind.ts
│ │ │ │ │ │ ├── BackupKvPair.ts
│ │ │ │ │ │ ├── BackupMutationRange.ts
│ │ │ │ │ │ ├── BackupReplicationLogEntry.ts
│ │ │ │ │ │ ├── BackupSnapshotRange.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── datapath/
│ │ │ │ │ │ ├── AtomicWrite.ts
│ │ │ │ │ │ ├── AtomicWriteOutput.ts
│ │ │ │ │ │ ├── AtomicWriteStatus.ts
│ │ │ │ │ │ ├── Check.ts
│ │ │ │ │ │ ├── Enqueue.ts
│ │ │ │ │ │ ├── KvEntry.ts
│ │ │ │ │ │ ├── KvValue.ts
│ │ │ │ │ │ ├── Mutation.ts
│ │ │ │ │ │ ├── MutationType.ts
│ │ │ │ │ │ ├── ReadRange.ts
│ │ │ │ │ │ ├── ReadRangeOutput.ts
│ │ │ │ │ │ ├── SnapshotRead.ts
│ │ │ │ │ │ ├── SnapshotReadOutput.ts
│ │ │ │ │ │ ├── SnapshotReadStatus.ts
│ │ │ │ │ │ ├── ValueEncoding.ts
│ │ │ │ │ │ ├── Watch.ts
│ │ │ │ │ │ ├── WatchKey.ts
│ │ │ │ │ │ ├── WatchKeyOutput.ts
│ │ │ │ │ │ ├── WatchOutput.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── index.ts
│ │ │ │ └── index.ts
│ │ │ └── index.ts
│ │ └── runtime/
│ │ ├── Long.ts
│ │ ├── array.ts
│ │ ├── async/
│ │ │ ├── async-generator.ts
│ │ │ ├── event-buffer.ts
│ │ │ ├── event-emitter.ts
│ │ │ ├── observer.ts
│ │ │ └── wait.ts
│ │ ├── base64.ts
│ │ ├── client-devtools.ts
│ │ ├── json/
│ │ │ └── scalar.ts
│ │ ├── rpc.ts
│ │ ├── scalar.ts
│ │ └── wire/
│ │ ├── deserialize.ts
│ │ ├── index.ts
│ │ ├── scalar.ts
│ │ ├── serialize.ts
│ │ ├── varint.ts
│ │ └── zigzag.ts
│ ├── proto_based.ts
│ ├── remote.ts
│ ├── scripts/
│ │ ├── build_npm.ts
│ │ ├── generate_napi_index.ts
│ │ └── process.ts
│ ├── sleep.ts
│ ├── unraw_watch_stream.ts
│ ├── v8.ts
│ └── v8_test.ts
├── proto/
│ ├── Cargo.toml
│ ├── README.md
│ ├── build.rs
│ ├── codec.rs
│ ├── convert.rs
│ ├── interface.rs
│ ├── kv-connect.md
│ ├── lib.rs
│ ├── limits.rs
│ ├── protobuf/
│ │ ├── com.deno.kv.backup.rs
│ │ └── com.deno.kv.datapath.rs
│ ├── protobuf.rs
│ ├── schema/
│ │ ├── backup.proto
│ │ ├── datapath.proto
│ │ ├── kv-metadata-exchange-request.json
│ │ ├── kv-metadata-exchange-response.v1.json
│ │ └── kv-metadata-exchange-response.v2.json
│ └── time.rs
├── remote/
│ ├── Cargo.toml
│ ├── lib.rs
│ └── time.rs
├── rust-toolchain.toml
├── scripts/
│ └── benchmark.ts
├── sqlite/
│ ├── Cargo.toml
│ ├── backend.rs
│ ├── lib.rs
│ ├── sum_operand.rs
│ └── time.rs
└── timemachine/
├── Cargo.toml
└── src/
├── backup.rs
├── backup_source_s3.rs
├── key_metadata.rs
├── lib.rs
└── time_travel.rs
Showing preview only (616K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6562 symbols across 89 files)
FILE: denokv/config.rs
type Config (line 6) | pub struct Config {
type SubCmd (line 16) | pub enum SubCmd {
type ServeOptions (line 25) | pub struct ServeOptions {
type ReplicaOptions (line 55) | pub struct ReplicaOptions {
type PitrOptions (line 71) | pub struct PitrOptions {
type PitrSubCmd (line 77) | pub enum PitrSubCmd {
type SyncOptions (line 92) | pub struct SyncOptions {
type PitrListOptions (line 98) | pub struct PitrListOptions {
type PitrCheckoutOptions (line 109) | pub struct PitrCheckoutOptions {
FILE: denokv/main.rs
constant SYNC_INTERVAL_BASE_MS (line 80) | const SYNC_INTERVAL_BASE_MS: u64 = 10000;
constant SYNC_INTERVAL_JITTER_MS (line 81) | const SYNC_INTERVAL_JITTER_MS: u64 = 5000;
type AppState (line 84) | struct AppState {
function main (line 90) | async fn main() -> Result<(), anyhow::Error> {
function run_pitr (line 129) | async fn run_pitr(
function run_serve (line 206) | async fn run_serve(
function run_sync (line 263) | async fn run_sync(
function open_sqlite (line 335) | fn open_sqlite(
function metadata_endpoint (line 363) | async fn metadata_endpoint(
function authentication_middleware (line 405) | async fn authentication_middleware(
function snapshot_read_endpoint (line 452) | async fn snapshot_read_endpoint(
function atomic_write_endpoint (line 469) | async fn atomic_write_endpoint(
function watch_endpoint (line 480) | async fn watch_endpoint(
function fallback_handler (line 513) | async fn fallback_handler() -> ApiError {
type ApiError (line 518) | enum ApiError {
method status (line 581) | fn status(&self) -> StatusCode {
method from (line 617) | fn from(value: SqliteBackendError) -> Self {
method from (line 647) | fn from(err: ConvertError) -> ApiError {
method into_response (line 641) | fn into_response(self) -> Response {
type Protobuf (line 680) | struct Protobuf<T: prost::Message>(T);
method into_response (line 683) | fn into_response(self) -> Response {
type Rejection (line 698) | type Rejection = Response;
function from_request (line 700) | async fn from_request(
FILE: denokv/tests/integration.rs
constant ACCESS_TOKEN (line 30) | const ACCESS_TOKEN: &str = "1234abcd5678efgh";
type ReqwestClient (line 33) | struct ReqwestClient(reqwest::Client);
type ReqwestResponse (line 34) | struct ReqwestResponse(reqwest::Response);
type Response (line 37) | type Response = ReqwestResponse;
method post (line 38) | async fn post(
method bytes (line 59) | async fn bytes(self) -> Result<Bytes, JsErrorBox> {
method stream (line 66) | fn stream(
method text (line 74) | async fn text(self) -> Result<String, JsErrorBox> {
function denokv_exe (line 83) | fn denokv_exe() -> PathBuf {
function start_server (line 99) | async fn start_server() -> (tokio::process::Child, SocketAddr) {
type DummyPermissions (line 154) | struct DummyPermissions;
method check_net_url (line 157) | fn check_net_url(&self, _url: &reqwest::Url) -> Result<(), JsErrorBox> {
function basics (line 163) | async fn basics() {
function watch (line 237) | async fn watch() {
function no_auth (line 295) | async fn no_auth() {
function sum_type_mismatch (line 325) | async fn sum_type_mismatch() {
function sum_values (line 402) | async fn sum_values() {
function read_key_1 (line 728) | async fn read_key_1<P: RemotePermissions, T: RemoteTransport>(
FILE: npm/napi/.yarn/releases/yarn-4.0.1.cjs
function Tl (line 4) | function Tl(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}
function c_e (line 4) | function c_e(t){return Tl("EBUSY",t)}
function u_e (line 4) | function u_e(t,e){return Tl("ENOSYS",`${t}, ${e}`)}
function A_e (line 4) | function A_e(t){return Tl("EINVAL",`invalid argument, ${t}`)}
function Io (line 4) | function Io(t){return Tl("EBADF",`bad file descriptor, ${t}`)}
function f_e (line 4) | function f_e(t){return Tl("ENOENT",`no such file or directory, ${t}`)}
function p_e (line 4) | function p_e(t){return Tl("ENOTDIR",`not a directory, ${t}`)}
function h_e (line 4) | function h_e(t){return Tl("EISDIR",`illegal operation on a directory, ${...
function g_e (line 4) | function g_e(t){return Tl("EEXIST",`file already exists, ${t}`)}
function d_e (line 4) | function d_e(t){return Tl("EROFS",`read-only filesystem, ${t}`)}
function m_e (line 4) | function m_e(t){return Tl("ENOTEMPTY",`directory not empty, ${t}`)}
function y_e (line 4) | function y_e(t){return Tl("EOPNOTSUPP",`operation not supported, ${t}`)}
function MR (line 4) | function MR(){return Tl("ERR_DIR_CLOSED","Directory handle was closed")}
function N7 (line 4) | function N7(){return new Zm}
function E_e (line 4) | function E_e(){return vD(N7())}
function vD (line 4) | function vD(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r...
function C_e (line 4) | function C_e(t){let e=new $m;for(let r in t)if(Object.hasOwn(t,r)){let o...
function jR (line 4) | function jR(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs...
method constructor (line 4) | constructor(){this.name="";this.path="";this.mode=0}
method isBlockDevice (line 4) | isBlockDevice(){return!1}
method isCharacterDevice (line 4) | isCharacterDevice(){return!1}
method isDirectory (line 4) | isDirectory(){return(this.mode&61440)===16384}
method isFIFO (line 4) | isFIFO(){return!1}
method isFile (line 4) | isFile(){return(this.mode&61440)===32768}
method isSocket (line 4) | isSocket(){return!1}
method isSymbolicLink (line 4) | isSymbolicLink(){return(this.mode&61440)===40960}
method constructor (line 4) | constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atim...
method isBlockDevice (line 4) | isBlockDevice(){return!1}
method isCharacterDevice (line 4) | isCharacterDevice(){return!1}
method isDirectory (line 4) | isDirectory(){return(this.mode&61440)===16384}
method isFIFO (line 4) | isFIFO(){return!1}
method isFile (line 4) | isFile(){return(this.mode&61440)===32768}
method isSocket (line 4) | isSocket(){return!1}
method isSymbolicLink (line 4) | isSymbolicLink(){return(this.mode&61440)===40960}
method constructor (line 4) | constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);...
method isBlockDevice (line 4) | isBlockDevice(){return!1}
method isCharacterDevice (line 4) | isCharacterDevice(){return!1}
method isDirectory (line 4) | isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}
method isFIFO (line 4) | isFIFO(){return!1}
method isFile (line 4) | isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}
method isSocket (line 4) | isSocket(){return!1}
method isSymbolicLink (line 4) | isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}
function D_e (line 4) | function D_e(t){let e,r;if(e=t.match(B_e))t=e[1];else if(r=t.match(v_e))...
function P_e (line 4) | function P_e(t){t=t.replace(/\\/g,"/");let e,r;return(e=t.match(w_e))?t=...
function DD (line 4) | function DD(t,e){return t===ue?O7(e):GR(e)}
function PD (line 4) | async function PD(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.i...
function M7 (line 4) | async function M7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtil...
function YR (line 4) | async function YR(t,e,r,o,a,n,u){let A=u.didParentExist?await U7(r,o):nu...
function U7 (line 4) | async function U7(t,e){try{return await t.lstatPromise(e)}catch{return n...
function b_e (line 4) | async function b_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p...
function x_e (line 4) | async function x_e(t,e,r,o,a,n,u,A,p,h){let C=await n.checksumFilePromis...
function k_e (line 4) | async function k_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(...
function Q_e (line 4) | async function Q_e(t,e,r,o,a,n,u,A,p){return p.linkStrategy?.type==="Har...
function F_e (line 4) | async function F_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(...
function SD (line 4) | function SD(t,e,r,o){let a=()=>{let n=r.shift();if(typeof n>"u")return n...
method constructor (line 4) | constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.clo...
method throwIfClosed (line 4) | throwIfClosed(){if(this.closed)throw MR()}
method [Symbol.asyncIterator] (line 4) | async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==nu...
method read (line 4) | read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.reso...
method readSync (line 4) | readSync(){return this.throwIfClosed(),this.nextDirent()}
method close (line 4) | close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}
method closeSync (line 4) | closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}
function H7 (line 4) | function H7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: e...
method constructor (line 4) | constructor(r,o,{bigint:a=!1}={}){super();this.status="ready";this.chang...
method create (line 4) | static create(r,o,a){let n=new ey(r,o,a);return n.start(),n}
method start (line 4) | start(){H7(this.status,"ready"),this.status="running",this.startTimeout=...
method stop (line 4) | stop(){H7(this.status,"running"),this.status="stopped",this.startTimeout...
method stat (line 4) | stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}c...
method makeInterval (line 4) | makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStat...
method registerChangeListener (line 4) | registerChangeListener(r,o){this.addListener("change",r),this.changeList...
method unregisterChangeListener (line 4) | unregisterChangeListener(r){this.removeListener("change",r);let o=this.c...
method unregisterAllChangeListeners (line 4) | unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())...
method hasChangeListeners (line 4) | hasChangeListeners(){return this.changeListeners.size>0}
method ref (line 4) | ref(){for(let r of this.changeListeners.values())r.ref();return this}
method unref (line 4) | unref(){for(let r of this.changeListeners.values())r.unref();return this}
function ty (line 4) | function ty(t,e,r,o){let a,n,u,A;switch(typeof r){case"function":a=!1,n=...
function Lg (line 4) | function Lg(t,e,r){let o=bD.get(t);if(typeof o>"u")return;let a=o.get(e)...
function Og (line 4) | function Og(t){let e=bD.get(t);if(!(typeof e>"u"))for(let r of e.keys())...
function R_e (line 4) | function R_e(t){let e=t.match(/\r?\n/g);if(e===null)return Y7.EOL;let r=...
function Mg (line 7) | function Mg(t,e){return e.replace(/\r?\n/g,R_e(t))}
method constructor (line 7) | constructor(e){this.pathUtils=e}
method genTraversePromise (line 7) | async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length...
method checksumFilePromise (line 7) | async checksumFilePromise(e,{algorithm:r="sha512"}={}){let o=await this....
method removePromise (line 7) | async removePromise(e,{recursive:r=!0,maxRetries:o=5}={}){let a;try{a=aw...
method removeSync (line 7) | removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a)...
method mkdirpPromise (line 7) | async mkdirpPromise(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===th...
method mkdirpSync (line 7) | mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUt...
method copyPromise (line 7) | async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stab...
method copySync (line 7) | copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),u=t...
method changeFilePromise (line 7) | async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeF...
method changeFileBufferPromise (line 7) | async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try...
method changeFileTextPromise (line 7) | async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n="...
method changeFileSync (line 7) | changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBuffer...
method changeFileBufferSync (line 7) | changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.r...
method changeFileTextSync (line 7) | changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n="";try{...
method movePromise (line 7) | async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.c...
method moveSync (line 7) | moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code==="EXDEV")this...
method lockPromise (line 7) | async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),u=null,A...
method readJsonPromise (line 7) | async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{...
method readJsonSync (line 7) | readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(...
method writeJsonPromise (line 7) | async writeJsonPromise(e,r,{compact:o=!1}={}){let a=o?0:2;return await t...
method writeJsonSync (line 8) | writeJsonSync(e,r,{compact:o=!1}={}){let a=o?0:2;return this.writeFileSy...
method preserveTimePromise (line 9) | async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await ...
method preserveTimeSync (line 9) | async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<"u"&&...
method constructor (line 9) | constructor(){super(V)}
method getExtractHint (line 9) | getExtractHint(e){return this.baseFs.getExtractHint(e)}
method resolve (line 9) | resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}
method getRealPath (line 9) | getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}
method openPromise (line 9) | async openPromise(e,r,o){return this.baseFs.openPromise(this.mapToBase(e...
method openSync (line 9) | openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}
method opendirPromise (line 9) | async opendirPromise(e,r){return Object.assign(await this.baseFs.opendir...
method opendirSync (line 9) | opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapTo...
method readPromise (line 9) | async readPromise(e,r,o,a,n){return await this.baseFs.readPromise(e,r,o,...
method readSync (line 9) | readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}
method writePromise (line 9) | async writePromise(e,r,o,a,n){return typeof r=="string"?await this.baseF...
method writeSync (line 9) | writeSync(e,r,o,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r...
method closePromise (line 9) | async closePromise(e){return this.baseFs.closePromise(e)}
method closeSync (line 9) | closeSync(e){this.baseFs.closeSync(e)}
method createReadStream (line 9) | createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this....
method createWriteStream (line 9) | createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?thi...
method realpathPromise (line 9) | async realpathPromise(e){return this.mapFromBase(await this.baseFs.realp...
method realpathSync (line 9) | realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.ma...
method existsPromise (line 9) | async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}
method existsSync (line 9) | existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}
method accessSync (line 9) | accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}
method accessPromise (line 9) | async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase...
method statPromise (line 9) | async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}
method statSync (line 9) | statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}
method fstatPromise (line 9) | async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}
method fstatSync (line 9) | fstatSync(e,r){return this.baseFs.fstatSync(e,r)}
method lstatPromise (line 9) | lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}
method lstatSync (line 9) | lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}
method fchmodPromise (line 9) | async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}
method fchmodSync (line 9) | fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}
method chmodPromise (line 9) | async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e...
method chmodSync (line 9) | chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}
method fchownPromise (line 9) | async fchownPromise(e,r,o){return this.baseFs.fchownPromise(e,r,o)}
method fchownSync (line 9) | fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}
method chownPromise (line 9) | async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase...
method chownSync (line 9) | chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}
method renamePromise (line 9) | async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase...
method renameSync (line 9) | renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.map...
method copyFilePromise (line 9) | async copyFilePromise(e,r,o=0){return this.baseFs.copyFilePromise(this.m...
method copyFileSync (line 9) | copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),...
method appendFilePromise (line 9) | async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this...
method appendFileSync (line 9) | appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase...
method writeFilePromise (line 9) | async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.f...
method writeFileSync (line 9) | writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e...
method unlinkPromise (line 9) | async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}
method unlinkSync (line 9) | unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}
method utimesPromise (line 9) | async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBa...
method utimesSync (line 9) | utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}
method lutimesPromise (line 9) | async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapTo...
method lutimesSync (line 9) | lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}
method mkdirPromise (line 9) | async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e...
method mkdirSync (line 9) | mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}
method rmdirPromise (line 9) | async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e...
method rmdirSync (line 9) | rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}
method linkPromise (line 9) | async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),...
method linkSync (line 9) | linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBa...
method symlinkPromise (line 9) | async symlinkPromise(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.is...
method symlinkSync (line 9) | symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(...
method readFilePromise (line 9) | async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMap...
method readFileSync (line 9) | readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}
method readdirPromise (line 9) | readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}
method readdirSync (line 9) | readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}
method readlinkPromise (line 9) | async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readl...
method readlinkSync (line 9) | readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.ma...
method truncatePromise (line 9) | async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapTo...
method truncateSync (line 9) | truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}
method ftruncatePromise (line 9) | async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}
method ftruncateSync (line 9) | ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}
method watch (line 9) | watch(e,r,o){return this.baseFs.watch(this.mapToBase(e),r,o)}
method watchFile (line 9) | watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}
method unwatchFile (line 9) | unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}
method fsMapToBase (line 9) | fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}
method constructor (line 9) | constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}
method getRealPath (line 9) | getRealPath(){return this.target}
method getBaseFs (line 9) | getBaseFs(){return this.baseFs}
method mapFromBase (line 9) | mapFromBase(r){return r}
method mapToBase (line 9) | mapToBase(r){return r}
function K7 (line 9) | function K7(t){let e=t;return typeof t.path=="string"&&(e.path=ue.toPort...
method constructor (line 9) | constructor(r=V7.default){super();this.realFs=r}
method getExtractHint (line 9) | getExtractHint(){return!1}
method getRealPath (line 9) | getRealPath(){return Bt.root}
method resolve (line 9) | resolve(r){return V.resolve(r)}
method openPromise (line 9) | async openPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.op...
method openSync (line 9) | openSync(r,o,a){return this.realFs.openSync(ue.fromPortablePath(r),o,a)}
method opendirPromise (line 9) | async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<"u"?...
method opendirSync (line 9) | opendirSync(r,o){let n=typeof o<"u"?this.realFs.opendirSync(ue.fromPorta...
method readPromise (line 9) | async readPromise(r,o,a=0,n=0,u=-1){return await new Promise((A,p)=>{thi...
method readSync (line 9) | readSync(r,o,a,n,u){return this.realFs.readSync(r,o,a,n,u)}
method writePromise (line 9) | async writePromise(r,o,a,n,u){return await new Promise((A,p)=>typeof o==...
method writeSync (line 9) | writeSync(r,o,a,n,u){return typeof o=="string"?this.realFs.writeSync(r,o...
method closePromise (line 9) | async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this...
method closeSync (line 9) | closeSync(r){this.realFs.closeSync(r)}
method createReadStream (line 9) | createReadStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return thi...
method createWriteStream (line 9) | createWriteStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return th...
method realpathPromise (line 9) | async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.re...
method realpathSync (line 9) | realpathSync(r){return ue.toPortablePath(this.realFs.realpathSync(ue.fro...
method existsPromise (line 9) | async existsPromise(r){return await new Promise(o=>{this.realFs.exists(u...
method accessSync (line 9) | accessSync(r,o){return this.realFs.accessSync(ue.fromPortablePath(r),o)}
method accessPromise (line 9) | async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.ac...
method existsSync (line 9) | existsSync(r){return this.realFs.existsSync(ue.fromPortablePath(r))}
method statPromise (line 9) | async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.st...
method statSync (line 9) | statSync(r,o){return o?this.realFs.statSync(ue.fromPortablePath(r),o):th...
method fstatPromise (line 9) | async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.f...
method fstatSync (line 9) | fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync...
method lstatPromise (line 9) | async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.l...
method lstatSync (line 9) | lstatSync(r,o){return o?this.realFs.lstatSync(ue.fromPortablePath(r),o):...
method fchmodPromise (line 9) | async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fc...
method fchmodSync (line 9) | fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}
method chmodPromise (line 9) | async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chm...
method chmodSync (line 9) | chmodSync(r,o){return this.realFs.chmodSync(ue.fromPortablePath(r),o)}
method fchownPromise (line 9) | async fchownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs....
method fchownSync (line 9) | fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}
method chownPromise (line 9) | async chownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.c...
method chownSync (line 9) | chownSync(r,o,a){return this.realFs.chownSync(ue.fromPortablePath(r),o,a)}
method renamePromise (line 9) | async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.re...
method renameSync (line 9) | renameSync(r,o){return this.realFs.renameSync(ue.fromPortablePath(r),ue....
method copyFilePromise (line 9) | async copyFilePromise(r,o,a=0){return await new Promise((n,u)=>{this.rea...
method copyFileSync (line 9) | copyFileSync(r,o,a=0){return this.realFs.copyFileSync(ue.fromPortablePat...
method appendFilePromise (line 9) | async appendFilePromise(r,o,a){return await new Promise((n,u)=>{let A=ty...
method appendFileSync (line 9) | appendFileSync(r,o,a){let n=typeof r=="string"?ue.fromPortablePath(r):r;...
method writeFilePromise (line 9) | async writeFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typ...
method writeFileSync (line 9) | writeFileSync(r,o,a){let n=typeof r=="string"?ue.fromPortablePath(r):r;a...
method unlinkPromise (line 9) | async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unli...
method unlinkSync (line 9) | unlinkSync(r){return this.realFs.unlinkSync(ue.fromPortablePath(r))}
method utimesPromise (line 9) | async utimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs....
method utimesSync (line 9) | utimesSync(r,o,a){this.realFs.utimesSync(ue.fromPortablePath(r),o,a)}
method lutimesPromise (line 9) | async lutimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs...
method lutimesSync (line 9) | lutimesSync(r,o,a){this.realFs.lutimesSync(ue.fromPortablePath(r),o,a)}
method mkdirPromise (line 9) | async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkd...
method mkdirSync (line 9) | mkdirSync(r,o){return this.realFs.mkdirSync(ue.fromPortablePath(r),o)}
method rmdirPromise (line 9) | async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.r...
method rmdirSync (line 9) | rmdirSync(r,o){return this.realFs.rmdirSync(ue.fromPortablePath(r),o)}
method linkPromise (line 9) | async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link...
method linkSync (line 9) | linkSync(r,o){return this.realFs.linkSync(ue.fromPortablePath(r),ue.from...
method symlinkPromise (line 9) | async symlinkPromise(r,o,a){return await new Promise((n,u)=>{this.realFs...
method symlinkSync (line 9) | symlinkSync(r,o,a){return this.realFs.symlinkSync(ue.fromPortablePath(r....
method readFilePromise (line 9) | async readFilePromise(r,o){return await new Promise((a,n)=>{let u=typeof...
method readFileSync (line 9) | readFileSync(r,o){let a=typeof r=="string"?ue.fromPortablePath(r):r;retu...
method readdirPromise (line 9) | async readdirPromise(r,o){return await new Promise((a,n)=>{o?o.recursive...
method readdirSync (line 9) | readdirSync(r,o){return o?o.recursive&&process.platform==="win32"?o.with...
method readlinkPromise (line 9) | async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.re...
method readlinkSync (line 9) | readlinkSync(r){return ue.toPortablePath(this.realFs.readlinkSync(ue.fro...
method truncatePromise (line 9) | async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs....
method truncateSync (line 9) | truncateSync(r,o){return this.realFs.truncateSync(ue.fromPortablePath(r)...
method ftruncatePromise (line 9) | async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs...
method ftruncateSync (line 9) | ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}
method watch (line 9) | watch(r,o,a){return this.realFs.watch(ue.fromPortablePath(r),o,a)}
method watchFile (line 9) | watchFile(r,o,a){return this.realFs.watchFile(ue.fromPortablePath(r),o,a)}
method unwatchFile (line 9) | unwatchFile(r,o){return this.realFs.unwatchFile(ue.fromPortablePath(r),o)}
method makeCallback (line 9) | makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}
method constructor (line 9) | constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils....
method getRealPath (line 9) | getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),th...
method resolve (line 9) | resolve(r){return this.pathUtils.isAbsolute(r)?V.normalize(r):this.baseF...
method mapFromBase (line 9) | mapFromBase(r){return r}
method mapToBase (line 9) | mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(t...
method constructor (line 9) | constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils....
method getRealPath (line 9) | getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),th...
method getTarget (line 9) | getTarget(){return this.target}
method getBaseFs (line 9) | getBaseFs(){return this.baseFs}
method mapToBase (line 9) | mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsol...
method mapFromBase (line 9) | mapFromBase(r){return this.pathUtils.resolve(J7,this.pathUtils.relative(...
method constructor (line 9) | constructor(r,o){super(o);this.instance=null;this.factory=r}
method baseFs (line 9) | get baseFs(){return this.instance||(this.instance=this.factory()),this.i...
method baseFs (line 9) | set baseFs(r){this.instance=r}
method mapFromBase (line 9) | mapFromBase(r){return r}
method mapToBase (line 9) | mapToBase(r){return r}
method constructor (line 9) | constructor({baseFs:r=new Tn,filter:o=null,magicByte:a=42,maxOpenFiles:n...
method getExtractHint (line 9) | getExtractHint(r){return this.baseFs.getExtractHint(r)}
method getRealPath (line 9) | getRealPath(){return this.baseFs.getRealPath()}
method saveAndClose (line 9) | saveAndClose(){if(Og(this),this.mountInstances)for(let[r,{childFs:o}]of ...
method discardAndClose (line 9) | discardAndClose(){if(Og(this),this.mountInstances)for(let[r,{childFs:o}]...
method resolve (line 9) | resolve(r){return this.baseFs.resolve(r)}
method remapFd (line 9) | remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o...
method openPromise (line 9) | async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>aw...
method openSync (line 9) | openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,...
method opendirPromise (line 9) | async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>a...
method opendirSync (line 9) | opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(...
method readPromise (line 9) | async readPromise(r,o,a,n,u){if((r&wa)!==this.magic)return await this.ba...
method readSync (line 9) | readSync(r,o,a,n,u){if((r&wa)!==this.magic)return this.baseFs.readSync(r...
method writePromise (line 9) | async writePromise(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o=="s...
method writeSync (line 9) | writeSync(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o=="string"?th...
method closePromise (line 9) | async closePromise(r){if((r&wa)!==this.magic)return await this.baseFs.cl...
method closeSync (line 9) | closeSync(r){if((r&wa)!==this.magic)return this.baseFs.closeSync(r);let ...
method createReadStream (line 9) | createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):...
method createWriteStream (line 9) | createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o...
method realpathPromise (line 9) | async realpathPromise(r){return await this.makeCallPromise(r,async()=>aw...
method realpathSync (line 9) | realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(...
method existsPromise (line 9) | async existsPromise(r){return await this.makeCallPromise(r,async()=>awai...
method existsSync (line 9) | existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(...
method accessPromise (line 9) | async accessPromise(r,o){return await this.makeCallPromise(r,async()=>aw...
method accessSync (line 9) | accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,...
method statPromise (line 9) | async statPromise(r,o){return await this.makeCallPromise(r,async()=>awai...
method statSync (line 9) | statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(...
method fstatPromise (line 9) | async fstatPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatP...
method fstatSync (line 9) | fstatSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatSync(r,o);...
method lstatPromise (line 9) | async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>awa...
method lstatSync (line 9) | lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o)...
method fchmodPromise (line 9) | async fchmodPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmo...
method fchmodSync (line 9) | fchmodSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodSync(r,o...
method chmodPromise (line 9) | async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>awa...
method chmodSync (line 9) | chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o)...
method fchownPromise (line 9) | async fchownPromise(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fch...
method fchownSync (line 9) | fchownSync(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownSync(r...
method chownPromise (line 9) | async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>a...
method chownSync (line 9) | chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,...
method renamePromise (line 9) | async renamePromise(r,o){return await this.makeCallPromise(r,async()=>aw...
method renameSync (line 9) | renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>t...
method copyFilePromise (line 9) | async copyFilePromise(r,o,a=0){let n=async(u,A,p,h)=>{if((a&Hg.constants...
method copyFileSync (line 9) | copyFileSync(r,o,a=0){let n=(u,A,p,h)=>{if((a&Hg.constants.COPYFILE_FICL...
method appendFilePromise (line 9) | async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async...
method appendFileSync (line 9) | appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendF...
method writeFilePromise (line 9) | async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async(...
method writeFileSync (line 9) | writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFil...
method unlinkPromise (line 9) | async unlinkPromise(r){return await this.makeCallPromise(r,async()=>awai...
method unlinkSync (line 9) | unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(...
method utimesPromise (line 9) | async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>...
method utimesSync (line 9) | utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(...
method lutimesPromise (line 9) | async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=...
method lutimesSync (line 9) | lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSyn...
method mkdirPromise (line 9) | async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>awa...
method mkdirSync (line 9) | mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o)...
method rmdirPromise (line 9) | async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>awa...
method rmdirSync (line 9) | rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o)...
method linkPromise (line 9) | async linkPromise(r,o){return await this.makeCallPromise(o,async()=>awai...
method linkSync (line 9) | linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(...
method symlinkPromise (line 9) | async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=...
method symlinkSync (line 9) | symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSyn...
method readFilePromise (line 9) | async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await ...
method readFileSync (line 9) | readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSyn...
method readdirPromise (line 9) | async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>a...
method readdirSync (line 9) | readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(...
method readlinkPromise (line 9) | async readlinkPromise(r){return await this.makeCallPromise(r,async()=>aw...
method readlinkSync (line 9) | readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(...
method truncatePromise (line 9) | async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>...
method truncateSync (line 9) | truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSyn...
method ftruncatePromise (line 9) | async ftruncatePromise(r,o){if((r&wa)!==this.magic)return this.baseFs.ft...
method ftruncateSync (line 9) | ftruncateSync(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncateSy...
method watch (line 9) | watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,...
method watchFile (line 9) | watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,...
method unwatchFile (line 9) | unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(...
method makeCallPromise (line 9) | async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="stri...
method makeCallSync (line 9) | makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")retur...
method findMount (line 9) | findMount(r){if(this.filter&&!this.filter.test(r))return null;let o="";f...
method limitOpenFiles (line 9) | limitOpenFiles(r){if(this.mountInstances===null)return;let o=Date.now(),...
method getMountPromise (line 9) | async getMountPromise(r,o){if(this.mountInstances){let a=this.mountInsta...
method getMountSync (line 9) | getMountSync(r,o){if(this.mountInstances){let a=this.mountInstances.get(...
method constructor (line 9) | constructor(){super(V)}
method getExtractHint (line 9) | getExtractHint(){throw Zt()}
method getRealPath (line 9) | getRealPath(){throw Zt()}
method resolve (line 9) | resolve(){throw Zt()}
method openPromise (line 9) | async openPromise(){throw Zt()}
method openSync (line 9) | openSync(){throw Zt()}
method opendirPromise (line 9) | async opendirPromise(){throw Zt()}
method opendirSync (line 9) | opendirSync(){throw Zt()}
method readPromise (line 9) | async readPromise(){throw Zt()}
method readSync (line 9) | readSync(){throw Zt()}
method writePromise (line 9) | async writePromise(){throw Zt()}
method writeSync (line 9) | writeSync(){throw Zt()}
method closePromise (line 9) | async closePromise(){throw Zt()}
method closeSync (line 9) | closeSync(){throw Zt()}
method createWriteStream (line 9) | createWriteStream(){throw Zt()}
method createReadStream (line 9) | createReadStream(){throw Zt()}
method realpathPromise (line 9) | async realpathPromise(){throw Zt()}
method realpathSync (line 9) | realpathSync(){throw Zt()}
method readdirPromise (line 9) | async readdirPromise(){throw Zt()}
method readdirSync (line 9) | readdirSync(){throw Zt()}
method existsPromise (line 9) | async existsPromise(e){throw Zt()}
method existsSync (line 9) | existsSync(e){throw Zt()}
method accessPromise (line 9) | async accessPromise(){throw Zt()}
method accessSync (line 9) | accessSync(){throw Zt()}
method statPromise (line 9) | async statPromise(){throw Zt()}
method statSync (line 9) | statSync(){throw Zt()}
method fstatPromise (line 9) | async fstatPromise(e){throw Zt()}
method fstatSync (line 9) | fstatSync(e){throw Zt()}
method lstatPromise (line 9) | async lstatPromise(e){throw Zt()}
method lstatSync (line 9) | lstatSync(e){throw Zt()}
method fchmodPromise (line 9) | async fchmodPromise(){throw Zt()}
method fchmodSync (line 9) | fchmodSync(){throw Zt()}
method chmodPromise (line 9) | async chmodPromise(){throw Zt()}
method chmodSync (line 9) | chmodSync(){throw Zt()}
method fchownPromise (line 9) | async fchownPromise(){throw Zt()}
method fchownSync (line 9) | fchownSync(){throw Zt()}
method chownPromise (line 9) | async chownPromise(){throw Zt()}
method chownSync (line 9) | chownSync(){throw Zt()}
method mkdirPromise (line 9) | async mkdirPromise(){throw Zt()}
method mkdirSync (line 9) | mkdirSync(){throw Zt()}
method rmdirPromise (line 9) | async rmdirPromise(){throw Zt()}
method rmdirSync (line 9) | rmdirSync(){throw Zt()}
method linkPromise (line 9) | async linkPromise(){throw Zt()}
method linkSync (line 9) | linkSync(){throw Zt()}
method symlinkPromise (line 9) | async symlinkPromise(){throw Zt()}
method symlinkSync (line 9) | symlinkSync(){throw Zt()}
method renamePromise (line 9) | async renamePromise(){throw Zt()}
method renameSync (line 9) | renameSync(){throw Zt()}
method copyFilePromise (line 9) | async copyFilePromise(){throw Zt()}
method copyFileSync (line 9) | copyFileSync(){throw Zt()}
method appendFilePromise (line 9) | async appendFilePromise(){throw Zt()}
method appendFileSync (line 9) | appendFileSync(){throw Zt()}
method writeFilePromise (line 9) | async writeFilePromise(){throw Zt()}
method writeFileSync (line 9) | writeFileSync(){throw Zt()}
method unlinkPromise (line 9) | async unlinkPromise(){throw Zt()}
method unlinkSync (line 9) | unlinkSync(){throw Zt()}
method utimesPromise (line 9) | async utimesPromise(){throw Zt()}
method utimesSync (line 9) | utimesSync(){throw Zt()}
method lutimesPromise (line 9) | async lutimesPromise(){throw Zt()}
method lutimesSync (line 9) | lutimesSync(){throw Zt()}
method readFilePromise (line 9) | async readFilePromise(){throw Zt()}
method readFileSync (line 9) | readFileSync(){throw Zt()}
method readlinkPromise (line 9) | async readlinkPromise(){throw Zt()}
method readlinkSync (line 9) | readlinkSync(){throw Zt()}
method truncatePromise (line 9) | async truncatePromise(){throw Zt()}
method truncateSync (line 9) | truncateSync(){throw Zt()}
method ftruncatePromise (line 9) | async ftruncatePromise(e,r){throw Zt()}
method ftruncateSync (line 9) | ftruncateSync(e,r){throw Zt()}
method watch (line 9) | watch(){throw Zt()}
method watchFile (line 9) | watchFile(){throw Zt()}
method unwatchFile (line 9) | unwatchFile(){throw Zt()}
method constructor (line 9) | constructor(r){super(ue);this.baseFs=r}
method mapFromBase (line 9) | mapFromBase(r){return ue.fromPortablePath(r)}
method mapToBase (line 9) | mapToBase(r){return ue.toPortablePath(r)}
method constructor (line 9) | constructor({baseFs:r=new Tn}={}){super(V);this.baseFs=r}
method makeVirtualPath (line 9) | static makeVirtualPath(r,o,a){if(V.basename(r)!=="__virtual__")throw new...
method resolveVirtual (line 9) | static resolveVirtual(r){let o=r.match(zR);if(!o||!o[3]&&o[5])return r;l...
method getExtractHint (line 9) | getExtractHint(r){return this.baseFs.getExtractHint(r)}
method getRealPath (line 9) | getRealPath(){return this.baseFs.getRealPath()}
method realpathSync (line 9) | realpathSync(r){let o=r.match(zR);if(!o)return this.baseFs.realpathSync(...
method realpathPromise (line 9) | async realpathPromise(r){let o=r.match(zR);if(!o)return await this.baseF...
method mapToBase (line 9) | mapToBase(r){if(r==="")return r;if(this.pathUtils.isAbsolute(r))return m...
method mapFromBase (line 9) | mapFromBase(r){return r}
function L_e (line 9) | function L_e(t,e){return typeof JR.default.isUtf8<"u"?JR.default.isUtf8(...
method constructor (line 9) | constructor(r){super(ue);this.baseFs=r}
method mapFromBase (line 9) | mapFromBase(r){return r}
method mapToBase (line 9) | mapToBase(r){if(typeof r=="string")return r;if(r instanceof kD.URL)retur...
method constructor (line 9) | constructor(e,r){this[O_e]=1;this[M_e]=void 0;this[U_e]=void 0;this[__e]...
method fd (line 9) | get fd(){return this[df]}
method appendFile (line 9) | async appendFile(e,r){try{this[Tc](this.appendFile);let o=(typeof r=="st...
method chown (line 9) | async chown(e,r){try{return this[Tc](this.chown),await this[Bo].fchownPr...
method chmod (line 9) | async chmod(e){try{return this[Tc](this.chmod),await this[Bo].fchmodProm...
method createReadStream (line 9) | createReadStream(e){return this[Bo].createReadStream(null,{...e,fd:this....
method createWriteStream (line 9) | createWriteStream(e){return this[Bo].createWriteStream(null,{...e,fd:thi...
method datasync (line 9) | datasync(){throw new Error("Method not implemented.")}
method sync (line 9) | sync(){throw new Error("Method not implemented.")}
method read (line 9) | async read(e,r,o,a){try{this[Tc](this.read);let n;return Buffer.isBuffer...
method readFile (line 9) | async readFile(e){try{this[Tc](this.readFile);let r=(typeof e=="string"?...
method readLines (line 9) | readLines(e){return(0,sY.createInterface)({input:this.createReadStream(e...
method stat (line 9) | async stat(e){try{return this[Tc](this.stat),await this[Bo].fstatPromise...
method truncate (line 9) | async truncate(e){try{return this[Tc](this.truncate),await this[Bo].ftru...
method utimes (line 9) | utimes(e,r){throw new Error("Method not implemented.")}
method writeFile (line 9) | async writeFile(e,r){try{this[Tc](this.writeFile);let o=(typeof r=="stri...
method write (line 9) | async write(...e){try{if(this[Tc](this.write),ArrayBuffer.isView(e[0])){...
method writev (line 9) | async writev(e,r){try{this[Tc](this.writev);let o=0;if(typeof r<"u")for(...
method readv (line 9) | readv(e,r){throw new Error("Method not implemented.")}
method close (line 9) | close(){if(this[df]===-1)return Promise.resolve();if(this[Hp])return thi...
method [(Bo,df,O_e=ny,M_e=Hp,U_e=QD,__e=FD,Tc)] (line 9) | [(Bo,df,O_e=ny,M_e=Hp,U_e=QD,__e=FD,Tc)](e){if(this[df]===-1){let r=new ...
method [Nc] (line 9) | [Nc](){if(this[ny]--,this[ny]===0){let e=this[df];this[df]=-1,this[Bo].c...
function Yw (line 9) | function Yw(t,e){e=new xD(e);let r=(o,a,n)=>{let u=o[a];o[a]=n,typeof u?...
function RD (line 9) | function RD(t,e){let r=Object.create(t);return Yw(r,e),r}
function cY (line 9) | function cY(t){let e=Math.ceil(Math.random()*4294967296).toString(16).pa...
function uY (line 9) | function uY(){if(XR)return XR;let t=ue.toPortablePath(AY.default.tmpdir(...
method detachTemp (line 9) | detachTemp(t){Lc.delete(t)}
method mktempSync (line 9) | mktempSync(t){let{tmpdir:e,realTmpdir:r}=uY();for(;;){let o=cY("xfs-");t...
method mktempPromise (line 9) | async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=uY();for(;;){let o=cY(...
method rmtempPromise (line 9) | async rmtempPromise(){await Promise.all(Array.from(Lc.values()).map(asyn...
method rmtempSync (line 9) | rmtempSync(){for(let t of Lc)try{oe.removeSync(t),Lc.delete(t)}catch{}}
function j_e (line 9) | function j_e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT...
function hY (line 9) | function hY(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:j_e(e,r)}
function gY (line 9) | function gY(t,e,r){pY.stat(t,function(o,a){r(o,o?!1:hY(a,t,e))})}
function q_e (line 9) | function q_e(t,e){return hY(pY.statSync(t),t,e)}
function EY (line 9) | function EY(t,e,r){yY.stat(t,function(o,a){r(o,o?!1:CY(a,e))})}
function G_e (line 9) | function G_e(t,e){return CY(yY.statSync(t),e)}
function CY (line 9) | function CY(t,e){return t.isFile()&&Y_e(t,e)}
function Y_e (line 9) | function Y_e(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:pr...
function ZR (line 9) | function ZR(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Pro...
function W_e (line 9) | function W_e(t,e){try{return TD.sync(t,e||{})}catch(r){if(e&&e.ignoreErr...
function NY (line 9) | function NY(t,e){let r=t.options.env||process.env,o=process.cwd(),a=t.op...
function X_e (line 9) | function X_e(t){return NY(t)||NY(t,!0)}
function Z_e (line 9) | function Z_e(t){return t=t.replace(eT,"^$1"),t}
function $_e (line 9) | function $_e(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.r...
function r8e (line 9) | function r8e(t){let r=Buffer.alloc(150),o;try{o=rT.openSync(t,"r"),rT.re...
function l8e (line 9) | function l8e(t){t.file=YY(t);let e=t.file&&i8e(t.file);return e?(t.args....
function c8e (line 9) | function c8e(t){if(!s8e)return t;let e=l8e(t),r=!o8e.test(e);if(t.option...
function u8e (line 9) | function u8e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[]...
function iT (line 9) | function iT(t,e){return Object.assign(new Error(`${e} ${t.command} ENOEN...
function A8e (line 9) | function A8e(t,e){if(!nT)return;let r=t.emit;t.emit=function(o,a){if(o==...
function zY (line 9) | function zY(t,e){return nT&&t===1&&!e.file?iT(e.original,"spawn"):null}
function f8e (line 9) | function f8e(t,e){return nT&&t===1&&!e.file?iT(e.original,"spawnSync"):n...
function $Y (line 9) | function $Y(t,e,r){let o=sT(t,e,r),a=ZY.spawn(o.command,o.args,o.options...
function p8e (line 9) | function p8e(t,e,r){let o=sT(t,e,r),a=ZY.spawnSync(o.command,o.args,o.op...
function h8e (line 9) | function h8e(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
function jg (line 9) | function jg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.lo...
function o (line 9) | function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}
function a (line 9) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
function n (line 9) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
function u (line 9) | function u(h){return r[h.type](h)}
function A (line 9) | function A(h){var C=new Array(h.length),I,v;for(I=0;I<h.length;I++)C[I]=...
function p (line 9) | function p(h){return h?'"'+a(h)+'"':"end of input"}
function g8e (line 9) | function g8e(t,e){e=e!==void 0?e:{};var r={},o={Start:fg},a=fg,n=functio...
function LD (line 12) | function LD(t,e={isGlobPattern:()=>!1}){try{return(0,rW.parse)(t,e)}catc...
function ay (line 12) | function ay(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a...
function OD (line 12) | function OD(t){return`${ly(t.chain)}${t.then?` ${lT(t.then)}`:""}`}
function lT (line 12) | function lT(t){return`${t.type} ${OD(t.line)}`}
function ly (line 12) | function ly(t){return`${uT(t)}${t.then?` ${cT(t.then)}`:""}`}
function cT (line 12) | function cT(t){return`${t.type} ${ly(t.chain)}`}
function uT (line 12) | function uT(t){switch(t.type){case"command":return`${t.envs.length>0?`${...
function ND (line 12) | function ND(t){return`${t.name}=${t.args[0]?qg(t.args[0]):""}`}
function AT (line 12) | function AT(t){switch(t.type){case"redirection":return Kw(t);case"argume...
function Kw (line 12) | function Kw(t){return`${t.subtype} ${t.args.map(e=>qg(e)).join(" ")}`}
function qg (line 12) | function qg(t){return t.segments.map(e=>fT(e)).join("")}
function fT (line 12) | function fT(t){let e=(o,a)=>a?`"${o}"`:o,r=o=>o===""?"''":o.match(/[()}<...
function MD (line 12) | function MD(t){let e=a=>{switch(a){case"addition":return"+";case"subtrac...
function y8e (line 13) | function y8e(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
function Gg (line 13) | function Gg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.lo...
function o (line 13) | function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}
function a (line 13) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
function n (line 13) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
function u (line 13) | function u(h){return r[h.type](h)}
function A (line 13) | function A(h){var C=new Array(h.length),I,v;for(I=0;I<h.length;I++)C[I]=...
function p (line 13) | function p(h){return h?'"'+a(h)+'"':"end of input"}
function E8e (line 13) | function E8e(t,e){e=e!==void 0?e:{};var r={},o={resolution:ke},a=ke,n="/...
function UD (line 13) | function UD(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The...
function _D (line 13) | function _D(t){let e="";return t.from&&(e+=t.from.fullName,t.from.descri...
function uW (line 13) | function uW(t){return typeof t>"u"||t===null}
function C8e (line 13) | function C8e(t){return typeof t=="object"&&t!==null}
function w8e (line 13) | function w8e(t){return Array.isArray(t)?t:uW(t)?[]:[t]}
function I8e (line 13) | function I8e(t,e){var r,o,a,n;if(e)for(n=Object.keys(e),r=0,o=n.length;r...
function B8e (line 13) | function B8e(t,e){var r="",o;for(o=0;o<e;o+=1)r+=t;return r}
function v8e (line 13) | function v8e(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}
function Vw (line 13) | function Vw(t,e){Error.call(this),this.name="YAMLException",this.reason=...
function pT (line 13) | function pT(t,e,r,o,a){this.name=t,this.buffer=e,this.position=r,this.li...
function S8e (line 17) | function S8e(t){var e={};return t!==null&&Object.keys(t).forEach(functio...
function b8e (line 17) | function b8e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(D8e.i...
function hT (line 17) | function hT(t,e,r){var o=[];return t.include.forEach(function(a){r=hT(a,...
function k8e (line 17) | function k8e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;...
function uy (line 17) | function uy(t){this.include=t.include||[],this.implicit=t.implicit||[],t...
function L8e (line 17) | function L8e(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~...
function O8e (line 17) | function O8e(){return null}
function M8e (line 17) | function M8e(t){return t===null}
function _8e (line 17) | function _8e(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="...
function H8e (line 17) | function H8e(t){return t==="true"||t==="True"||t==="TRUE"}
function j8e (line 17) | function j8e(t){return Object.prototype.toString.call(t)==="[object Bool...
function Y8e (line 17) | function Y8e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}
function W8e (line 17) | function W8e(t){return 48<=t&&t<=55}
function K8e (line 17) | function K8e(t){return 48<=t&&t<=57}
function V8e (line 17) | function V8e(t){if(t===null)return!1;var e=t.length,r=0,o=!1,a;if(!e)ret...
function z8e (line 17) | function z8e(t){var e=t,r=1,o,a,n=[];return e.indexOf("_")!==-1&&(e=e.re...
function J8e (line 17) | function J8e(t){return Object.prototype.toString.call(t)==="[object Numb...
function $8e (line 17) | function $8e(t){return!(t===null||!Z8e.test(t)||t[t.length-1]==="_")}
function eHe (line 17) | function eHe(t){var e,r,o,a;return e=t.replace(/_/g,"").toLowerCase(),r=...
function rHe (line 17) | function rHe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".na...
function nHe (line 17) | function nHe(t){return Object.prototype.toString.call(t)==="[object Numb...
function aHe (line 17) | function aHe(t){return t===null?!1:OW.exec(t)!==null||MW.exec(t)!==null}
function lHe (line 17) | function lHe(t){var e,r,o,a,n,u,A,p=0,h=null,C,I,v;if(e=OW.exec(t),e===n...
function cHe (line 17) | function cHe(t){return t.toISOString()}
function AHe (line 17) | function AHe(t){return t==="<<"||t===null}
function pHe (line 18) | function pHe(t){if(t===null)return!1;var e,r,o=0,a=t.length,n=mT;for(r=0...
function hHe (line 18) | function hHe(t){var e,r,o=t.replace(/[\r\n=]/g,""),a=o.length,n=mT,u=0,A...
function gHe (line 18) | function gHe(t){var e="",r=0,o,a,n=t.length,u=mT;for(o=0;o<n;o++)o%3===0...
function dHe (line 18) | function dHe(t){return Vg&&Vg.isBuffer(t)}
function CHe (line 18) | function CHe(t){if(t===null)return!0;var e=[],r,o,a,n,u,A=t;for(r=0,o=A....
function wHe (line 18) | function wHe(t){return t!==null?t:[]}
function vHe (line 18) | function vHe(t){if(t===null)return!0;var e,r,o,a,n,u=t;for(n=new Array(u...
function DHe (line 18) | function DHe(t){if(t===null)return[];var e,r,o,a,n,u=t;for(n=new Array(u...
function bHe (line 18) | function bHe(t){if(t===null)return!0;var e,r=t;for(e in r)if(SHe.call(r,...
function xHe (line 18) | function xHe(t){return t!==null?t:{}}
function FHe (line 18) | function FHe(){return!0}
function RHe (line 18) | function RHe(){}
function THe (line 18) | function THe(){return""}
function NHe (line 18) | function NHe(t){return typeof t>"u"}
function OHe (line 18) | function OHe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)...
function MHe (line 18) | function MHe(t){var e=t,r=/\/([gim]*)$/.exec(t),o="";return e[0]==="/"&&...
function UHe (line 18) | function UHe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multi...
function _He (line 18) | function _He(t){return Object.prototype.toString.call(t)==="[object RegE...
function jHe (line 18) | function jHe(t){if(t===null)return!1;try{var e="("+t+")",r=qD.parse(e,{r...
function qHe (line 18) | function qHe(t){var e="("+t+")",r=qD.parse(e,{range:!0}),o=[],a;if(r.typ...
function GHe (line 18) | function GHe(t){return t.toString()}
function YHe (line 18) | function YHe(t){return Object.prototype.toString.call(t)==="[object Func...
function cK (line 18) | function cK(t){return Object.prototype.toString.call(t)}
function Hu (line 18) | function Hu(t){return t===10||t===13}
function Jg (line 18) | function Jg(t){return t===9||t===32}
function Ia (line 18) | function Ia(t){return t===9||t===32||t===10||t===13}
function fy (line 18) | function fy(t){return t===44||t===91||t===93||t===123||t===125}
function ZHe (line 18) | function ZHe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-9...
function $He (line 18) | function $He(t){return t===120?2:t===117?4:t===85?8:0}
function e6e (line 18) | function e6e(t){return 48<=t&&t<=57?t-48:-1}
function uK (line 18) | function uK(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t==...
function t6e (line 19) | function t6e(t){return t<=65535?String.fromCharCode(t):String.fromCharCo...
function r6e (line 19) | function r6e(t,e){this.input=t,this.filename=e.filename||null,this.schem...
function IK (line 19) | function IK(t,e){return new hK(e,new WHe(t.filename,t.input,t.position,t...
function Sr (line 19) | function Sr(t,e){throw IK(t,e)}
function WD (line 19) | function WD(t,e){t.onWarning&&t.onWarning.call(null,IK(t,e))}
function jp (line 19) | function jp(t,e,r,o){var a,n,u,A;if(e<r){if(A=t.input.slice(e,r),o)for(a...
function fK (line 19) | function fK(t,e,r,o){var a,n,u,A;for(mf.isObject(r)||Sr(t,"cannot merge ...
function py (line 19) | function py(t,e,r,o,a,n,u,A){var p,h;if(Array.isArray(a))for(a=Array.pro...
function ET (line 19) | function ET(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position+...
function Wi (line 19) | function Wi(t,e,r){for(var o=0,a=t.input.charCodeAt(t.position);a!==0;){...
function KD (line 19) | function KD(t){var e=t.position,r;return r=t.input.charCodeAt(e),!!((r==...
function CT (line 19) | function CT(t,e){e===1?t.result+=" ":e>1&&(t.result+=mf.repeat(`
function n6e (line 20) | function n6e(t,e,r){var o,a,n,u,A,p,h,C,I=t.kind,v=t.result,x;if(x=t.inp...
function i6e (line 20) | function i6e(t,e){var r,o,a;if(r=t.input.charCodeAt(t.position),r!==39)r...
function s6e (line 20) | function s6e(t,e){var r,o,a,n,u,A;if(A=t.input.charCodeAt(t.position),A!...
function o6e (line 20) | function o6e(t,e){var r=!0,o,a=t.tag,n,u=t.anchor,A,p,h,C,I,v={},x,E,R,L...
function a6e (line 20) | function a6e(t,e){var r,o,a=yT,n=!1,u=!1,A=e,p=0,h=!1,C,I;if(I=t.input.c...
function pK (line 26) | function pK(t,e){var r,o=t.tag,a=t.anchor,n=[],u,A=!1,p;for(t.anchor!==n...
function l6e (line 26) | function l6e(t,e,r){var o,a,n,u,A=t.tag,p=t.anchor,h={},C={},I=null,v=nu...
function c6e (line 26) | function c6e(t){var e,r=!1,o=!1,a,n,u;if(u=t.input.charCodeAt(t.position...
function u6e (line 26) | function u6e(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)retur...
function A6e (line 26) | function A6e(t){var e,r,o;if(o=t.input.charCodeAt(t.position),o!==42)ret...
function hy (line 26) | function hy(t,e,r,o,a){var n,u,A,p=1,h=!1,C=!1,I,v,x,E,R;if(t.listener!=...
function f6e (line 26) | function f6e(t){var e=t.position,r,o,a,n=!1,u;for(t.version=null,t.check...
function BK (line 26) | function BK(t,e){t=String(t),e=e||{},t.length!==0&&(t.charCodeAt(t.lengt...
function vK (line 27) | function vK(t,e,r){e!==null&&typeof e=="object"&&typeof r>"u"&&(r=e,e=nu...
function DK (line 27) | function DK(t,e){var r=BK(t,e);if(r.length!==0){if(r.length===1)return r...
function p6e (line 27) | function p6e(t,e,r){return typeof e=="object"&&e!==null&&typeof r>"u"&&(...
function h6e (line 27) | function h6e(t,e){return DK(t,mf.extend({schema:gK},e))}
function T6e (line 27) | function T6e(t,e){var r,o,a,n,u,A,p;if(e===null)return{};for(r={},o=Obje...
function SK (line 27) | function SK(t){var e,r,o;if(e=t.toString(16).toUpperCase(),t<=255)r="x",...
function N6e (line 27) | function N6e(t){this.schema=t.schema||g6e,this.indent=Math.max(1,t.inden...
function bK (line 27) | function bK(t,e){for(var r=Zw.repeat(" ",e),o=0,a=-1,n="",u,A=t.length;o...
function wT (line 29) | function wT(t,e){return`
function L6e (line 30) | function L6e(t,e){var r,o,a;for(r=0,o=t.implicitTypes.length;r<o;r+=1)if...
function BT (line 30) | function BT(t){return t===E6e||t===m6e}
function gy (line 30) | function gy(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==823...
function O6e (line 30) | function O6e(t){return gy(t)&&!BT(t)&&t!==65279&&t!==y6e&&t!==Xw}
function xK (line 30) | function xK(t,e){return gy(t)&&t!==65279&&t!==OK&&t!==UK&&t!==_K&&t!==HK...
function M6e (line 30) | function M6e(t){return gy(t)&&t!==65279&&!BT(t)&&t!==P6e&&t!==x6e&&t!==M...
function qK (line 30) | function qK(t){var e=/^\n* /;return e.test(t)}
function U6e (line 30) | function U6e(t,e,r,o,a){var n,u,A,p=!1,h=!1,C=o!==-1,I=-1,v=M6e(t.charCo...
function _6e (line 30) | function _6e(t,e,r,o){t.dump=function(){if(e.length===0)return"''";if(!t...
function kK (line 30) | function kK(t,e){var r=qK(t)?String(e):"",o=t[t.length-1]===`
function QK (line 34) | function QK(t){return t[t.length-1]===`
function H6e (line 35) | function H6e(t,e){for(var r=/(\n+)([^\n]*)/g,o=function(){var h=t.indexOf(`
function FK (line 38) | function FK(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,o,a=0...
function j6e (line 41) | function j6e(t){for(var e="",r,o,a,n=0;n<t.length;n++){if(r=t.charCodeAt...
function q6e (line 41) | function q6e(t,e,r){var o="",a=t.tag,n,u;for(n=0,u=r.length;n<u;n+=1)Xg(...
function G6e (line 41) | function G6e(t,e,r,o){var a="",n=t.tag,u,A;for(u=0,A=r.length;u<A;u+=1)X...
function Y6e (line 41) | function Y6e(t,e,r){var o="",a=t.tag,n=Object.keys(r),u,A,p,h,C;for(u=0,...
function W6e (line 41) | function W6e(t,e,r,o){var a="",n=t.tag,u=Object.keys(r),A,p,h,C,I,v;if(t...
function RK (line 41) | function RK(t,e,r){var o,a,n,u,A,p;for(a=r?t.explicitTypes:t.implicitTyp...
function Xg (line 41) | function Xg(t,e,r,o,a,n){t.tag=null,t.dump=r,RK(t,r,!1)||RK(t,r,!0);var ...
function K6e (line 41) | function K6e(t,e){var r=[],o=[],a,n;for(IT(t,r,o),a=0,n=o.length;a<n;a+=...
function IT (line 41) | function IT(t,e,r){var o,a,n;if(t!==null&&typeof t=="object")if(a=e.inde...
function VK (line 41) | function VK(t,e){e=e||{};var r=new N6e(e);return r.noRefs||K6e(t,r),Xg(r...
function V6e (line 42) | function V6e(t,e){return VK(t,Zw.extend({schema:d6e},e))}
function JD (line 42) | function JD(t){return function(){throw new Error("Function "+t+" is depr...
function J6e (line 42) | function J6e(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
function Zg (line 42) | function Zg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.lo...
function o (line 42) | function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}
function a (line 42) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
function n (line 42) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
function u (line 42) | function u(h){return r[h.type](h)}
function A (line 42) | function A(h){var C=new Array(h.length),I,v;for(I=0;I<h.length;I++)C[I]=...
function p (line 42) | function p(h){return h?'"'+a(h)+'"':"end of input"}
function X6e (line 42) | function X6e(t,e){e=e!==void 0?e:{};var r={},o={Start:pu},a=pu,n=functio...
function nV (line 51) | function nV(t){return t.match(Z6e)?t:JSON.stringify(t)}
function sV (line 51) | function sV(t){return typeof t>"u"?!0:typeof t=="object"&&t!==null&&!Arr...
function DT (line 51) | function DT(t,e,r){if(t===null)return`null
function Ba (line 61) | function Ba(t){try{let e=DT(t,0,!1);return e!==`
function $6e (line 62) | function $6e(t){return t.endsWith(`
function tje (line 64) | function tje(t){if(eje.test(t))return $6e(t);let e=(0,ZD.safeLoad)(t,{sc...
function Ki (line 64) | function Ki(t){return tje(t)}
method constructor (line 64) | constructor(e){this.data=e}
function uV (line 64) | function uV(t){return typeof t=="string"?!!ju[t]:Object.keys(t).every(fu...
method constructor (line 64) | constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageEr...
method constructor (line 64) | constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanio...
method constructor (line 75) | constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type...
function ije (line 80) | function ije(t){let e=t.split(`
function Do (line 82) | function Do(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,`
function Ko (line 90) | function Ko(t){return{...t,[tI]:!0}}
function qu (line 90) | function qu(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&...
function nP (line 90) | function nP(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(...
function rI (line 90) | function rI(t,e){return e.length===1?new it(`${t}${nP(e[0],{mergeName:!0...
function td (line 92) | function td(t,e,r){if(typeof r>"u")return e;let o=[],a=[],n=A=>{let p=e;...
function jn (line 92) | function jn(t){return t===null?"null":t===void 0?"undefined":t===""?"an ...
function my (line 92) | function my(t,e){if(t.length===0)return"nothing";if(t.length===1)return ...
function Gp (line 92) | function Gp(t,e){var r,o,a;return typeof e=="number"?`${(r=t?.p)!==null&...
function RT (line 92) | function RT(t,e,r){return t===1?e:r}
function pr (line 92) | function pr({errors:t,p:e}={},r){return t?.push(`${e??"."}: ${r}`),!1}
function uje (line 92) | function uje(t,e){return r=>{t[e]=r}}
function Yu (line 92) | function Yu(t,e){return r=>{let o=t[e];return t[e]=r,Yu(t,e).bind(null,o)}}
function nI (line 92) | function nI(t,e,r){let o=()=>(t(r()),a),a=()=>(t(e),o);return o}
function TT (line 92) | function TT(){return Hr({test:(t,e)=>!0})}
function dV (line 92) | function dV(t){return Hr({test:(e,r)=>e!==t?pr(r,`Expected ${jn(t)} (got...
function yy (line 92) | function yy(){return Hr({test:(t,e)=>typeof t!="string"?pr(e,`Expected a...
function Ks (line 92) | function Ks(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>ty...
function fje (line 92) | function fje(){return Hr({test:(t,e)=>{var r;if(typeof t!="boolean"){if(...
function NT (line 92) | function NT(){return Hr({test:(t,e)=>{var r;if(typeof t!="number"){if(ty...
function pje (line 92) | function pje(t){return Hr({test:(e,r)=>{var o;if(typeof r?.coercions>"u"...
function hje (line 92) | function hje(){return Hr({test:(t,e)=>{var r;if(!(t instanceof Date)){if...
function iP (line 92) | function iP(t,{delimiter:e}={}){return Hr({test:(r,o)=>{var a;let n=r;if...
function gje (line 92) | function gje(t,{delimiter:e}={}){let r=iP(t,{delimiter:e});return Hr({te...
function dje (line 92) | function dje(t,e){let r=iP(sP([t,e])),o=oP(e,{keys:t});return Hr({test:(...
function sP (line 92) | function sP(t,{delimiter:e}={}){let r=EV(t.length);return Hr({test:(o,a)...
function oP (line 92) | function oP(t,{keys:e=null}={}){let r=iP(sP([e??yy(),t]));return Hr({tes...
function mje (line 92) | function mje(t,e={}){return oP(t,e)}
function mV (line 92) | function mV(t,{extra:e=null}={}){let r=Object.keys(t),o=Hr({test:(a,n)=>...
function yje (line 92) | function yje(t){return mV(t,{extra:oP(TT())})}
function yV (line 92) | function yV(t){return()=>t}
function Hr (line 92) | function Hr({test:t}){return yV(t)()}
function Cje (line 92) | function Cje(t,e){if(!e(t))throw new Yp}
function wje (line 92) | function wje(t,e){let r=[];if(!e(t,{errors:r}))throw new Yp({errors:r})}
function Ije (line 92) | function Ije(t,e){}
function Bje (line 92) | function Bje(t,e,{coerce:r=!1,errors:o,throw:a}={}){let n=o?[]:void 0;if...
function vje (line 92) | function vje(t,e){let r=sP(t);return(...o)=>{if(!r(o))throw new Yp;retur...
function Dje (line 92) | function Dje(t){return Hr({test:(e,r)=>e.length>=t?!0:pr(r,`Expected to ...
function Pje (line 92) | function Pje(t){return Hr({test:(e,r)=>e.length<=t?!0:pr(r,`Expected to ...
function EV (line 92) | function EV(t){return Hr({test:(e,r)=>e.length!==t?pr(r,`Expected to hav...
function Sje (line 92) | function Sje({map:t}={}){return Hr({test:(e,r)=>{let o=new Set,a=new Set...
function bje (line 92) | function bje(){return Hr({test:(t,e)=>t<=0?!0:pr(e,`Expected to be negat...
function xje (line 92) | function xje(){return Hr({test:(t,e)=>t>=0?!0:pr(e,`Expected to be posit...
function OT (line 92) | function OT(t){return Hr({test:(e,r)=>e>=t?!0:pr(r,`Expected to be at le...
function kje (line 92) | function kje(t){return Hr({test:(e,r)=>e<=t?!0:pr(r,`Expected to be at m...
function Qje (line 92) | function Qje(t,e){return Hr({test:(r,o)=>r>=t&&r<=e?!0:pr(o,`Expected to...
function Fje (line 92) | function Fje(t,e){return Hr({test:(r,o)=>r>=t&&r<e?!0:pr(o,`Expected to ...
function MT (line 92) | function MT({unsafe:t=!1}={}){return Hr({test:(e,r)=>e!==Math.round(e)?p...
function iI (line 92) | function iI(t){return Hr({test:(e,r)=>t.test(e)?!0:pr(r,`Expected to mat...
function Rje (line 92) | function Rje(){return Hr({test:(t,e)=>t!==t.toLowerCase()?pr(e,`Expected...
function Tje (line 92) | function Tje(){return Hr({test:(t,e)=>t!==t.toUpperCase()?pr(e,`Expected...
function Nje (line 92) | function Nje(){return Hr({test:(t,e)=>cje.test(t)?!0:pr(e,`Expected to b...
function Lje (line 92) | function Lje(){return Hr({test:(t,e)=>gV.test(t)?!0:pr(e,`Expected to be...
function Oje (line 92) | function Oje({alpha:t=!1}){return Hr({test:(e,r)=>(t?oje.test(e):aje.tes...
function Mje (line 92) | function Mje(){return Hr({test:(t,e)=>lje.test(t)?!0:pr(e,`Expected to b...
function Uje (line 92) | function Uje(t=TT()){return Hr({test:(e,r)=>{let o;try{o=JSON.parse(e)}c...
function aP (line 92) | function aP(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Hr({test:(o,...
function sI (line 92) | function sI(t,...e){let r=Array.isArray(e[0])?e[0]:e;return aP(t,r)}
function _je (line 92) | function _je(t){return Hr({test:(e,r)=>typeof e>"u"?!0:t(e,r)})}
function Hje (line 92) | function Hje(t){return Hr({test:(e,r)=>e===null?!0:t(e,r)})}
function jje (line 92) | function jje(t,e){var r;let o=new Set(t),a=oI[(r=e?.missingIf)!==null&&r...
function UT (line 92) | function UT(t,e){var r;let o=new Set(t),a=oI[(r=e?.missingIf)!==null&&r!...
function qje (line 92) | function qje(t,e){var r;let o=new Set(t),a=oI[(r=e?.missingIf)!==null&&r...
function Gje (line 92) | function Gje(t,e){var r;let o=new Set(t),a=oI[(r=e?.missingIf)!==null&&r...
function aI (line 92) | function aI(t,e,r,o){var a,n;let u=new Set((a=o?.ignore)!==null&&a!==voi...
method constructor (line 92) | constructor({errors:e}={}){let r="Type mismatch";if(e&&e.length>0){r+=`
method constructor (line 94) | constructor(){this.help=!1}
method Usage (line 94) | static Usage(e){return e}
method catch (line 94) | async catch(e){throw e}
method validateAndExecute (line 94) | async validateAndExecute(){let r=this.constructor.schema;if(Array.isArra...
function va (line 94) | function va(t){xT&&console.log(t)}
function wV (line 94) | function wV(){let t={nodes:[]};for(let e=0;e<cn.CustomNode;++e)t.nodes.p...
function Wje (line 94) | function Wje(t){let e=wV(),r=[],o=e.nodes.length;for(let a of t){r.push(...
function Oc (line 94) | function Oc(t,e){return t.nodes.push(e),t.nodes.length-1}
function Kje (line 94) | function Kje(t){let e=new Set,r=o=>{if(e.has(o))return;e.add(o);let a=t....
function Vje (line 94) | function Vje(t,{prefix:e=""}={}){if(xT){va(`${e}Nodes are:`);for(let r=0...
function zje (line 94) | function zje(t,e,r=!1){va(`Running a vm on ${JSON.stringify(e)}`);let o=...
function Jje (line 94) | function Jje(t,e,{endToken:r=Hn.EndOfInput}={}){let o=zje(t,[...e,r]);re...
function Xje (line 94) | function Xje(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path....
function Zje (line 94) | function Zje(t,e){let r=e.filter(v=>v.selectedIndex!==null),o=r.filter(v...
function $je (line 94) | function $je(t){let e=[],r=[];for(let o of t)o.selectedIndex===ed?r.push...
function IV (line 94) | function IV(t,e,...r){return e===void 0?Array.from(t):IV(t.filter((o,a)=...
function $a (line 94) | function $a(){return{dynamics:[],shortcuts:[],statics:{}}}
function BV (line 94) | function BV(t){return t===cn.SuccessNode||t===cn.ErrorNode}
function _T (line 94) | function _T(t,e=0){return{to:BV(t.to)?t.to:t.to>=cn.CustomNode?t.to+e-cn...
function eqe (line 94) | function eqe(t,e=0){let r=$a();for(let[o,a]of t.dynamics)r.dynamics.push...
function Ss (line 94) | function Ss(t,e,r,o,a){t.nodes[e].dynamics.push([r,{to:o,reducer:a}])}
function Ey (line 94) | function Ey(t,e,r,o){t.nodes[e].shortcuts.push({to:r,reducer:o})}
function zo (line 94) | function zo(t,e,r,o,a){(Object.prototype.hasOwnProperty.call(t.nodes[e]....
function lP (line 94) | function lP(t,e,r,o,a){if(Array.isArray(e)){let[n,...u]=e;return t[n](r,...
method constructor (line 94) | constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trai...
method addPath (line 94) | addPath(e){this.paths.push(e)}
method setArity (line 94) | setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,ex...
method addPositional (line 94) | addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra==...
method addRest (line 94) | addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===el)throw n...
method addProxy (line 94) | addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}
method addOption (line 94) | addOption({names:e,description:r,arity:o=0,hidden:a=!1,required:n=!1,all...
method setContext (line 94) | setContext(e){this.context=e}
method usage (line 94) | usage({detailed:e=!0,inlineOptions:r=!0}={}){let o=[this.cliOpts.binaryN...
method compile (line 94) | compile(){if(typeof this.context>"u")throw new Error("Assertion failed: ...
method registerOptions (line 94) | registerOptions(e,r){Ss(e,r,["isOption","--"],r,"inhibateOptions"),Ss(e,...
method constructor (line 94) | constructor({binaryName:e="..."}={}){this.builders=[],this.opts={binaryN...
method build (line 94) | static build(e,r={}){return new Cy(r).commands(e).compile()}
method getBuilderByIndex (line 94) | getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Error(...
method commands (line 94) | commands(e){for(let r of e)r(this.command());return this}
method command (line 94) | command(){let e=new jT(this.builders.length,this.opts);return this.build...
method compile (line 94) | compile(){let e=[],r=[];for(let a of this.builders){let{machine:n,contex...
function DV (line 94) | function DV(){return uP.default&&"getColorDepth"in uP.default.WriteStrea...
function PV (line 94) | function PV(t){let e=vV;if(typeof e>"u"){if(t.stdout===process.stdout&&t...
method constructor (line 94) | constructor(e){super(),this.contexts=e,this.commands=[]}
method from (line 94) | static from(e,r){let o=new wy(r);o.path=e.path;for(let a of e.options)sw...
method execute (line 94) | async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index...
function QV (line 98) | async function QV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,r...
function FV (line 98) | async function FV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,r...
function RV (line 98) | function RV(t){let e,r,o,a;switch(typeof process<"u"&&typeof process.arg...
function kV (line 98) | function kV(t){return t()}
method constructor (line 98) | constructor({binaryLabel:e,binaryName:r="...",binaryVersion:o,enableCapt...
method from (line 98) | static from(e,r={}){let o=new as(r),a=Array.isArray(e)?e:[e];for(let n o...
method register (line 98) | register(e){var r;let o=new Map,a=new e;for(let p in a){let h=a[p];typeo...
method process (line 98) | process(e,r){let{input:o,context:a,partial:n}=typeof e=="object"&&Array....
method run (line 98) | async run(e,r){var o,a;let n,u={...as.defaultContext,...r},A=(o=this.ena...
method runExit (line 98) | async runExit(e,r){process.exitCode=await this.run(e,r)}
method definition (line 98) | definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:o}=thi...
method definitions (line 98) | definitions({colored:e=!1}={}){let r=[];for(let o of this.registrations....
method usage (line 98) | usage(e=null,{colored:r,detailed:o=!1,prefix:a="$ "}={}){var n;if(e===nu...
method error (line 124) | error(e,r){var o,{colored:a,command:n=(o=e[xV])!==null&&o!==void 0?o:nul...
method format (line 127) | format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:as....
method getUsageByRegistration (line 127) | getUsageByRegistration(e,r){let o=this.registrations.get(e);if(typeof o>...
method getUsageByIndex (line 127) | getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}
method execute (line 127) | async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.def...
method execute (line 128) | async execute(){this.context.stdout.write(this.cli.usage())}
function AP (line 128) | function AP(t={}){return Ko({definition(e,r){var o;e.addProxy({name:(o=t...
method constructor (line 128) | constructor(){super(...arguments),this.args=AP()}
method execute (line 128) | async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.pro...
method execute (line 129) | async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVer...
function _V (line 130) | function _V(t,e,r){let[o,a]=qu(e,r??{}),{arity:n=1}=a,u=t.split(","),A=n...
function jV (line 130) | function jV(t,e,r){let[o,a]=qu(e,r??{}),n=t.split(","),u=new Set(n);retu...
function GV (line 130) | function GV(t,e,r){let[o,a]=qu(e,r??{}),n=t.split(","),u=new Set(n);retu...
function WV (line 130) | function WV(t={}){return Ko({definition(e,r){var o;e.addRest({name:(o=t....
function rqe (line 130) | function rqe(t,e,r){let[o,a]=qu(e,r??{}),{arity:n=1}=a,u=t.split(","),A=...
function nqe (line 130) | function nqe(t={}){let{required:e=!0}=t;return Ko({definition(r,o){var a...
function VV (line 130) | function VV(t,...e){return typeof t=="string"?rqe(t,...e):nqe(t)}
function cqe (line 130) | function cqe(t){let e={},r=t.toString();r=r.replace(/\r\n?/mg,`
function uqe (line 132) | function uqe(t){let e=ez(t),r=bs.configDotenv({path:e});if(!r.parsed)thr...
function Aqe (line 132) | function Aqe(t){console.log(`[dotenv@${KT}][INFO] ${t}`)}
function fqe (line 132) | function fqe(t){console.log(`[dotenv@${KT}][WARN] ${t}`)}
function YT (line 132) | function YT(t){console.log(`[dotenv@${KT}][DEBUG] ${t}`)}
function $V (line 132) | function $V(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KE...
function pqe (line 132) | function pqe(t,e){let r;try{r=new URL(e)}catch(A){throw A.code==="ERR_IN...
function ez (line 132) | function ez(t){let e=WT.resolve(process.cwd(),".env");return t&&t.path&&...
function hqe (line 132) | function hqe(t){return t[0]==="~"?WT.join(sqe.homedir(),t.slice(1)):t}
function gqe (line 132) | function gqe(t){Aqe("Loading env from encrypted .env.vault");let e=bs._p...
function dqe (line 132) | function dqe(t){let e=WT.resolve(process.cwd(),".env"),r="utf8",o=Boolea...
function mqe (line 132) | function mqe(t){let e=ez(t);return $V(t).length===0?bs.configDotenv(t):Z...
function yqe (line 132) | function yqe(t,e){let r=Buffer.from(e.slice(-64),"hex"),o=Buffer.from(t,...
function Eqe (line 132) | function Eqe(t,e,r={}){let o=Boolean(r&&r.debug),a=Boolean(r&&r.override...
function Wu (line 132) | function Wu(t){return`YN${t.toString(10).padStart(4,"0")}`}
function fP (line 132) | function fP(t){let e=Number(t.slice(2));if(typeof wr[e]>"u")throw new Er...
method constructor (line 132) | constructor(e,r){if(r=Uqe(r),e instanceof tl){if(e.loose===!!r.loose&&e....
method format (line 132) | format(){return this.version=`${this.major}.${this.minor}.${this.patch}`...
method toString (line 132) | toString(){return this.version}
method compare (line 132) | compare(e){if(gP("SemVer.compare",this.version,this.options,e),!(e insta...
method compareMain (line 132) | compareMain(e){return e instanceof tl||(e=new tl(e,this.options)),By(thi...
method comparePre (line 132) | comparePre(e){if(e instanceof tl||(e=new tl(e,this.options)),this.prerel...
method compareBuild (line 132) | compareBuild(e){e instanceof tl||(e=new tl(e,this.options));let r=0;do{l...
method inc (line 132) | inc(e,r,o){switch(e){case"premajor":this.prerelease.length=0,this.patch=...
function Cn (line 132) | function Cn(t){var e=this;if(e instanceof Cn||(e=new Cn),e.tail=null,e.h...
function RGe (line 132) | function RGe(t,e,r){var o=e===t.head?new id(r,null,e,t):new id(r,e,e.nex...
function TGe (line 132) | function TGe(t,e){t.tail=new id(e,t.tail,null,t),t.head||(t.head=t.tail)...
function NGe (line 132) | function NGe(t,e){t.head=new id(e,null,t.head,t),t.tail||(t.tail=t.head)...
function id (line 132) | function id(t,e,r,o){if(!(this instanceof id))return new id(t,e,r,o);thi...
method constructor (line 132) | constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(type...
method max (line 132) | set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a...
method max (line 132) | get max(){return this[sd]}
method allowStale (line 132) | set allowStale(e){this[mI]=!!e}
method allowStale (line 132) | get allowStale(){return this[mI]}
method maxAge (line 132) | set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be ...
method maxAge (line 132) | get maxAge(){return this[od]}
method lengthCalculator (line 132) | set lengthCalculator(e){typeof e!="function"&&(e=tN),e!==this[vy]&&(this...
method lengthCalculator (line 132) | get lengthCalculator(){return this[vy]}
method length (line 132) | get length(){return this[If]}
method itemCount (line 132) | get itemCount(){return this[xs].length}
method rforEach (line 132) | rforEach(e,r){r=r||this;for(let o=this[xs].tail;o!==null;){let a=o.prev;...
method forEach (line 132) | forEach(e,r){r=r||this;for(let o=this[xs].head;o!==null;){let a=o.next;a...
method keys (line 132) | keys(){return this[xs].toArray().map(e=>e.key)}
method values (line 132) | values(){return this[xs].toArray().map(e=>e.value)}
method reset (line 132) | reset(){this[wf]&&this[xs]&&this[xs].length&&this[xs].forEach(e=>this[wf...
method dump (line 132) | dump(){return this[xs].map(e=>vP(this,e)?!1:{k:e.key,v:e.value,e:e.now+(...
method dumpLru (line 132) | dumpLru(){return this[xs]}
method set (line 132) | set(e,r,o){if(o=o||this[od],o&&typeof o!="number")throw new TypeError("m...
method has (line 132) | has(e){if(!this[Mc].has(e))return!1;let r=this[Mc].get(e).value;return!v...
method get (line 132) | get(e){return rN(this,e,!0)}
method peek (line 132) | peek(e){return rN(this,e,!1)}
method pop (line 132) | pop(){let e=this[xs].tail;return e?(Dy(this,e),e.value):null}
method del (line 132) | del(e){Dy(this,this[Mc].get(e))}
method load (line 132) | load(e){this.reset();let r=Date.now();for(let o=e.length-1;o>=0;o--){let...
method prune (line 132) | prune(){this[Mc].forEach((e,r)=>rN(this,r,!1))}
method constructor (line 132) | constructor(e,r,o,a,n){this.key=e,this.value=r,this.length=o,this.now=a,...
method constructor (line 132) | constructor(e,r){if(r=MGe(r),e instanceof ad)return e.loose===!!r.loose&...
method format (line 132) | format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||"...
method toString (line 132) | toString(){return this.range}
method parseRange (line 132) | parseRange(e){let o=((this.options.includePrerelease&&qGe)|(this.options...
method intersects (line 132) | intersects(e,r){if(!(e instanceof ad))throw new TypeError("a Range is re...
method test (line 132) | test(e){if(!e)return!1;if(typeof e=="string")try{e=new UGe(e,this.option...
method ANY (line 132) | static get ANY(){return EI}
method constructor (line 132) | constructor(e,r){if(r=gJ(r),e instanceof Py){if(e.loose===!!r.loose)retu...
method parse (line 132) | parse(e){let r=this.options.loose?dJ[mJ.COMPARATORLOOSE]:dJ[mJ.COMPARATO...
method toString (line 132) | toString(){return this.value}
method test (line 132) | test(e){if(aN("Comparator.test",e,this.options.loose),this.semver===EI||...
method intersects (line 132) | intersects(e,r){if(!(e instanceof Py))throw new TypeError("a Comparator ...
function y9e (line 132) | function y9e(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
function ld (line 132) | function ld(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.lo...
function o (line 132) | function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}
function a (line 132) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
function n (line 132) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
function u (line 132) | function u(h){return r[h.type](h)}
function A (line 132) | function A(h){var C=new Array(h.length),I,v;for(I=0;I<h.length;I++)C[I]=...
function p (line 132) | function p(h){return h?'"'+a(h)+'"':"end of input"}
function E9e (line 132) | function E9e(t,e){e=e!==void 0?e:{};var r={},o={Expression:y},a=y,n="|",...
function w9e (line 134) | function w9e(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}
function I9e (line 134) | function I9e(){let t={},e=Object.keys(SP);for(let r=e.length,o=0;o<r;o++...
function B9e (line 134) | function B9e(t){let e=I9e(),r=[t];for(e[t].distance=0;r.length;){let o=r...
function v9e (line 134) | function v9e(t,e){return function(r){return e(t(r))}}
function D9e (line 134) | function D9e(t,e){let r=[e[t].parent,t],o=SP[e[t].parent][t],a=e[t].pare...
function b9e (line 134) | function b9e(t){let e=function(...r){let o=r[0];return o==null?o:(o.leng...
function x9e (line 134) | function x9e(t){let e=function(...r){let o=r[0];if(o==null)return o;o.le...
function k9e (line 134) | function k9e(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2...
function dN (line 134) | function dN(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t...
function mN (line 134) | function mN(t,e){if(Kp===0)return 0;if(Ml("color=16m")||Ml("color=full")...
function F9e (line 134) | function F9e(t){let e=mN(t,t&&t.isTTY);return dN(e)}
function DX (line 138) | function DX(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5|...
function U9e (line 138) | function U9e(t,e){let r=[],o=e.trim().split(/\s*,\s*/g),a;for(let n of o...
function _9e (line 138) | function _9e(t){BX.lastIndex=0;let e=[],r;for(;(r=BX.exec(t))!==null;){l...
function vX (line 138) | function vX(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a...
method constructor (line 138) | constructor(e){return xX(e)}
function xP (line 138) | function xP(t){return xX(t)}
method get (line 138) | get(){let r=kP(this,BN(e.open,e.close,this._styler),this._isEmpty);retur...
method get (line 138) | get(){let t=kP(this,this._styler,!0);return Object.defineProperty(this,"...
method get (line 138) | get(){let{level:e}=this;return function(...r){let o=BN(vI.color[bX[e]][t...
method get (line 138) | get(){let{level:r}=this;return function(...o){let a=BN(vI.bgColor[bX[r]]...
method get (line 138) | get(){return this._generator.level}
method set (line 138) | set(t){this._generator.level=t}
function K9e (line 139) | function K9e(t,e,r){let o=DN(t,e,"-",!1,r)||[],a=DN(e,t,"",!1,r)||[],n=D...
function V9e (line 139) | function V9e(t,e){let r=1,o=1,a=UX(t,r),n=new Set([e]);for(;t<=a&&a<=e;)...
function z9e (line 139) | function z9e(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let o=J...
function OX (line 139) | function OX(t,e,r,o){let a=V9e(t,e),n=[],u=t,A;for(let p=0;p<a.length;p+...
function DN (line 139) | function DN(t,e,r,o,a){let n=[];for(let u of t){let{string:A}=u;!o&&!MX(...
function J9e (line 139) | function J9e(t,e){let r=[];for(let o=0;o<t.length;o++)r.push([t[o],e[o]]...
function X9e (line 139) | function X9e(t,e){return t>e?1:e>t?-1:0}
function MX (line 139) | function MX(t,e,r){return t.some(o=>o[e]===r)}
function UX (line 139) | function UX(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}
function _X (line 139) | function _X(t,e){return t-t%Math.pow(10,e)}
function HX (line 139) | function HX(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}
function Z9e (line 139) | function Z9e(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}
function jX (line 139) | function jX(t){return/^-?(0+)\d/.test(t)}
function $9e (line 139) | function $9e(t,e,r){if(!e.isPadded)return t;let o=Math.abs(e.maxLen-Stri...
method extglobChars (line 140) | extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t....
method globChars (line 140) | globChars(t){return t===!0?M7e:yZ}
function lYe (line 140) | function lYe(){this.__data__=[],this.size=0}
function cYe (line 140) | function cYe(t,e){return t===e||t!==t&&e!==e}
function AYe (line 140) | function AYe(t,e){for(var r=t.length;r--;)if(uYe(t[r][0],e))return r;ret...
function gYe (line 140) | function gYe(t){var e=this.__data__,r=fYe(e,t);if(r<0)return!1;var o=e.l...
function mYe (line 140) | function mYe(t){var e=this.__data__,r=dYe(e,t);return r<0?void 0:e[r][1]}
function EYe (line 140) | function EYe(t){return yYe(this.__data__,t)>-1}
function wYe (line 140) | function wYe(t,e){var r=this.__data__,o=CYe(r,t);return o<0?(++this.size...
function Ty (line 140) | function Ty(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){va...
function bYe (line 140) | function bYe(){this.__data__=new SYe,this.size=0}
function xYe (line 140) | function xYe(t){var e=this.__data__,r=e.delete(t);return this.size=e.siz...
function kYe (line 140) | function kYe(t){return this.__data__.get(t)}
function QYe (line 140) | function QYe(t){return this.__data__.has(t)}
function _Ye (line 140) | function _Ye(t){var e=MYe.call(t,FI),r=t[FI];try{t[FI]=void 0;var o=!0}c...
function qYe (line 140) | function qYe(t){return jYe.call(t)}
function VYe (line 140) | function VYe(t){return t==null?t===void 0?KYe:WYe:E$&&E$ in Object(t)?GY...
function zYe (line 140) | function zYe(t){var e=typeof t;return t!=null&&(e=="object"||e=="functio...
function rWe (line 140) | function rWe(t){if(!XYe(t))return!1;var e=JYe(t);return e==$Ye||e==eWe||...
function sWe (line 140) | function sWe(t){return!!D$&&D$ in t}
function lWe (line 140) | function lWe(t){if(t!=null){try{return aWe.call(t)}catch{}try{return t+"...
function CWe (line 140) | function CWe(t){if(!AWe(t)||uWe(t))return!1;var e=cWe(t)?EWe:hWe;return ...
function wWe (line 140) | function wWe(t,e){return t?.[e]}
function vWe (line 140) | function vWe(t,e){var r=BWe(t,e);return IWe(r)?r:void 0}
function kWe (line 140) | function kWe(){this.__data__=L$?L$(null):{},this.size=0}
function QWe (line 140) | function QWe(t){var e=this.has(t)&&delete this.__data__[t];return this.s...
function LWe (line 140) | function LWe(t){var e=this.__data__;if(FWe){var r=e[t];return r===RWe?vo...
function _We (line 140) | function _We(t){var e=this.__data__;return OWe?e[t]!==void 0:UWe.call(e,t)}
function qWe (line 140) | function qWe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,...
function Ny (line 140) | function Ny(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){va...
function XWe (line 140) | function XWe(){this.size=0,this.__data__={hash:new z$,map:new(JWe||zWe),...
function ZWe (line 140) | function ZWe(t){var e=typeof t;return e=="string"||e=="number"||e=="symb...
function eKe (line 140) | function eKe(t,e){var r=t.__data__;return $We(e)?r[typeof e=="string"?"s...
function rKe (line 140) | function rKe(t){var e=tKe(this,t).delete(t);return this.size-=e?1:0,e}
function iKe (line 140) | function iKe(t){return nKe(this,t).get(t)}
function oKe (line 140) | function oKe(t){return sKe(this,t).has(t)}
function lKe (line 140) | function lKe(t,e){var r=aKe(this,t),o=r.size;return r.set(t,e),this.size...
function Ly (line 140) | function Ly(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){va...
function yKe (line 140) | function yKe(t,e){var r=this.__data__;if(r instanceof hKe){var o=r.__dat...
function Oy (line 140) | function Oy(t){var e=this.__data__=new EKe(t);this.size=e.size}
function PKe (line 140) | function PKe(t){return this.__data__.set(t,DKe),this}
function SKe (line 140) | function SKe(t){return this.__data__.has(t)}
function jP (line 140) | function jP(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new bKe;+...
function QKe (line 140) | function QKe(t,e){for(var r=-1,o=t==null?0:t.length;++r<o;)if(e(t[r],r,t...
function FKe (line 140) | function FKe(t,e){return t.has(e)}
function MKe (line 140) | function MKe(t,e,r,o,a,n){var u=r&LKe,A=t.length,p=e.length;if(A!=p&&!(u...
function HKe (line 140) | function HKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o,a){...
function jKe (line 140) | function jKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[...
function oVe (line 140) | function oVe(t,e,r,o,a,n,u){switch(r){case sVe:if(t.byteLength!=e.byteLe...
function aVe (line 140) | function aVe(t,e){for(var r=-1,o=e.length,a=t.length;++r<o;)t[a+r]=e[r];...
function AVe (line 140) | function AVe(t,e,r){var o=e(t);return uVe(t)?o:cVe(o,r(t))}
function fVe (line 140) | function fVe(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r<o;){var...
function pVe (line 140) | function pVe(){return[]}
function EVe (line 140) | function EVe(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}
function CVe (line 140) | function CVe(t){return t!=null&&typeof t=="object"}
function vVe (line 140) | function vVe(t){return IVe(t)&&wVe(t)==BVe}
function xVe (line 140) | function xVe(){return!1}
function OVe (line 140) | function OVe(t,e){var r=typeof t;return e=e??NVe,!!e&&(r=="number"||r!="...
function UVe (line 140) | function UVe(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=MVe}
function pze (line 140) | function pze(t){return jVe(t)&&HVe(t.length)&&!!ui[_Ve(t)]}
function hze (line 140) | function hze(t){return function(e){return t(e)}}
function xze (line 140) | function xze(t,e){var r=Bze(t),o=!r&&Ize(t),a=!r&&!o&&vze(t),n=!r&&!o&&!...
function Qze (line 140) | function Qze(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototy...
function Fze (line 140) | function Fze(t,e){return function(r){return t(e(r))}}
function Uze (line 140) | function Uze(t){if(!Nze(t))return Lze(t);var e=[];for(var r in Object(t)...
function jze (line 140) | function jze(t){return t!=null&&Hze(t.length)&&!_ze(t)}
function Wze (line 140) | function Wze(t){return Yze(t)?qze(t):Gze(t)}
function Jze (line 140) | function Jze(t){return Kze(t,zze,Vze)}
function eJe (line 140) | function eJe(t,e,r,o,a,n){var u=r&Xze,A=Cte(t),p=A.length,h=Cte(e),C=h.l...
function DJe (line 140) | function DJe(t,e,r,o,a,n){var u=Ute(t),A=Ute(e),p=u?jte:Mte(t),h=A?jte:M...
function Kte (line 140) | function Kte(t,e,r,o,a){return t===e?!0:t==null||e==null||!Wte(t)&&!Wte(...
function bJe (line 140) | function bJe(t,e){return SJe(t,e)}
function QJe (line 140) | function QJe(t,e,r){e=="__proto__"&&$te?$te(t,e,{configurable:!0,enumera...
function TJe (line 140) | function TJe(t,e,r){(r!==void 0&&!RJe(t[e],r)||r===void 0&&!(e in t))&&F...
function NJe (line 140) | function NJe(t){return function(e,r,o){for(var a=-1,n=Object(e),u=o(e),A...
function _Je (line 140) | function _Je(t,e){if(e)return t.slice();var r=t.length,o=lre?lre(r):new ...
function HJe (line 140) | function HJe(t){var e=new t.constructor(t.byteLength);return new ure(e)....
function qJe (line 140) | function qJe(t,e){var r=e?jJe(t.buffer):t.buffer;return new t.constructo...
function GJe (line 140) | function GJe(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[...
function t (line 140) | function t(){}
function ZJe (line 140) | function ZJe(t){return typeof t.constructor=="function"&&!XJe(t)?zJe(JJe...
function tXe (line 140) | function tXe(t){return eXe(t)&&$Je(t)}
function uXe (line 140) | function uXe(t){if(!iXe(t)||rXe(t)!=sXe)return!1;var e=nXe(t);if(e===nul...
function AXe (line 140) | function AXe(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="...
function dXe (line 140) | function dXe(t,e,r){var o=t[e];(!(gXe.call(t,e)&&pXe(o,r))||r===void 0&&...
function EXe (line 140) | function EXe(t,e,r,o){var a=!r;r||(r={});for(var n=-1,u=e.length;++n<u;)...
function CXe (line 140) | function CXe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);ret...
function PXe (line 140) | function PXe(t){if(!wXe(t))return BXe(t);var e=IXe(t),r=[];for(var o in ...
function kXe (line 140) | function kXe(t){return xXe(t)?SXe(t,!0):bXe(t)}
function RXe (line 140) | function RXe(t){return QXe(t,FXe(t))}
function YXe (line 140) | function YXe(t,e,r,o,a,n,u){var A=Lre(t,r),p=Lre(e,r),h=u.get(p);if(h){R...
function Ure (line 140) | function Ure(t,e,r,o,a){t!==e&&VXe(e,function(n,u){if(a||(a=new WXe),JXe...
function $Xe (line 140) | function $Xe(t){return t}
function eZe (line 140) | function eZe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:retu...
function rZe (line 140) | function rZe(t,e,r){return e=Yre(e===void 0?t.length-1:e,0),function(){f...
function nZe (line 140) | function nZe(t){return function(){return t}}
function uZe (line 140) | function uZe(t){var e=0,r=0;return function(){var o=cZe(),a=lZe-(o-r);if...
function mZe (line 140) | function mZe(t,e){return dZe(gZe(t,e,hZe),t+"")}
function IZe (line 140) | function IZe(t,e,r){if(!wZe(r))return!1;var o=typeof e;return(o=="number...
function DZe (line 140) | function DZe(t){return BZe(function(e,r){var o=-1,a=r.length,n=a>1?r[a-1...
function xZe (line 140) | function xZe(t){return!!(hne.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9...
function nS (line 140) | function nS(t,{one:e,more:r,zero:o=r}){return t===0?o:t===1?e:r}
function kZe (line 140) | function kZe(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}
function QZe (line 140) | function QZe(t){}
function CL (line 140) | function CL(t){throw new Error(`Assertion failed: Unexpected object '${t...
function FZe (line 140) | function FZe(t,e){let r=Object.values(t);if(!r.includes(e))throw new it(...
function sl (line 140) | function sl(t,e){let r=[];for(let o of t){let a=e(o);a!==gne&&r.push(a)}...
function YI (line 140) | function YI(t,e){for(let r of t){let o=e(r);if(o!==dne)return o}}
function gL (line 140) | function gL(t){return typeof t=="object"&&t!==null}
function Uc (line 140) | async function Uc(t){let e=await Promise.allSettled(t),r=[];for(let o of...
function iS (line 140) | function iS(t){if(t instanceof Map&&(t=Object.fromEntries(t)),gL(t))for(...
function ol (line 140) | function ol(t,e,r){let o=t.get(e);return typeof o>"u"&&t.set(e,o=r()),o}
function qy (line 140) | function qy(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=[]),r}
function gd (line 140) | function gd(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Set),r}
function Gy (line 140) | function Gy(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Map),r}
function RZe (line 140) | async function RZe(t,e){if(e==null)return await t();try{return await t()...
function Yy (line 140) | async function Yy(t,e){try{return await t()}catch(r){throw r.message=e(r...
function wL (line 140) | function wL(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}
function Wy (line 140) | async function Wy(t){return await new Promise((e,r)=>{let o=[];t.on("err...
function mne (line 140) | function mne(){let t,e;return{promise:new Promise((o,a)=>{t=o,e=a}),reso...
function yne (line 140) | function yne(t){return GI(ue.fromPortablePath(t))}
function Ene (line 140) | function Ene(path){let physicalPath=ue.fromPortablePath(path),currentCac...
function TZe (line 140) | function TZe(t){let e=cne.get(t),r=oe.statSync(t);if(e?.mtime===r.mtimeM...
function zp (line 140) | function zp(t,{cachingStrategy:e=2}={}){switch(e){case 0:return Ene(t);c...
function ks (line 140) | function ks(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];...
function NZe (line 140) | function NZe(t){return t.length===0?null:t.map(e=>`(${fne.default.makeRe...
function sS (line 140) | function sS(t,{env:e}){let r=/\${(?<variableName>[\d\w_]+)(?<colon>:)?(?...
function WI (line 140) | function WI(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"...
function wne (line 140) | function wne(t){return typeof t>"u"?t:WI(t)}
function IL (line 140) | function IL(t){try{return wne(t)}catch{return null}}
function LZe (line 140) | function LZe(t){return!!(ue.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}
function Ine (line 140) | function Ine(t,...e){let r=u=>({value:u}),o=r(t),a=e.map(u=>r(u)),{value...
function OZe (line 140) | function OZe(...t){return Ine({},...t)}
function BL (line 140) | function BL(t,e){let r=Object.create(null);for(let o of t){let a=o[e];r[...
function Ky (line 140) | function Ky(t){return typeof t=="string"?Number.parseInt(t,10):t}
method constructor (line 140) | constructor(){super(...arguments);this.chunks=[]}
method _transform (line 140) | _transform(r,o,a){if(o!=="buffer"||!Buffer.isBuffer(r))throw new Error("...
method _flush (line 140) | _flush(r){r(null,Buffer.concat(this.chunks))}
method constructor (line 140) | constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0...
method set (line 140) | set(e,r){let o=this.deferred.get(e);typeof o>"u"&&this.deferred.set(e,o=...
method reduce (line 140) | reduce(e,r){let o=this.promises.get(e)??Promise.resolve();this.set(e,()=...
method wait (line 140) | async wait(){await Promise.all(this.promises.values())}
method constructor (line 140) | constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}
method _transform (line 140) | _transform(r,o,a){if(o!=="buffer"||!Buffer.isBuffer(r))throw new Error("...
method _flush (line 140) | _flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}
function vne (line 140) | function vne(t){let e=["KiB","MiB","GiB","TiB"],r=e.length;for(;r>1&&t<1...
function _c (line 140) | function _c(t,e){return[e,t]}
function dd (line 140) | function dd(t,e,r){return t.get("enableColors")&&r&2&&(e=VI.default.bold...
function Vs (line 140) | function Vs(t,e,r){if(!t.get("enableColors"))return e;let o=MZe.get(r);i...
function Jy (line 140) | function Jy(t,e,r){return t.get("enableHyperlinks")?UZe?`\x1B]8;;${r}\x1...
function Mt (line 140) | function Mt(t,e,r){if(e===null)return Vs(t,"null",yt.NULL);if(Object.has...
function xL (line 140) | function xL(t,e,r,{separator:o=", "}={}){return[...e].map(a=>Mt(t,a,r))....
function md (line 140) | function md(t,e){if(t===null)return null;if(Object.hasOwn(oS,e))return o...
function _Ze (line 140) | function _Ze(t,e,[r,o]){return t?md(r,o):Mt(e,r,o)}
function kL (line 140) | function kL(t){return{Check:Vs(t,"\u2713","green"),Cross:Vs(t,"\u2718","...
function Ju (line 140) | function Ju(t,{label:e,value:[r,o]}){return`${Mt(t,e,yt.CODE)}: ${Mt(t,r...
function cS (line 140) | function cS(t,e,r){let o=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],C=...
function zI (line 140) | function zI(t,{configuration:e}){let r=e.get("logFilters"),o=new Map,a=n...
function HZe (line 140) | function HZe(t){return t.reduce((e,r)=>[].concat(e,r),[])}
function jZe (line 140) | function jZe(t,e){let r=[[]],o=0;for(let a of t)e(a)?(o++,r[o]=[]):r[o]....
function qZe (line 140) | function qZe(t){return t.code==="ENOENT"}
method constructor (line 140) | constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),...
function GZe (line 140) | function GZe(t,e){return new RL(t,e)}
function VZe (line 140) | function VZe(t){return t.replace(/\\/g,"/")}
function zZe (line 140) | function zZe(t,e){return YZe.resolve(t,e)}
function JZe (line 140) | function JZe(t){return t.replace(KZe,"\\$2")}
function XZe (line 140) | function XZe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e===...
function Une (line 140) | function Une(t,e={}){return!_ne(t,e)}
function _ne (line 140) | function _ne(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.in...
function d$e (line 140) | function d$e(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf(...
function m$e (line 140) | function m$e(t){return pS(t)?t.slice(1):t}
function y$e (line 140) | function y$e(t){return"!"+t}
function pS (line 140) | function pS(t){return t.startsWith("!")&&t[1]!=="("}
function Hne (line 140) | function Hne(t){return!pS(t)}
function E$e (line 140) | function E$e(t){return t.filter(pS)}
function C$e (line 140) | function C$e(t){return t.filter(Hne)}
function w$e (line 140) | function w$e(t){return t.filter(e=>!LL(e))}
function I$e (line 140) | function I$e(t){return t.filter(LL)}
function LL (line 140) | function LL(t){return t.startsWith("..")||t.startsWith("./..")}
function B$e (line 140) | function B$e(t){return c$e(t,{flipBackslashes:!1})}
function v$e (line 140) | function v$e(t){return t.includes(Mne)}
function jne (line 140) | function jne(t){return t.endsWith("/"+Mne)}
function D$e (line 140) | function D$e(t){let e=l$e.basename(t);return jne(t)||Une(e)}
function P$e (line 140) | function P$e(t){return t.reduce((e,r)=>e.concat(qne(r)),[])}
function qne (line 140) | function qne(t){return NL.braces(t,{expand:!0,nodupes:!0})}
function S$e (line 140) | function S$e(t,e){let{parts:r}=NL.scan(t,Object.assign(Object.assign({},...
function Gne (line 140) | function Gne(t,e){return NL.makeRe(t,e)}
function b$e (line 140) | function b$e(t,e){return t.map(r=>Gne(r,e))}
function x$e (line 140) | function x$e(t,e){return e.some(r=>r.test(t))}
function F$e (line 140) | function F$e(){let t=[],e=Q$e.call(arguments),r=!1,o=e[e.length-1];o&&!A...
function Kne (line 140) | function Kne(t,e){if(Array.isArray(t))for(let r=0,o=t.length;r<o;r++)t[r...
function T$e (line 140) | function T$e(t){let e=R$e(t);return t.forEach(r=>{r.once("error",o=>e.em...
function Jne (line 140) | function Jne(t){t.forEach(e=>e.emit("close"))}
function N$e (line 140) | function N$e(t){return typeof t=="string"}
function L$e (line 140) | function L$e(t){return t===""}
function G$e (line 140) | function G$e(t,e){let r=$ne(t),o=eie(t,e.ignore),a=r.filter(p=>Df.patter...
function OL (line 140) | function OL(t,e,r){let o=[],a=Df.pattern.getPatternsOutsideCurrentDirect...
function $ne (line 140) | function $ne(t){return Df.pattern.getPositivePatterns(t)}
function eie (line 140) | function eie(t,e){return Df.pattern.getNegativePatterns(t).concat(e).map...
function ML (line 140) | function ML(t){let e={};return t.reduce((r,o)=>{let a=Df.pattern.getBase...
function UL (line 140) | function UL(t,e,r){return Object.keys(t).map(o=>_L(o,t[o],e,r))}
function _L (line 140) | function _L(t,e,r,o){return{dynamic:o,positive:e,negative:r,base:t,patte...
function W$e (line 140) | function W$e(t){return t.map(e=>rie(e))}
function rie (line 140) | function rie(t){return t.replace(Y$e,"/")}
function K$e (line 140) | function K$e(t,e,r){e.fs.lstat(t,(o,a)=>{if(o!==null){iie(r,o);return}if...
function iie (line 140) | function iie(t,e){t(e)}
function HL (line 140) | function HL(t,e){t(null,e)}
function V$e (line 140) | function V$e(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.fol...
function z$e (line 140) | function z$e(t){return t===void 0?Jp.FILE_SYSTEM_ADAPTER:Object.assign(O...
method constructor (line 140) | constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue...
method _getValue (line 140) | _getValue(e,r){return e??r}
function Z$e (line 140) | function Z$e(t,e,r){if(typeof e=="function"){cie.read(t,WL(),e);return}c...
function $$e (line 140) | function $$e(t,e){let r=WL(e);return X$e.read(t,r)}
function WL (line 140) | function WL(t={}){return t instanceof YL.default?t:new YL.default(t)}
function eet (line 140) | function eet(t,e){var r,o,a,n=!0;Array.isArray(t)?(r=[],o=t.length):(a=O...
method constructor (line 140) | constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),...
function set (line 140) | function set(t,e){return new VL(t,e)}
function aet (line 140) | function aet(t,e,r){return t.endsWith(r)?t+e:t+r+e}
function Aet (line 140) | function Aet(t,e,r){if(!e.stats&&uet.IS_SUPPORT_READDIR_WITH_FILE_TYPES)...
function yie (line 140) | function yie(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(o,a)=>{if(o!==nul...
function fet (line 140) | function fet(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);re...
function Eie (line 140) | function Eie(t,e,r){e.fs.readdir(t,(o,a)=>{if(o!==null){BS(r,o);return}l...
function BS (line 140) | function BS(t,e){t(e)}
function XL (line 140) | function XL(t,e){t(null,e)}
function get (line 140) | function get(t,e){return!e.stats&&het.IS_SUPPORT_READDIR_WITH_FILE_TYPES...
function Bie (line 140) | function Bie(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(o=>{...
function vie (line 140) | function vie(t,e){return e.fs.readdirSync(t).map(o=>{let a=Iie.joinPathS...
function det (line 140) | function det(t){return t===void 0?eh.FILE_SYSTEM_ADAPTER:Object.assign(O...
method constructor (line 140) | constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValu...
method _getValue (line 140) | _getValue(e,r){return e??r}
function wet (line 140) | function wet(t,e,r){if(typeof e=="function"){bie.read(t,tO(),e);return}b...
function Iet (line 140) | function Iet(t,e){let r=tO(e);return Cet.read(t,r)}
function tO (line 140) | function tO(t={}){return t instanceof eO.default?t:new eO.default(t)}
function Bet (line 140) | function Bet(t){var e=new t,r=e;function o(){var n=e;return n.next?e=n.n...
function Qie (line 140) | function Qie(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw ...
function Gl (line 140) | function Gl(){}
function Det (line 140) | function Det(){this.value=null,this.callback=Gl,this.next=null,this.rele...
function Pet (line 140) | function Pet(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function o(C,...
function bet (line 140) | function bet(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}
function xet (line 140) | function xet(t,e){return t===null||t(e)}
function ket (line 140) | function ket(t,e){return t.split(/[/\\]/).join(e)}
function Qet (line 140) | function Qet(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}
method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._root=Fet.replacePat...
method constructor (line 140) | constructor(e,r){super(e,r),this._settings=r,this._scandir=Tet.scandir,t...
method read (line 140) | read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()...
method isDestroyed (line 140) | get isDestroyed(){return this._isDestroyed}
method destroy (line 140) | destroy(){if(this._isDestroyed)throw new Error("The reader is already de...
method onEntry (line 140) | onEntry(e){this._emitter.on("entry",e)}
method onError (line 140) | onError(e){this._emitter.once("error",e)}
method onEnd (line 140) | onEnd(e){this._emitter.once("end",e)}
method _pushToQueue (line 140) | _pushToQueue(e,r){let o={directory:e,base:r};this._queue.push(o,a=>{a!==...
method _worker (line 140) | _worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,...
method _handleError (line 140) | _handleError(e){this._isDestroyed||!PS.isFatalError(this._settings,e)||(...
method _handleEntry (line 140) | _handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let o=...
method _emitEntry (line 140) | _emitEntry(e){this._emitter.emit("entry",e)}
method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._reader=new Oet.defa...
method read (line 140) | read(e){this._reader.onError(r=>{Met(e,r)}),this._reader.onEntry(r=>{thi...
function Met (line 140) | function Met(t,e){t(e)}
function Uet (line 140) | function Uet(t,e){t(null,e)}
method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._reader=new Het.defa...
method read (line 140) | read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),th...
method constructor (line 140) | constructor(){super(...arguments),this._scandir=jet.scandirSync,this._st...
method read (line 140) | read(){return this._pushToQueue(this._root,this._settings.basePath),this...
method _pushToQueue (line 140) | _pushToQueue(e,r){this._queue.add({directory:e,base:r})}
method _handleQueue (line 140) | _handleQueue(){for(let e of this._queue.values())this._handleDirectory(e...
method _handleDirectory (line 140) | _handleDirectory(e,r){try{let o=this._scandir(e,this._settings.fsScandir...
method _handleError (line 140) | _handleError(e){if(!!SS.isFatalError(this._settings,e))throw e}
method _handleEntry (line 140) | _handleEntry(e,r){let o=e.path;r!==void 0&&(e.path=SS.joinPathSegments(r...
method _pushToStorage (line 140) | _pushToStorage(e){this._storage.push(e)}
method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._reader=new Get.defa...
method read (line 140) | read(){return this._reader.read()}
method constructor (line 140) | constructor(e={}){this._options=e,this.basePath=this._getValue(this._opt...
method _getValue (line 140) | _getValue(e,r){return e??r}
function zet (line 140) | function zet(t,e,r){if(typeof e=="function"){new Mie.default(t,bS()).rea...
function Jet (line 140) | function Jet(t,e){let r=bS(e);return new Vet.default(t,r).read()}
function Xet (line 140) | function Xet(t,e){let r=bS(e);return new Ket.default(t,r).read()}
function bS (line 140) | function bS(t={}){return t instanceof EO.default?t:new EO.default(t)}
method constructor (line 140) | constructor(e){this._settings=e,this._fsStatSettings=new $et.Settings({f...
method _getFullEntryPath (line 140) | _getFullEntryPath(e){return Zet.resolve(this._settings.cwd,e)}
method _makeEntry (line 140) | _makeEntry(e,r){let o={name:r,path:r,dirent:Uie.fs.createDirentFromStats...
method _isFatalError (line 140) | _isFatalError(e){return!Uie.errno.isEnoentCodeError(e)&&!this._settings....
method constructor (line 140) | constructor(){super(...arguments),this._walkStream=rtt.walkStream,this._...
method dynamic (line 140) | dynamic(e,r){return this._walkStream(e,r)}
method static (line 140) | static(e,r){let o=e.map(this._getFullEntryPath,this),a=new ett.PassThrou...
method _getEntry (line 140) | _getEntry(e,r,o){return this._getStat(e).then(a=>this._makeEntry(a,r)).c...
method _getStat (line 140) | _getStat(e){return new Promise((r,o)=>{this._stat(e,this._fsStatSettings...
method constructor (line 140) | constructor(){super(...arguments),this._walkAsync=itt.walk,this._readerS...
method dynamic (line 140) | dynamic(e,r){return new Promise((o,a)=>{this._walkAsync(e,r,(n,u)=>{n===...
method static (line 140) | async static(e,r){let o=[],a=this._readerStream.static(e,r);return new P...
method constructor (line 140) | constructor(e,r,o){this._patterns=e,this._settings=r,this._micromatchOpt...
method _fillStorage (line 140) | _fillStorage(){let e=tE.pattern.expandPatternsWithBraceExpansion(this._p...
method _getPatternSegments (line 140) | _getPatternSegments(e){return tE.pattern.getPatternParts(e,this._microma...
method _splitSegmentsIntoSections (line 140) | _splitSegmentsIntoSections(e){return tE.array.splitWhen(e,r=>r.dynamic&&...
method match (line 140) | match(e){let r=e.split("/"),o=r.length,a=this._storage.filter(n=>!n.comp...
method constructor (line 140) | constructor(e,r){this._settings=e,this._micromatchOptions=r}
method getFilter (line 140) | getFilter(e,r,o){let a=this._getMatcher(r),n=this._getNegativePatternsRe...
method _getMatcher (line 140) | _getMatcher(e){return new ltt.default(e,this._settings,this._micromatchO...
method _getNegativePatternsRe (line 140) | _getNegativePatternsRe(e){let r=e.filter(QS.pattern.isAffectDepthOfReadi...
method _filter (line 140) | _filter(e,r,o,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymb...
method _isSkippedByDeep (line 140) | _isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntry...
method _getEntryLevel (line 140) | _getEntryLevel(e,r){let o=r.split("/").length;if(e==="")return o;let a=e...
method _isSkippedSymbolicLink (line 140) | _isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.d...
method _isSkippedByPositivePatterns (line 140) | _isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!...
method _isSkippedByNegativePatterns (line 140) | _isSkippedByNegativePatterns(e,r){return!QS.pattern.matchAny(e,r)}
method constructor (line 140) | constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=n...
method getFilter (line 140) | getFilter(e,r){let o=Ed.pattern.convertPatternsToRe(e,this._micromatchOp...
method _filter (line 140) | _filter(e,r,o){if(this._settings.unique&&this._isDuplicateEntry(e)||this...
method _isDuplicateEntry (line 140) | _isDuplicateEntry(e){return this.index.has(e.path)}
method _createIndexRecord (line 140) | _createIndexRecord(e){this.index.set(e.path,void 0)}
method _onlyFileFilter (line 140) | _onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}
method _onlyDirectoryFilter (line 140) | _onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent...
method _isSkippedByAbsoluteNegativePatterns (line 140) | _isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)re...
method _isMatchToPatterns (line 140) | _isMatchToPatterns(e,r,o){let a=Ed.path.removeLeadingDotSegment(e),n=Ed....
method constructor (line 140) | constructor(e){this._settings=e}
method getFilter (line 140) | getFilter(){return e=>this._isNonFatalError(e)}
method _isNonFatalError (line 140) | _isNonFatalError(e){return ctt.errno.isEnoentCodeError(e)||this._setting...
method constructor (line 140) | constructor(e){this._settings=e}
method getTransformer (line 140) | getTransformer(){return e=>this._transform(e)}
method _transform (line 140) | _transform(e){let r=e.path;return this._settings.absolute&&(r=Wie.path.m...
method constructor (line 140) | constructor(e){this._settings=e,this.errorFilter=new ptt.default(this._s...
method _getRootDirectory (line 140) | _getRootDirectory(e){return utt.resolve(this._settings.cwd,e.base)}
method _getReaderOptions (line 140) | _getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,path...
method _getMicromatchOptions (line 140) | _getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._se...
method constructor (line 140) | constructor(){super(...arguments),this._reader=new gtt.default(this._set...
method read (line 140) | async read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e...
method api (line 140) | api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.stati...
method constructor (line 140) | constructor(){super(...arguments),this._reader=new ytt.default(this._set...
method read (line 140) | read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=th...
method api (line 140) | api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.stati...
method constructor (line 140) | constructor(){super(...arguments),this._walkSync=wtt.walkSync,this._stat...
method dynamic (line 140) | dynamic(e,r){return this._walkSync(e,r)}
method static (line 140) | static(e,r){let o=[];for(let a of e){let n=this._getFullEntryPath(a),u=t...
method _getEntry (line 140) | _getEntry(e,r,o){try{let a=this._getStat(e);return this._makeEntry(a,r)}...
method _getStat (line 140) | _getStat(e){return this._statSync(e,this._fsStatSettings)}
method constructor (line 140) | constructor(){super(...arguments),this._reader=new Btt.default(this._set...
method read (line 140) | read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);retu...
method api (line 140) | api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.stati...
method constructor (line 140) | constructor(e={}){this._options=e,this.absolute=this._getValue(this._opt...
method _getValue (line 140) | _getValue(e,r){return e===void 0?r:e}
method _getFileSystemMethods (line 140) | _getFileSystemMethods(e={}){return Object.assign(Object.assign({},nE.DEF...
function XO (line 140) | async function XO(t,e){iE(t);let r=ZO(t,Stt.default,e),o=await Promise.a...
function e (line 140) | function e(u,A){iE(u);let p=ZO(u,xtt.default,A);return Cd.array.flatten(p)}
method constructor (line 227) | constructor(o){super(o)}
method submit (line 227) | async submit(){this.value=await t.call(this,this.values,this.state),su...
method create (line 227) | static create(o){return jhe(o)}
function r (line 140) | function r(u,A){iE(u);let p=ZO(u,btt.default,A);return Cd.stream.merge(p)}
method constructor (line 227) | constructor(a){super({...a,choices:e})}
method create (line 227) | static create(a){return Ghe(a)}
function o (line 140) | function o(u,A){iE(u);let p=ese.transform([].concat(u)),h=new JO.default...
function a (line 140) | function a(u,A){iE(u);let p=new JO.default(A);return Cd.pattern.isDynami...
function n (line 140) | function n(u){return iE(u),Cd.path.escape(u)}
function ZO (line 140) | function ZO(t,e,r){let o=ese.transform([].concat(t)),a=new JO.default(r)...
function iE (line 140) | function iE(t){if(![].concat(t).every(o=>Cd.string.isString(o)&&!Cd.stri...
function Js (line 140) | function Js(...t){let e=(0,NS.createHash)("sha512"),r="";for(let o of t)...
function LS (line 140) | async function LS(t,{baseFs:e,algorithm:r}={baseFs:oe,algorithm:"sha512"...
function OS (line 140) | async function OS(t,{cwd:e}){let o=(await(0,$O.default)(t,{cwd:ue.fromPo...
function eA (line 140) | function eA(t,e){if(t?.startsWith("@"))throw new Error("Invalid scope: d...
function In (line 140) | function In(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,...
function Qs (line 140) | function Qs(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,...
function Ftt (line 140) | function Ftt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}
function MS (line 140) | function MS(t){return{identHash:t.identHash,scope:t.scope,name:t.name,lo...
function tM (line 140) | function tM(t){return{identHash:t.identHash,scope:t.scope,name:t.name,de...
function Rtt (line 140) | function Rtt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,l...
function rM (line 140) | function rM(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,...
function ZI (line 140) | function ZI(t){return rM(t,t)}
function nM (line 140) | function nM(t,e){if(e.includes("#"))throw new Error("Invalid entropy");r...
function iM (line 140) | function iM(t,e){if(e.includes("#"))throw new Error("Invalid entropy");r...
function Pf (line 140) | function Pf(t){return t.range.startsWith(XI)}
function Hc (line 140) | function Hc(t){return t.reference.startsWith(XI)}
function $I (line 140) | function $I(t){if(!Pf(t))throw new Error("Not a virtual descriptor");ret...
function e1 (line 140) | function e1(t){if(!Hc(t))throw new Error("Not a virtual descriptor");ret...
function Ttt (line 140) | function Ttt(t){return Pf(t)?In(t,t.range.replace(US,"")):t}
function Ntt (line 140) | function Ntt(t){return Hc(t)?Qs(t,t.reference.replace(US,"")):t}
function Ltt (line 140) | function Ltt(t,e){return t.range.includes("::")?t:In(t,`${t.range}::${sE...
function Ott (line 140) | function Ott(t,e){return t.reference.includes("::")?t:Qs(t,`${t.referenc...
function t1 (line 140) | function t1(t,e){return t.identHash===e.identHash}
function ose (line 140) | function ose(t,e){return t.descriptorHash===e.descriptorHash}
function r1 (line 140) | function r1(t,e){return t.locatorHash===e.locatorHash}
function Mtt (line 140) | function Mtt(t,e){if(!Hc(t))throw new Error("Invalid package type");if(!...
function zs (line 140) | function zs(t){let e=ase(t);if(!e)throw new Error(`Invalid ident (${t})`...
function ase (line 140) | function ase(t){let e=t.match(Utt);if(!e)return null;let[,r,o]=e;return ...
function nh (line 140) | function nh(t,e=!1){let r=n1(t,e);if(!r)throw new Error(`Invalid descrip...
function n1 (line 140) | function n1(t,e=!1){let r=e?t.match(_tt):t.match(Htt);if(!r)return null;...
function Sf (line 140) | function Sf(t,e=!1){let r=_S(t,e);if(!r)throw new Error(`Invalid locator...
function _S (line 140) | function _S(t,e=!1){let r=e?t.match(jtt):t.match(qtt);if(!r)return null;...
function wd (line 140) | function wd(t,e){let r=t.match(Gtt);if(r===null)throw new Error(`Invalid...
function Ytt (line 140) | function Ytt(t,e){try{return wd(t,e)}catch{return null}}
function Wtt (line 140) | function Wtt(t,{protocol:e}){let{selector:r,params:o}=wd(t,{requireProto...
function rse (line 140) | function rse(t){return t=t.replaceAll("%","%25"),t=t.replaceAll(":","%3A...
function Ktt (line 140) | function Ktt(t){return t===null?!1:Object.entries(t).length>0}
function HS (line 140) | function HS({protocol:t,source:e,selector:r,params:o}){let a="";return t...
function Vtt (line 140) | function Vtt(t){let{params:e,protocol:r,source:o,selector:a}=wd(t);for(l...
function fn (line 140) | function fn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}
function Sa (line 140) | function Sa(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.na...
function ba (line 140) | function ba(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${...
function eM (line 140) | function eM(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}
function oE (line 140) | function oE(t){let{protocol:e,selector:r}=wd(t.reference),o=e!==null?e.r...
function cs (line 140) | function cs(t,e){return e.scope?`${Mt(t,`@${e.scope}/`,yt.SCOPE)}${Mt(t,...
function jS (line 140) | function jS(t){if(t.startsWith(XI)){let e=jS(t.substring(t.indexOf("#")+...
function aE (line 140) | function aE(t,e){return`${Mt(t,jS(e),yt.RANGE)}`}
function qn (line 140) | function qn(t,e){return`${cs(t,e)}${Mt(t,"@",yt.RANGE)}${aE(t,e.range)}`}
function i1 (line 140) | function i1(t,e){return`${Mt(t,jS(e),yt.REFERENCE)}`}
function jr (line 140) | function jr(t,e){return`${cs(t,e)}${Mt(t,"@",yt.REFERENCE)}${i1(t,e.refe...
function QL (line 140) | function QL(t){return`${fn(t)}@${jS(t.reference)}`}
function lE (line 140) | function lE(t){return ks(t,[e=>fn(e),e=>e.range])}
function s1 (line 140) | function s1(t,e){return cs(t,e.anchoredLocator)}
function JI (line 140) | function JI(t,e,r){let o=Pf(e)?$I(e):e;return r===null?`${qn(t,o)} \u219...
function FL (line 140) | function FL(t,e,r){return r===null?`${jr(t,e)}`:`${jr(t,e)} (via ${aE(t,...
function sM (line 140) | function sM(t){return`node_modules/${fn(t)}`}
function qS (line 140) | function qS(t,e){return t.conditions?Qtt(t.conditions,r=>{let[,o,a]=r.ma...
method supportsDescriptor (line 140) | supportsDescriptor(e,r){return!!(e.range.startsWith(o1.protocol)||r.proj...
method supportsLocator (line 140) | supportsLocator(e,r){return!!e.reference.startsWith(o1.protocol)}
method shouldPersistResolution (line 140) | shouldPersistResolution(e,r){return!1}
method bindDescriptor (line 140) | bindDescriptor(e,r,o){return e}
method getResolutionDependencies (line 140) | getResolutionDependencies(e,r){return{}}
method getCandidates (line 140) | async getCandidates(e,r,o){return[o.project.getWorkspaceByDescriptor(e)....
method getSatisfying (line 140) | async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);retu...
method resolve (line 140) | async resolve(e,r){let o=r.project.getWorkspaceByCwd(e.reference.slice(o...
function bf (line 140) | function bf(t,e,r=!1){if(!t)return!1;let o=`${e}${r}`,a=use.get(o);if(ty...
function xa (line 140) | function xa(t){if(t.indexOf(":")!==-1)return null;let e=Ase.get(t);if(ty...
function Ztt (line 140) | function Ztt(t){let e=Xtt.exec(t);return e?e[1]:null}
function fse (line 140) | function fse(t){if(t.semver===ih.default.Comparator.ANY)return{gt:null,l...
function oM (line 140) | function oM(t){if(t.length===0)return null;let e=null,r=null;for(let o o...
function pse (line 140) | function pse(t){if(t.gt&&t.lt){if(t.gt[0]===">="&&t.lt[0]==="<="&&t.gt[1...
function aM (line 140) | function aM(t){let e=t.map(o=>xa(o).set.map(a=>a.map(n=>fse(n)))),r=e.sh...
function gse (line 140) | function gse(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}
function dse (line 140) | function dse(t){return t.charCodeAt(0)===65279?t.slice(1):t}
function $o (line 140) | function $o(t){return t.replace(/\\/g,"/")}
function GS (line 140) | function GS(t,{yamlCompatibilityMode:e}){return e?IL(t):typeof t>"u"||ty...
function mse (line 140) | function mse(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let o...
function lM (line 140) | function lM(t,e){return e.length===1?mse(t,e[0]):`(${e.map(r=>mse(t,r))....
method constructor (line 140) | constructor(){this.indent=" ";this.name=null;this.version=null;this.os=...
method tryFind (line 140) | static async tryFind(e,{baseFs:r=new Tn}={}){let o=V.join(e,"package.jso...
method find (line 140) | static async find(e,{baseFs:r}={}){let o=await cE.tryFind(e,{baseFs:r});...
method fromFile (line 140) | static async fromFile(e,{baseFs:r=new Tn}={}){let o=new cE;return await ...
method fromText (line 140) | static fromText(e){let r=new cE;return r.loadFromText(e),r}
method loadFromText (line 140) | loadFromText(e){let r;try{r=JSON.parse(dse(e)||"{}")}catch(o){throw o.me...
method loadFile (line 140) | async loadFile(e,{baseFs:r=new Tn}){let o=await r.readFilePromise(e,"utf...
method load (line 140) | load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)...
method getForScope (line 140) | getForScope(e){switch(e){case"dependencies":return this.dependencies;cas...
method hasConsumerDependency (line 140) | hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||th...
method hasHardDependency (line 140) | hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.d...
method hasSoftDependency (line 140) | hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}
method hasDependency (line 140) | hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDepende...
method getConditions (line 140) | getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(lM("os...
method ensureDependencyMeta (line 140) | ensureDependencyMeta(e){if(e.range!=="unknown"&&!yse.default.valid(e.ran...
method ensurePeerDependencyMeta (line 140) | ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Inva...
method setRawField (line 140) | setRawField(e,r,{after:o=[]}={}){let a=new Set(o.filter(n=>Object.hasOwn...
method exportTo (line 140) | exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),thi...
function rrt (line 140) | function rrt(t){for(var e=t.length;e--&&trt.test(t.charAt(e)););return e}
function srt (line 140) | function srt(t){return t&&t.slice(0,nrt(t)+1).replace(irt,"")}
function crt (line 140) | function crt(t){return typeof t=="symbol"||art(t)&&ort(t)==lrt}
function drt (line 140) | function drt(t){if(typeof t=="number")return t;if(Art(t))return Sse;if(P...
function wrt (line 140) | function wrt(t,e,r){var o,a,n,u,A,p,h=0,C=!1,I=!1,v=!0;if(typeof t!="fun...
function Drt (line 140) | function Drt(t,e,r){var o=!0,a=!0;if(typeof t!="function")throw new Type...
function Srt (line 140) | function Srt(t){return typeof t.reportCode<"u"}
method constructor (line 140) | constructor(r,o,a){super(o);this.reportExtra=a;this.reportCode=r}
method constructor (line 140) | constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.repor...
method getRecommendedLength (line 140) | getRecommendedLength(){return 180}
method reportCacheHit (line 140) | reportCacheHit(e){this.cacheHits.add(e.locatorHash)}
method reportCacheMiss (line 140) | reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}
method progressViaCounter (line 140) | static progressViaCounter(e){let r=0,o,a=new Promise(p=>{o=p}),n=p=>{let...
method progressViaTitle (line 140) | static progressViaTitle(){let e,r,o=new Promise(u=>{r=u}),a=(0,Tse.defau...
method startProgressPromise (line 140) | async startProgressPromise(e,r){let o=this.reportProgress(e);try{return ...
method startProgressSync (line 140) | startProgressSync(e,r){let o=this.reportProgress(e);try{return r(e)}fina...
method reportInfoOnce (line 140) | reportInfoOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedInfos.has(a)||...
method reportWarningOnce (line 140) | reportWarningOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedWarnings.ha...
method reportErrorOnce (line 140) | reportErrorOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedErrors.has(a)...
method reportExceptionOnce (line 140) | reportExceptionOnce(e){Srt(e)?this.reportErrorOnce(e.reportCode,e.messag...
method createStreamReporter (line 140) | createStreamReporter(e=null){let r=new Nse.PassThrough,o=new Lse.StringD...
method constructor (line 141) | constructor(e){this.fetchers=e}
method supports (line 141) | supports(e,r){return!!this.tryFetcher(e,r)}
method getLocalPath (line 141) | getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}
method fetch (line 141) | async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}
method tryFetcher (line 141) | tryFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));return o||n...
method getFetcher (line 141) | getFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));if(!o)throw...
method constructor (line 141) | constructor(e){this.resolvers=e.filter(r=>r)}
method supportsDescriptor (line 141) | supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}
method supportsLocator (line 141) | supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}
method shouldPersistResolution (line 141) | shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shoul...
method bindDescriptor (line 141) | bindDescriptor(e,r,o){return this.getResolverByDescriptor(e,o).bindDescr...
method getResolutionDependencies (line 141) | getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r)....
method getCandidates (line 141) | async getCandidates(e,r,o){return await this.getResolverByDescriptor(e,o...
method getSatisfying (line 141) | async getSatisfying(e,r,o,a){return this.getResolverByDescriptor(e,a).ge...
method resolve (line 141) | async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e...
method tryResolverByDescriptor (line 141) | tryResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDesc...
method getResolverByDescriptor (line 141) | getResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDesc...
method tryResolverByLocator (line 141) | tryResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator...
method getResolverByLocator (line 141) | getResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator...
method supports (line 141) | supports(e){return!!e.reference.startsWith("virtual:")}
method getLocalPath (line 141) | getLocalPath(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Err...
method fetch (line 141) | async fetch(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Erro...
method getLocatorFilename (line 141) | getLocatorFilename(e){return oE(e)}
method ensureVirtualLink (line 141) | async ensureVirtualLink(e,r,o){let a=r.packageFs.getRealPath(),n=o.proje...
method isVirtualDescriptor (line 141) | static isVirtualDescriptor(e){return!!e.range.startsWith(hE.protocol)}
method isVirtualLocator (line 141) | static isVirtualLocator(e){return!!e.reference.startsWith(hE.protocol)}
method supportsDescriptor (line 141) | supportsDescriptor(e,r){return hE.isVirtualDescriptor(e)}
method supportsLocator (line 141) | supportsLocator(e,r){return hE.isVirtualLocator(e)}
method shouldPersistResolution (line 141) | shouldPersistResolution(e,r){return!1}
method bindDescriptor (line 141) | bindDescriptor(e,r,o){throw new Error('Assertion failed: calling "bindDe...
method getResolutionDependencies (line 141) | getResolutionDependencies(e,r){throw new Error('Assertion failed: callin...
method getCandidates (line 141) | async getCandidates(e,r,o){throw new Error('Assertion failed: calling "g...
method getSatisfying (line 141) | async getSatisfying(e,r,o,a){throw new Error('Assertion failed: calling ...
method resolve (line 141) | async resolve(e,r){throw new Error('Assertion failed: calling "resolve" ...
method supports (line 141) | supports(e){return!!e.reference.startsWith(Xn.protocol)}
method getLocalPath (line 141) | getLocalPath(e,r){return this.getWorkspace(e,r).cwd}
method fetch (line 141) | async fetch(e,r){let o=this.getWorkspace(e,r).cwd;return{packageFs:new g...
method getWorkspace (line 141) | getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(X...
function l1 (line 141) | function l1(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}
function Mse (line 141) | function Mse(t){return typeof t>"u"?3:l1(t)?0:Array.isArray(t)?1:2}
function mM (line 141) | function mM(t,e){return Object.hasOwn(t,e)}
function xrt (line 141) | function xrt(t){return l1(t)&&mM(t,"onConflict")&&typeof t.onConflict=="...
function krt (line 141) | function krt(t){if(typeof t>"u")return{onConflict:"default",value:t};if(...
function Use (line 141) | function Use(t,e){let r=l1(t)&&mM(t,e)?t[e]:void 0;return krt(r)}
function dE (line 141) | function dE(t,e){return[t,e,_se]}
function yM (line 141) | function yM(t){return Array.isArray(t)?t[2]===_se:!1}
function gM (line 141) | function gM(t,e){if(l1(t)){let r={};for(let o of Object.keys(t))r[o]=gM(...
function dM (line 141) | function dM(t,e,r,o,a){let n,u=[],A=a,p=0;for(let C=a-1;C>=o;--C){let[I,...
function Hse (line 141) | function Hse(t){return dM(t.map(([e,r])=>[e,{["."]:r}]),[],".",0,t.length)}
function c1 (line 141) | function c1(t){return yM(t)?t[1]:t}
function YS (line 141) | function YS(t){let e=yM(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>YS...
function EM (line 141) | function EM(t){return yM(t)?t[0]:null}
function wM (line 141) | function wM(){if(process.platform==="win32"){let t=ue.toPortablePath(pro...
function mE (line 141) | function mE(){return ue.toPortablePath((0,CM.homedir)()||"/usr/local/sha...
function IM (line 141) | function IM(t,e){let r=V.relative(e,t);return r&&!r.startsWith("..")&&!V...
function Nrt (line 141) | function Nrt(t){var e=new kf(t);return e.request=BM.request,e}
function Lrt (line 141) | function Lrt(t){var e=new kf(t);return e.request=BM.request,e.createSock...
function Ort (line 141) | function Ort(t){var e=new kf(t);return e.request=qse.request,e}
function Mrt (line 141) | function Mrt(t){var e=new kf(t);return e.request=qse.request,e.createSoc...
function kf (line 141) | function kf(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy...
function p (line 141) | function p(){n.emit("free",A,u)}
function h (line 141) | function h(C){n.removeSocket(A),A.removeListener("free",p),A.removeListe...
function A (line 141) | function A(I){I.upgrade=!0}
function p (line 141) | function p(I,v,x){process.nextTick(function(){h(I,v,x)})}
function h (line 141) | function h(I,v,x){if(u.removeAllListeners(),v.removeAllListeners(),I.sta...
function C (line 141) | function C(I){u.removeAllListeners(),sh(`tunneling socket could not be e...
function Gse (line 142) | function Gse(t,e){var r=this;kf.prototype.createSocket.call(r,t,function...
function Yse (line 142) | function Yse(t,e,r){return typeof t=="string"?{host:t,port:e,localAddres...
function vM (line 142) | function vM(t){for(var e=1,r=arguments.length;e<r;++e){var o=arguments[e...
function Urt (line 142) | function Urt(t){return zse.includes(t)}
function Hrt (line 142) | function Hrt(t){return _rt.includes(t)}
function qrt (line 142) | function qrt(t){return jrt.includes(t)}
function EE (line 142) | function EE(t){return e=>typeof e===t}
function Se (line 142) | function Se(t){if(t===null)return"null";switch(typeof t){case"undefined"...
method constructor (line 142) | constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}
method isCanceled (line 142) | get isCanceled(){return!0}
method fn (line 142) | static fn(e){return(...r)=>new CE((o,a,n)=>{r.push(n),e(...r).then(o,a)})}
method constructor (line 142) | constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCancel...
method then (line 142) | then(e,r){return this._promise.then(e,r)}
method catch (line 142) | catch(e){return this._promise.catch(e)}
method finally (line 142) | finally(e){return this._promise.finally(e)}
method cancel (line 142) | cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandl...
method isCanceled (line 142) | get isCanceled(){return this._isCanceled}
method constructor (line 142) | constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:o=3600,errorT...
method servers (line 142) | set servers(e){this.clear(),this._resolver.setServers(e)}
method servers (line 142) | get servers(){return this._resolver.getServers()}
method lookup (line 142) | lookup(e,r,o){if(typeof r=="function"?(o=r,r={}):typeof r=="number"&&(r=...
method lookupAsync (line 142) | async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let o=await...
method query (line 142) | async query(e){let r=await this._cache.get(e);if(!r){let o=this._pending...
method _resolve (line 142) | async _resolve(e){let r=async h=>{try{return await h}catch(C){if(C.code=...
method _lookup (line 142) | async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),ca...
method _set (line 142) | async _set(e,r,o){if(this.maxTtl>0&&o>0){o=Math.min(o,this.maxTtl)*1e3,r...
method queryAndCache (line 142) | async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._...
method _tick (line 142) | _tick(e){let r=this._nextRemovalTime;(!r||e<r)&&(clearTimeout(this._remo...
method install (line 142) | install(e){if(ioe(e),wE in e)throw new Error("CacheableLookup has been a...
method uninstall (line 142) | uninstall(e){if(ioe(e),e[wE]){if(e[RM]!==this)throw new Error("The agent...
method updateInterfaceInfo (line 142) | updateInterfaceInfo(){let{_iface:e}=this;this._iface=soe(),(e.has4&&!thi...
method clear (line 142) | clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}
function foe (line 142) | function foe(t,e){if(t&&e)return foe(t)(e);if(typeof t!="function")throw...
function XS (line 142) | function XS(t){var e=function(){return e.called?e.value:(e.called=!0,e.v...
function doe (line 142) | function doe(t){var e=function(){if(e.called)throw new Error(e.onceError...
method constructor (line 142) | constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}
function eb (line 142) | async function eb(t,e){if(!t)return Promise.reject(new Error("Expected a...
function vd (line 142) | function vd(t){let e=parseInt(t,10);return isFinite(e)?e:0}
function Qnt (line 142) | function Qnt(t){return t?bnt.has(t.status):!0}
function _M (line 142) | function _M(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);f...
function Fnt (line 142) | function Fnt(t){let e=[];for(let r in t){let o=t[r];e.push(o===!0?r:r+"=...
method constructor (line 142) | constructor(e,r,{shared:o,cacheHeuristic:a,immutableMinTimeToLive:n,igno...
method now (line 142) | now(){return Date.now()}
method storable (line 142) | storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||thi...
method _hasExplicitExpiration (line 142) | _hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]|...
method _assertRequestHasHeaders (line 142) | _assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request heade...
method satisfiesWithoutRevalidation (line 142) | satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=_...
method _requestMatches (line 142) | _requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host==...
method _allowsStoringAuthenticated (line 142) | _allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||thi...
method _varyMatches (line 142) | _varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.v...
method _copyWithoutHopByHopHeaders (line 142) | _copyWithoutHopByHopHeaders(e){let r={};for(let o in e)xnt[o]||(r[o]=e[o...
method responseHeaders (line 142) | responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeader...
method date (line 142) | date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this...
method age (line 142) | age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;retur...
method _ageValue (line 142) | _ageValue(){return vd(this._resHeaders.age)}
method maxAge (line 142) | maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&t...
method timeToLive (line 142) | timeToLive(){let e=this.maxAge()-this.age(),r=e+vd(this._rescc["stale-if...
method stale (line 142) | stale(){return this.maxAge()<=this.age()}
method _useStaleIfError (line 142) | _useStaleIfError(){return this.maxAge()+vd(this._rescc["stale-if-error"]...
method useStaleWhileRevalidate (line 142) | useStaleWhileRevalidate(){return this.maxAge()+vd(this._rescc["stale-whi...
method fromObject (line 142) | static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}
method _fromObject (line 142) | _fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e|...
method toObject (line 142) | toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._ca...
method revalidationHeaders (line 142) | revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copy...
method revalidatedPolicy (line 142) | revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStal...
method constructor (line 142) | constructor(e,r,o,a){if(typeof e!="number")throw new TypeError("Argument...
method _read (line 142) | _read(){this.push(this.body),this.push(null)}
method constructor (line 142) | constructor(e,r){if(super(),this.opts=Object.assign({namespace:"keyv",se...
method _getKeyPrefix (line 142) | _getKeyPrefix(e){return`${this.opts.namespace}:${e}`}
method get (line 142) | get(e,r){e=this._getKeyPrefix(e);let{store:o}=this.opts;return Promise.r...
method set (line 142) | set(e,r,o){e=this._getKeyPrefix(e),typeof o>"u"&&(o=this.opts.ttl),o===0...
method delete (line 142) | delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise....
method clear (line 142) | clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear...
method constructor (line 142) | constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter ...
method createCacheableRequest (line 142) | createCacheableRequest(e){return(r,o)=>{let a;if(typeof r=="string")a=YM...
function Knt (line 142) | function Knt(t){let e={...t};return e.path=`${t.pathname||"/"}${t.search...
function YM (line 142) | function YM(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostnam...
method constructor (line 142) | constructor(t){super(t.message),this.name="RequestError",Object.assign(t...
method constructor (line 142) | constructor(t){super(t.message),this.name="CacheError",Object.assign(thi...
method get (line 142) | get(){let n=t[a];return typeof n=="function"?n.bind(t):n}
method set (line 142) | set(n){t[a]=n}
method transform (line 142) | transform(A,p,h){o=!1,h(null,A)}
method flush (line 142) | flush(A){A()}
method destroy (line 142) | destroy(A,p){t.destroy(),p(A)}
method constructor (line 142) | constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`max...
method _set (line 142) | _set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){...
method get (line 142) | get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.ha...
method set (line 142) | set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}
method has (line 142) | has(e){return this.cache.has(e)||this.oldCache.has(e)}
method peek (line 142) | peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.h...
method delete (line 142) | delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCach...
method clear (line 142) | clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}
method keys (line 142) | *keys(){for(let[e]of this)yield e}
method values (line 142) | *values(){for(let[,e]of this)yield e}
method [Symbol.iterator] (line 142) | *[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.o...
method size (line 142) | get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||...
method constructor (line 142) | constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:o=10,maxCac...
method normalizeOrigin (line 142) | static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&...
method normalizeOptions (line 142) | normalizeOptions(e){let r="";if(e)for(let o of rit)e[o]&&(r+=`:${e[o]}`)...
method _tryToCreateNewSession (line 142) | _tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e])...
method getSession (line 142) | getSession(e,r,o){return new Promise((a,n)=>{Array.isArray(o)?(o=[...o],...
method request (line 143) | request(e,r,o,a){return new Promise((n,u)=>{this.getSession(e,r,[{reject...
method createConnection (line 143) | createConnection(e,r){return tA.connect(e,r)}
method connect (line 143) | static connect(e,r){r.ALPNProtocols=["h2"];let o=e.port||443,a=e.hostnam...
method closeFreeSessions (line 143) | closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r ...
method destroy (line 143) | destroy(e){for(let r of Object.values(this.sessions))for(let o of r)o.de...
method freeSessions (line 143) | get freeSessions(){return Koe({agent:this,isFree:!0})}
method busySessions (line 143) | get busySessions(){return Koe({agent:this,isFree:!1})}
method constructor (line 143) | constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode...
method _destroy (line 143) | _destroy(e){this.req._request.destroy(e)}
method setTimeout (line 143) | setTimeout(e,r){return this.req.setTimeout(e,r),this}
method _dump (line 143) | _dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),t...
method _read (line 143) | _read(){this.req&&this.req._request.resume()}
method constructor (line 143) | constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.na...
method constructor (line 143) | constructor(e,r,o){super({autoDestroy:!1});let a=typeof e=="string"||e i...
method method (line 143) | get method(){return this[Qo][aae]}
method method (line 143) | set method(e){e&&(this[Qo][aae]=e.toUpperCase())}
method path (line 143) | get path(){return this[Qo][lae]}
method path (line 143) | set path(e){e&&(this[Qo][lae]=e)}
method _mustNotHaveABody (line 143) | get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"...
method _write (line 143) | _write(e,r,o){if(this._mustNotHaveABody){o(new Error("The GET, HEAD and ...
method _final (line 143) | _final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(thi...
method abort (line 143) | abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=...
method _destroy (line 143) | _destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.de...
method flushHeaders (line 143) | async flushHeaders(){if(this[nb]||this.destroyed)return;this[nb]=!0;let ...
method getHeader (line 143) | getHeader(e){if(typeof e!="string")throw new e4("name","string",e);retur...
method headersSent (line 143) | get headersSent(){return this[nb]}
method removeHeader (line 143) | removeHeader(e){if(typeof e!="string")throw new e4("name","string",e);if...
method setHeader (line 143) | setHeader(e,r){if(this.headersSent)throw new sae("set");if(typeof e!="st...
method setNoDelay (line 143) | setNoDelay(){}
method setSocketKeepAlive (line 143) | setSocketKeepAlive(){}
method setTimeout (line 143) | setTimeout(e,r){let o=()=>this._request.setTimeout(e,r);return this._req...
method maxHeadersCount (line 143) | get maxHeadersCount(){if(!this.destroyed&&this._request)return this._req...
method maxHeadersCount (line 143) | set maxHeadersCount(e){}
function Oit (line 143) | function Oit(t,e,r){let o={};for(let a of r)o[a]=(...n)=>{e.emit(a,...n)...
method once (line 143) | once(e,r,o){e.once(r,o),t.push({origin:e,event:r,fn:o})}
method unhandleAll (line 143) | unhandleAll(){for(let e of t){let{origin:r,event:o,fn:a}=e;r.removeListe...
method constructor (line 143) | constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=...
method constructor (line 143) | constructor(){this.weakMap=new WeakMap,this.map=new Map}
method set (line 143) | set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}
method get (line 143) | get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}
method has (line 143) | has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}
function lst (line 143) | function lst(t){for(let e in t){let r=t[e];if(!st.default.string(r)&&!st...
function cst (line 143) | function cst(t){return st.default.object(t)&&!("statusCode"in t)}
method constructor (line 143) | constructor(e,r,o){var a;if(super(e),Error.captureStackTrace(this,this.c...
method constructor (line 147) | constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborti...
method constructor (line 147) | constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})...
method constructor (line 147) | constructor(e,r){super(e.message,e,r),this.name="CacheError"}
method constructor (line 147) | constructor(e,r){super(e.message,e,r),this.name="UploadError"}
method constructor (line 147) | constructor(e,r,o){super(e.message,e,o),this.name="TimeoutError",this.ev...
method constructor (line 147) | constructor(e,r){super(e.message,e,r),this.name="ReadError"}
method constructor (line 147) | constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),th...
method constructor (line 147) | constructor(e,r={},o){super({autoDestroy:!1,highWaterMark:0}),this[PE]=0...
method normalizeArguments (line 147) | static normalizeArguments(e,r,o){var a,n,u,A,p;let h=r;if(st.default.obj...
method _lockWrite (line 147) | _lockWrite(){let e=()=>{throw new TypeError("The payload has been alread...
method _unlockWrite (line 147) | _unlockWrite(){this.write=super.write,this.end=super.end}
method _finalizeBody (line 147) | async _finalizeBody(){let{options:e}=this,{headers:r}=e,o=!st.default.un...
method _onResponseBase (line 147) | async _onResponseBase(e){let{options:r}=this,{url:o}=r;this[zae]=e,r.dec...
method _onResponse (line 147) | async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._be...
method _onRequest (line 147) | _onRequest(e){let{options:r}=this,{timeout:o,url:a}=r;Vit.default(e),thi...
method _createCacheableRequest (line 147) | async _createCacheableRequest(e,r){return new Promise((o,a)=>{Object.ass...
method _makeRequest (line 147) | async _makeRequest(){var e,r,o,a,n;let{options:u}=this,{headers:A}=u;for...
method _error (line 147) | async _error(e){try{for(let r of this.options.hooks.beforeError)e=await ...
method _beforeError (line 147) | _beforeError(e){if(this[xE])return;let{options:r}=this,o=this.retryCount...
method _read (line 147) | _read(){this[lb]=!0;let e=this[ub];if(e&&!this[xE]){e.readableLength&&(t...
method _write (line 147) | _write(e,r,o){let a=()=>{this._writeRequest(e,r,o)};this.requestInitiali...
method _writeRequest (line 147) | _writeRequest(e,r,o){this[Zs].destroyed||(this._progressCallbacks.push((...
method _final (line 147) | _final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._prog...
method _destroy (line 147) | _destroy(e,r){var o;this[xE]=!0,clearTimeout(this[Jae]),Zs in this&&(thi...
method _isAboutToError (line 147) | get _isAboutToError(){return this[xE]}
method ip (line 147) | get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteA...
method aborted (line 147) | get aborted(){var e,r,o;return((r=(e=this[Zs])===null||e===void 0?void 0...
method socket (line 147) | get socket(){var e,r;return(r=(e=this[Zs])===null||e===void 0?void 0:e.s...
method downloadProgress (line 147) | get downloadProgress(){let e;return this[DE]?e=this[PE]/this[DE]:this[DE...
method uploadProgress (line 147) | get uploadProgress(){let e;return this[SE]?e=this[bE]/this[SE]:this[SE]=...
method timings (line 147) | get timings(){var e;return(e=this[Zs])===null||e===void 0?void 0:e.timings}
method isFromCache (line 147) | get isFromCache(){return this[Kae]}
method pipe (line 147) | pipe(e,r){if(this[Vae])throw new Error("Failed to pipe. The response has...
method unpipe (line 147) | unpipe(e){return e instanceof B4.ServerResponse&&this[ab].delete(e),supe...
method constructor (line 147) | constructor(e,r){let{options:o}=r.request;super(`${e.message} in "${o.ur...
method constructor (line 147) | constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}
method isCanceled (line 147) | get isCanceled(){return!0}
function nle (line 147) | function nle(t){let e,r,o=new Est.EventEmitter,a=new wst((u,A,p)=>{let h...
function Pst (line 147) | function Pst(t,...e){let r=(async()=>{if(t instanceof Dst.RequestError)t...
function ole (line 147) | function ole(t){for(let e of Object.values(t))(sle.default.plainObject(e...
function Ele (line 147) | function Ele(t){let e=new Ib.URL(t),r={host:e.hostname,headers:{}};retur...
function N4 (line 147) | async function N4(t){return ol(yle,t,()=>oe.readFilePromise(t).then(e=>(...
function Hst (line 147) | function Hst({statusCode:t,statusMessage:e},r){let o=Mt(r,t,yt.NUMBER),a...
function Bb (line 147) | async function Bb(t,{configuration:e,customErrorMessage:r}){try{return a...
function Ile (line 147) | function Ile(t,e){let r=[...e.configuration.get("networkSettings")].sort...
function C1 (line 147) | async function C1(t,e,{configuration:r,headers:o,jsonRequest:a,jsonRespo...
function M4 (line 147) | async function M4(t,{configuration:e,jsonResponse:r,customErrorMessage:o...
function jst (line 147) | async function jst(t,e,{customErrorMessage:r,...o}){return(await Bb(C1(t...
function U4 (line 147) | async function U4(t,e,{customErrorMessage:r,...o}){return(await Bb(C1(t,...
function qst (line 147) | async function qst(t,{customErrorMessage:e,...r}){return(await Bb(C1(t,n...
function Gst (line 147) | async function Gst(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResp...
function Kst (line 147) | function Kst(){if(process.platform==="darwin"||process.platform==="win32...
function w1 (line 147) | function w1(){return Dle=Dle??{os:process.platform,cpu:process.arch,libc...
function Vst (line 147) | function Vst(t=w1()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}...
function _4 (line 147) | function _4(){let t=w1();return Ple=Ple??{os:[t.os],cpu:[t.cpu],libc:t.l...
function Xst (line 147) | function Xst(t){let e=zst.exec(t);if(!e)return null;let r=e[2]&&e[2].ind...
function Zst (line 147) | function Zst(){let e=new Error().stack.split(`
function H4 (line 148) | function H4(){return typeof Db.default.availableParallelism<"u"?Db.defau...
function K4 (line 148) | function K4(t,e,r,o,a){let n=c1(r);if(o.isArray||o.type==="ANY"&&Array.i...
function q4 (line 148) | function q4(t,e,r,o,a){let n=c1(r);switch(o.type){case"ANY":return YS(n)...
function rot (line 148) | function rot(t,e,r,o,a){let n=c1(r);if(typeof n!="object"||Array.isArray...
function not (line 148) | function not(t,e,r,o,a){let n=c1(r),u=new Map;if(typeof n!="object"||Arr...
function V4 (line 148) | function V4(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e...
function xb (line 148) | function xb(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecre...
function iot (line 148) | function iot(){let t={};for(let[e,r]of Object.entries(process.env))e=e.t...
function Y4 (line 148) | function Y4(){let t=`${kb}rc_filename`;for(let[e,r]of Object.entries(pro...
function Sle (line 148) | async function Sle(t){try{return await oe.readFilePromise(t)}catch{retur...
function sot (line 148) | async function sot(t,e){return Buffer.compare(...await Promise.all([Sle(...
function oot (line 148) | async function oot(t,e){let[r,o]=await Promise.all([oe.statPromise(t),oe...
function lot (line 148) | async function lot({configuration:t,selfPath:e}){let r=t.get("yarnPath")...
method constructor (line 148) | constructor(e){this.isCI=Tf.isCI;this.projectCwd=null;this.plugins=new M...
method create (line 148) | static create(e,r,o){let a=new rA(e);typeof r<"u"&&!(r instanceof Map)&&...
method find (line 148) | static async find(e,r,{strict:o=!0,usePathCheck:a=null,useRc:n=!0}={}){l...
method findRcFiles (line 148) | static async findRcFiles(e){let r=Y4(),o=[],a=e,n=null;for(;a!==n;){n=a;...
method findFolderRcFile (line 148) | static async findFolderRcFile(e){let r=V.join(e,dr.rc),o;try{o=await oe....
method findProjectCwd (line 148) | static async findProjectCwd(e){let r=null,o=e,a=null;for(;o!==a;){if(a=o...
method updateConfiguration (line 148) | static async updateConfiguration(e,r,o={}){let a=Y4(),n=V.join(e,a),u=oe...
method addPlugin (line 148) | static async addPlugin(e,r){r.length!==0&&await rA.updateConfiguration(e...
method updateHomeConfiguration (line 148) | static async updateHomeConfiguration(e){let r=mE();return await rA.updat...
method activatePlugin (line 148) | activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<"u"&&th...
method importSettings (line 148) | importSettings(e){for(let[r,o]of Object.entries(e))if(o!=null){if(this.s...
method useWithSource (line 148) | useWithSource(e,r,o,a){try{this.use(e,r,o,a)}catch(n){throw n.message+=`...
method use (line 148) | use(e,r,o,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSe...
method get (line 148) | get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key...
method getSpecial (line 148) | getSpecial(e,{hideSecrets:r=!1,getNativePaths:o=!1}){let a=this.get(e),n...
method getSubprocessStreams (line 148) | getSubprocessStreams(e,{header:r,prefix:o,report:a}){let n,u,A=oe.create...
method makeResolver (line 149) | makeResolver(){let e=[];for(let r of this.plugins.values())for(let o of ...
method makeFetcher (line 149) | makeFetcher(){let e=[];for(let r of this.plugins.values())for(let o of r...
method getLinkers (line 149) | getLinkers(){let e=[];for(let r of this.plugins.values())for(let o of r....
method getSupportedArchitectures (line 149) | getSupportedArchitectures(){let e=w1(),r=this.get("supportedArchitecture...
method getPackageExtensions (line 149) | async getPackageExtensions(){if(this.packageExtensions!==null)return thi...
method normalizeLocator (line 149) | normalizeLocator(e){return xa(e.reference)?Qs(e,`${this.get("defaultProt...
method normalizeDependency (line 149) | normalizeDependency(e){return xa(e.range)?In(e,`${this.get("defaultProto...
method normalizeDependencyMap (line 149) | normalizeDependencyMap(e){return new Map([...e].map(([r,o])=>[r,this.nor...
method normalizePackage (line 149) | normalizePackage(e,{packageExtensions:r}){let o=ZI(e),a=r.get(e.identHas...
method getLimit (line 149) | getLimit(e){return ol(this.limits,e,()=>(0,Qle.default)(this.get(e)))}
method triggerHook (line 149) | async triggerHook(e,...r){for(let o of this.plugins.values()){let a=o.ho...
method triggerMultipleHooks (line 149) | async triggerMultipleHooks(e,r){for(let o of r)await this.triggerHook(e,...
method reduceHook (line 149) | async reduceHook(e,r,...o){let a=r;for(let n of this.plugins.values()){l...
method firstHook (line 149) | async firstHook(e,...r){for(let o of this.plugins.values()){let a=o.hook...
function Pd (line 149) | function Pd(t){return t!==null&&typeof t.fd=="number"}
function z4 (line 149) | function z4(){}
function J4 (line 149) | function J4(){for(let t of Sd)t.kill()}
function Gc (line 149) | async function Gc(t,e,{cwd:r,env:o=process.env,strict:a=!1,stdin:n=null,...
function j4 (line 149) | async function j4(t,e,{cwd:r,env:o=process.env,encoding:a="utf8",strict:...
function $4 (line 149) | function $4(t,e){let r=cot.get(e);return typeof r<"u"?128+r:t??1}
function uot (line 149) | function uot(t,e,{configuration:r,report:o}){o.reportError(1,` ${Ju(r,t...
method constructor (line 149) | constructor({fileName:r,code:o,signal:a}){let n=Ke.create(V.cwd()),u=Mt(...
method constructor (line 149) | constructor({fileName:r,code:o,signal:a,stdout:n,stderr:u}){super({fileN...
function Tle (line 149) | function Tle(t){Rle=t}
function P1 (line 149) | function P1(){return typeof eU>"u"&&(eU=Rle()),eU}
function x (line 149) | function x(We){return r.locateFile?r.locateFile(We,v):v+We}
function ae (line 149) | function ae(We,tt,It){switch(tt=tt||"i8",tt.charAt(tt.length-1)==="*"&&(...
function Ee (line 149) | function Ee(We,tt){We||Ti("Assertion failed: "+tt)}
function De (line 149) | function De(We){var tt=r["_"+We];return Ee(tt,"Cannot call unknown funct...
function ce (line 149) | function ce(We,tt,It,nr,$){var me={string:function(es){var bi=0;if(es!=n...
function ne (line 149) | function ne(We,tt,It,nr){It=It||[];var $=It.every(function(Le){return Le...
function we (line 149) | function we(We,tt){if(!We)return"";for(var It=We+tt,nr=We;!(nr>=It)&&Re[...
function xe (line 149) | function xe(We,tt,It,nr){if(!(nr>0))return 0;for(var $=It,me=It+nr-1,Le=...
function ht (line 149) | function ht(We,tt,It){return xe(We,Re,tt,It)}
function H (line 149) | function H(We){for(var tt=0,It=0;It<We.length;++It){var nr=We.charCodeAt...
function lt (line 149) | function lt(We){var tt=H(We)+1,It=Li(tt);return It&&xe(We,_e,It,tt),It}
function Te (line 149) | function Te(We,tt){_e.set(We,tt)}
function ke (line 149) | function ke(We,tt){return We%tt>0&&(We+=tt-We%tt),We}
function J (line 149) | function J(We){be=We,r.HEAP_DATA_VIEW=F=new DataView(We),r.HEAP8=_e=new ...
function dt (line 149) | function dt(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r....
function jt (line 149) | function jt(){ot=!0,oo(Pe)}
function $t (line 149) | function $t(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=...
function bt (line 149) | function bt(We){ie.unshift(We)}
function an (line 149) | function an(We){Pe.unshift(We)}
function Qr (line 149) | function Qr(We){Ne.unshift(We)}
function Kn (line 149) | function Kn(We){mr++,r.monitorRunDependencies&&r.monitorRunDependencies(...
function Ns (line 149) | function Ns(We){if(mr--,r.monitorRunDependencies&&r.monitorRunDependenci...
function Ti (line 149) | function Ti(We){r.onAbort&&r.onAbort(We),We+="",te(We),Fe=!0,g=1,We="abo...
function io (line 149) | function io(We){return We.startsWith(ps)}
function Ls (line 149) | function Ls(We){try{if(We==Si&&Ae)return new Uint8Array(Ae);var tt=ii(We...
function so (line 149) | function so(We,tt){var It,nr,$;try{$=Ls(We),nr=new WebAssembly.Module($)...
function cc (line 149) | function cc(){var We={a:Ma};function tt($,me){var Le=$.exports;r.asm=Le,...
function cu (line 149) | function cu(We){return F.getFloat32(We,!0)}
function op (line 149) | function op(We){return F.getFloat64(We,!0)}
function ap (line 149) | function ap(We){return F.getInt16(We,!0)}
function Os (line 149) | function Os(We){return F.getInt32(We,!0)}
function Dn (line 149) | function Dn(We,tt){F.setInt32(We,tt,!0)}
function oo (line 149) | function oo(We){for(;We.length>0;){var tt=We.shift();if(typeof tt=="func...
function Ms (line 149) | function Ms(We,tt){var It=new Date(Os((We>>2)*4)*1e3);Dn((tt>>2)*4,It.ge...
function ml (line 149) | function ml(We,tt){return Ms(We,tt)}
function yl (line 149) | function yl(We,tt,It){Re.copyWithin(We,tt,tt+It)}
function ao (line 149) | function ao(We){try{return Ie.grow(We-be.byteLength+65535>>>16),J(Ie.buf...
function Vn (line 149) | function Vn(We){var tt=Re.length;We=We>>>0;var It=2147483648;if(We>It)re...
function On (line 149) | function On(We){he(We)}
function Ni (line 149) | function Ni(We){var tt=Date.now()/1e3|0;return We&&Dn((We>>2)*4,tt),tt}
function Mn (line 149) | function Mn(){if(Mn.called)return;Mn.called=!0;var We=new Date().getFull...
function _i (line 149) | function _i(We){Mn();var tt=Date.UTC(Os((We+20>>2)*4)+1900,Os((We+16>>2)...
function Oe (line 149) | function Oe(We){if(typeof I=="boolean"&&I){var tt;try{tt=Buffer.from(We,...
function ii (line 149) | function ii(We){if(!!io(We))return Oe(We.slice(ps.length))}
function ys (line 149) | function ys(We){if(We=We||A,mr>0||(dt(),mr>0))return;function tt(){Pn||(...
method HEAPU8 (line 149) | get HEAPU8(){return t.HEAPU8}
function iU (line 149) | function iU(t,e){let r=t.indexOf(e);if(r<=0)return null;let o=r;for(;r>=...
method openPromise (line 149) | static async openPromise(e,r){let o=new zl(r);try{return await e(o)}fina...
method constructor (line 149) | constructor(e={}){let r=e.fileExtensions,o=e.readOnlyArchives,a=typeof r...
function fot (line 149) | function fot(t){if(typeof t=="string"&&String(+t)===t)return+t;if(typeof...
function Tb (line 149) | function Tb(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
method constructor (line 149) | constructor(r,o){super(r);this.name="Libzip Error",this.code=o}
method constructor (line 149) | constructor(r,o={}){super();this.listings=new Map;this.entries=new Map;t...
method makeLibzipError (line 149) | makeLibzipError(r){let o=this.libzip.struct.errorCodeZip(r),a=this.libzi...
method getExtractHint (line 149) | getExtractHint(r){for(let o of this.entries.keys()){let a=this.pathUtils...
method getAllFiles (line 149) | getAllFiles(){return Array.from(this.entries.keys())}
method getRealPath (line 149) | getRealPath(){if(!this.path)throw new Error("ZipFS don't have real paths...
method prepareClose (line 149) | prepareClose(){if(!this.ready)throw ar.EBUSY("archive closed, close");Og...
method getBufferAndClose (line 149) | getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return ...
method discardAndClose (line 149) | discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this...
method saveAndClose (line 149) | saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot...
method resolve (line 149) | resolve(r){return V.resolve(Bt.root,r)}
method openPromise (line 149) | async openPromise(r,o,a){return this.openSync(r,o,a)}
method openSync (line 149) | openSync(r,o,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}...
method hasOpenFileHandles (line 149) | hasOpenFileHandles(){return!!this.fds.size}
method opendirPromise (line 149) | async opendirPromise(r,o){return this.opendirSync(r,o)}
method opendirSync (line 149) | opendirSync(r,o={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!t...
method readPromise (line 149) | async readPromise(r,o,a,n,u){return this.readSync(r,o,a,n,u)}
method readSync (line 149) | readSync(r,o,a=0,n=o.byteLength,u=-1){let A=this.fds.get(r);if(typeof A>...
method writePromise (line 149) | async writePromise(r,o,a,n,u){return typeof o=="string"?this.writeSync(r...
method writeSync (line 149) | writeSync(r,o,a,n,u){throw typeof this.fds.get(r)>"u"?ar.EBADF("read"):n...
method closePromise (line 149) | async closePromise(r){return this.closeSync(r)}
method closeSync (line 149) | closeSync(r){if(typeof this.fds.get(r)>"u")throw ar.EBADF("read");this.f...
method createReadStream (line 149) | createReadStream(r,{encoding:o}={}){if(r===null)throw new Error("Unimple...
method createWriteStream (line 149) | createWriteStream(r,{encoding:o}={}){if(this.readOnly)throw ar.EROFS(`op...
method realpathPromise (line 149) | async realpathPromise(r){return this.realpathSync(r)}
method realpathSync (line 149) | realpathSync(r){let o=this.resolveFilename(`lstat '${r}'`,r);if(!this.en...
method existsPromise (line 149) | async existsPromise(r){return this.existsSync(r)}
method existsSync (line 149) | existsSync(r){if(!this.ready)throw ar.EBUSY(`archive closed, existsSync ...
method accessPromise (line 149) | async accessPromise(r,o){return this.accessSync(r,o)}
method accessSync (line 149) | accessSync(r,o=ta.constants.F_OK){let a=this.resolveFilename(`access '${...
method statPromise (line 149) | async statPromise(r,o={bigint:!1}){return o.bigint?this.statSync(r,{bigi...
method statSync (line 149) | statSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`...
method fstatPromise (line 149) | async fstatPromise(r,o){return this.fstatSync(r,o)}
method fstatSync (line 149) | fstatSync(r,o){let a=this.fds.get(r);if(typeof a>"u")throw ar.EBADF("fst...
method lstatPromise (line 149) | async lstatPromise(r,o={bigint:!1}){return o.bigint?this.lstatSync(r,{bi...
method lstatSync (line 149) | lstatSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(...
method statImpl (line 149) | statImpl(r,o,a={}){let n=this.entries.get(o);if(typeof n<"u"){let u=this...
method getUnixMode (line 149) | getUnixMode(r,o){if(this.libzip.file.getExternalAttributes(this.zip,r,0,...
method registerListing (line 149) | registerListing(r){let o=this.listings.get(r);if(o)return o;this.registe...
method registerEntry (line 149) | registerEntry(r,o){this.registerListing(V.dirname(r)).add(V.basename(r))...
method unregisterListing (line 149) | unregisterListing(r){this.listings.delete(r),this.listings.get(V.dirname...
method unregisterEntry (line 149) | unregisterEntry(r){this.unregisterListing(r);let o=this.entries.get(r);t...
method deleteEntry (line 149) | deleteEntry(r,o){if(this.unregisterEntry(r),this.libzip.delete(this.zip,...
method resolveFilename (line 149) | resolveFilename(r,o,a=!0,n=!0){if(!this.ready)throw ar.EBUSY(`archive cl...
method allocateBuffer (line 149) | allocateBuffer(r){Buffer.isBuffer(r)||(r=Buffer.from(r));let o=this.libz...
method allocateUnattachedSource (line 149) | allocateUnattachedSource(r){let o=this.libzip.struct.errorS(),{buffer:a,...
method allocateSource (line 149) | allocateSource(r){let{buffer:o,byteLength:a}=this.allocateBuffer(r),n=th...
method setFileSource (line 149) | setFileSource(r,o){let a=Buffer.isBuffer(o)?o:Buffer.from(o),n=V.relativ...
method isSymbolicLink (line 149) | isSymbolicLink(r){if(this.symlinkCount===0)return!1;if(this.libzip.file....
method getFileSource (line 149) | getFileSource(r,o={asyncDecompress:!1}){let a=this.fileSources.get(r);if...
method fchmodPromise (line 149) | async fchmodPromise(r,o){return this.chmodPromise(this.fdToPath(r,"fchmo...
method fchmodSync (line 149) | fchmodSync(r,o){return this.chmodSync(this.fdToPath(r,"fchmodSync"),o)}
method chmodPromise (line 149) | async chmodPromise(r,o){return this.chmodSync(r,o)}
method chmodSync (line 149) | chmodSync(r,o){if(this.readOnly)throw ar.EROFS(`chmod '${r}'`);o&=493;le...
method fchownPromise (line 149) | async fchownPromise(r,o,a){return this.chownPromise(this.fdToPath(r,"fch...
method fchownSync (line 149) | fchownSync(r,o,a){return this.chownSync(this.fdToPath(r,"fchownSync"),o,a)}
method chownPromise (line 149) | async chownPromise(r,o,a){return this.chownSync(r,o,a)}
method chownSync (line 149) | chownSync(r,o,a){throw new Error("Unimplemented")}
method renamePromise (line 149) | async renamePromise(r,o){return this.renameSync(r,o)}
method renameSync (line 149) | renameSync(r,o){throw new Error("Unimplemented")}
method copyFilePromise (line 149) | async copyFilePromise(r,o,a){let{indexSource:n,indexDest:u,resolvedDestP...
method copyFileSync (line 149) | copyFileSync(r,o,a=0){let{indexSource:n,indexDest:u,resolvedDestP:A}=thi...
method prepareCopyFile (line 149) | prepareCopyFile(r,o,a=0){if(this.readOnly)throw ar.EROFS(`copyfile '${r}...
method appendFilePromise (line 149) | async appendFilePromise(r,o,a){if(this.readOnly)throw ar.EROFS(`open '${...
method appendFileSync (line 149) | appendFileSync(r,o,a={}){if(this.readOnly)throw ar.EROFS(`open '${r}'`);...
method fdToPath (line 149) | fdToPath(r,o){let a=this.fds.get(r)?.p;if(typeof a>"u")throw ar.EBADF(o)...
method writeFilePromise (line 149) | async writeFilePromise(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}...
method writeFileSync (line 149) | writeFileSync(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.pre...
method prepareWriteFile (line 149) | prepareWriteFile(r,o){if(typeof r=="number"&&(r=this.fdToPath(r,"read"))...
method unlinkPromise (line 149) | async unlinkPromise(r){return this.unlinkSync(r)}
method unlinkSync (line 149) | unlinkSync(r){if(this.readOnly)throw ar.EROFS(`unlink '${r}'`);let o=thi...
method utimesPromise (line 149) | async utimesPromise(r,o,a){return this.utimesSync(r,o,a)}
method utimesSync (line 149) | utimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`utimes '${r}'`);let n...
method lutimesPromise (line 149) | async lutimesPromise(r,o,a){return this.lutimesSync(r,o,a)}
method lutimesSync (line 149) | lutimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`lutimes '${r}'`);let...
method utimesImpl (line 149) | utimesImpl(r,o){this.listings.has(r)&&(this.entries.has(r)||this.hydrate...
method mkdirPromise (line 149) | async mkdirPromise(r,o){return this.mkdirSync(r,o)}
method mkdirSync (line 149) | mkdirSync(r,{mode:o=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(...
method rmdirPromise (line 149) | async rmdirPromise(r,o){return this.rmdirSync(r,o)}
method rmdirSync (line 149) | rmdirSync(r,{recursive:o=!1}={}){if(this.readOnly)throw ar.EROFS(`rmdir ...
method hydrateDirectory (line 149) | hydrateDirectory(r){let o=this.libzip.dir.add(this.zip,V.relative(Bt.roo...
method linkPromise (line 149) | async linkPromise(r,o){return this.linkSync(r,o)}
method linkSync (line 149) | linkSync(r,o){throw ar.EOPNOTSUPP(`link '${r}' -> '${o}'`)}
method symlinkPromise (line 149) | async symlinkPromise(r,o){return this.symlinkSync(r,o)}
method symlinkSync (line 149) | symlinkSync(r,o){if(this.readOnly)throw ar.EROFS(`symlink '${r}' -> '${o...
method readFilePromise (line 149) | async readFilePromise(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);l...
method readFileSync (line 149) | readFileSync(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);let a=this...
method readFileBuffer (line 149) | readFileBuffer(r,o={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdT...
method readdirPromise (line 149) | async readdirPromise(r,o){return this.readdirSync(r,o)}
method readdirSync (line 149) | readdirSync(r,o){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this...
method readlinkPromise (line 149) | async readlinkPromise(r){let o=this.prepareReadlink(r);return(await this...
method readlinkSync (line 149) | readlinkSync(r){let o=this.prepareReadlink(r);return this.getFileSource(...
method prepareReadlink (line 149) | prepareReadlink(r){let o=this.resolveFilename(`readlink '${r}'`,r,!1);if...
method truncatePromise (line 149) | async truncatePromise(r,o=0){let a=this.resolveFilename(`open '${r}'`,r)...
method truncateSync (line 149) | truncateSync(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.e...
method ftruncatePromise (line 149) | async ftruncatePromise(r,o){return this.truncatePromise(this.fdToPath(r,...
method ftruncateSync (line 149) | ftruncateSync(r,o){return this.truncateSync(this.fdToPath(r,"ftruncateSy...
method watch (line 149) | watch(r,o,a){let n;switch(typeof o){case"function":case"string":case"und...
method watchFile (line 149) | watchFile(r,o,a){let n=V.resolve(Bt.root,r);return ty(this,n,o,a)}
method unwatchFile (line 149) | unwatchFile(r,o){let a=V.resolve(Bt.root,r);return Lg(this,a,o)}
function qle (line 149) | function qle(t,e,r=Buffer.alloc(0),o){let a=new Ji(r),n=I=>I===e||I.star...
function pot (line 149) | function pot(){return P1()}
function hot (line 149) | async function hot(){return P1()}
method constructor (line 149) | constructor(){super(...arguments);this.cwd=ge.String("--cwd",process.cwd...
method execute (line 149) | async execute(){let r=this.args.length>0?`${this.commandName} ${this.arg...
method constructor (line 159) | constructor(e){super(e),this.name="ShellError"}
function got (line 159) | function got(t){if(!Lb.default.scan(t,Ob).isGlob)return!1;try{Lb.default...
function dot (line 159) | function dot(t,{cwd:e,baseFs:r}){return(0,zle.default)(t,{...Xle,cwd:ue....
function lU (line 159) | function lU(t){return Lb.default.scan(t,Ob).isBrace}
function cU (line 159) | function cU(){}
function uU (line 159) | function uU(){for(let t of bd)t.kill()}
function rce (line 159) | function rce(t,e,r,o){return a=>{let n=a[0]instanceof iA.Transform?"pipe...
function nce (line 162) | function nce(t){return e=>{let r=e[0]==="pipe"?new iA.PassThrough:e[0];r...
function Ub (line 162) | function Ub(t,e){return RE.start(t,e)}
function $le (line 162) | function $le(t,e=null){let r=new iA.PassThrough,o=new tce.StringDecoder,...
function ice (line 163) | function ice(t,{prefix:e}){return{stdout:$le(r=>t.stdout.write(`${r}
method constructor (line 165) | constructor(e){this.stream=e}
method close (line 165) | close(){}
method get (line 165) | get(){return this.stream}
method constructor (line 165) | constructor(){this.stream=null}
method close (line 165) | close(){if(this.stream===null)throw new Error("Assertion failed: No stre...
method attach (line 165) | attach(e){this.stream=e}
method get (line 165) | get(){if(this.stream===null)throw new Error("Assertion failed: No stream...
method constructor (line 165) | constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this....
method start (line 165) | static start(e,{stdin:r,stdout:o,stderr:a}){let n=new RE(null,e);return ...
method pipeTo (line 165) | pipeTo(e,r=1){let o=new RE(this,e),a=new AU;return o.pipe=a,o.stdout=thi...
method exec (line 165) | async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe"...
method run (line 165) | async run(){let e=[];for(let o=this;o;o=o.ancestor)e.push(o.exec());retu...
function sce (line 165) | function sce(t,e,r){let o=new ll.PassThrough({autoDestroy:!0});switch(t)...
function Hb (line 165) | function Hb(t,e={}){let r={...t,...e};return r.environment={...t.environ...
function yot (line 165) | async function yot(t,e,r){let o=[],a=new ll.PassThrough;return a.on("dat...
function oce (line 165) | async function oce(t,e,r){let o=t.map(async n=>{let u=await xd(n.args,e,...
function _b (line 165) | function _b(t){return t.match(/[^ \r\n\t]+/g)||[]}
function fce (line 165) | async function fce(t,e,r,o,a=o){switch(t.name){case"$":o(String(process....
function x1 (line 165) | async function x1(t,e,r){if(t.type==="number"){if(Number.isInteger(t.val...
function xd (line 165) | async function xd(t,e,r){let o=new Map,a=[],n=[],u=C=>{n.push(C)},A=()=>...
function k1 (line 165) | function k1(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let o=ue.f...
function Cot (line 165) | function Cot(t,e,r){return o=>{let a=new ll.PassThrough,n=jb(t,e,Hb(r,{s...
function wot (line 165) | function wot(t,e,r){return o=>{let a=new ll.PassThrough,n=jb(t,e,r);retu...
function ace (line 165) | function ace(t,e,r,o){if(e.length===0)return t;{let a;do a=String(Math.r...
function lce (line 165) | async function lce(t,e,r){let o=t,a=null,n=null;for(;o;){let u=o.then?{....
function Iot (line 165) | async function Iot(t,e,r,{background:o=!1}={}){function a(n){let u=["#2E...
function Bot (line 167) | async function Bot(t,e,r,{background:o=!1}={}){let a,n=A=>{a=A,r.variabl...
function jb (line 168) | async function jb(t,e,r){let o=r.backgroundJobs;r.backgroundJobs=[];let ...
function pce (line 168) | function pce(t){switch(t.type){case"variable":return t.name==="@"||t.nam...
function Q1 (line 168) | function Q1(t){switch(t.type){case"redirection":return t.args.some(e=>Q1...
function pU (line 168) | function pU(t){switch(t.type){case"variable":return pce(t);case"number":...
function hU (line 168) | function hU(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(...
function FE (line 168) | async function FE(t,e=[],{baseFs:r=new Tn,builtins:o={},cwd:a=ue.toPorta...
method write (line 171) | write(le,he,Ae){setImmediate(Ae)}
function vot (line 171) | function vot(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[...
function yce (line 171) | function yce(t){if(typeof t=="string")return t;if(Pot(t))return Dot(t,yc...
function kot (line 171) | function kot(t){return t==null?"":xot(t)}
function Qot (line 171) | function Qot(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<...
function Rot (line 171) | function Rot(t,e,r){var o=t.length;return r=r===void 0?o:r,!e&&r>=o?t:Fo...
function jot (line 171) | function jot(t){return Hot.test(t)}
function qot (line 171) | function qot(t){return t.split("")}
function rat (line 171) | function rat(t){return t.match(tat)||[]}
function oat (line 171) | function oat(t){return iat(t)?sat(t):nat(t)}
function Aat (line 171) | function Aat(t){return function(e){e=uat(e);var r=lat(e)?cat(e):void 0,o...
function dat (line 171) | function dat(t){return gat(hat(t).toLowerCase())}
function mat (line 171) | function mat(){var t=0,e=1,r=2,o=3,a=4,n=5,u=6,A=7,p=8,h=9,C=10,I=11,v=1...
function Eat (line 171) | function Eat(){if(Yb)return Yb;if(typeof Intl.Segmenter<"u"){let t=new I...
function Xce (line 171) | function Xce(t,{configuration:e,json:r}){if(!e.get("enableMessageNames")...
function CU (line 171) | function CU(t,{configuration:e,json:r}){let o=Xce(t,{configuration:e,jso...
function TE (line 171) | async function TE({configuration:t,stdout:e,forceError:r},o){let a=await...
method constructor (line 176) | constructor({configuration:r,stdout:o,json:a=!1,forceSectionAlignment:n=...
method start (line 176) | static async start(r,o){let a=new this(r),n=process.emitWarning;process....
method hasErrors (line 176) | hasErrors(){return this.errorCount>0}
method exitCode (line 176) | exitCode(){return this.hasErrors()?1:0}
method getRecommendedLength (line 176) | getRecommendedLength(){let o=this.progressStyle!==null?this.stdout.colum...
method startSectionSync (line 176) | startSectionSync({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u=...
method startSectionPromise (line 176) | async startSectionPromise({reportHeader:r,reportFooter:o,skipIfEmpty:a},...
method startTimerImpl (line 176) | startTimerImpl(r,o,a){return{cb:typeof o=="function"?o:a,reportHeader:()...
method startTimerSync (line 176) | startTimerSync(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return t...
method startTimerPromise (line 176) | async startTimerPromise(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a)...
method reportSeparator (line 176) | reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(nul...
method reportInfo (line 176) | reportInfo(r,o){if(!this.includeInfos)return;this.commit();let a=this.fo...
method reportWarning (line 176) | reportWarning(r,o){if(this.warningCount+=1,!this.includeWarnings)return;...
method reportError (line 176) | reportError(r,o){this.errorCount+=1,this.timerFooter.push(()=>this.repor...
method reportErrorImpl (line 176) | reportErrorImpl(r,o){this.commit();let a=this.formatNameWithHyperlink(r)...
method reportFold (line 176) | reportFold(r,o){if(!uh)return;let a=`${uh.start(r)}${o}${uh.end(r)}`;thi...
method reportProgress (line 176) | reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve...
method reportJson (line 176) | reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}
method finalize (line 176) | async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>...
method writeLine (line 176) | writeLine(r,{truncate:o}={}){this.clearProgress({clear:!0}),this.stdout....
method writeLines (line 177) | writeLines(r,{truncate:o}={}){this.clearProgress({delta:r.length});for(l...
method commit (line 178) | commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let o of r)...
method clearProgress (line 178) | clearProgress({delta:r=0,clear:o=!1}){this.progressStyle!==null&&this.pr...
method writeProgress (line 178) | writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==nu...
method refreshProgress (line 179) | refreshProgress({delta:r=0,force:o=!1}={}){let a=!1,n=!1;if(o||this.prog...
method truncate (line 179) | truncate(r,{truncate:o}={}){return this.progressStyle===null&&(o=!1),typ...
method formatName (line 179) | formatName(r){return this.includeNames?Xce(r,{configuration:this.configu...
method formatPrefix (line 179) | formatPrefix(r,o){return this.includePrefix?`${Mt(this.configuration,"\u...
method formatNameWithHyperlink (line 179) | formatNameWithHyperlink(r){return this.includeNames?CU(r,{configuration:...
method formatIndent (line 179) | formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ...
function Ah (line 179) | async function Ah(t,e,r,o=[]){if(process.platform==="win32"){let a=`@got...
function tue (line 181) | async function tue(t){let e=await Ot.tryFind(t);if(e?.packageManager){le...
function L1 (line 181) | async function L1({project:t,locator:e,binFolder:r,ignoreCorepack:o,life...
function Pat (line 181) | async function Pat(t,e,{configuration:r,report:o,workspace:a=null,locato...
function Sat (line 189) | async function Sat(t,e,{project:r}){let o=r.tryWorkspaceByLocator(t);if(...
function Vb (line 189) | async function Vb(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){ret...
function wU (line 189) | async function wU(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){ret...
function bat (line 189) | async function bat(t,{binFolder:e,cwd:r,lifecycleScript:o}){let a=await ...
function rue (line 189) | async function rue(t,{project:e,binFolder:r,cwd:o,lifecycleScript:a}){le...
function nue (line 189) | async function nue(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u}){return await...
function IU (line 189) | function IU(t,e){return t.manifest.scripts.has(e)}
function iue (line 189) | async function iue(t,e,{cwd:r,report:o}){let{configuration:a}=t.project,...
function xat (line 190) | async function xat(t,e,r){IU(t,e)&&await iue(t,e,r)}
function BU (line 190) | function BU(t){let e=V.extname(t);if(e.match(/\.[cm]?[jt]sx?$/))return!0...
function zb (line 190) | async function zb(t,{project:e}){let r=e.configuration,o=new Map,a=e.sto...
function sue (line 190) | async function sue(t){return await zb(t.anchoredLocator,{project:t.proje...
function vU (line 190) | async function vU(t,e){await Promise.all(Array.from(e,([r,[,o,a]])=>a?Ah...
function oue (line 190) | async function oue(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A,node...
function kat (line 190) | async function kat(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u,packageAccessi...
method constructor (line 190) | constructor(e,r,o){this.src=e,this.dest=r,this.opts=o,this.ondrain=()=>e...
method unpipe (line 190) | unpipe(){this.dest.removeListener("drain",this.ondrain)}
method proxyErrors (line 190) | proxyErrors(){}
method end (line 190) | end(){this.unpipe(),this.opts.end&&this.dest.end()}
method unpipe (line 190) | unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}
method constructor (line 190) | constructor(e,r,o){super(e,r,o),this.proxyErrors=a=>r.emit("error",a),e....
method constructor (line 190) | constructor(e){super(),this[$b]=!1,this[M1]=!1,this.pipes=[],this.buffer...
method bufferLength (line 190) | get bufferLength(){return this[Fs]}
method encoding (line 190) | get encoding(){return this[ka]}
method encoding (line 190) | set encoding(e){if(this[Fo])throw new Error("cannot set encoding in obje...
method setEncoding (line 190) | setEncoding(e){this.encoding=e}
method objectMode (line 190) | get objectMode(){return this[Fo]}
method objectMode (line 190) | set objectMode(e){this[Fo]=this[Fo]||!!e}
method async (line 190) | get async(){return this[Uf]}
method async (line 190) | set async(e){this[Uf]=this[Uf]||!!e}
method write (line 190) | write(e,r,o){if(this[Lf])throw new Error("write after end");if(this[Ro])...
method read (line 190) | read(e){if(this[Ro])return null;if(this[Fs]===0||e===0||e>this[Fs])retur...
method [fue] (line 190) | [fue](e,r){return e===r.length||e===null?this[SU]():(this.buffer[0]=r.sl...
method end (line 190) | end(e,r,o){return typeof e=="function"&&(o=e,e=null),typeof r=="function...
method [LE] (line 190) | [LE](){this[Ro]||(this[M1]=!1,this[$b]=!0,this.emit("resume"),this.buffe...
method resume (line 190) | resume(){return this[LE]()}
method pause (line 190) | pause(){this[$b]=!1,this[M1]=!0}
method destroyed (line 190) | get destroyed(){return this[Ro]}
method flowing (line 190) | get flowing(){return this[$b]}
method paused (line 190) | get paused(){return this[M1]}
method [PU] (line 190) | [PU](e){this[Fo]?this[Fs]+=1:this[Fs]+=e.length,this.buffer.push(e)}
method [SU] (line 190) | [SU](){return this.buffer.length&&(this[Fo]?this[Fs]-=1:this[Fs]-=this.b...
method [Zb] (line 190) | [Zb](e){do;while(this[pue](this[SU]()));!e&&!this.buffer.length&&!this[L...
method [pue] (line 190) | [pue](e){return e?(this.emit("data",e),this.flowing):!1}
method pipe (line 190) | pipe(e,r){if(this[Ro])return;let o=this[ph];return r=r||{},e===cue.stdou...
method unpipe (line 190) | unpipe(e){let r=this.pipes.find(o=>o.dest===e);r&&(this.pipes.splice(thi...
method addListener (line 190) | addListener(e,r){return this.on(e,r)}
method on (line 190) | on(e,r){let o=super.on(e,r);return e==="data"&&!this.pipes.length&&!this...
method emittedEnd (line 190) | get emittedEnd(){return this[ph]}
method [Of] (line 190) | [Of](){!this[Jb]&&!this[ph]&&!this[Ro]&&this.buffer.length===0&&this[Lf]...
method emit (line 190) | emit(e,r,...o){if(e!=="error"&&e!=="close"&&e!==Ro&&this[Ro])return;if(e...
method [bU] (line 190) | [bU](e){for(let o of this.pipes)o.dest.write(e)===!1&&this.pause();let r...
method [hue] (line 190) | [hue](){this[ph]||(this[ph]=!0,this.readable=!1,this[Uf]?U1(()=>this[xU]...
method [xU] (line 190) | [xU](){if(this[Mf]){let r=this[Mf].end();if(r){for(let o of this.pipes)o...
method collect (line 190) | collect(){let e=[];this[Fo]||(e.dataLength=0);let r=this.promise();retur...
method concat (line 190) | concat(){return this[Fo]?Promise.reject(new Error("cannot concat in obje...
method promise (line 190) | promise(){return new Promise((e,r)=>{this.on(Ro,()=>r(new Error("stream ...
method [Fat] (line 190) | [Fat](){return{next:()=>{let r=this.read();if(r!==null)return Promise.re...
method [Rat] (line 190) | [Rat](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}
method destroy (line 190) | destroy(e){return this[Ro]?(e?this.emit("error",e):this.emit(Ro),this):(...
method isStream (line 190) | static isStream(e){return!!e&&(e instanceof due||e instanceof uue||e ins...
method constructor (line 190) | constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.e...
method name (line 190) | get name(){return"ZlibError"}
method constructor (line 190) | constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid ...
method close (line 190) | close(){this[ti]&&(this[ti].close(),this[ti]=null,this.emit("close"))}
method reset (line 190) | reset(){if(!this[ME])return NU(this[ti],"zlib binding closed"),this[ti]....
method flush (line 190) | flush(e){this.ended||(typeof e!="number"&&(e=this[YU]),this.write(Object...
method end (line 190) | end(e,r,o){return e&&this.write(e,r),this.flush(this[wue]),this[RU]=!0,s...
method ended (line 190) | get ended(){return this[RU]}
method write (line 190) | write(e,r,o){if(typeof r=="function"&&(o=r,r="utf8"),typeof e=="string"&...
method [Qd] (line 190) | [Qd](e){return super.write(e)}
method constructor (line 190) | constructor(e,r){e=e||{},e.flush=e.flush||kd.Z_NO_FLUSH,e.finishFlush=e....
method params (line 190) | params(e,r){if(!this[ME]){if(!this[ti])throw new Error("cannot switch pa...
method constructor (line 190) | constructor(e){super(e,"Deflate")}
method constructor (line 190) | constructor(e){super(e,"Inflate")}
method constructor (line 190) | constructor(e){super(e,"Gzip"),this[TU]=e&&!!e.portable}
method [Qd] (line 190) | [Qd](e){return this[TU]?(this[TU]=!1,e[9]=255,super[Qd](e)):super[Qd](e)}
method constructor (line 190) | constructor(e){super(e,"Gunzip")}
method constructor (line 190) | constructor(e){super(e,"DeflateRaw")}
method constructor (line 190) | constructor(e){super(e,"InflateRaw")}
method constructor (line 190) | constructor(e){super(e,"Unzip")}
method constructor (line 190) | constructor(e,r){e=e||{},e.flush=e.flush||kd.BROTLI_OPERATION_PROCESS,e....
method constructor (line 190) | constructor(e){super(e,"BrotliCompress")}
method
Condensed preview — 149 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,421K chars).
[
{
"path": ".dockerignore",
"chars": 7,
"preview": "target/"
},
{
"path": ".github/npm_publish.sh",
"chars": 669,
"preview": "#!/bin/sh\n\n# abort on any non-zero exit code\nset -e\n\n# ensure required environment variables are defined\nif [ -z \"$VERSI"
},
{
"path": ".github/workflows/ci.yml",
"chars": 3607,
"preview": "name: ci\n\non:\n push:\n branches: [\"main\"]\n tags: [\"[0-9]+.[0-9]+.[0-9]+\"]\n pull_request:\n branches: [\"main\"]\n\n"
},
{
"path": ".github/workflows/docker.yml",
"chars": 1633,
"preview": "name: docker\n\non:\n push:\n branches: [\"main\"]\n tags: [\"[0-9]+.[0-9]+.[0-9]+\"]\n pull_request:\n branches: [\"main"
},
{
"path": ".github/workflows/npm.yml",
"chars": 8876,
"preview": "name: npm\nenv:\n DEBUG: napi:*\n APP_NAME: deno-kv-napi\n MACOSX_DEPLOYMENT_TARGET: '10.13'\n'on':\n push:\n branches:\n"
},
{
"path": ".gitignore",
"chars": 18,
"preview": "target/\n/*.sqlite*"
},
{
"path": ".rustfmt.toml",
"chars": 47,
"preview": "max_width = 80\ntab_spaces = 2\nedition = \"2021\"\n"
},
{
"path": "Cargo.toml",
"chars": 1689,
"preview": "[workspace]\nmembers = [\"denokv\", \"proto\", \"remote\", \"sqlite\", \"timemachine\"]\nresolver = \"2\"\n\n[workspace.package]\nlicense"
},
{
"path": "Dockerfile",
"chars": 521,
"preview": "FROM rust:1.83-bookworm as builder\n\nRUN apt-get update && apt-get install -y protobuf-compiler\n\nWORKDIR /usr/src/denokv\n"
},
{
"path": "LICENSE",
"chars": 1073,
"preview": "MIT License\n\nCopyright (c) 2023 the Deno authors\n\nPermission is hereby granted, free of charge, to any person obtaining "
},
{
"path": "README.md",
"chars": 7920,
"preview": "# denokv\n\nA self-hosted backend for [Deno KV](https://deno.com/kv), the JavaScript first key-value database:\n\n- Seamless"
},
{
"path": "denokv/Cargo.toml",
"chars": 1290,
"preview": "[package]\nname = \"denokv\"\nversion = \"0.13.0\"\ndescription = \"A self-hosted backend for Deno KV\"\nedition.workspace = true\n"
},
{
"path": "denokv/config.rs",
"chars": 2733,
"preview": "use std::net::SocketAddr;\n\nuse clap::Parser;\n\n#[derive(Parser)]\npub struct Config {\n /// The path to the SQLite databas"
},
{
"path": "denokv/main.rs",
"chars": 22209,
"preview": "use std::borrow::Cow;\nuse std::io::Write;\nuse std::path::Path;\nuse std::sync::Arc;\n\nuse anyhow::Context;\nuse aws_smithy_"
},
{
"path": "denokv/tests/integration.rs",
"chars": 19963,
"preview": "use std::net::SocketAddr;\nuse std::num::NonZeroU32;\nuse std::path::PathBuf;\nuse std::process::Stdio;\nuse std::time::Dura"
},
{
"path": "npm/LICENSE",
"chars": 1072,
"preview": "MIT License\n\nCopyright (c) 2023 the Deno authors\n\nPermission is hereby granted, free of charge, to any person obtaining "
},
{
"path": "npm/README.md",
"chars": 9500,
"preview": "# `@deno/kv`\n\n\n"
},
{
"path": "npm/deno.jsonc",
"chars": 591,
"preview": "{\n \"lint\": {\n \"exclude\": [\n \"src/proto\", // generated\n ],\n \"include\": [\n \""
},
{
"path": "npm/napi/.editorconfig",
"chars": 327,
"preview": "# EditorConfig helps developers define and maintain consistent\n# coding styles between different editors or IDEs\n# http:"
},
{
"path": "npm/napi/.eslintrc.yml",
"chars": 5440,
"preview": "parser: '@typescript-eslint/parser'\n\nparserOptions:\n ecmaFeatures:\n jsx: true\n ecmaVersion: latest\n sourceType: mo"
},
{
"path": "npm/napi/.gitattributes",
"chars": 364,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n\n*.ts text eol=lf merge=union \n*.tsx text"
},
{
"path": "npm/napi/.gitignore",
"chars": 2029,
"preview": "\n# Created by https://www.toptal.com/developers/gitignore/api/node\n# Edit at https://www.toptal.com/developers/gitignore"
},
{
"path": "npm/napi/.prettierignore",
"chars": 12,
"preview": "target\n.yarn"
},
{
"path": "npm/napi/.taplo.toml",
"chars": 179,
"preview": "exclude = [\"node_modules/**/*.toml\"]\n\n# https://taplo.tamasfe.dev/configuration/formatter-options.html\n[formatting]\nalig"
},
{
"path": "npm/napi/.yarn/releases/yarn-4.0.1.cjs",
"chars": 2730872,
"preview": "#!/usr/bin/env node\n/* eslint-disable */\n//prettier-ignore\n(()=>{var n_e=Object.create;var OR=Object.defineProperty;var "
},
{
"path": "npm/napi/.yarnrc.yml",
"chars": 114,
"preview": "nodeLinker: node-modules\n\nnpmAuditRegistry: \"https://registry.npmjs.org\"\n\nyarnPath: .yarn/releases/yarn-4.0.1.cjs\n"
},
{
"path": "npm/napi/Cargo.toml",
"chars": 623,
"preview": "[workspace]\n\n[package]\nauthors = []\nedition = \"2021\"\nname = \"deno-kv-napi\"\nversion = \"0.0.0\" # never published\n\n[lib"
},
{
"path": "npm/napi/__test__/index.spec.ts",
"chars": 680,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport test from 'ava'\n\nimport { open, close, ato"
},
{
"path": "npm/napi/build.rs",
"chars": 134,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nextern crate napi_build;\n\nfn main() {\n napi_buil"
},
{
"path": "npm/napi/index.d.ts",
"chars": 1005,
"preview": "/* tslint:disable */\n/* eslint-disable */\n\n/* auto-generated by NAPI-RS */\n\nexport function open(path: string, inMemory:"
},
{
"path": "npm/napi/index.js",
"chars": 7691,
"preview": "/* tslint:disable */\n/* eslint-disable */\n/* prettier-ignore */\n\n/* auto-generated by NAPI-RS */\n\nconst { existsSync, re"
},
{
"path": "npm/napi/npm/darwin-arm64/README.md",
"chars": 86,
"preview": "# `@deno/kv-darwin-arm64`\n\nThis is the **aarch64-apple-darwin** binary for `@deno/kv`\n"
},
{
"path": "npm/napi/npm/darwin-arm64/package.json",
"chars": 701,
"preview": "{\n \"name\": \"@deno/kv-darwin-arm64\",\n \"version\": \"0.0.0-local\",\n \"os\": [\n \"darwin\"\n ],\n \"cpu\": [\n \"arm64\"\n ],"
},
{
"path": "npm/napi/npm/darwin-x64/README.md",
"chars": 83,
"preview": "# `@deno/kv-darwin-x64`\n\nThis is the **x86_64-apple-darwin** binary for `@deno/kv`\n"
},
{
"path": "npm/napi/npm/darwin-x64/package.json",
"chars": 693,
"preview": "{\n \"name\": \"@deno/kv-darwin-x64\",\n \"version\": \"0.0.0-local\",\n \"os\": [\n \"darwin\"\n ],\n \"cpu\": [\n \"x64\"\n ],\n \""
},
{
"path": "npm/napi/npm/linux-x64-gnu/README.md",
"chars": 91,
"preview": "# `@deno/kv-linux-x64-gnu`\n\nThis is the **x86_64-unknown-linux-gnu** binary for `@deno/kv`\n"
},
{
"path": "npm/napi/npm/linux-x64-gnu/package.json",
"chars": 730,
"preview": "{\n \"name\": \"@deno/kv-linux-x64-gnu\",\n \"version\": \"0.0.0-local\",\n \"os\": [\n \"linux\"\n ],\n \"cpu\": [\n \"x64\"\n ],\n "
},
{
"path": "npm/napi/npm/win32-x64-msvc/README.md",
"chars": 90,
"preview": "# `@deno/kv-win32-x64-msvc`\n\nThis is the **x86_64-pc-windows-msvc** binary for `@deno/kv`\n"
},
{
"path": "npm/napi/npm/win32-x64-msvc/package.json",
"chars": 704,
"preview": "{\n \"name\": \"@deno/kv-win32-x64-msvc\",\n \"version\": \"0.0.0-local\",\n \"os\": [\n \"win32\"\n ],\n \"cpu\": [\n \"x64\"\n ],\n"
},
{
"path": "npm/napi/package.json",
"chars": 2479,
"preview": "{\n \"name\": \"@deno/kv\",\n \"version\": \"0.0.0-local\",\n \"description\": \"A Deno KV client library optimized for Node.js\",\n "
},
{
"path": "npm/napi/src/lib.rs",
"chars": 10218,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\n#![deny(clippy::all)]\nuse denokv_proto::datapath "
},
{
"path": "npm/napi/tsconfig.json",
"chars": 314,
"preview": "{\n \"compilerOptions\": {\n \"target\": \"ES2018\",\n \"strict\": true,\n \"moduleResolution\": \"node\",\n \"module\": \"Comm"
},
{
"path": "npm/src/bytes.ts",
"chars": 2327,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nexport {\n decodeHex,\n encodeHex,\n} from \"https:"
},
{
"path": "npm/src/check.ts",
"chars": 3119,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { KvKey } from \"./kv_types.ts\";\n\nexport fu"
},
{
"path": "npm/src/e2e.ts",
"chars": 21577,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\n// deno-lint-ignore-file no-explicit-any\nimport {"
},
{
"path": "npm/src/e2e_test.ts",
"chars": 4232,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { chunk } from \"https://deno.land/std@0.20"
},
{
"path": "npm/src/in_memory.ts",
"chars": 14824,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { assertInstanceOf } from \"https://deno.la"
},
{
"path": "npm/src/kv_connect_api.ts",
"chars": 8396,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { encodeBinary as encodeWatch } from \"./pr"
},
{
"path": "npm/src/kv_key.ts",
"chars": 5479,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport {\n checkEnd,\n computeBigintMinimumNumber"
},
{
"path": "npm/src/kv_key_test.ts",
"chars": 2328,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { KvKey } from \"./kv_types.ts\";\nimport { p"
},
{
"path": "npm/src/kv_types.ts",
"chars": 22019,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\n// deno-lint-ignore no-explicit-any\n(Symbol as an"
},
{
"path": "npm/src/kv_u64.ts",
"chars": 1195,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nconst max = (1n << 64n) - 1n;\n\nexport class _KvU6"
},
{
"path": "npm/src/kv_u64_test.ts",
"chars": 1294,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { assertEquals } from \"https://deno.land/s"
},
{
"path": "npm/src/kv_util.ts",
"chars": 14487,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { decodeHex, encodeHex } from \"./bytes.ts\""
},
{
"path": "npm/src/napi_based.ts",
"chars": 7815,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport {\n checkOptionalBoolean,\n checkOptionalF"
},
{
"path": "npm/src/native.ts",
"chars": 730,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { KvService } from \"./kv_types.ts\";\n\n/**\n "
},
{
"path": "npm/src/npm.ts",
"chars": 5588,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport {\n check,\n checkOptionalBoolean,\n check"
},
{
"path": "npm/src/proto/index.ts",
"chars": 94,
"preview": "// @ts-nocheck\nimport * as messages from \"./messages/index.ts\";\n\nexport type {\n messages,\n};\n"
},
{
"path": "npm/src/proto/messages/com/deno/index.ts",
"chars": 76,
"preview": "// @ts-nocheck\nimport * as kv from \"./kv/index.ts\";\n\nexport type {\n kv,\n};\n"
},
{
"path": "npm/src/proto/messages/com/deno/kv/backup/BackupKvMutationKind.ts",
"chars": 532,
"preview": "// @ts-nocheck\nexport declare namespace $.com.deno.kv.backup {\n export type BackupKvMutationKind =\n | \"MK_UNSPECIFIE"
},
{
"path": "npm/src/proto/messages/com/deno/kv/backup/BackupKvPair.ts",
"chars": 2716,
"preview": "// @ts-nocheck\nimport {\n tsValueToJsonValueFns,\n jsonValueToTsValueFns,\n} from \"../../../../../runtime/json/scalar.ts\""
},
{
"path": "npm/src/proto/messages/com/deno/kv/backup/BackupMutationRange.ts",
"chars": 3222,
"preview": "// @ts-nocheck\nimport {\n Type as BackupReplicationLogEntry,\n encodeJson as encodeJson_1,\n decodeJson as decodeJson_1,"
},
{
"path": "npm/src/proto/messages/com/deno/kv/backup/BackupReplicationLogEntry.ts",
"chars": 5767,
"preview": "// @ts-nocheck\nimport {\n Type as BackupKvMutationKind,\n name2num,\n num2name,\n} from \"./BackupKvMutationKind.ts\";\nimpo"
},
{
"path": "npm/src/proto/messages/com/deno/kv/backup/BackupSnapshotRange.ts",
"chars": 3174,
"preview": "// @ts-nocheck\nimport {\n Type as BackupKvPair,\n encodeJson as encodeJson_1,\n decodeJson as decodeJson_1,\n encodeBina"
},
{
"path": "npm/src/proto/messages/com/deno/kv/backup/index.ts",
"chars": 400,
"preview": "// @ts-nocheck\nexport type { Type as BackupSnapshotRange } from \"./BackupSnapshotRange.ts\";\nexport type { Type as Backup"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/AtomicWrite.ts",
"chars": 4151,
"preview": "// @ts-nocheck\nimport {\n Type as Check,\n encodeJson as encodeJson_1,\n decodeJson as decodeJson_1,\n encodeBinary as e"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/AtomicWriteOutput.ts",
"chars": 3879,
"preview": "// @ts-nocheck\nimport {\n Type as AtomicWriteStatus,\n name2num,\n num2name,\n} from \"./AtomicWriteStatus.ts\";\nimport {\n "
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/AtomicWriteStatus.ts",
"chars": 513,
"preview": "// @ts-nocheck\nexport declare namespace $.com.deno.kv.datapath {\n export type AtomicWriteStatus =\n | \"AW_UNSPECIFIED"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/Check.ts",
"chars": 2748,
"preview": "// @ts-nocheck\nimport {\n tsValueToJsonValueFns,\n jsonValueToTsValueFns,\n} from \"../../../../../runtime/json/scalar.ts\""
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/Enqueue.ts",
"chars": 4211,
"preview": "// @ts-nocheck\nimport {\n tsValueToJsonValueFns,\n jsonValueToTsValueFns,\n} from \"../../../../../runtime/json/scalar.ts\""
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/KvEntry.ts",
"chars": 4318,
"preview": "// @ts-nocheck\nimport {\n Type as ValueEncoding,\n name2num,\n num2name,\n} from \"./ValueEncoding.ts\";\nimport {\n tsValue"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/KvValue.ts",
"chars": 3042,
"preview": "// @ts-nocheck\nimport {\n Type as ValueEncoding,\n name2num,\n num2name,\n} from \"./ValueEncoding.ts\";\nimport {\n tsValue"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/Mutation.ts",
"chars": 4557,
"preview": "// @ts-nocheck\nimport {\n Type as KvValue,\n encodeJson as encodeJson_1,\n decodeJson as decodeJson_1,\n encodeBinary as"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/MutationType.ts",
"chars": 505,
"preview": "// @ts-nocheck\nexport declare namespace $.com.deno.kv.datapath {\n export type MutationType =\n | \"M_UNSPECIFIED\"\n "
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/ReadRange.ts",
"chars": 3902,
"preview": "// @ts-nocheck\nimport {\n tsValueToJsonValueFns,\n jsonValueToTsValueFns,\n} from \"../../../../../runtime/json/scalar.ts\""
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/ReadRangeOutput.ts",
"chars": 2352,
"preview": "// @ts-nocheck\nimport {\n Type as KvEntry,\n encodeJson as encodeJson_1,\n decodeJson as decodeJson_1,\n encodeBinary as"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/SnapshotRead.ts",
"chars": 2331,
"preview": "// @ts-nocheck\nimport {\n Type as ReadRange,\n encodeJson as encodeJson_1,\n decodeJson as decodeJson_1,\n encodeBinary "
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/SnapshotReadOutput.ts",
"chars": 4928,
"preview": "// @ts-nocheck\nimport {\n Type as ReadRangeOutput,\n encodeJson as encodeJson_1,\n decodeJson as decodeJson_1,\n encodeB"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/SnapshotReadStatus.ts",
"chars": 439,
"preview": "// @ts-nocheck\nexport declare namespace $.com.deno.kv.datapath {\n export type SnapshotReadStatus =\n | \"SR_UNSPECIFIE"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/ValueEncoding.ts",
"chars": 436,
"preview": "// @ts-nocheck\nexport declare namespace $.com.deno.kv.datapath {\n export type ValueEncoding =\n | \"VE_UNSPECIFIED\"\n "
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/Watch.ts",
"chars": 2249,
"preview": "// @ts-nocheck\nimport {\n Type as WatchKey,\n encodeJson as encodeJson_1,\n decodeJson as decodeJson_1,\n encodeBinary a"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/WatchKey.ts",
"chars": 2093,
"preview": "// @ts-nocheck\nimport {\n tsValueToJsonValueFns,\n jsonValueToTsValueFns,\n} from \"../../../../../runtime/json/scalar.ts\""
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/WatchKeyOutput.ts",
"chars": 3119,
"preview": "// @ts-nocheck\nimport {\n Type as KvEntry,\n encodeJson as encodeJson_1,\n decodeJson as decodeJson_1,\n encodeBinary as"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/WatchOutput.ts",
"chars": 3279,
"preview": "// @ts-nocheck\nimport {\n Type as SnapshotReadStatus,\n name2num,\n num2name,\n} from \"./SnapshotReadStatus.ts\";\nimport {"
},
{
"path": "npm/src/proto/messages/com/deno/kv/datapath/index.ts",
"chars": 1184,
"preview": "// @ts-nocheck\nexport type { Type as SnapshotRead } from \"./SnapshotRead.ts\";\nexport type { Type as SnapshotReadOutput }"
},
{
"path": "npm/src/proto/messages/com/deno/kv/index.ts",
"chars": 149,
"preview": "// @ts-nocheck\nimport * as backup from \"./backup/index.ts\";\nimport * as datapath from \"./datapath/index.ts\";\n\nexport typ"
},
{
"path": "npm/src/proto/messages/com/index.ts",
"chars": 82,
"preview": "// @ts-nocheck\nimport * as deno from \"./deno/index.ts\";\n\nexport type {\n deno,\n};\n"
},
{
"path": "npm/src/proto/messages/index.ts",
"chars": 79,
"preview": "// @ts-nocheck\nimport * as com from \"./com/index.ts\";\n\nexport type {\n com,\n};\n"
},
{
"path": "npm/src/proto/runtime/Long.ts",
"chars": 3074,
"preview": "export const UINT16_MAX = 0xFFFF;\nexport const UINT32_MAX = 0xFFFFFFFF;\n\nexport default class Long extends Uint32Array {"
},
{
"path": "npm/src/proto/runtime/array.ts",
"chars": 683,
"preview": "// @ts-ignore\nexport type PojoSet<T extends string | number> = { [key in T]: T };\nexport function toPojoSet<T extends st"
},
{
"path": "npm/src/proto/runtime/async/async-generator.ts",
"chars": 309,
"preview": "export async function* fromSingle<T>(value: T): AsyncGenerator<T> {\n yield value;\n}\n\nexport async function first<T>(\n "
},
{
"path": "npm/src/proto/runtime/async/event-buffer.ts",
"chars": 1850,
"preview": "import { defer, Deferred } from \"./observer.ts\";\n\nexport interface EventBuffer<T> {\n push(value: T): void;\n error(erro"
},
{
"path": "npm/src/proto/runtime/async/event-emitter.ts",
"chars": 1064,
"preview": "export interface EventEmitter<Events extends Record<string, any>> {\n emit<Type extends keyof Events>(type: Type, event:"
},
{
"path": "npm/src/proto/runtime/async/observer.ts",
"chars": 2052,
"preview": "import { removeItem } from \"../array.ts\";\n\nexport interface Observer<T> {\n next(value: T): void;\n error(exception?: an"
},
{
"path": "npm/src/proto/runtime/async/wait.ts",
"chars": 120,
"preview": "export default function wait(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"
},
{
"path": "npm/src/proto/runtime/base64.ts",
"chars": 2029,
"preview": "// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.\n\nconst base64abc = [\n \"A\",\n \"B\",\n \"C\",\n \""
},
{
"path": "npm/src/proto/runtime/client-devtools.ts",
"chars": 5489,
"preview": "import type { RpcClientImpl } from \"./rpc.ts\";\nimport {\n createEventEmitter,\n EventEmitter,\n Off,\n} from \"./async/eve"
},
{
"path": "npm/src/proto/runtime/json/scalar.ts",
"chars": 2664,
"preview": "import { encode as base64Encode, decode as base64Decode } from \"../base64.ts\";\n\ntype TsValueToJsonValue<T> = (tsValue: T"
},
{
"path": "npm/src/proto/runtime/rpc.ts",
"chars": 3689,
"preview": "import { createEventBuffer } from \"./async/event-buffer.ts\";\nimport { defer } from \"./async/observer.ts\";\n\nexport type M"
},
{
"path": "npm/src/proto/runtime/scalar.ts",
"chars": 583,
"preview": "export type ScalarValueTypePath = `.${ScalarValueType}`;\nexport type ScalarValueTypes = Writable<typeof _scalarValueType"
},
{
"path": "npm/src/proto/runtime/wire/deserialize.ts",
"chars": 1818,
"preview": "import Long from \"../Long.ts\";\nimport { WireMessage, WireType } from \"./index.ts\";\nimport { decode } from \"./varint.ts\";"
},
{
"path": "npm/src/proto/runtime/wire/index.ts",
"chars": 881,
"preview": "import Long from \"../Long.ts\";\n\nexport type WireMessage = [FieldNumber, Field][];\nexport type FieldNumber = number;\nexpo"
},
{
"path": "npm/src/proto/runtime/wire/scalar.ts",
"chars": 11838,
"preview": "import Long from \"../Long.ts\";\nimport { decode as decodeVarint, encode as encodeVarint } from \"./varint.ts\";\nimport { de"
},
{
"path": "npm/src/proto/runtime/wire/serialize.ts",
"chars": 1422,
"preview": "import { WireMessage, WireType } from \"./index.ts\";\nimport { encode } from \"./varint.ts\";\n\nexport default function seria"
},
{
"path": "npm/src/proto/runtime/wire/varint.ts",
"chars": 1349,
"preview": "import Long from \"../Long.ts\";\n\nexport function encode(value: number | Long): Uint8Array {\n const result: number[] = []"
},
{
"path": "npm/src/proto/runtime/wire/zigzag.ts",
"chars": 811,
"preview": "import Long from \"../Long.ts\";\n\nexport function encode<T extends number | Long>(value: T): T {\n if (value instanceof Lo"
},
{
"path": "npm/src/proto_based.ts",
"chars": 9398,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { decodeHex, encodeHex, equalBytes } from "
},
{
"path": "npm/src/remote.ts",
"chars": 16779,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { ByteReader } from \"./bytes.ts\";\nimport {"
},
{
"path": "npm/src/scripts/build_npm.ts",
"chars": 5012,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { join } from \"https://deno.land/std@0.208"
},
{
"path": "npm/src/scripts/generate_napi_index.ts",
"chars": 3838,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { NAPI_FUNCTIONS } from \"../napi_based.ts\""
},
{
"path": "npm/src/scripts/process.ts",
"chars": 1677,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { TextLineStream } from \"https://deno.land"
},
{
"path": "npm/src/sleep.ts",
"chars": 998,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nexport function sleep(ms: number) {\n return new "
},
{
"path": "npm/src/unraw_watch_stream.ts",
"chars": 1963,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { KvEntryMaybe } from \"./kv_types.ts\";\nimp"
},
{
"path": "npm/src/v8.ts",
"chars": 4867,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\n// https://chromium.googlesource.com/v8/v8/+/refs"
},
{
"path": "npm/src/v8_test.ts",
"chars": 851,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nimport { decodeV8, encodeV8 } from \"./v8.ts\";\nimp"
},
{
"path": "proto/Cargo.toml",
"chars": 586,
"preview": "[package]\nname = \"denokv_proto\"\ndescription = \"Fundamental types, traits, and protobuf models for denokv\"\nversion = \"0.1"
},
{
"path": "proto/README.md",
"chars": 342,
"preview": "# denokv_proto\n\nThe `denokv_proto` crate provides foundational types and structures related to\nDeno KV protocol.\n\nIt con"
},
{
"path": "proto/build.rs",
"chars": 2063,
"preview": "// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.\n\nuse std::io;\n\n#[cfg(feature = \"build_protos\""
},
{
"path": "proto/codec.rs",
"chars": 14316,
"preview": "// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.\n// Ported from https://github.com/foundationd"
},
{
"path": "proto/convert.rs",
"chars": 10279,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nuse std::num::NonZeroU32;\n\nuse crate::datapath as"
},
{
"path": "proto/interface.rs",
"chars": 13877,
"preview": "// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.\n\nuse std::borrow::Cow;\nuse std::cmp::Ordering"
},
{
"path": "proto/kv-connect.md",
"chars": 25741,
"preview": "# KV Connect protocol\n\nThe KV Connect protocol is the protocol used by the Deno CLI (and other third\nparty clients) to c"
},
{
"path": "proto/lib.rs",
"chars": 353,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nmod codec;\nmod convert;\nmod interface;\nmod limits"
},
{
"path": "proto/limits.rs",
"chars": 723,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\npub const MAX_WRITE_KEY_SIZE_BYTES: usize = 2048;"
},
{
"path": "proto/protobuf/com.deno.kv.backup.rs",
"chars": 2687,
"preview": "// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.\n\n// Generated by prost-build, enable the `bui"
},
{
"path": "proto/protobuf/com.deno.kv.datapath.rs",
"chars": 14198,
"preview": "// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.\n\n// Generated by prost-build, enable the `bui"
},
{
"path": "proto/protobuf.rs",
"chars": 308,
"preview": "// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.\n\n// Generated code, disable lints\n#[allow(cli"
},
{
"path": "proto/schema/backup.proto",
"chars": 724,
"preview": "// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.\n\nsyntax = \"proto3\";\n\npackage com.deno.kv.back"
},
{
"path": "proto/schema/datapath.proto",
"chars": 7067,
"preview": "// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.\n\nsyntax = \"proto3\";\n\npackage com.deno.kv.data"
},
{
"path": "proto/schema/kv-metadata-exchange-request.json",
"chars": 689,
"preview": "{\n \"$id\": \"https://raw.githubusercontent.com/denoland/denokv/main/proto/schemas/kv-metadata-exchange-request.json\",\n \""
},
{
"path": "proto/schema/kv-metadata-exchange-response.v1.json",
"chars": 1332,
"preview": "{\n \"$id\": \"https://deno.land/x/deno/cli/schemas/kv-metadata-exchange-response.v1.json\",\n \"$schema\": \"http://json-schem"
},
{
"path": "proto/schema/kv-metadata-exchange-response.v2.json",
"chars": 1811,
"preview": "{\n \"$id\": \"https://deno.land/x/deno/cli/schemas/kv-metadata-exchange-response.v2.json\",\n \"$schema\": \"http://json-schem"
},
{
"path": "proto/time.rs",
"chars": 699,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\n/// Identical to chrono::Utc::now() but without t"
},
{
"path": "remote/Cargo.toml",
"chars": 744,
"preview": "[package]\nname = \"denokv_remote\"\ndescription = \"Remote (KV Connect) backend for Deno KV\"\nversion = \"0.13.0\"\nedition.work"
},
{
"path": "remote/lib.rs",
"chars": 26791,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nmod time;\n\nuse std::io;\nuse std::ops::Sub;\nuse st"
},
{
"path": "remote/time.rs",
"chars": 699,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\n/// Identical to chrono::Utc::now() but without t"
},
{
"path": "rust-toolchain.toml",
"chars": 66,
"preview": "[toolchain]\nchannel = \"1.88.0\"\ncomponents = [\"rustfmt\", \"clippy\"]\n"
},
{
"path": "scripts/benchmark.ts",
"chars": 5819,
"preview": "/// <reference lib=\"deno.unstable\" />\n\n// Run with: deno run -A --unstable ./scripts/benchmark.ts --path http://127.0.0."
},
{
"path": "sqlite/Cargo.toml",
"chars": 695,
"preview": "[package]\nname = \"denokv_sqlite\"\ndescription = \"SQLite storage backend for Deno KV\"\nversion = \"0.13.0\"\nedition.workspace"
},
{
"path": "sqlite/backend.rs",
"chars": 29185,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nuse std::collections::HashSet;\nuse std::mem::disc"
},
{
"path": "sqlite/lib.rs",
"chars": 22384,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nmod backend;\nmod sum_operand;\nmod time;\n\nuse std:"
},
{
"path": "sqlite/sum_operand.rs",
"chars": 2213,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\nuse denokv_proto::KvValue;\nuse num_bigint::BigInt"
},
{
"path": "sqlite/time.rs",
"chars": 699,
"preview": "// Copyright 2023 the Deno authors. All rights reserved. MIT license.\n\n/// Identical to chrono::Utc::now() but without t"
},
{
"path": "timemachine/Cargo.toml",
"chars": 485,
"preview": "[package]\nname = \"denokv_timemachine\"\ndescription = \"Point-in-time recovery tool for Deno KV\"\nversion = \"0.13.0\"\nedition"
},
{
"path": "timemachine/src/backup.rs",
"chars": 2313,
"preview": "use std::fmt::Display;\n\nuse async_trait::async_trait;\n\nuse denokv_proto::backup::BackupMutationRange;\nuse denokv_proto::"
},
{
"path": "timemachine/src/backup_source_s3.rs",
"chars": 7779,
"preview": "use std::str::Split;\n\nuse anyhow::Context;\nuse async_trait::async_trait;\nuse aws_sdk_s3::operation::get_object::GetObjec"
},
{
"path": "timemachine/src/key_metadata.rs",
"chars": 845,
"preview": "#[derive(Clone, Debug)]\npub struct KeyMetadata {\n pub versionstamp: [u8; 10],\n pub value_encoding: i32,\n pub expire_a"
},
{
"path": "timemachine/src/lib.rs",
"chars": 85,
"preview": "pub mod backup;\npub mod backup_source_s3;\npub mod key_metadata;\npub mod time_travel;\n"
},
{
"path": "timemachine/src/time_travel.rs",
"chars": 23375,
"preview": "use std::sync::atomic::AtomicBool;\nuse std::sync::atomic::Ordering;\nuse std::sync::Arc;\nuse std::time::Duration;\nuse std"
}
]
About this extraction
This page contains the full source code of the denoland/denokv GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 149 files (3.2 MB), approximately 843.3k tokens, and a symbol index with 6562 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.