diff --git a/.cargo/config.clang-musl-x86_64.toml b/.cargo/config.clang-musl-x86_64.toml new file mode 100644 index 0000000000..c37d01539b --- /dev/null +++ b/.cargo/config.clang-musl-x86_64.toml @@ -0,0 +1,35 @@ +# +# Copyright (c) 2024 Elide Technologies, Inc. +# +# Licensed under the MIT license (the "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://opensource.org/license/mit/ +# +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under the License. +# + +[build] +rustflags = [ + # Enforce completely position-independent executables. + "-Crelocation-model=pic", + + # Link with LLD through clang; enable linker plugin LTO. + "-Clinker=clang-19", + "-Clink-arg=-fuse-ld=lld-19", + "-Clinker-plugin-lto", + + # Static linking only on musl. + "-Ctarget-feature=+crt-static", + + # Target CPU. + "-Ctarget-cpu=x86-64-v3", +] + +[env] +ELIDE_ROOT = { value = ".", relative = true } +SQLITE3_STATIC = { value = "1" } +SQLITE3_LIB_DIR = { value = "third_party/sqlite/install/lib", relative = true } +SQLITE3_INCLUDE_DIR = { value = "third_party/sqlite/install/include", relative = true } diff --git a/.cargo/config.x86_64.toml b/.cargo/config.x86_64.toml index c56b9eb2f7..ee5ea29b8a 100644 --- a/.cargo/config.x86_64.toml +++ b/.cargo/config.x86_64.toml @@ -25,9 +25,5 @@ ELIDE_ROOT = { value = ".", relative = true } INCLUDE = { value = "target/include", relative = true } LIB = { value = "target/lib", relative = true } SQLITE3_STATIC = { value = "1" } -BORING_BSSL_PATH = { value = "target/lib/boringssl", relative = true } -BORING_BSSL_INCLUDE_PATH = { value = "target/include", relative = true } -OPENSSL_LIB_DIR = { value = "target/lib", relative = true } -OPENSSL_INCLUDE_DIR = { value = "target/include", relative = true } SQLITE3_LIB_DIR = { value = "target/lib", relative = true } SQLITE3_INCLUDE_DIR = { value = "target/include", relative = true } diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 7969c84934..5f62c49d04 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -5,7 +5,7 @@ FROM mcr.microsoft.com/devcontainers/base:ubuntu-24.04 LABEL org.opencontainers.image.vendor=Elide LABEL org.opencontainers.image.title="Elide Codespace" LABEL org.opencontainers.image.description="Elide runtime within a GitHub Codespace" -LABEL org.opencontainers.image.version=1.0.0-alpha14 +LABEL org.opencontainers.image.version=1.0.0-beta1 LABEL org.opencontainers.image.url=https://github.com/elide-dev/elide LABEL org.opencontainers.image.base.name=mcr.microsoft.com/devcontainers/base LABEL org.opencontainers.image.source=https://github.com/elide-dev/elide/blob/main/.devcontainer/Elide.devcontainer diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 73c427650e..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - env: { - browser: true, - es2021: true, - node: true, - }, - extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"], - overrides: [ - { - env: { - node: true, - }, - files: [".eslintrc.{js,cjs}"], - parserOptions: { - sourceType: "script", - }, - }, - ], - parser: "@typescript-eslint/parser", - parserOptions: { - ecmaVersion: "latest", - sourceType: "module", - }, - plugins: ["@typescript-eslint"], - rules: {}, -} diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index c8b34829eb..847fb8a808 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -172,13 +172,13 @@ Check the `gradle.properties` file at the project root to see all available opti If you are building a JVM application that runs guest code in one of the languages supported by Elide, you can use the Runtime DSL to configure your own embedded polyglot engine: ```kotlin -implementation("dev.elide:elide-graalvm:1.0.0-alpha14") +implementation("dev.elide:elide-graalvm:1.0.0-beta1") ``` or for Groovy scripts: ```groovy -implementation 'dev.elide:elide-graalvm:1.0.0-alpha14' +implementation 'dev.elide:elide-graalvm:1.0.0-beta1' ``` The DSL is used internally by the Elide binaries and by the SSR packages and provides a simplified API to harness the power of the underlying [GraalVM](https://graalvm.org) engine: diff --git a/LICENSES.txt b/.github/LICENSES.txt similarity index 100% rename from LICENSES.txt rename to .github/LICENSES.txt diff --git a/NOTICE.txt b/.github/NOTICE.txt similarity index 100% rename from NOTICE.txt rename to .github/NOTICE.txt diff --git a/.github/workflows/checks.apicheck.yml b/.github/workflows/checks.apicheck.yml index e147ab7c19..c7fb8c3da1 100644 --- a/.github/workflows/checks.apicheck.yml +++ b/.github/workflows/checks.apicheck.yml @@ -94,16 +94,15 @@ jobs: - name: "Setup: Bun" uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: - bun-version-file: .bun-version + bun-version-file: config/bun-version + - name: "Setup: Elide" + uses: elide-dev/setup-elide@990b915b2974a70e7654acb1303607b4cd1d3538 # v2 + with: + version: "1.0.0-alpha15" # unlisted (interim) - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "10.5.2" - run_install: | - - recursive: true - args: [--frozen-lockfile, --strict-peer-dependencies] - - name: "Setup: Yarn" - run: pnpm install -g yarn@1.22.19 + version: "10.6.2" - name: "Setup: GraalVM (Java 23)" uses: graalvm/setup-graalvm@01ed653ac833fe80569f1ef9f25585ba2811baab # v1.3.3 with: @@ -124,11 +123,11 @@ jobs: BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: - cache-read-only: true + cache-read-only: false cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} - name: "Analysis: API Check" run: | - ./gradlew apiCheck \ + ./gradlew -Pelide.abiValidate=true apiCheck \ -x test \ -x nativeCompile \ -x nativeOptimizedCompile \ diff --git a/.github/workflows/checks.dependency-review.yml b/.github/workflows/checks.dependency-review.yml index 420c786701..5e24e4932f 100644 --- a/.github/workflows/checks.dependency-review.yml +++ b/.github/workflows/checks.dependency-review.yml @@ -14,8 +14,26 @@ name: "Dependencies" "on": - workflow_dispatch: {} - workflow_call: {} + workflow_dispatch: + inputs: + head-ref: + required: true + type: string + description: "Head Ref" + base-ref: + required: false + type: string + default: 'main' + description: "Main Ref" + workflow_call: + inputs: + head-ref: + required: true + type: string + base-ref: + required: false + type: string + default: 'main' permissions: contents: read @@ -49,4 +67,5 @@ jobs: license-check: true vulnerability-check: true fail-on-severity: "low" - base-ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || 'v3' }} + head-ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || inputs.head-ref }} + base-ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || inputs.base-ref }} diff --git a/.github/workflows/checks.detekt.yml b/.github/workflows/checks.detekt.yml index 717e728379..47a98ee015 100644 --- a/.github/workflows/checks.detekt.yml +++ b/.github/workflows/checks.detekt.yml @@ -90,7 +90,7 @@ jobs: BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: - cache-read-only: true + cache-read-only: false cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} - name: "Analysis: Detekt" run: | diff --git a/.github/workflows/checks.formatting.yml b/.github/workflows/checks.formatting.yml index 5cdd1a08c8..55558b22f2 100644 --- a/.github/workflows/checks.formatting.yml +++ b/.github/workflows/checks.formatting.yml @@ -90,22 +90,23 @@ jobs: - name: "Setup: Bun" uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: - bun-version-file: .bun-version + bun-version-file: config/bun-version - name: "Setup: GraalVM (Java 23)" uses: graalvm/setup-graalvm@01ed653ac833fe80569f1ef9f25585ba2811baab # v1.3.3 with: distribution: "graalvm" java-version: "23" github-token: ${{ secrets.GITHUB_TOKEN }} + - name: "Setup: Elide" + uses: elide-dev/setup-elide@990b915b2974a70e7654acb1303607b4cd1d3538 # v2 + with: + version: "1.0.0-alpha15" # unlisted (interim) - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "10.5.2" - run_install: | - - recursive: true - args: [--frozen-lockfile, --strict-peer-dependencies] - - name: "Setup: Yarn" - run: pnpm install -g yarn@1.22.19 + version: "10.6.2" + - name: "Setup: Dependencies" + run: pnpm install --no-lockfile --no-frozen-lockfile - name: "Setup: Rust" uses: actions-rust-lang/setup-rust-toolchain@9399c7bb15d4c7d47b27263d024f0a4978346ba4 # v1.11.0 with: @@ -120,7 +121,7 @@ jobs: BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: - cache-read-only: true + cache-read-only: false cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} - name: "Setup: Artifacts" uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 @@ -128,7 +129,7 @@ jobs: with: merge-multiple: true - name: "Analysis: Formatting (Biome)" - run: pnpm biome check . + run: pnpm run fmt:check - name: "Analysis: Formatting (Cargo)" run: cargo fmt -- --check - name: "Analysis: Formatting (Spotless)" diff --git a/.github/workflows/checks.gradle-wrapper.yml b/.github/workflows/checks.gradle-wrapper.yml index 5bbbd2c8ee..58e0c313a5 100644 --- a/.github/workflows/checks.gradle-wrapper.yml +++ b/.github/workflows/checks.gradle-wrapper.yml @@ -40,4 +40,4 @@ jobs: fetch-depth: 0 persist-credentials: false - name: "Check: Gradle Wrapper" - uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 # v3.5.0 + uses: gradle/actions/wrapper-validation@v4 diff --git a/.github/workflows/checks.model.yml b/.github/workflows/checks.model.yml index abb59e97c7..91fbdf4811 100644 --- a/.github/workflows/checks.model.yml +++ b/.github/workflows/checks.model.yml @@ -103,7 +103,7 @@ jobs: - name: "Check: Buf Lint" uses: bufbuild/buf-lint-action@06f9dd823d873146471cfaaf108a993fe00e5325 # v1.1.1 with: - input: proto + input: packages/proto ## ## Job: Buf Breaking @@ -142,4 +142,4 @@ jobs: continue-on-error: ${{ inputs.ignore_breaking }} with: against: https://github.com/elide-dev/elide.git#branch=main - input: proto + input: packages/proto diff --git a/.github/workflows/gradle-ci.properties b/.github/workflows/gradle-ci.properties new file mode 100644 index 0000000000..d8b32b350d --- /dev/null +++ b/.github/workflows/gradle-ci.properties @@ -0,0 +1,12 @@ +org.gradle.daemon=true +org.gradle.parallel=true +org.gradle.caching=true +org.gradle.workers.max=8 +org.gradle.configuration-cache=true +org.gradle.configuration-cache.parallel=false +org.gradle.jvmargs = -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -Xmx24g --add-opens=java.base/java.util.function=ALL-UNNAMED \ + --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.\ + base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.\ + util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.\ + lang.ref=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED \ + --enable-native-access=ALL-UNNAMED diff --git a/.github/workflows/job.build.yml b/.github/workflows/job.build.yml index eb58d21f4d..41dfde9b3a 100644 --- a/.github/workflows/job.build.yml +++ b/.github/workflows/job.build.yml @@ -140,7 +140,9 @@ name: Framework env: RUST_BACKTRACE: full - ELIDE_VERSION: "1.0.0-alpha14" + ELIDE_VERSION: "1.0.0-beta1" + SCCACHE_DIRECT: "true" + RUSTC_WRAPPER: "sccache" BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} permissions: @@ -193,39 +195,90 @@ jobs: uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: disable-sudo: false - egress-policy: audit + egress-policy: block allowed-endpoints: > agent.less.build:443 androidx.dev:443 + api.codecov.io:443 + api.foojay.io:443 api.github.com:443 + api.nuget.org:443 + api.sonarcloud.io:443 + apt.llvm.org:443 + apt.llvm.org:80 + azure.archive.ubuntu.com:80 + bun.sh:443 + cli.codecov.io:443 cli.less.build:443 + crates.io:443 d3ob9fqp587by1.cloudfront.net:443 + dc.services.visualstudio.com:443 + dl.elide.dev:443 dl.google.com:443 dl.less.build:443 download-cdn.jetbrains.com:443 download.jetbrains.com:443 download.oracle.com:443 + downloads.gradle.org:443 + ea6ne4j2sb.execute-api.eu-central-1.amazonaws.com:443 edge.pkg.st:443 - maven.elide.dev:443 + elide-snapshots.storage-download.googleapis.com:443 + elide.sh:80 + elide.zip:443 + esm.ubuntu.com:443 + files.pythonhosted.org:443 + github.com:22 github.com:443 global.less.build:443 + go.dev:443 + google.com:443 + gradle.less.build:443 gradle.pkg.st:443 + ha.pool.sks-keyservers.net:11371 + httpbin.org:443 + index.crates.io:443 + ingest.codecov.io:443 + jcenter.bintray.com:443 + jitpack.io:443 jpms.pkg.st:443 + keybase.io:443 keys.openpgp.org:443 keyserver.ubuntu.com:443 local.less.build:443 + maven.elide.dev:443 maven.pkg.jetbrains.space:443 maven.pkg.st:443 + mirror.bazel.build:443 + motd.ubuntu.com:443 nodejs.org:443 npm.pkg.st:443 + o26192.ingest.us.sentry.io:443 objects.githubusercontent.com:443 + oss.sonatype.org:443 + packages.microsoft.com:443 pgp.mit.edu:443 plugins-artifacts.gradle.org:443 plugins.gradle.org:443 + projectlombok.org:443 + proxy.golang.org:443 + pypi.org:443 + raw.githubusercontent.com:443 registry.npmjs.org:443 + registry.yarnpkg.com:443 + releases.bazel.build:443 repo.maven.apache.org:443 + repo1.maven.org:443 + sc-cleancode-sensorcache-eu-central-1-prod.s3.amazonaws.com:443 + scanner.sonarcloud.io:443 scans-in.gradle.com:443 services.gradle.org:443 + sonarcloud.io:443 + static.crates.io:443 + static.rust-lang.org:443 + storage.googleapis.com:443 + www.google.com:443 + www.googleapis.com:443 + ziglang.org:443 - name: "Setup: Checkout" uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: @@ -233,19 +286,30 @@ jobs: submodules: true persist-credentials: false token: ${{ secrets.GITHUB_TOKEN }} + - name: "Setup: Cache Restore" + id: cache-restore + uses: buildjet/cache/restore@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4 # v4.0.2 + with: + key: elide-v3-build-${{ hashFiles('gradle/elide.versions.toml') }} + path: | + tools/elide-build/build/**/*.* + packages/*/build/**/*.* + target/ + target/x86_64-unknown-linux-gnu/debug/*.a + target/x86_64-unknown-linux-gnu/debug/*.so + third_party/sqlite/install/ + restore-keys: | + elide-v3-build-${{ hashFiles('gradle/elide.versions.toml') }} + elide-v3- - name: "Setup: Rust" uses: actions-rust-lang/setup-rust-toolchain@9399c7bb15d4c7d47b27263d024f0a4978346ba4 # v1.11.0 with: toolchain: stable - components: clippy,rustfmt - cache: true - rustflags: "" + cache: true # handled by sccache - name: "Setup: SCCache" uses: mozilla-actions/sccache-action@65101d47ea8028ed0c98a1cdea8dd9182e9b5133 # v0.0.8 - name: "Setup: Rust Caching" - run: | - echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV - echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV + run: echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV - name: "Setup: GraalVM (Java 23)" uses: graalvm/setup-graalvm@01ed653ac833fe80569f1ef9f25585ba2811baab # v1.3.3 with: @@ -259,28 +323,25 @@ jobs: - name: "Setup: Bun" uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: - bun-version-file: .bun-version + bun-version-file: config/bun-version - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "10.5.2" + version: "10.6.2" - name: "Setup: Elide" - run: curl -sSL --tlsv1.2 elide.sh | bash -s - --install-rev=${{ env.ELIDE_VERSION }} && echo "$HOME/elide" >> $GITHUB_PATH + uses: elide-dev/setup-elide@990b915b2974a70e7654acb1303607b4cd1d3538 # v2 + with: + version: "1.0.0-beta1" - name: "Setup: Dependencies" run: | - #cargo install cargo-fuzz cargo-insta rustfilt - pnpm install -g yarn@1.22.19 - python -m pip install uv echo "Setting up venv..." uv venv - echo "Installing dependencies via Pip..." - #uv pip install -r requirements.txt echo "Activating venv..." . .venv/bin/activate + echo "Installing dependencies via Pip..." + uv pip install -r config/requirements.txt echo PATH=$PATH >> $GITHUB_ENV echo "Installing dependencies..." - mkdir -p $HOME/.config/orogene - cp -fv ./.github/workflows/oro.kdl $HOME/.config/orogene/oro.kdl elide install - name: "Setup: Gradle" uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 @@ -304,6 +365,8 @@ jobs: notifications wrapper yarn + - name: "Setup: Gradle Settings" + run: cp -fv ./.github/workflows/gradle-ci.properties ~/.gradle/gradle.properties - name: "Build Environment" run: file Makefile && make info CI=yes 2>&1 | tee build-info.txt - name: "🛠️ Build Packages" @@ -321,7 +384,7 @@ jobs: -x jvmTest \ --scan \ --build-cache \ - --no-daemon \ + --daemon \ --dependency-verification=off \ --stacktrace \ -Pelide.ci=true \ @@ -343,6 +406,21 @@ jobs: if: ${{ matrix.os == 'ubuntu' && inputs.provenance }} run: | echo "hashes=$(sha256sum ./packages/*/build/libs/* | base64 -w0)" >> "$GITHUB_OUTPUT" + - name: "Setup: Cache Save" + id: cache-save + uses: buildjet/cache/save@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4 # v4.0.2 + with: + key: elide-v3-build-${{ github.sha }} + path: | + tools/elide-build/build/**/*.* + packages/*/build/**/*.* + target/ + target/x86_64-unknown-linux-gnu/debug/*.a + target/x86_64-unknown-linux-gnu/debug/*.so + third_party/sqlite/install/ + restore-keys: | + elide-v3-build-${{ hashFiles('gradle/elide.versions.toml') }} + elide-v3- ## Report: Provenance provenance: diff --git a/.github/workflows/job.cli.yml b/.github/workflows/job.cli.yml index f9ba6b849f..b5139ebfab 100644 --- a/.github/workflows/job.cli.yml +++ b/.github/workflows/job.cli.yml @@ -201,11 +201,11 @@ jobs: - name: "Setup: Bun" uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: - bun-version-file: .bun-version + bun-version-file: config/bun-version - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "10.5.2" + version: "10.6.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] @@ -355,11 +355,11 @@ jobs: - name: "Setup: Bun" uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: - bun-version-file: .bun-version + bun-version-file: config/bun-version - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "10.5.2" + version: "10.6.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] diff --git a/.github/workflows/job.containers.yml b/.github/workflows/job.containers.yml index 96dda511e8..ed0d392578 100644 --- a/.github/workflows/job.containers.yml +++ b/.github/workflows/job.containers.yml @@ -209,7 +209,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "10.5.2" + version: "10.6.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] @@ -321,7 +321,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "10.5.2" + version: "10.6.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] diff --git a/.github/workflows/job.deploy-model.yml b/.github/workflows/job.deploy-model.yml index d8abeaf286..3034a70cf9 100644 --- a/.github/workflows/job.deploy-model.yml +++ b/.github/workflows/job.deploy-model.yml @@ -58,4 +58,4 @@ jobs: uses: bufbuild/buf-push-action@a654ff18effe4641ebea4a4ce242c49800728459 # v1.2.0 with: buf_token: ${{ secrets.BUF_TOKEN }} - input: proto + input: packages/proto diff --git a/.github/workflows/job.test.yml b/.github/workflows/job.test.yml index 84cb4566e1..18185618d4 100644 --- a/.github/workflows/job.test.yml +++ b/.github/workflows/job.test.yml @@ -137,7 +137,9 @@ permissions: env: CI: "true" RUST_BACKTRACE: full - ELIDE_VERSION: "1.0.0-alpha14" + ELIDE_VERSION: "1.0.0-beta1" + SCCACHE_DIRECT: "true" + RUSTC_WRAPPER: "sccache" jobs: ## @@ -159,48 +161,90 @@ jobs: uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: disable-sudo: false - egress-policy: audit + egress-policy: block allowed-endpoints: > agent.less.build:443 - static.rust-lang.org:443 androidx.dev:443 api.codecov.io:443 api.foojay.io:443 api.github.com:443 + api.nuget.org:443 + api.sonarcloud.io:443 + apt.llvm.org:443 + apt.llvm.org:80 + azure.archive.ubuntu.com:80 + bun.sh:443 cli.codecov.io:443 cli.less.build:443 + crates.io:443 d3ob9fqp587by1.cloudfront.net:443 dc.services.visualstudio.com:443 + dl.elide.dev:443 dl.google.com:443 dl.less.build:443 download-cdn.jetbrains.com:443 download.jetbrains.com:443 download.oracle.com:443 + downloads.gradle.org:443 ea6ne4j2sb.execute-api.eu-central-1.amazonaws.com:443 edge.pkg.st:443 - maven.elide.dev:443 + elide-snapshots.storage-download.googleapis.com:443 + elide.sh:80 + elide.zip:443 + esm.ubuntu.com:443 + files.pythonhosted.org:443 github.com:22 github.com:443 global.less.build:443 + go.dev:443 + google.com:443 + gradle.less.build:443 gradle.pkg.st:443 + ha.pool.sks-keyservers.net:11371 + httpbin.org:443 + index.crates.io:443 + ingest.codecov.io:443 + jcenter.bintray.com:443 + jitpack.io:443 jpms.pkg.st:443 + keybase.io:443 keys.openpgp.org:443 keyserver.ubuntu.com:443 local.less.build:443 + maven.elide.dev:443 maven.pkg.jetbrains.space:443 maven.pkg.st:443 + mirror.bazel.build:443 + motd.ubuntu.com:443 nodejs.org:443 npm.pkg.st:443 + o26192.ingest.us.sentry.io:443 objects.githubusercontent.com:443 + oss.sonatype.org:443 + packages.microsoft.com:443 pgp.mit.edu:443 + plugins-artifacts.gradle.org:443 + plugins.gradle.org:443 + projectlombok.org:443 + proxy.golang.org:443 + pypi.org:443 + raw.githubusercontent.com:443 registry.npmjs.org:443 + registry.yarnpkg.com:443 + releases.bazel.build:443 repo.maven.apache.org:443 + repo1.maven.org:443 sc-cleancode-sensorcache-eu-central-1-prod.s3.amazonaws.com:443 scanner.sonarcloud.io:443 scans-in.gradle.com:443 services.gradle.org:443 sonarcloud.io:443 + static.crates.io:443 + static.rust-lang.org:443 storage.googleapis.com:443 + www.google.com:443 + www.googleapis.com:443 + ziglang.org:443 - name: "Setup: Checkout" uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: @@ -210,9 +254,9 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: "Setup: Cache Restore (Test)" id: cache-restore - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + uses: buildjet/cache/restore@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4 # v4.0.2 with: - key: elide-framework-v2-tests-${{ github.sha }} + key: elide-v3-tests-${{ hashFiles('gradle/elide.versions.toml') }} path: | build/reports/kover/**/*.* packages/*/test-results/ @@ -221,24 +265,28 @@ jobs: packages/*/reports/ packages/proto/*/reports/ tools/elide-build/reports/ - third_party/google/boringssl/build - third_party/sqlite/.libs + tools/elide-build/build/ + packages/*/build/**/*.* + target/ + target/x86_64-unknown-linux-gnu/debug/*.a + target/x86_64-unknown-linux-gnu/debug/*.so + target/x86_64-unknown-linux-gnu/debug/*.a + target/x86_64-unknown-linux-gnu/debug/*.so + third_party/sqlite/install/ restore-keys: | - elide-framework-v2-tests-${{ hashFiles('gradle/elide.versions.toml') }} - elide-framework-v2-tests- + elide-v3-tests-${{ hashFiles('gradle/elide.versions.toml') }} + elide-v3- - name: "Setup: Rust" uses: actions-rust-lang/setup-rust-toolchain@9399c7bb15d4c7d47b27263d024f0a4978346ba4 # v1.11.0 with: toolchain: stable - components: clippy,rustfmt - cache: true - rustflags: "" + cache: false # handled by sccache - name: "Setup: SCCache" uses: mozilla-actions/sccache-action@65101d47ea8028ed0c98a1cdea8dd9182e9b5133 # v0.0.8 + with: + token: ${{ secrets.GITHUB_TOKEN }} - name: "Setup: Rust Caching" - run: | - echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV - echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV + run: echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV - name: "Setup: GraalVM (Java 23)" uses: graalvm/setup-graalvm@01ed653ac833fe80569f1ef9f25585ba2811baab # v1.3.3 with: @@ -252,28 +300,25 @@ jobs: - name: "Setup: Bun" uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: - bun-version-file: .bun-version + bun-version-file: config/bun-version - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "10.5.2" + version: "10.6.2" - name: "Setup: Elide" - run: curl -sSL --tlsv1.2 elide.sh | bash -s - --install-rev=${{ env.ELIDE_VERSION }} && echo "$HOME/elide" >> $GITHUB_PATH + uses: elide-dev/setup-elide@990b915b2974a70e7654acb1303607b4cd1d3538 # v2 + with: + version: "1.0.0-beta1" - name: "Setup: Dependencies" run: | - #cargo install cargo-fuzz cargo-insta rustfilt - pnpm install -g yarn@1.22.19 - python -m pip install uv echo "Setting up venv..." uv venv - echo "Installing dependencies via Pip..." - #uv pip install -r requirements.txt echo "Activating venv..." . .venv/bin/activate + echo "Installing dependencies via Pip..." + uv pip install -r config/requirements.txt echo PATH=$PATH >> $GITHUB_ENV echo "Installing dependencies..." - mkdir -p $HOME/.config/orogene - cp -fv ./.github/workflows/oro.kdl $HOME/.config/orogene/oro.kdl elide install - name: "Setup: Artifacts" uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 @@ -300,6 +345,8 @@ jobs: notifications wrapper yarn + - name: "Setup: Gradle Settings" + run: cp -fv ./.github/workflows/gradle-ci.properties ~/.gradle/gradle.properties - name: "Build Environment" run: make info CI=yes 2>&1 | tee build-info.txt - name: "👨‍🔬 Test: Runtime" @@ -316,7 +363,6 @@ jobs: koverXmlReport \ koverBinaryReport \ koverVerify \ - detekt \ -x nativeTest \ --scan \ --build-cache \ @@ -326,6 +372,7 @@ jobs: -Pelide.ci=true \ -PbuildDocs=false - name: "Analysis: Sonar" + if: false continue-on-error: true env: CI: true @@ -375,7 +422,7 @@ jobs: fail_ci_if_error: false verbose: true - name: "Artifact: Caches" - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + uses: buildjet/cache/save@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4 # v4.0.2 with: key: ${{ steps.cache-restore.outputs.cache-primary-key }} path: | @@ -386,6 +433,14 @@ jobs: packages/*/reports/ packages/proto/*/reports/ tools/elide-build/reports/ + tools/elide-build/build/**/*.* + packages/*/build/**/*.* + target/ + target/x86_64-unknown-linux-gnu/debug/*.a + target/x86_64-unknown-linux-gnu/debug/*.so + target/x86_64-unknown-linux-gnu/debug/*.a + target/x86_64-unknown-linux-gnu/debug/*.so + third_party/sqlite/install/ ## ## Job: Testsuite (Native) @@ -467,9 +522,9 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: "Setup: Cache Restore (Test)" id: cache-restore - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 + uses: buildjet/cache/restore@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4 # v4.0.2 with: - key: elide-framework-v2-tests-${{ github.sha }} + key: elide-v3-tests-${{ hashFiles('gradle/elide.versions.toml') }} path: | build/reports/kover/**/*.* packages/*/test-results/ @@ -478,9 +533,17 @@ jobs: packages/*/reports/ packages/proto/*/reports/ tools/elide-build/reports/ + tools/elide-build/build/ + packages/*/build/**/*.* + target/ + target/x86_64-unknown-linux-gnu/debug/*.a + target/x86_64-unknown-linux-gnu/debug/*.so + target/x86_64-unknown-linux-gnu/debug/*.a + target/x86_64-unknown-linux-gnu/debug/*.so + third_party/sqlite/install/ restore-keys: | - elide-framework-v2-tests-${{ hashFiles('gradle/elide.versions.toml') }} - elide-framework-v2-tests- + elide-v3-tests-${{ hashFiles('gradle/elide.versions.toml') }} + elide-v3- - name: "Setup: Rust" uses: actions-rust-lang/setup-rust-toolchain@9399c7bb15d4c7d47b27263d024f0a4978346ba4 # v1.11.0 with: @@ -493,7 +556,6 @@ jobs: uses: mozilla-actions/sccache-action@65101d47ea8028ed0c98a1cdea8dd9182e9b5133 # v0.0.8 - name: "Setup: Rust Caching" run: | - echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV - name: "Setup: GraalVM (Java 23)" uses: graalvm/setup-graalvm@01ed653ac833fe80569f1ef9f25585ba2811baab # v1.3.3 @@ -512,7 +574,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "10.5.2" + version: "10.6.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] @@ -524,7 +586,7 @@ jobs: echo "Setting up venv..." uv venv echo "Installing dependencies via Pip..." - uv pip install -r requirements.txt + uv pip install -r config/requirements.txt echo "Activating venv..." . .venv/bin/activate echo PATH=$PATH >> $GITHUB_ENV @@ -567,7 +629,7 @@ jobs: check \ jacocoTestReport \ --scan \ - --no-daemon \ + --daemon \ --warning-mode=none \ --dependency-verification=lenient \ -x apiCheck \ diff --git a/.github/workflows/on.pr.yml b/.github/workflows/on.pr.yml index f7018a7a77..9358e381d0 100644 --- a/.github/workflows/on.pr.yml +++ b/.github/workflows/on.pr.yml @@ -122,27 +122,6 @@ jobs: ## ## Job: Multi-platform Build ## -# pr-build: -# name: "Build" -# uses: ./.github/workflows/job.build.yml -# secrets: inherit -# needs: [triage] -# if: fromJson(needs.triage.outputs.model) || fromJson(needs.triage.outputs.packages) || fromJson(needs.triage.outputs.tools) -# permissions: -# contents: "write" -# actions: "read" -# id-token: "write" -# checks: "write" -# pull-requests: "write" -# packages: "read" -# security-events: "write" -# with: -# provenance: false -# native: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build-native') || contains(github.event.head_commit.message, 'ci:build-native') }} - - ## - ## Job: Multi-platform Build - ## pr-test: name: "Build" uses: ./.github/workflows/job.test.yml @@ -156,6 +135,7 @@ jobs: packages: "read" pull-requests: "write" with: + runner: ${{ vars.RUNNER_DEFAULT || 'ubuntu-latest' }} native: ${{ contains(github.event.pull_request.labels.*.name, 'ci:test-native') || contains(github.event.head_commit.message, 'ci:test-native') }} ## @@ -244,6 +224,9 @@ jobs: needs: [triage, dependency-graph] permissions: contents: "read" + with: + base-ref: ${{ github.event.pull_request.base.ref }} + head-ref: ${{ github.event.pull_request.head.ref }} ## ## Job: Checks with Detekt diff --git a/.github/workflows/on.push.yml b/.github/workflows/on.push.yml index 720de395ba..7f1a897a3a 100644 --- a/.github/workflows/on.push.yml +++ b/.github/workflows/on.push.yml @@ -19,6 +19,7 @@ name: CI branches: - stable - main + - release/* permissions: contents: read @@ -44,6 +45,7 @@ jobs: security-events: "write" with: provenance: true + runner: ${{ vars.RUNNER_DEFAULT || 'ubuntu-latest' }} ## ## Job: Multi-platform Test @@ -58,6 +60,8 @@ jobs: id-token: "write" packages: "read" pull-requests: "write" + with: + runner: ${{ vars.RUNNER_DEFAULT || 'ubuntu-latest' }} ## ## Job: Checks for Models @@ -76,6 +80,7 @@ jobs: check-scorecard: name: "Checks" uses: ./.github/workflows/checks.scorecards.yml + if: github.ref == 'refs/heads/main' permissions: attestations: "read" actions: "read" @@ -100,30 +105,3 @@ jobs: uses: ./.github/workflows/checks.gradle-wrapper.yml permissions: contents: "read" - - ## - ## Job: Checks with Sonar - ## - check-sonar: - name: "Checks" - uses: ./.github/workflows/checks.sonar.yml - needs: [build] - secrets: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} - permissions: - contents: "read" - - ## - ## Job: Checks with CodeQL - ## - check-codeql: - name: "Checks" - uses: ./.github/workflows/checks.codeql.yml - needs: [build] - secrets: - BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} - permissions: - actions: "read" - contents: "read" - security-events: "write" diff --git a/.github/workflows/on.scheduled.yml b/.github/workflows/on.scheduled.yml index 5992928328..30a7385e80 100644 --- a/.github/workflows/on.scheduled.yml +++ b/.github/workflows/on.scheduled.yml @@ -182,7 +182,7 @@ jobs: - name: "Setup: PNPM" uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 with: - version: "10.5.2" + version: "10.6.2" run_install: | - recursive: true args: [--frozen-lockfile, --strict-peer-dependencies] @@ -207,7 +207,7 @@ jobs: echo "Setting up venv..." uv venv echo "Installing dependencies via Pip..." - uv pip install -r requirements.txt + uv pip install -r config/requirements.txt echo "Activating venv..." . .venv/bin/activate echo PATH=$PATH >> $GITHUB_ENV diff --git a/.github/workflows/oro.kdl b/.github/workflows/oro.kdl deleted file mode 100644 index 281c71eda1..0000000000 --- a/.github/workflows/oro.kdl +++ /dev/null @@ -1,4 +0,0 @@ -options { - telemetry false - first-time false -} diff --git a/.gitignore b/.gitignore index ec676273bd..006804f525 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,6 @@ tools/images/bench/elide-edge.tgz tools/hakuna/dist coverage-error.log blink.log +project/docs/apidocs +packages/cli/README.md.br +README.md.br diff --git a/.gitmodules b/.gitmodules index b33d5b1e48..1bf7b64604 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ [submodule "runtime"] - path = runtime + path = tools/runtime url = https://github.com/elide-dev/runtime.git branch = main shallow = true diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 6f125ef9e5..0000000000 --- a/.prettierignore +++ /dev/null @@ -1,75 +0,0 @@ -.venv -README.md -build -coverage -crates -**/*.js -**/*.ts -**/*.mjs -**/*.mts -**/*.cjs -**/*.cts -**/*.json -**/*.css -docs/*.html -docs/**/*.html -docs/*.js -docs/**/*.js -docs/*.css -docs/**/*.css -docs/*.json -docs/**/*.json -docs/*.svg -docs/**/*.svg -site/docs -kotlin-js-store -.run -module.md -*/module.md -.idea -.gradle -.github/workflows -proto -proto/buf.pb.json -buildSrc -benchmarks -tools/plugin -packages/uuid -*.gradle.kts -*.hbs -config/detekt/ -config/diktat/ -*.lockfile -*.lock -pnpm-lock.yaml -qodana.sarif.json -runtime/ -samples/ -packages/*/src/*/resources/META-INF/native-image/*.json -packages/*/src/*/resources/META-INF/native-image/dev/elide/*/*.json -packages/*/src/*/resources/META-INF/native-image/dev.elide/*/*.json -packages/graalvm/src/main/resources/META-INF/native-image/dev.elide/graalvm/native-image.properties -tools/tsc/src/main/resources/META-INF/elide/embedded/tools/tsc/entry.mjs -tools/esbuild/src/main/resources/META-INF/elide/embedded/tools/esbuild/ -reflect-config.json -jni-config.json -proxy-config.json -resource-config.json -serialization-config.json -packages/*/src/test/resources -creative/logo/ -creative/ -gradle/*.xml -gradlew -gradle-wrapper.jar -*.jar -.husky -.codebase -.kotlin -.qodana -detekt-baseline.xml -tools/images/*/Dockerfile -tools/umbrella -third_party -fuzz/fuzz_targets/ -biome.jsonc diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 21890f7d2a..0000000000 --- a/.prettierrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["@prettier/plugin-xml", "prettier-plugin-toml", "prettier-plugin-sh", "prettier-plugin-properties"] -} diff --git a/.release b/.release index deb1d514b2..77948c08ae 100644 --- a/.release +++ b/.release @@ -1 +1 @@ -1.0.0-alpha14 +1.0.0-beta1 diff --git a/.version b/.version index deb1d514b2..77948c08ae 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -1.0.0-alpha14 +1.0.0-beta1 diff --git a/Cargo.lock b/Cargo.lock index 608c9f2039..901bdf2c02 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,25 +18,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] -name = "ahash" -version = "0.8.11" +name = "aho-corasick" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ - "cfg-if", - "getrandom 0.2.15", - "once_cell", - "version_check", - "zerocopy 0.7.35", + "memchr", ] [[package]] -name = "aho-corasick" -version = "1.1.3" +name = "alloc-no-stdlib" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" dependencies = [ - "memchr", + "alloc-no-stdlib", ] [[package]] @@ -62,9 +64,13 @@ dependencies = [ [[package]] name = "annotate-snippets" -version = "0.6.1" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7021ce4924a3f25f802b2cccd1af585e39ea1a363a1aa2e72afe54b67a3a7a7" +checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" +dependencies = [ + "anstyle", + "unicode-width 0.2.0", +] [[package]] name = "anstream" @@ -194,6 +200,7 @@ version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06575e6a9673580f52661c92107baabffbf41e2141373441cbcdc47cb733003c" dependencies = [ + "brotli", "bzip2", "flate2", "futures-core", @@ -348,7 +355,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -373,13 +380,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.87" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -558,7 +565,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -610,6 +617,27 @@ dependencies = [ "loom", ] +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + [[package]] name = "bstr" version = "1.11.3" @@ -629,7 +657,7 @@ checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" [[package]] name = "builder" -version = "1.0.0-alpha14-SNAPSHOT" +version = "1.0.0-beta1" dependencies = [ "bindgen", "build_const", @@ -667,7 +695,7 @@ checksum = "efb7846e0cb180355c2dec69e721edafa36919850f1a9f52ffba4ebc0393cb71" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -842,15 +870,6 @@ dependencies = [ "encoding_rs", ] -[[package]] -name = "chic" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b5db619f3556839cb2223ae86ff3f9a09da2c5013be42bc9af08c9589bf70c" -dependencies = [ - "annotate-snippets", -] - [[package]] name = "chrono" version = "0.4.40" @@ -887,9 +906,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.31" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767" +checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" dependencies = [ "clap_builder", "clap_derive", @@ -897,9 +916,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.31" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863" +checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" dependencies = [ "anstream", "anstyle", @@ -940,14 +959,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.28" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -1029,13 +1048,13 @@ dependencies = [ [[package]] name = "config" -version = "0.15.9" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb07d21d12f9f0bc5e7c3e97ccc78b2341b9b4a4604eac3ed7c1d0d6e2c3b23e" +checksum = "595aae20e65c3be792d05818e8c63025294ac3cb7e200f11459063a352a6ef80" dependencies = [ "pathdiff", "serde", - "winnow", + "winnow 0.7.4", ] [[package]] @@ -1280,7 +1299,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -1291,7 +1310,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -1314,9 +1333,19 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "serde", + "uuid", +] + [[package]] name = "deps" -version = "1.0.0-alpha14-SNAPSHOT" +version = "1.0.0-beta1" dependencies = [ "serde", "typeshare", @@ -1349,7 +1378,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -1359,12 +1388,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] name = "diag" -version = "1.0.0-alpha14-SNAPSHOT" +version = "1.0.0-beta1" dependencies = [ "java_native", "jni", @@ -1441,7 +1470,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -1514,7 +1543,7 @@ dependencies = [ [[package]] name = "entry" -version = "1.0.0-alpha14-SNAPSHOT" +version = "1.0.0-beta1" dependencies = [ "bindgen", "builder", @@ -1628,6 +1657,18 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "findshlibs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64" +dependencies = [ + "cc", + "lazy_static", + "libc", + "winapi", +] + [[package]] name = "fixedbitset" version = "0.5.7" @@ -1646,15 +1687,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "float-cmp" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" -dependencies = [ - "num-traits", -] - [[package]] name = "fnv" version = "1.0.7" @@ -1663,9 +1695,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foreign-types" @@ -1804,7 +1836,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -1967,23 +1999,13 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.7.1", + "indexmap 2.8.0", "slab", "tokio", "tokio-util", "tracing", ] -[[package]] -name = "halfbrown" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8588661a8607108a5ca69cab034063441a0413a0b041c13618a7dd348021ef6f" -dependencies = [ - "hashbrown 0.14.5", - "serde", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -1995,10 +2017,6 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] [[package]] name = "hashbrown" @@ -2066,6 +2084,17 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "hostname" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9c7c7c8ac16c798734b8a24560c1362120597c40d5e1459f09498f8f6c8f2ba" +dependencies = [ + "cfg-if", + "libc", + "windows 0.52.0", +] + [[package]] name = "html-escape" version = "0.2.13" @@ -2077,9 +2106,9 @@ dependencies = [ [[package]] name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes 1.10.1", "fnv", @@ -2098,12 +2127,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes 1.10.1", - "futures-util", + "futures-core", "http", "http-body", "pin-project-lite", @@ -2190,9 +2219,9 @@ checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" [[package]] name = "humantime" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" [[package]] name = "hyper" @@ -2420,7 +2449,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -2488,9 +2517,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" dependencies = [ "equivalent", "hashbrown 0.15.2", @@ -2588,7 +2617,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -2664,14 +2693,14 @@ source = "git+https://github.com/elide-tools/jni-macros?rev=7dc95cc2d7534761d0b1 dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] name = "jiff" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c163c633eb184a4ad2a5e7a5dacf12a58c830d717a7963563d4eceb4ced079f" +checksum = "d699bc6dfc879fb1bf9bdff0d4c56f0884fc6f0d0eb0fba397a6d00cd9a6b85e" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -2684,13 +2713,13 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc3e0019b0f5f43038cf46471b1312136f29e36f54436c6042c8f155fec8789" +checksum = "8d16e75759ee0aa64c57a56acbf43916987b20c77373cb7e808979e02b93c9f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -2761,7 +2790,7 @@ checksum = "8b23360e99b8717f20aaa4598f5a6541efbe30630039fbc7706cf954a87947ae" [[package]] name = "js" -version = "1.0.0-alpha14-SNAPSHOT" +version = "1.0.0-beta1" dependencies = [ "diag", "java_native", @@ -2791,12 +2820,14 @@ dependencies = [ [[package]] name = "kdl" -version = "5.0.0-alpha.2" -source = "git+https://github.com/elide-tools/kdl-rs.git?rev=b76df4f16ce805798e6d513a6daedf97f6d28e5d#b76df4f16ce805798e6d513a6daedf97f6d28e5d" +version = "6.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661358400b02cbbf1fbd05f0a483335490e8a6bd1867620f2eeb78f304a22f" dependencies = [ "miette 7.5.0", - "nom 7.1.3", + "num", "thiserror 1.0.69", + "winnow 0.6.24", ] [[package]] @@ -2836,17 +2867,17 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.170" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libcst" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "649801a698a649791541a3125d396d5db065ed7cea53faca3652b0179394922a" +checksum = "ad9e315e3f679e61b9095ffd5e509de78b8a4ea3bba9d772f6fb243209f808d4" dependencies = [ - "chic", + "annotate-snippets", "libcst_derive", "memchr", "paste", @@ -2857,12 +2888,12 @@ dependencies = [ [[package]] name = "libcst_derive" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf66548c351bcaed792ef3e2b430cc840fbde504e09da6b29ed114ca60dcd4b" +checksum = "bfa96ed35d0dccc67cf7ba49350cb86de3dcb1d072a7ab28f99117f19d874953" dependencies = [ "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -2898,9 +2929,9 @@ dependencies = [ [[package]] name = "libz-ng-sys" -version = "1.1.21" +version = "1.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cee1488e961a80d172564fd6fcda11d8a4ac6672c06fe008e9213fa60520c2b" +checksum = "a7118c2c2a3c7b6edc279a8b19507672b9c4d716f95e671172dfa4e23f9fd824" dependencies = [ "cmake", "libc", @@ -2923,9 +2954,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" +checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" [[package]] name = "litemap" @@ -3113,7 +3144,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -3124,7 +3155,7 @@ checksum = "bf45bf44ab49be92fd1227a3be6fc6f617f1a337c06af54981048574d8783147" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -3205,7 +3236,7 @@ checksum = "734799cf91479720b2f970c61a22850940dd91e27d4f02b1c6fc792778df2459" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -3219,8 +3250,8 @@ dependencies = [ [[package]] name = "nassun" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "async-compression", "async-process", @@ -3246,7 +3277,6 @@ dependencies = [ "serde", "serde-wasm-bindgen 0.6.5", "serde_json", - "simd-json", "ssri", "tar", "tempfile", @@ -3306,15 +3336,15 @@ dependencies = [ [[package]] name = "node-maintainer" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "async-std", "colored", "console_error_panic_hook", "dashmap", "futures 0.3.31", - "indexmap 2.7.1", + "indexmap 2.8.0", "indicatif", "js-sys", "junction", @@ -3435,6 +3465,20 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -3445,6 +3489,15 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -3460,6 +3513,28 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -3486,9 +3561,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" [[package]] name = "open" @@ -3524,7 +3599,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -3563,17 +3638,17 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordermap" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55fdf45a2b1e929e3656d404395767e05c98b6ebd8157eb31e370077d545160" +checksum = "6e98f974336ceffd5b1b1f4fcbb89a23c8dcd334adc4b8612f11b7fa99944535" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", ] [[package]] name = "oro-client" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "anyhow", "async-trait", @@ -3582,7 +3657,7 @@ dependencies = [ "futures 0.3.31", "http", "http-cache-reqwest", - "indexmap 2.7.1", + "indexmap 2.8.0", "miette 7.5.0", "oro-common", "percent-encoding", @@ -3598,11 +3673,11 @@ dependencies = [ [[package]] name = "oro-common" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "derive_builder", - "indexmap 2.7.1", + "indexmap 2.8.0", "miette 7.5.0", "node-semver", "nom 8.0.0", @@ -3616,8 +3691,8 @@ dependencies = [ [[package]] name = "oro-config" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "clap", "config", @@ -3629,8 +3704,8 @@ dependencies = [ [[package]] name = "oro-npm-account" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "async-std", "base64 0.22.1", @@ -3647,8 +3722,8 @@ dependencies = [ [[package]] name = "oro-package-spec" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "bytecount", "miette 7.5.0", @@ -3661,16 +3736,16 @@ dependencies = [ [[package]] name = "oro-pretty-json" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "serde_json", ] [[package]] name = "oro-script" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "dunce", "miette 7.5.0", @@ -3685,8 +3760,8 @@ dependencies = [ [[package]] name = "oro-shim-bin" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "once_cell", "pathdiff", @@ -3695,8 +3770,8 @@ dependencies = [ [[package]] name = "orogene" -version = "0.3.35-elide" -source = "git+https://github.com/elide-dev/orogene?rev=c74987780c6b81ca3eee5deb863ed3be6424e5df#c74987780c6b81ca3eee5deb863ed3be6424e5df" +version = "0.3.34" +source = "git+https://github.com/elide-dev/orogene?rev=024c67173c29ae2de79c4e5e113064bb79a2259a#024c67173c29ae2de79c4e5e113064bb79a2259a" dependencies = [ "async-std", "async-trait", @@ -3713,6 +3788,7 @@ dependencies = [ "is_ci", "kdl", "miette 7.5.0", + "mimalloc", "nassun", "node-maintainer", "oro-client", @@ -3722,14 +3798,13 @@ dependencies = [ "oro-package-spec", "oro-pretty-json", "rand 0.9.0", + "sentry", "serde", "serde_json", - "snmalloc-rs", "supports-unicode", "term_grid", "term_size", "thiserror 1.0.69", - "tokio", "tracing", "tracing-appender", "tracing-indicatif", @@ -3737,6 +3812,17 @@ dependencies = [ "url", ] +[[package]] +name = "os_info" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a604e53c24761286860eba4e2c8b23a0161526476b1de520139d69cdb85a6b5" +dependencies = [ + "log", + "serde", + "windows-sys 0.52.0", +] + [[package]] name = "os_str_bytes" version = "6.6.1" @@ -3775,8 +3861,8 @@ checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564" [[package]] name = "oxc" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "oxc_allocator", "oxc_ast", @@ -3811,35 +3897,36 @@ dependencies = [ [[package]] name = "oxc-miette" -version = "1.0.2" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e03e63fd113c068b82d07c9c614b0b146c08a3ac0a4dface3ea1d1a9d14d549e" +checksum = "288e20c3f5128c433165c23bcac0169fce6520c5decc2ae7cc5cce5898d861d5" dependencies = [ "cfg-if", "owo-colors", "oxc-miette-derive", "textwrap", - "thiserror 1.0.69", + "thiserror 2.0.12", "unicode-width 0.2.0", ] [[package]] name = "oxc-miette-derive" -version = "1.0.2" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e21f680e8c5f1900297d394627d495351b9e37761f7bbf90116bd5eeb6e80967" +checksum = "4c0c893f53900e3fe01eca3d6d3b54085573c3e48fe25af9d57dd94ef600dcd3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] name = "oxc_allocator" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "allocator-api2", + "assert-unchecked", "bumpalo", "hashbrown 0.15.2", "rustc-hash", @@ -3848,8 +3935,8 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "bitflags 2.9.0", "cow-utils", @@ -3864,18 +3951,18 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] name = "oxc_ast_visit" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "oxc_allocator", "oxc_ast", @@ -3885,8 +3972,8 @@ dependencies = [ [[package]] name = "oxc_cfg" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "bitflags 2.9.0", "itertools 0.14.0", @@ -3899,8 +3986,8 @@ dependencies = [ [[package]] name = "oxc_codegen" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "bitflags 2.9.0", "cow-utils", @@ -3919,8 +4006,8 @@ dependencies = [ [[package]] name = "oxc_data_structures" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "assert-unchecked", "ropey", @@ -3928,8 +4015,8 @@ dependencies = [ [[package]] name = "oxc_diagnostics" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "cow-utils", "oxc-miette", @@ -3937,8 +4024,8 @@ dependencies = [ [[package]] name = "oxc_ecmascript" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "cow-utils", "num-bigint", @@ -3950,8 +4037,8 @@ dependencies = [ [[package]] name = "oxc_estree" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" [[package]] name = "oxc_index" @@ -3961,8 +4048,8 @@ checksum = "2fa07b0cfa997730afed43705766ef27792873fdf5215b1391949fec678d2392" [[package]] name = "oxc_isolated_declarations" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "bitflags 2.9.0", "oxc_allocator", @@ -3977,8 +4064,8 @@ dependencies = [ [[package]] name = "oxc_mangler" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "fixedbitset", "itertools 0.14.0", @@ -3993,8 +4080,8 @@ dependencies = [ [[package]] name = "oxc_minifier" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "cow-utils", "oxc_allocator", @@ -4014,8 +4101,8 @@ dependencies = [ [[package]] name = "oxc_parser" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "assert-unchecked", "bitflags 2.9.0", @@ -4036,8 +4123,8 @@ dependencies = [ [[package]] name = "oxc_regular_expression" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "oxc_allocator", "oxc_ast_macros", @@ -4051,8 +4138,8 @@ dependencies = [ [[package]] name = "oxc_semantic" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "assert-unchecked", "itertools 0.14.0", @@ -4087,8 +4174,8 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "compact_str", "oxc-miette", @@ -4099,8 +4186,8 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "assert-unchecked", "bitflags 2.9.0", @@ -4119,13 +4206,13 @@ dependencies = [ [[package]] name = "oxc_transformer" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "base64 0.22.1", "compact_str", "cow-utils", - "indexmap 2.7.1", + "indexmap 2.8.0", "itoa", "oxc-browserslist", "oxc_allocator", @@ -4148,8 +4235,8 @@ dependencies = [ [[package]] name = "oxc_traverse" -version = "0.56.0" -source = "git+https://github.com/elide-dev/oxc?rev=64080ee745360b8d33df2ed3882d21125bc3da43#64080ee745360b8d33df2ed3882d21125bc3da43" +version = "0.58.1" +source = "git+https://github.com/elide-dev/oxc?rev=fef680a4775559805e99622fb5aa6155cdf47034#fef680a4775559805e99622fb5aa6155cdf47034" dependencies = [ "compact_str", "itoa", @@ -4301,7 +4388,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faee7227064121fcadcd2ff788ea26f0d8f2bd23a0574da11eca23bc935bcc05" dependencies = [ "boxcar", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.13.0", "once_cell", "pep440_rs", @@ -4329,7 +4416,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.7.1", + "indexmap 2.8.0", ] [[package]] @@ -4372,7 +4459,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -4401,7 +4488,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -4471,12 +4558,12 @@ dependencies = [ [[package]] name = "posix" -version = "1.0.0-alpha14-SNAPSHOT" +version = "1.0.0-beta1" dependencies = [ "java_native", "jni", "jni-sys", - "rustix 0.38.44", + "rustix 1.0.2", "sysinfo", ] @@ -4488,32 +4575,32 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.7.35", + "zerocopy", ] [[package]] name = "prettyplease" -version = "0.2.30" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1ccf34da56fc294e7d4ccf69a85992b7dfb826b7cf57bac6a70bba3494cc08a" +checksum = "5316f57387668042f561aae71480de936257848f9c43ce528e311d89a07cadeb" dependencies = [ "proc-macro2", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] name = "priority-queue" -version = "2.2.0" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63023f69f97c4bc2936c0440f8a2827af36058523cbdacceeff9afb4a680bf24" +checksum = "f759742601cb7ee8df8780e5f7f9ab7134fb6c5dd2748a61ddd7c960e24db2f8" dependencies = [ "autocfg", "equivalent", - "indexmap 2.7.1", + "indexmap 2.8.0", ] [[package]] @@ -4568,7 +4655,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -4597,7 +4684,7 @@ checksum = "ca414edb151b4c8d125c12566ab0d74dc9cdba36fb80eb7b848c15f495fd32d1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -4605,7 +4692,7 @@ name = "pubgrub" version = "0.3.0-alpha.1" source = "git+https://github.com/astral-sh/pubgrub?rev=b70cf707aa43f21b32f3a61b8a0889b15032d5c4#b70cf707aa43f21b32f3a61b8a0889b15032d5c4" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "log", "priority-queue", "rustc-hash", @@ -4619,7 +4706,7 @@ version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643af57c3f36ba90a8b53e972727d8092f7408a9ebfbaf4c3d2c17b07c58d835" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "pep440_rs", "pep508_rs", "serde", @@ -4634,7 +4721,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed1a693391a16317257103ad06a88c6529ac640846021da7c435a06fffdacd7" dependencies = [ "chrono", - "indexmap 2.7.1", + "indexmap 2.8.0", "newtype-uuid", "quick-xml", "strip-ansi-escapes", @@ -4705,9 +4792,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.39" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -4746,7 +4833,7 @@ checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", - "zerocopy 0.8.23", + "zerocopy", ] [[package]] @@ -4810,7 +4897,7 @@ dependencies = [ [[package]] name = "red_knot_python_semantic" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "anyhow", "bitflags 2.9.0", @@ -4819,7 +4906,7 @@ dependencies = [ "countme", "drop_bomb", "hashbrown 0.15.2", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.14.0", "memchr", "ordermap", @@ -4884,35 +4971,15 @@ dependencies = [ "thiserror 2.0.12", ] -[[package]] -name = "ref-cast" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.99", -] - [[package]] name = "reflink-copy" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9efd944f26afa2406cbbabff39fac533c9bc24b13d7f1f12e14ae3e7bdc66cdb" +checksum = "4b86038e146b9a61557e1a2e58cdf2eddc0b46ce141b55541b1c1b9f3189d618" dependencies = [ "cfg-if", "libc", - "rustix 0.38.44", + "rustix 1.0.2", "windows 0.60.0", ] @@ -4971,14 +5038,13 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.12" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +checksum = "989e327e510263980e231de548a33e63d34962d29ae61b467389a1a09627a254" dependencies = [ "async-compression", "base64 0.22.1", "bytes 1.10.1", - "encoding_rs", "futures-channel", "futures-core", "futures-util", @@ -5008,7 +5074,6 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls", @@ -5022,7 +5087,7 @@ dependencies = [ "wasm-streams", "web-sys", "webpki-roots", - "windows-registry 0.2.0", + "windows-registry 0.4.0", ] [[package]] @@ -5073,9 +5138,9 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.13" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ac5d832aa16abd7d1def883a8545280c20a60f523a370aa3a9617c2b8550ee" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", @@ -5094,7 +5159,7 @@ dependencies = [ "bytecheck", "bytes 1.10.1", "hashbrown 0.15.2", - "indexmap 2.7.1", + "indexmap 2.8.0", "munge", "ptr_meta", "rancor", @@ -5113,7 +5178,7 @@ checksum = "246b40ac189af6c675d124b802e8ef6d5246c53e17367ce9501f8f66a81abb7a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -5150,8 +5215,8 @@ dependencies = [ [[package]] name = "ruff" -version = "0.9.9" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +version = "0.11.0" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "anyhow", "argfile", @@ -5205,7 +5270,7 @@ dependencies = [ [[package]] name = "ruff_annotate_snippets" version = "0.1.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "anstyle", "memchr", @@ -5215,7 +5280,7 @@ dependencies = [ [[package]] name = "ruff_cache" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "filetime", "glob", @@ -5228,7 +5293,7 @@ dependencies = [ [[package]] name = "ruff_db" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "camino", "countme", @@ -5259,7 +5324,7 @@ dependencies = [ [[package]] name = "ruff_diagnostics" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "anyhow", "is-macro", @@ -5271,7 +5336,7 @@ dependencies = [ [[package]] name = "ruff_formatter" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "drop_bomb", "ruff_cache", @@ -5287,7 +5352,7 @@ dependencies = [ [[package]] name = "ruff_graph" version = "0.1.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "anyhow", "clap", @@ -5307,7 +5372,7 @@ dependencies = [ [[package]] name = "ruff_index" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "ruff_macros", "salsa", @@ -5315,8 +5380,8 @@ dependencies = [ [[package]] name = "ruff_linter" -version = "0.9.9" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +version = "0.11.0" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "aho-corasick", "anyhow", @@ -5376,19 +5441,19 @@ dependencies = [ [[package]] name = "ruff_macros" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", "ruff_python_trivia", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] name = "ruff_notebook" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "anyhow", "itertools 0.14.0", @@ -5406,7 +5471,7 @@ dependencies = [ [[package]] name = "ruff_python_ast" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "aho-corasick", "bitflags 2.9.0", @@ -5427,7 +5492,7 @@ dependencies = [ [[package]] name = "ruff_python_codegen" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "ruff_python_ast", "ruff_python_literal", @@ -5439,7 +5504,7 @@ dependencies = [ [[package]] name = "ruff_python_formatter" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "anyhow", "clap", @@ -5466,7 +5531,7 @@ dependencies = [ [[package]] name = "ruff_python_index" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "ruff_python_ast", "ruff_python_parser", @@ -5478,7 +5543,7 @@ dependencies = [ [[package]] name = "ruff_python_literal" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "bitflags 2.9.0", "itertools 0.14.0", @@ -5489,7 +5554,7 @@ dependencies = [ [[package]] name = "ruff_python_parser" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "bitflags 2.9.0", "bstr", @@ -5508,7 +5573,7 @@ dependencies = [ [[package]] name = "ruff_python_semantic" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "bitflags 2.9.0", "is-macro", @@ -5527,7 +5592,7 @@ dependencies = [ [[package]] name = "ruff_python_stdlib" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "bitflags 2.9.0", "unicode-ident", @@ -5536,7 +5601,7 @@ dependencies = [ [[package]] name = "ruff_python_trivia" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "itertools 0.14.0", "ruff_source_file", @@ -5547,7 +5612,7 @@ dependencies = [ [[package]] name = "ruff_server" version = "0.2.2" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "anyhow", "crossbeam", @@ -5576,13 +5641,14 @@ dependencies = [ "thiserror 2.0.12", "toml", "tracing", + "tracing-log", "tracing-subscriber", ] [[package]] name = "ruff_source_file" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "memchr", "ruff_text_size", @@ -5592,7 +5658,7 @@ dependencies = [ [[package]] name = "ruff_text_size" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "serde", ] @@ -5600,7 +5666,7 @@ dependencies = [ [[package]] name = "ruff_workspace" version = "0.0.0" -source = "git+https://github.com/elide-dev/ruff?rev=a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a#a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" +source = "git+https://github.com/elide-dev/ruff?rev=2de8455e43efc55b2ed302c0bdf4e59744338504#2de8455e43efc55b2ed302c0bdf4e59744338504" dependencies = [ "anyhow", "colored", @@ -5608,7 +5674,7 @@ dependencies = [ "glob", "globset", "ignore", - "indexmap 2.7.1", + "indexmap 2.8.0", "is-macro", "itertools 0.14.0", "log", @@ -5690,14 +5756,14 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dade4812df5c384711475be5fcd8c162555352945401aed22a35bffeab61f657" +checksum = "f7178faa4b75a30e269c71e61c353ce2748cf3d76f0c44c393f4e60abf49b825" dependencies = [ "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys 0.9.2", + "linux-raw-sys 0.9.3", "windows-sys 0.59.0", ] @@ -5776,8 +5842,8 @@ checksum = "dd29631678d6fb0903b69223673e122c32e9ae559d0960a38d574695ebc0ea15" [[package]] name = "salsa" -version = "0.18.0" -source = "git+https://github.com/salsa-rs/salsa.git?rev=99be5d9917c3dd88e19735a82ef6bf39ba84bd7e#99be5d9917c3dd88e19735a82ef6bf39ba84bd7e" +version = "0.19.0" +source = "git+https://github.com/salsa-rs/salsa.git?rev=095d8b2b8115c3cf8bf31914dd9ea74648bb7cf9#095d8b2b8115c3cf8bf31914dd9ea74648bb7cf9" dependencies = [ "boxcar", "compact_str", @@ -5785,8 +5851,9 @@ dependencies = [ "dashmap", "hashbrown 0.15.2", "hashlink", - "indexmap 2.7.1", + "indexmap 2.8.0", "parking_lot 0.12.3", + "portable-atomic", "rayon", "rustc-hash", "salsa-macro-rules", @@ -5797,18 +5864,18 @@ dependencies = [ [[package]] name = "salsa-macro-rules" -version = "0.1.0" -source = "git+https://github.com/salsa-rs/salsa.git?rev=99be5d9917c3dd88e19735a82ef6bf39ba84bd7e#99be5d9917c3dd88e19735a82ef6bf39ba84bd7e" +version = "0.19.0" +source = "git+https://github.com/salsa-rs/salsa.git?rev=095d8b2b8115c3cf8bf31914dd9ea74648bb7cf9#095d8b2b8115c3cf8bf31914dd9ea74648bb7cf9" [[package]] name = "salsa-macros" -version = "0.18.0" -source = "git+https://github.com/salsa-rs/salsa.git?rev=99be5d9917c3dd88e19735a82ef6bf39ba84bd7e#99be5d9917c3dd88e19735a82ef6bf39ba84bd7e" +version = "0.19.0" +source = "git+https://github.com/salsa-rs/salsa.git?rev=095d8b2b8115c3cf8bf31914dd9ea74648bb7cf9#095d8b2b8115c3cf8bf31914dd9ea74648bb7cf9" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", "synstructure", ] @@ -5852,7 +5919,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals 0.29.1", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -5884,7 +5951,7 @@ checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -5952,6 +6019,114 @@ version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +[[package]] +name = "sentry" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a7332159e544e34db06b251b1eda5e546bd90285c3f58d9c8ff8450b484e0da" +dependencies = [ + "httpdate", + "native-tls", + "reqwest", + "sentry-backtrace", + "sentry-contexts", + "sentry-core", + "sentry-debug-images", + "sentry-panic", + "sentry-tracing", + "tokio", + "ureq", +] + +[[package]] +name = "sentry-backtrace" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "565ec31ad37bab8e6d9f289f34913ed8768347b133706192f10606dabd5c6bc4" +dependencies = [ + "backtrace", + "once_cell", + "regex", + "sentry-core", +] + +[[package]] +name = "sentry-contexts" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e860275f25f27e8c0c7726ce116c7d5c928c5bba2ee73306e52b20a752298ea6" +dependencies = [ + "hostname", + "libc", + "os_info", + "rustc_version", + "sentry-core", + "uname", +] + +[[package]] +name = "sentry-core" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653942e6141f16651273159f4b8b1eaeedf37a7554c00cd798953e64b8a9bf72" +dependencies = [ + "once_cell", + "rand 0.8.5", + "sentry-types", + "serde", + "serde_json", +] + +[[package]] +name = "sentry-debug-images" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60bc2154e6df59beed0ac13d58f8dfaf5ad20a88548a53e29e4d92e8e835c2" +dependencies = [ + "findshlibs", + "once_cell", + "sentry-core", +] + +[[package]] +name = "sentry-panic" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "105e3a956c8aa9dab1e4087b1657b03271bfc49d838c6ae9bfc7c58c802fd0ef" +dependencies = [ + "sentry-backtrace", + "sentry-core", +] + +[[package]] +name = "sentry-tracing" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e75c831b4d8b34a5aec1f65f67c5d46a26c7c5d3c7abd8b5ef430796900cf8" +dependencies = [ + "sentry-backtrace", + "sentry-core", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sentry-types" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d4203359e60724aa05cf2385aaf5d4f147e837185d7dd2b9ccf1ee77f4420c8" +dependencies = [ + "debugid", + "hex", + "rand 0.8.5", + "serde", + "serde_json", + "thiserror 1.0.69", + "time", + "url", + "uuid", +] + [[package]] name = "seq-macro" version = "0.3.6" @@ -5960,9 +6135,9 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" [[package]] name = "serde" -version = "1.0.218" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -6002,13 +6177,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.218" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -6019,7 +6194,7 @@ checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -6030,7 +6205,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -6039,7 +6214,7 @@ version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "itoa", "memchr", "ryu", @@ -6054,7 +6229,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -6098,7 +6273,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -6181,23 +6356,6 @@ dependencies = [ "libc", ] -[[package]] -name = "simd-json" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2bcf6c6e164e81bc7a5d49fc6988b3d515d9e8c07457d7b74ffb9324b9cd40" -dependencies = [ - "ahash", - "getrandom 0.2.15", - "halfbrown", - "once_cell", - "ref-cast", - "serde", - "serde_json", - "simdutf8", - "value-trait", -] - [[package]] name = "simdutf8" version = "0.1.5" @@ -6237,24 +6395,6 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" -[[package]] -name = "snmalloc-rs" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb317153089fdfa4d8a2eec059d40a5a23c3bde43995ea23b19121c3f621e74a" -dependencies = [ - "snmalloc-sys", -] - -[[package]] -name = "snmalloc-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065fea53d32bb77bc36cca466cb191f2e5216ebfd0ed360b1d64889ee6e559ea" -dependencies = [ - "cmake", -] - [[package]] name = "socket2" version = "0.5.8" @@ -6276,7 +6416,7 @@ dependencies = [ [[package]] name = "sqlite" -version = "1.0.0-alpha14-SNAPSHOT" +version = "1.0.0-beta1" dependencies = [ "bindgen", "builder", @@ -6351,12 +6491,12 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] name = "substrate" -version = "1.0.0-alpha14-SNAPSHOT" +version = "1.0.0-beta1" dependencies = [ "bindgen", "builder", @@ -6402,9 +6542,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.99" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -6428,7 +6568,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -6455,27 +6595,6 @@ dependencies = [ "windows 0.57.0", ] -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.9.0", - "core-foundation 0.9.4", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "tar" version = "0.4.44" @@ -6495,15 +6614,14 @@ checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" [[package]] name = "tempfile" -version = "3.18.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567" +checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600" dependencies = [ - "cfg-if", "fastrand", "getrandom 0.3.1", "once_cell", - "rustix 1.0.1", + "rustix 1.0.2", "windows-sys 0.59.0", ] @@ -6528,7 +6646,7 @@ dependencies = [ [[package]] name = "terminal" -version = "1.0.0-alpha14-SNAPSHOT" +version = "1.0.0-beta1" dependencies = [ "bindgen", "builder", @@ -6536,11 +6654,11 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" dependencies = [ - "rustix 0.38.44", + "rustix 1.0.2", "windows-sys 0.59.0", ] @@ -6574,7 +6692,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -6585,7 +6703,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", "test-case-core", ] @@ -6626,7 +6744,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -6637,7 +6755,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -6733,15 +6851,14 @@ source = "git+https://github.com/astral-sh/tl.git?rev=6e25b2ee2513d75385101a8ff9 [[package]] name = "tokio" -version = "1.44.0" +version = "1.44.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9975ea0f48b5aa3972bf2d888c238182458437cc2a19374b81b25cdf1023fb3a" +checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" dependencies = [ "backtrace", "bytes 1.10.1", "libc", "mio", - "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", "socket2", @@ -6769,7 +6886,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -6818,9 +6935,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" dependencies = [ "bytes 1.10.1", "futures-core", @@ -6857,11 +6974,11 @@ version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.8.0", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.7.4", ] [[package]] @@ -6973,7 +7090,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -7080,7 +7197,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals 0.28.0", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -7120,7 +7237,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a615d6c2764852a2e88a4f16e9ce1ea49bb776b5872956309e170d63a042a34f" dependencies = [ "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -7145,6 +7262,15 @@ dependencies = [ "uv", ] +[[package]] +name = "uname" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8" +dependencies = [ + "libc", +] + [[package]] name = "unic-char-property" version = "0.9.0" @@ -7266,6 +7392,19 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "ureq" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" +dependencies = [ + "base64 0.22.1", + "log", + "native-tls", + "once_cell", + "url", +] + [[package]] name = "url" version = "2.5.4" @@ -7310,32 +7449,33 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.15.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" +checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" dependencies = [ "getrandom 0.3.1", "js-sys", "rand 0.9.0", + "serde", "uuid-macro-internal", "wasm-bindgen", ] [[package]] name = "uuid-macro-internal" -version = "1.15.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9521621447c21497fac206ffe6e9f642f977c4f82eeba9201055f64884d9cb01" +checksum = "72dcd78c4f979627a754f5522cea6e6a25e55139056535fe6e69c506cd64a862" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] name = "uv" -version = "0.6.4" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +version = "0.6.6" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anstream", "anyhow", @@ -7383,6 +7523,7 @@ dependencies = [ "uv-client", "uv-configuration", "uv-console", + "uv-dirs", "uv-dispatch", "uv-distribution", "uv-distribution-filename", @@ -7423,7 +7564,7 @@ dependencies = [ [[package]] name = "uv-auth" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anyhow", "async-trait", @@ -7435,17 +7576,20 @@ dependencies = [ "reqwest-middleware", "rust-netrc", "rustc-hash", + "schemars", + "serde", "tokio", "tracing", "url", "uv-once-map", + "uv-small-str", "uv-static", ] [[package]] name = "uv-build-backend" version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "csv", "flate2", @@ -7477,7 +7621,7 @@ dependencies = [ [[package]] name = "uv-build-frontend" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anstream", "fs-err 3.1.0", @@ -7505,12 +7649,13 @@ dependencies = [ "uv-types", "uv-virtualenv", "uv-warnings", + "uv-workspace", ] [[package]] name = "uv-cache" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "clap", "fs-err 3.1.0", @@ -7536,7 +7681,7 @@ dependencies = [ [[package]] name = "uv-cache-info" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "fs-err 3.1.0", "globwalk", @@ -7551,7 +7696,7 @@ dependencies = [ [[package]] name = "uv-cache-key" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "hex", "memchr", @@ -7563,7 +7708,7 @@ dependencies = [ [[package]] name = "uv-cli" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anstream", "anyhow", @@ -7590,7 +7735,7 @@ dependencies = [ [[package]] name = "uv-client" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anyhow", "async-trait", @@ -7640,7 +7785,7 @@ dependencies = [ [[package]] name = "uv-configuration" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "clap", "either", @@ -7670,7 +7815,7 @@ dependencies = [ [[package]] name = "uv-console" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "console", ] @@ -7678,16 +7823,18 @@ dependencies = [ [[package]] name = "uv-dirs" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "etcetera 0.9.0", + "fs-err 3.1.0", + "tracing", "uv-static", ] [[package]] name = "uv-dispatch" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anyhow", "futures 0.3.31", @@ -7713,12 +7860,13 @@ dependencies = [ "uv-resolver", "uv-types", "uv-version", + "uv-workspace", ] [[package]] name = "uv-distribution" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anyhow", "either", @@ -7764,7 +7912,7 @@ dependencies = [ [[package]] name = "uv-distribution-filename" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "memchr", "rkyv", @@ -7782,7 +7930,7 @@ dependencies = [ [[package]] name = "uv-distribution-types" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "arcstr", "bitflags 2.9.0", @@ -7818,7 +7966,7 @@ dependencies = [ [[package]] name = "uv-extract" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "astral-tokio-tar", "async-compression", @@ -7844,7 +7992,7 @@ dependencies = [ [[package]] name = "uv-fs" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "backon", "dunce", @@ -7868,7 +8016,7 @@ dependencies = [ [[package]] name = "uv-git" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anyhow", "cargo-util", @@ -7892,7 +8040,7 @@ dependencies = [ [[package]] name = "uv-git-types" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "serde", "thiserror 2.0.12", @@ -7903,7 +8051,7 @@ dependencies = [ [[package]] name = "uv-globfilter" version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "globset", "regex", @@ -7916,7 +8064,7 @@ dependencies = [ [[package]] name = "uv-install-wheel" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "clap", "configparser", @@ -7952,7 +8100,7 @@ dependencies = [ [[package]] name = "uv-installer" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anyhow", "async-channel", @@ -7990,18 +8138,18 @@ dependencies = [ [[package]] name = "uv-macros" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", "textwrap", ] [[package]] name = "uv-metadata" version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "async_zip", "fs-err 3.1.0", @@ -8018,7 +8166,7 @@ dependencies = [ [[package]] name = "uv-normalize" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "rkyv", "schemars", @@ -8029,7 +8177,7 @@ dependencies = [ [[package]] name = "uv-once-map" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "dashmap", "futures 0.3.31", @@ -8039,7 +8187,7 @@ dependencies = [ [[package]] name = "uv-options-metadata" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "serde", ] @@ -8047,7 +8195,7 @@ dependencies = [ [[package]] name = "uv-pep440" version = "0.7.0" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "rkyv", "serde", @@ -8060,11 +8208,11 @@ dependencies = [ [[package]] name = "uv-pep508" version = "0.6.0" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "arcstr", "boxcar", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.14.0", "regex", "rustc-hash", @@ -8083,7 +8231,7 @@ dependencies = [ [[package]] name = "uv-performance-memory-allocator" version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "mimalloc", "tikv-jemallocator", @@ -8092,7 +8240,7 @@ dependencies = [ [[package]] name = "uv-platform-tags" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "memchr", "rkyv", @@ -8105,7 +8253,7 @@ dependencies = [ [[package]] name = "uv-publish" version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "astral-tokio-tar", "async-compression", @@ -8141,15 +8289,17 @@ dependencies = [ [[package]] name = "uv-pypi-types" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "hashbrown 0.15.2", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.14.0", "jiff", "mailparse", + "petgraph", "regex", "rkyv", + "rustc-hash", "serde", "serde-untagged", "thiserror 2.0.12", @@ -8169,7 +8319,7 @@ dependencies = [ [[package]] name = "uv-python" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anyhow", "clap", @@ -8223,7 +8373,7 @@ dependencies = [ [[package]] name = "uv-requirements" version = "0.1.0" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anyhow", "configparser", @@ -8258,7 +8408,7 @@ dependencies = [ [[package]] name = "uv-requirements-txt" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "fs-err 3.1.0", "memchr", @@ -8281,7 +8431,7 @@ dependencies = [ [[package]] name = "uv-resolver" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "arcstr", "clap", @@ -8289,7 +8439,7 @@ dependencies = [ "either", "futures 0.3.31", "hashbrown 0.15.2", - "indexmap 2.7.1", + "indexmap 2.8.0", "itertools 0.14.0", "jiff", "owo-colors", @@ -8337,7 +8487,7 @@ dependencies = [ [[package]] name = "uv-scripts" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "fs-err 3.1.0", "indoc", @@ -8356,10 +8506,9 @@ dependencies = [ [[package]] name = "uv-settings" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "clap", - "etcetera 0.9.0", "fs-err 3.1.0", "schemars", "serde", @@ -8370,6 +8519,7 @@ dependencies = [ "url", "uv-cache-info", "uv-configuration", + "uv-dirs", "uv-distribution-types", "uv-fs", "uv-install-wheel", @@ -8387,7 +8537,7 @@ dependencies = [ [[package]] name = "uv-shell" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anyhow", "home", @@ -8403,7 +8553,7 @@ dependencies = [ [[package]] name = "uv-small-str" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "arcstr", "rkyv", @@ -8414,7 +8564,7 @@ dependencies = [ [[package]] name = "uv-state" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "fs-err 3.1.0", "tempfile", @@ -8424,7 +8574,7 @@ dependencies = [ [[package]] name = "uv-static" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "uv-macros", ] @@ -8432,7 +8582,7 @@ dependencies = [ [[package]] name = "uv-tool" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "fs-err 3.1.0", "pathdiff", @@ -8460,7 +8610,7 @@ dependencies = [ [[package]] name = "uv-trampoline-builder" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "fs-err 3.1.0", "thiserror 2.0.12", @@ -8471,7 +8621,7 @@ dependencies = [ [[package]] name = "uv-types" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anyhow", "rustc-hash", @@ -8488,17 +8638,18 @@ dependencies = [ "uv-pep508", "uv-pypi-types", "uv-python", + "uv-workspace", ] [[package]] name = "uv-version" -version = "0.6.4" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +version = "0.6.6" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" [[package]] name = "uv-virtualenv" version = "0.0.4" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "fs-err 3.1.0", "itertools 0.14.0", @@ -8516,7 +8667,7 @@ dependencies = [ [[package]] name = "uv-warnings" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "anstream", "owo-colors", @@ -8526,7 +8677,7 @@ dependencies = [ [[package]] name = "uv-workspace" version = "0.0.1" -source = "git+https://github.com/elide-dev/uv?rev=40dce4e00959abc9b598df9e565c0d35dfa5f4c2#40dce4e00959abc9b598df9e565c0d35dfa5f4c2" +source = "git+https://github.com/elide-dev/uv?rev=2a9bade4df863445846c3601bad194ed902fdae1#2a9bade4df863445846c3601bad194ed902fdae1" dependencies = [ "fs-err 3.1.0", "glob", @@ -8566,18 +8717,6 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" -[[package]] -name = "value-trait" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9170e001f458781e92711d2ad666110f153e4e50bfd5cbd02db6547625714187" -dependencies = [ - "float-cmp", - "halfbrown", - "itoa", - "ryu", -] - [[package]] name = "vcpkg" version = "0.2.15" @@ -8731,7 +8870,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", "wasm-bindgen-shared", ] @@ -8766,7 +8905,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -8890,6 +9029,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.57.0" @@ -8997,7 +9146,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -9008,7 +9157,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -9019,7 +9168,7 @@ checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -9030,7 +9179,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -9041,7 +9190,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -9052,7 +9201,7 @@ checksum = "cb26fd936d991781ea39e87c3a27285081e3c0da5ca0fcbc02d368cc6f52ff01" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -9073,13 +9222,13 @@ dependencies = [ [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-result 0.3.1", + "windows-strings 0.3.1", + "windows-targets 0.53.0", ] [[package]] @@ -9190,13 +9339,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -9209,6 +9374,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -9221,6 +9392,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -9233,12 +9410,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -9251,6 +9440,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -9263,6 +9458,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -9275,6 +9476,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -9287,11 +9494,26 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" -version = "0.7.3" +version = "0.6.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1" +checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" dependencies = [ "memchr", ] @@ -9355,7 +9577,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" dependencies = [ "libc", - "rustix 1.0.1", + "rustix 1.0.2", ] [[package]] @@ -9393,38 +9615,17 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", "synstructure", ] -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive 0.7.35", -] - [[package]] name = "zerocopy" version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" dependencies = [ - "zerocopy-derive 0.8.23", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.99", + "zerocopy-derive", ] [[package]] @@ -9435,7 +9636,7 @@ checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] @@ -9455,7 +9656,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", "synstructure", ] @@ -9484,7 +9685,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.100", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 80ae0d1f6f..80d2219645 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,21 +18,13 @@ resolver = "2" members = ["crates/*", "tools/umbrella"] -exclude = [ - # Deprecated for removal. - "crates/base", - "crates/build", - "crates/model", - "crates/transport", - "third_party", - "runtime", -] +exclude = ["crates/build", "crates/transport", "third_party", "runtime"] [workspace.package] license = "MIT" edition = "2024" rust-version = "1.85.0" -version = "1.0.0-alpha14-SNAPSHOT" +version = "1.0.0-beta1" authors = ["Elide Technologies, Inc."] homepage = "https://elide.dev" documentation = "https://docs.elide.dev" @@ -85,9 +77,9 @@ jni-sys = { version = "0.4.0" } libloading = { version = "0.8.6" } miette = { version = "7.5.0", features = ["fancy"] } mimalloc = { version = "0.1.43" } -orogene = { git = "https://github.com/elide-dev/orogene", rev = "c74987780c6b81ca3eee5deb863ed3be6424e5df" } +orogene = { git = "https://github.com/elide-dev/orogene", rev = "024c67173c29ae2de79c4e5e113064bb79a2259a" } rustc_version = { version = "0.4.1" } -rustix = { version = "0.38.44", features = ["process"] } +rustix = { version = "1.0.2", features = ["process"] } serde = { version = "1.0.218", default-features = false } sysinfo = { version = "0.33.1" } tikv-jemallocator = { version = "0.6.0", default-features = false, features = ["disable_initial_exec_tls"] } @@ -108,7 +100,7 @@ toml = { version = "0.8.20", default-features = false } typeshare = { version = "1.0.4" } ## Oxc -oxc = { git = "https://github.com/elide-dev/oxc", rev = "64080ee745360b8d33df2ed3882d21125bc3da43", default-features = false, features = [ +oxc = { git = "https://github.com/elide-dev/oxc", rev = "fef680a4775559805e99622fb5aa6155cdf47034", default-features = false, features = [ "full", "isolated_declarations", "mangler", @@ -116,7 +108,7 @@ oxc = { git = "https://github.com/elide-dev/oxc", rev = "64080ee745360b8d33df2ed ] } ## Uv -uv = { git = "https://github.com/elide-dev/uv", rev = "40dce4e00959abc9b598df9e565c0d35dfa5f4c2" } +uv = { git = "https://github.com/elide-dev/uv", rev = "2a9bade4df863445846c3601bad194ed902fdae1" } ## Ruff -ruff = { git = "https://github.com/elide-dev/ruff", rev = "a25be4610a1fd3f7e9a4e593da9ccb25e1aae49a" } +ruff = { git = "https://github.com/elide-dev/ruff", rev = "2de8455e43efc55b2ed302c0bdf4e59744338504" } diff --git a/Makefile b/Makefile index fcbd6580cd..9cd7ba62d5 100644 --- a/Makefile +++ b/Makefile @@ -246,15 +246,15 @@ else RUST_CONFIG_FLAGS ?= endif -JS_FACADE_BIN ?= runtime/bazel-bin/elide/runtime/js/runtime.bin.js +JS_FACADE_BIN ?= tools/runtime/bazel-bin/elide/runtime/js/runtime.bin.js JS_FACADE_OUT ?= packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/facade.js -JS_POLYFILLS_BIN ?= runtime/bazel-bin/elide/runtime/js/polyfills/polyfills.min.js +JS_POLYFILLS_BIN ?= tools/runtime/bazel-bin/elide/runtime/js/polyfills/polyfills.min.js JS_POLYFILLS_OUT ?= packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/polyfills.js -JS_MODULE_BIN ?= runtime/bazel-bin/elide/runtime/js/js.modules.tar +JS_MODULE_BIN ?= tools/runtime/bazel-bin/elide/runtime/js/js.modules.tar JS_MODULE_OUT ?= packages/graalvm-js/src/main/resources/META-INF/elide/embedded/runtime/js/js.vfs.tar PY_FACADE_BIN ?= packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/preamble.py -PY_MODULE_BIN ?= runtime/bazel-bin/elide/runtime/python/py.modules.tar +PY_MODULE_BIN ?= tools/runtime/bazel-bin/elide/runtime/python/py.modules.tar PY_MODULE_OUT ?= packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/py.modules.tar POSIX_FLAGS ?= @@ -416,7 +416,12 @@ else @printf "$(LINUX_PKGS)" endif -setup: $(DEPS) ## Setup development pre-requisites. +setup: $(DEPS) setup-env ## Setup development pre-requisites. + +setup-env: ./.env + +./.env: + cp -fv ./config/env ./.env build: $(DEPS) ## Build the main library, and code-samples if SAMPLES=yes. $(info Building Elide $(VERSION)...) @@ -1059,19 +1064,19 @@ endif # ---- Runtime submodule ---- # # Note: make sure the Git submodule is up to date by running `git submodule update [--init] runtime` -runtime: runtime/WORKSPACE $(RUNTIME_GEN) ## Build and update the JS runtime if needed. +runtime: tools/runtime/WORKSPACE $(RUNTIME_GEN) ## Build and update the JS runtime if needed. -runtime/WORKSPACE: +tools/runtime/WORKSPACE: @echo "Setting up submodules..." $(CMD)$(GIT) submodule update --init --recursive -runtime-build: runtime/bazel-bin ## Build the JS runtime facade and the builtin modules bundle +runtime-build: tools/runtime/bazel-bin ## Build the JS runtime facade and the builtin modules bundle -$(RUNTIME_GEN): runtime/bazel-bin +$(RUNTIME_GEN): tools/runtime/bazel-bin -runtime/bazel-bin: +tools/runtime/bazel-bin: @echo "" && echo "Building runtime facades..." - $(CMD)cd runtime && $(BAZEL) build -c $(BAZEL_MODE) //... + $(CMD)cd tools/runtime && $(BAZEL) build -c $(BAZEL_MODE) //... $(CMD)$(MAKE) runtime-update-copy runtime-update: runtime-build $(RUNTIME_GEN) ## Rebuild and copy the JS runtime facade @@ -1082,13 +1087,11 @@ runtime-clean: ## Clean generated runtime artifacts. runtime-update-copy: @echo "" && echo "Updating runtime artifacts..." - @#echo "- Updating 'facade.js'" - @#$(CMD)cp -f$(POSIX_FLAGS) $(JS_FACADE_BIN) $(JS_FACADE_OUT) @echo "- Updating 'polyfills.js'" $(CMD)cp -f$(POSIX_FLAGS) $(JS_POLYFILLS_BIN) $(JS_POLYFILLS_OUT) @echo "- Updating 'js.vfs.tar'" $(CMD)cp -f$(POSIX_FLAGS) $(JS_MODULE_BIN) $(JS_MODULE_OUT) - @#echo "- Updating 'py.modules.tar.'" - @#$(CMD)cp -f$(POSIX_FLAGS) $(PY_MODULE_BIN) $(PY_MODULE_OUT) + @echo "- Updating 'py.modules.tar.'" + @$(CMD)cp -f$(POSIX_FLAGS) $(PY_MODULE_BIN) $(PY_MODULE_OUT) .PHONY: all docs build test clean distclean forceclean docs images image-base image-base-alpine image-jdk17 image-jdk20 image-jdk21 image-jdk22 image-gvm17 image-gvm20 image-runtime-jvm17 image-runtime-jvm20 image-runtime-jvm21 image-runtime-jvm21 image-native image-native-alpine runtime runtime-build runtime-update third-party diff --git a/PklProject b/PklProject deleted file mode 100644 index 5379e3ec6c..0000000000 --- a/PklProject +++ /dev/null @@ -1,13 +0,0 @@ -amends "pkl:Project" - -package { - name = "elide" - version = "1.0.0-alpha14" - baseUri = "package://pkl.elide.dev/\(name)" - packageZipUrl = "https://github.com/elide-dev/elide/releases/download/\(version)/pkl-\(name)-\(version).zip" -} - -dependencies { - ["table"] { uri = "package://pkg.pkl-lang.org/pkl-pantry/pkl.table@1.1.0" } - ["toml"] { uri = "package://pkg.pkl-lang.org/pkl-pantry/pkl.toml@1.0.2" } -} diff --git a/PklProject.deps.json b/PklProject.deps.json deleted file mode 100644 index a47603aee8..0000000000 --- a/PklProject.deps.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "schemaVersion": 1, - "resolvedDependencies": { - "package://pkg.pkl-lang.org/pkl-pantry/pkl.toml@1": { - "type": "remote", - "uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/pkl.toml@1.0.2", - "checksums": { - "sha256": "45fea4cf14e7d776e131b338efe2a7016f86c87b0c0f532409f728033bd82f71" - } - }, - "package://pkg.pkl-lang.org/pkl-pantry/pkl.table@1": { - "type": "remote", - "uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/pkl.table@1.1.0", - "checksums": { - "sha256": "b79cec3bfc84ab197ad331b429d611229cc12b662de5ad10c8aaf59553435fd9" - } - } - } -} diff --git a/README.md b/README.md index 8394198e53..d873ca7b51 100644 --- a/README.md +++ b/README.md @@ -5,41 +5,106 @@

+Elide is a fast polyglot runtime, combining support for JavaScript, TypeScript, and Python. +
+
elide: verb. to omit (a sound or syllable) when speaking. to join together; to merge. +
+


-Latest: 1.0.0-alpha14 + + + + Code of Conduct +
+ + + + Python 3.11.x +

-
+

+Latest: 1.0.0-beta1 +

+

+ Learn more at elide.dev | Docs, Guides, and Samples +

-Elide is a fast polyglot runtime, with support for JavaScript, TypeScript, and Python. +
> [!IMPORTANT] -> Elide is still in alpha, some features are not fully supported and others may fail on certain environments. +> Careful! Elide is in beta. + +## Usage + +Elide is like Node or Python. Use it to run things: +```shell +> elide ./my-typescript.{ts,js,py} +``` + +You can use Node APIs. You can even mix languages: +```python +# sample.py + +def greeting(name = "Elide"): + return f"Hello, {name}!" +``` +```typescript +// sample.mts +import sample from "./sample.py" + +// shows that this is typescript +const x: number = 42; + +console.log(sample.greeting() + ` The answer is ${x}`); +``` +```shell +> elide ./sample.mts +Hello, Elide! The answer is 42 +``` + +Read more about Elide's [feature highlights](https://elide.dev) ## Installation -You can install the runtime by running: +You can install Elide on Linux (amd64) or macOS (amd64/arm64) by running: ```shell curl -sSL --tlsv1.2 elide.sh | bash -s - ``` -After installation, you can run `elide help` or `elide info` to see more information. +After installation, you can run `elide --help` or `elide info` to see more information. + +### Using Elide via Docker + +We provide a container image, hosted on GitHub: -### Licensing +``` +docker run --rm -it ghcr.io/elide-dev/elide +``` + +### Using Elide in GitHub Actions + +We provide a [setup action](https://github.com/marketplace/actions/setup-elide): + +```yaml +- name: "Setup: Elide" + uses: elide-dev/setup-elide@v2 + with: + # any tag from the `elide-dev/releases` repo; omit for latest + version: 1.0.0-beta1 +``` -Elide is licensed [under MIT](LICENSE) as of November 2022. Dependencies are scanned for license compatibility; the -report is available via FOSSA: +### Using Elide via GitHub Codespaces -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Felide-dev%2Fv3.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Felide-dev%2Fv3?ref=badge_large) +We provide a [GitHub Codespace](https://github.com/features/codespaces) with Elide pre-installed. You can click below to try it out, right from your browser: -Building and using Elide with Oracle GraalVM requires license compliance through Oracle. For more information, see the -[GraalVM website](https://graalvm.org). +[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/elide-dev/elide?devcontainer_path=.devcontainer%2Fdevcontainer.json) ## Contributing diff --git a/buf.work.yaml b/buf.work.yaml index 1878b341be..cc0094ffe0 100644 --- a/buf.work.yaml +++ b/buf.work.yaml @@ -1,3 +1,3 @@ version: v1 directories: - - proto + - packages/proto diff --git a/build.gradle.kts b/build.gradle.kts index 02e783d025..3ac4debc5b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -79,7 +79,7 @@ val enableOwasp: String? by properties val buildDocs: String by properties val buildEmbedded: String by properties -val buildDocsModules: String by properties +val buildExperimentalEntrypoint: String by properties val buildBenchmarks: String by properties val isCI = properties["elide.ci"] == "true" || System.getenv("CI") != null @@ -113,6 +113,8 @@ buildscript { } dependencies { + classpath(libs.asm.core) + classpath(libs.asm.tree) classpath(libs.bouncycastle) classpath(libs.bouncycastle.util) classpath(libs.guava) @@ -144,26 +146,35 @@ java { dependencies { // Kover: Coverage Reporting - kover(projects.packages.base) - kover(projects.packages.cli) - kover(projects.packages.core) - kover(projects.packages.graalvm) - kover(projects.packages.graalvmJava) - kover(projects.packages.graalvmJvm) - kover(projects.packages.graalvmKt) - kover(projects.packages.graalvmLlvm) - kover(projects.packages.graalvmPy) - kover(projects.packages.graalvmRb) - kover(projects.packages.http) - kover(projects.packages.server) - kover(projects.packages.ssr) - kover(projects.packages.test) + listOfNotNull( + projects.packages.base, + projects.packages.cli, + projects.packages.core, + projects.packages.engine, + projects.packages.graalvm, + projects.packages.graalvmJava, + projects.packages.graalvmJs, + projects.packages.graalvmJvm, + projects.packages.graalvmKt, + projects.packages.graalvmLlvm, + projects.packages.graalvmPy, + projects.packages.graalvmRb, + projects.packages.graalvmTs, + projects.packages.http, + projects.packages.server, + projects.packages.ssr, + projects.packages.test, + if (buildEmbedded != "true") null else project(":packages:embedded"), + if (buildExperimentalEntrypoint != "true") null else project(":packages:entry"), + ).forEach { + kover(it) + if (buildDocs == "true") dokka(it) + } if (buildDocs == "true") { val dokkaPlugin by configurations dokkaPlugin(libs.plugin.dokka.versioning) dokkaPlugin(libs.plugin.dokka.templating) - dokkaPlugin(libs.plugin.dokka.kotlinAsJava) dokkaPlugin(libs.plugin.dokka.mermaid) } } @@ -321,6 +332,8 @@ koverReport { // --- API Pinning ---------------------------------------------------------------------------------------------------- // apiValidation { + validationDisabled = properties["elide.abiValidate"] != "true" + nonPublicMarkers += listOf( "elide.annotations.Internal", @@ -340,16 +353,6 @@ apiValidation { } else { emptyList() }, - ).plus( - if (buildDocs == "true" && buildDocsModules == "true") { - listOf( - "architecture", - "docs", - "guide", - ) - } else { - emptyList() - }, ).plus( if (buildEmbedded == "true") { listOf( @@ -437,10 +440,10 @@ tasks { if (buildDocs == "true") { val docAsset: (String) -> File = { - rootProject.layout.projectDirectory.file("docs/$it").asFile + rootProject.layout.projectDirectory.file("project/docs/$it").asFile } val creativeAsset: (String) -> File = { - rootProject.layout.projectDirectory.file("creative/$it").asFile + rootProject.layout.projectDirectory.file("project/creative/$it").asFile } dokka { @@ -448,14 +451,14 @@ tasks { moduleVersion = project.version as String dokkaPublications.configureEach { - outputDirectory = layout.projectDirectory.dir("docs/apidocs").asFile + outputDirectory = layout.projectDirectory.dir("project/docs/apidocs").asFile suppressInheritedMembers = true suppressObviousFunctions = true } pluginsConfiguration.html { footerMessage = "© 2023—2025 Elide Technologies, Inc." homepageLink = "https://docs.elide.dev" - templatesDir = rootProject.layout.projectDirectory.dir("docs/templates").asFile + templatesDir = rootProject.layout.projectDirectory.dir("project/docs/templates-v2").asFile customAssets.from( listOf( creativeAsset("logo/logo-wide-1200-w-r2.png"), @@ -471,21 +474,16 @@ tasks { } val projectVersion = project.version as String val allVersions = listOf( - "1.0.0-alpha14", - "1.0.0-alpha13", - "1.0.0-alpha11", - "1.0.0-alpha10", - "1.0.0-alpha9", - "1.0.0-alpha8", + "1.0.0-beta1", ) pluginsConfiguration.versioning { version = projectVersion versionsOrdering = allVersions - olderVersionsDir = file("docs/versions") + olderVersionsDir = file("project/docs/versions") renderVersionsNavigationOnAllPages = true olderVersions.from( allVersions.drop(1).map { - file("docs/versions/$it") + file("project/docs/versions/$it") }, ) } diff --git a/buildscript-gradle.lockfile b/buildscript-gradle.lockfile deleted file mode 100644 index 5c5a82645f..0000000000 --- a/buildscript-gradle.lockfile +++ /dev/null @@ -1,125 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.esotericsoftware:minlog:1.3.1=classpath -com.fasterxml.jackson.core:jackson-annotations:2.18.2=classpath -com.fasterxml.jackson.core:jackson-core:2.18.2=classpath -com.fasterxml.jackson.core:jackson-databind:2.18.2=classpath -com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.18.2=classpath -com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.2=classpath -com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=classpath -com.fasterxml.jackson.module:jackson-module-blackbird:2.18.2=classpath -com.fasterxml.jackson:jackson-bom:2.18.2=classpath -com.fasterxml.woodstox:woodstox-core:7.0.0=classpath -com.github.package-url:packageurl-java:1.5.0=classpath -com.github.spullara.mustache.java:compiler:0.9.6=classpath -com.google.code.findbugs:jsr305:3.0.2=classpath -com.google.code.gson:gson:2.9.0=classpath -com.google.errorprone:error_prone_annotations:2.36.0=classpath -com.google.guava:failureaccess:1.0.2=classpath -com.google.guava:guava:33.4.0-jre=classpath -com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=classpath -com.google.j2objc:j2objc-annotations:3.0.0=classpath -com.googlecode.javaewah:JavaEWAH:1.2.3=classpath -com.h2database:h2:2.3.232=classpath -com.h3xstream.retirejs:retirejs-core:3.0.4=classpath -com.hankcs:aho-corasick-double-array-trie:1.2.3=classpath -com.moandjiezana.toml:toml4j:0.7.2=classpath -com.samskivert:jmustache:1.16=classpath -com.squareup.okio:okio-jvm:3.10.2=classpath -com.squareup.okio:okio:3.10.2=classpath -com.squareup:kotlinpoet-jvm:2.0.0=classpath -com.squareup:kotlinpoet:2.0.0=classpath -com.vaadin.external.google:android-json:0.0.20131108.vaadin1=classpath -commons-beanutils:commons-beanutils:1.9.4=classpath -commons-codec:commons-codec:1.17.1=classpath -commons-collections:commons-collections:3.2.2=classpath -commons-digester:commons-digester:2.1=classpath -commons-io:commons-io:2.18.0=classpath -commons-logging:commons-logging:1.3.4=classpath -commons-validator:commons-validator:1.9.0=classpath -gradle.plugin.org.gradle.crypto:checksum:1.4.0=classpath -io.github.gradle-nexus.publish-plugin:io.github.gradle-nexus.publish-plugin.gradle.plugin:1.3.0=classpath -io.github.gradle-nexus:publish-plugin:1.3.0=classpath -io.github.java-diff-utils:java-diff-utils:4.12=classpath -io.github.jeremylong:jcs3-slf4j:1.0.5=classpath -io.github.jeremylong:open-vulnerability-clients:7.2.2=classpath -jakarta.transaction:jakarta.transaction-api:1.3.3=classpath -javax.activation:javax.activation-api:1.2.0=classpath -javax.inject:javax.inject:1=classpath -javax.ws.rs:javax.ws.rs-api:2.0.1=classpath -javax.xml.bind:jaxb-api:2.3.1=classpath -joda-time:joda-time:2.13.1=classpath -net.gpedro.integrations.slack:slack-webhook:1.4.0=classpath -org.anarres.jdiagnostics:jdiagnostics:1.0.7=classpath -org.apache.commons:commons-collections4:4.4=classpath -org.apache.commons:commons-compress:1.27.1=classpath -org.apache.commons:commons-dbcp2:2.13.0=classpath -org.apache.commons:commons-jcs3-core:3.2.1=classpath -org.apache.commons:commons-lang3:3.17.0=classpath -org.apache.commons:commons-pool2:2.12.0=classpath -org.apache.commons:commons-text:1.13.0=classpath -org.apache.httpcomponents.client5:httpclient5:5.4.2=classpath -org.apache.httpcomponents.core5:httpcore5-h2:5.3.3=classpath -org.apache.httpcomponents.core5:httpcore5:5.3.3=classpath -org.apache.lucene:lucene-analysis-common:9.12.0=classpath -org.apache.lucene:lucene-core:9.12.0=classpath -org.apache.lucene:lucene-facet:9.12.0=classpath -org.apache.lucene:lucene-queries:9.12.0=classpath -org.apache.lucene:lucene-queryparser:9.12.0=classpath -org.apache.lucene:lucene-sandbox:9.12.0=classpath -org.apache.maven:maven-artifact:3.9.6=classpath -org.apache.maven:maven-builder-support:3.9.6=classpath -org.apache.maven:maven-model-builder:3.9.6=classpath -org.apache.maven:maven-model:3.9.6=classpath -org.apache.velocity:velocity-engine-core:2.4.1=classpath -org.bouncycastle:bcpg-jdk18on:1.78=classpath -org.bouncycastle:bcprov-jdk18on:1.80=classpath -org.bouncycastle:bcutil-jdk18on:1.80=classpath -org.checkerframework:checker-qual:3.43.0=classpath -org.codehaus.plexus:plexus-interpolation:1.26=classpath -org.codehaus.plexus:plexus-utils:3.5.1=classpath -org.codehaus.woodstox:stax2-api:4.2.2=classpath -org.eclipse.jgit:org.eclipse.jgit:6.10.0.202406032230-r=classpath -org.eclipse.packager:packager-core:0.21.0=classpath -org.eclipse.packager:packager-rpm:0.21.0=classpath -org.eclipse.sisu:org.eclipse.sisu.inject:0.9.0.M2=classpath -org.glassfish:jakarta.json:2.0.1=classpath -org.gradle.crypto.checksum:org.gradle.crypto.checksum.gradle.plugin:1.4.0=classpath -org.gradle.test-retry:org.gradle.test-retry.gradle.plugin:1.6.2=classpath -org.gradle:test-retry-gradle-plugin:1.6.2=classpath -org.jetbrains.kotlin:kotlin-metadata-jvm:2.1.0=classpath -org.jetbrains.kotlin:kotlin-reflect:2.0.21=classpath -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=classpath -org.jetbrains.kotlinx.binary-compatibility-validator:org.jetbrains.kotlinx.binary-compatibility-validator.gradle.plugin:0.17.0=classpath -org.jetbrains.kotlinx:atomicfu-gradle-plugin:0.27.0=classpath -org.jetbrains.kotlinx:atomicfu-transformer:0.27.0=classpath -org.jetbrains.kotlinx:binary-compatibility-validator:0.17.0=classpath -org.jetbrains:annotations:13.0=classpath -org.json:json:20250107=classpath -org.jsoup:jsoup:1.18.3=classpath -org.jspecify:jspecify:1.0.0=classpath -org.mozilla:rhino:1.7.10=classpath -org.ow2.asm:asm-analysis:9.7=classpath -org.ow2.asm:asm-commons:9.7=classpath -org.ow2.asm:asm-tree:9.7=classpath -org.ow2.asm:asm-util:9.7=classpath -org.ow2.asm:asm:9.7=classpath -org.owasp:dependency-check-core:12.1.0=classpath -org.owasp:dependency-check-gradle:12.1.0=classpath -org.owasp:dependency-check-utils:12.1.0=classpath -org.semver4j:semver4j:5.6.0=classpath -org.slf4j:slf4j-api:2.0.12=classpath -org.slf4j:slf4j-simple:1.8.0-alpha2=classpath -org.sonatype.goodies:package-url-java:1.2.0=classpath -org.sonatype.ossindex:ossindex-service-api:1.8.2=classpath -org.sonatype.ossindex:ossindex-service-client:1.8.2=classpath -org.spdx.sbom:org.spdx.sbom.gradle.plugin:0.8.0=classpath -org.spdx:java-spdx-library:1.1.11=classpath -org.spdx:spdx-gradle-plugin:0.8.0=classpath -org.spdx:spdx-jackson-store:1.1.9.1=classpath -org.tukaani:xz:1.9=classpath -org.whitesource:pecoff4j:0.0.2.1=classpath -org.yaml:snakeyaml:2.3=classpath -us.springett:cpe-parser:2.1.0=classpath -empty= diff --git a/biome.jsonc b/config/biome.jsonc similarity index 94% rename from biome.jsonc rename to config/biome.jsonc index 657a189d14..7b26a551d7 100644 --- a/biome.jsonc +++ b/config/biome.jsonc @@ -21,7 +21,8 @@ "packages/*/src/*/resources/META-INF/native-image/dev/elide/*/*.json", "packages/*/src/*/resources/META-INF/native-image/dev.elide/*/*.json", "packages/server/src/test/resources/manifests/app.assets.pb.json", - "packages/graalvm/src/test/resources/META-INF/elide/embedded/harness.js" + "packages/graalvm/src/test/resources/META-INF/elide/embedded/harness.js", + "./project/infra/install/worker-apis.d.ts" ] }, "linter": { diff --git a/.bun-version b/config/bun-version similarity index 100% rename from .bun-version rename to config/bun-version diff --git a/deny.toml b/config/deny.toml similarity index 100% rename from deny.toml rename to config/deny.toml diff --git a/.env b/config/env similarity index 100% rename from .env rename to config/env diff --git a/.husky/commit-msg b/config/husky/commit-msg similarity index 100% rename from .husky/commit-msg rename to config/husky/commit-msg diff --git a/.husky/pre-commit b/config/husky/pre-commit similarity index 100% rename from .husky/pre-commit rename to config/husky/pre-commit diff --git a/.licrc b/config/licrc similarity index 100% rename from .licrc rename to config/licrc diff --git a/.npmrc b/config/npmrc similarity index 100% rename from .npmrc rename to config/npmrc diff --git a/config/requirements.txt b/config/requirements.txt new file mode 100644 index 0000000000..af3ee57638 --- /dev/null +++ b/config/requirements.txt @@ -0,0 +1 @@ +ruff diff --git a/crates/diag/Cargo.toml b/crates/diag/Cargo.toml index bf8be4629a..8f64b3c3f2 100644 --- a/crates/diag/Cargo.toml +++ b/crates/diag/Cargo.toml @@ -23,7 +23,7 @@ authors = { workspace = true } license = { workspace = true } [lib] -crate-type = ["lib", "cdylib"] +crate-type = ["lib", "staticlib", "cdylib"] [dependencies] java_native = { workspace = true } diff --git a/crates/js/Cargo.toml b/crates/js/Cargo.toml index 1ac450e9ce..64532ce1a5 100644 --- a/crates/js/Cargo.toml +++ b/crates/js/Cargo.toml @@ -23,7 +23,7 @@ authors = { workspace = true } license = { workspace = true } [lib] -crate-type = ["lib", "cdylib"] +crate-type = ["lib", "staticlib", "cdylib"] [dependencies] java_native = { workspace = true } diff --git a/crates/posix/Cargo.toml b/crates/posix/Cargo.toml index dc4b30b5a0..b1905ea1fb 100644 --- a/crates/posix/Cargo.toml +++ b/crates/posix/Cargo.toml @@ -23,7 +23,7 @@ authors = { workspace = true } license = { workspace = true } [lib] -crate-type = ["lib", "cdylib"] +crate-type = ["lib", "staticlib", "cdylib"] [dependencies] java_native = { workspace = true } diff --git a/crates/sqlite/Cargo.toml b/crates/sqlite/Cargo.toml index f655ee8f02..a0f075c972 100644 --- a/crates/sqlite/Cargo.toml +++ b/crates/sqlite/Cargo.toml @@ -24,7 +24,7 @@ license = { workspace = true } [lib] name = "sqlitejdbc" -crate-type = ["lib", "cdylib"] +crate-type = ["lib", "staticlib", "cdylib"] [dependencies] java_native = { workspace = true } diff --git a/crates/sqlite/build.rs b/crates/sqlite/build.rs index eab4121886..6dc79ccd41 100644 --- a/crates/sqlite/build.rs +++ b/crates/sqlite/build.rs @@ -13,27 +13,12 @@ use bindgen::Builder; use builder::{ - build_bindings, build_dual_cc, header_file, if_not_exists, makefile_sub_run, setup, setup_cc, - src_file, third_party_project, third_party_src_file, + build_bindings, build_dual_cc, header_file, setup_cc, src_file, third_party_project, + third_party_src_file, }; fn main() { - let profile = std::env::var("PROFILE").expect("No profile variable set"); - let profile_val = profile.as_str(); - let cmd_args = match profile_val { - "release" => "RELEASE=yes", - _ => "RELEASE=no", - }; - - setup(|| { - // we need to build the sqlite amalgamation if it is not present - if_not_exists(third_party_src_file("sqlite", "sqlite3.c").as_str(), || { - makefile_sub_run("third_party", format!("sqlite {}", cmd_args).as_str()); - }); - }); - let mut build = setup_cc(); - let sqlite_path = third_party_project("sqlite/install"); let sqlite_include = format!("-I{}/include", sqlite_path); let include_binding = sqlite_include.clone(); @@ -56,6 +41,7 @@ fn main() { // Defines & Compiler Settings .define("SQLITE_GVM_STATIC", "1") .define("SQLITE_CORE", "1") + .define("SQLITE_USE_MALLOC_H", "1") .define("SQLITE_DEFAULT_FILE_PERMISSIONS", "0666") .define("SQLITE_DEFAULT_MEMSTATUS", "0") .define("SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS", "1") diff --git a/crates/terminal/Cargo.toml b/crates/terminal/Cargo.toml index 4385997eff..071ccb727a 100644 --- a/crates/terminal/Cargo.toml +++ b/crates/terminal/Cargo.toml @@ -23,7 +23,7 @@ authors = { workspace = true } license = { workspace = true } [lib] -crate-type = ["lib", "cdylib"] +crate-type = ["lib", "staticlib", "cdylib"] [dependencies] # Nothing at this time. diff --git a/crates/transport/Cargo.toml b/crates/transport/Cargo.toml index ca50332df2..de62eab4f0 100644 --- a/crates/transport/Cargo.toml +++ b/crates/transport/Cargo.toml @@ -13,13 +13,17 @@ [package] name = "transport" -edition = "2024" -license = "MIT" -workspace = "../.." -version = "1.0.0-alpha14-SNAPSHOT" +version = { workspace = true } +edition = { workspace = true } +rust-version = { workspace = true } +homepage = { workspace = true } +documentation = { workspace = true } +repository = { workspace = true } +authors = { workspace = true } +license = { workspace = true } [lib] -crate-type = ["lib", "cdylib"] +crate-type = ["lib", "staticlib", "cdylib"] [dependencies] # Nothing. diff --git a/gradle.properties b/gradle.properties index b19fef255a..90aa31df10 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,9 +15,9 @@ strictMode = true publishMainHostLock = false -buildEmbedded = true +buildEmbedded = false buildDocs = false -buildBenchmarks = true +buildBenchmarks = false buildExperimentalEntrypoint = false enableSigning = false @@ -27,10 +27,11 @@ enableNativeTransport = false enableOwasp = true elide.buildMode = dev +elide.abiValidate = false elide.kotlinNative = false elide.allTargets = false elide.release = false -elide.strict = true +elide.strict = false elide.stamp = false elide.atomicFu = true elide.lockDeps = false @@ -52,19 +53,20 @@ systemProp.org.gradle.s3.endpoint = https://8d4252856750d8486c1740c063bc5a40.r2. org.gradle.parallel = true org.gradle.caching = true org.gradle.configureondemand = true -org.gradle.jvmargs = \ - -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -Xmx8g --add-opens=java.base/java.util.function=ALL-UNNAMED --add-opens=java.\ - base/java.util.stream=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.nio.\ - channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.util.\ - concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.lang.\ - ref=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED \ +org.gradle.jvmargs = -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -Xmx24g --add-opens=java.base/java.util.function=ALL-UNNAMED \ + --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.\ + base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.\ + util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.\ + lang.ref=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED \ --enable-native-access=ALL-UNNAMED org.gradle.unsafe.isolated-projects = false org.gradle.configuration-cache = true +org.gradle.configuration-cache.parallel = false org.gradle.configuration-cache.problems = warn org.gradle.configuration-cache.stable = true org.gradle.configuration-cache.max-problems = 1000 org.gradle.dependency.verification = off +org.gradle.workers.max = 8 org.gradle.warning.mode = none gradle.enterprise.testretry.enabled = false systemProp.gradle.enterprise.testretry.enabled = false @@ -72,14 +74,14 @@ systemProp.gradle.enterprise.testretry.enabled = false # Settings: Languages / Runtimes versions.java.language = 21 versions.java.toolchain = 23 -versions.java.minimum = 11 +versions.java.minimum = 21 versions.java.target = 21 -versions.kotlin.sdk = 2.1.20-RC +versions.kotlin.sdk = 2.1.20-RC3 versions.kotlin.language = 1.9 versions.android.sdk.target = 33 # Settings: Libraries -micronautCatalogVersion = 4.4.5 +micronautCatalogVersion = 4.5.0 micronautVersion = 4.7.6 # Settings: Kotlin @@ -126,5 +128,6 @@ systemProp.sonar.gradle.skipCompile = true dependency.analysis.print.build.health = false # Settings: Dokka +org.jetbrains.dokka.experimental.tryK2 = false org.jetbrains.dokka.experimental.gradle.pluginMode = V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn = true diff --git a/gradle/elide.versions.toml b/gradle/elide.versions.toml index 2fdcccbd51..bf782a6a03 100644 --- a/gradle/elide.versions.toml +++ b/gradle/elide.versions.toml @@ -30,7 +30,7 @@ brotli = "0.1.2" brotli4j = "1.18.0" buf = "1.28.1" buildTimeTracker = "4.3.0" -buildconfig-plugin = "5.5.1" +buildconfig-plugin = "5.5.2" byteunits = "0.9.1" caffeine = "3.2.0" capnproto = "0.1.18-elide" @@ -49,11 +49,12 @@ cyclonedx = "2.0.0" dekorate = "3.1.1" dependencyAnalysis = "2.8.0" detekt = "1.23.8" +dirs = "bf76af41b9" diktat = "2.0.0" docker-plugin = "9.4.0" doctor-plugin = "0.10.0" dokka = "2.0.0" -elide = "1.0.0-alpha14" +elide = "1.0.0-beta1" elide-uuid = "2.0.0-Beta3-0.20.0-rc1" errorprone = "2.36.0" faker = "1.15.0" @@ -67,7 +68,7 @@ gr8 = "0.11.2" graalvm = "24.1.2" graalvm-metadata = "0.3.16" graalvm-pin = "24.1.2" -graalvm-plugin = "0.10.5" +graalvm-plugin = "0.10.6" graalvm-stable = "24.1.2" graalvm-svm-driver = "24.1.2" gradleChecksum = "1.4.0" @@ -122,7 +123,7 @@ kotest-plugin = "0.8.18" kotlin-compile-testing = "1.6.0" kotlin-dataframe = "0.11.0" kotlin-language = "2.0" -kotlin-sdk = "2.1.20-RC" +kotlin-sdk = "2.1.20-RC3" kotlinpoet = "2.1.0" kotlinx-abiValidator = "0.17.0" kotlinx-benchmark = "0.4.13" @@ -140,7 +141,7 @@ kotlinx-serialization = "1.8.0" kotlinx-wrappers-bom = "1.0.0-pre.754" kotlinx-wrappers-browser = "1.0.0-pre.754" kotlinx-wrappers-cesium = "1.114.0-pre.754" -kotlinx-wrappers-css = "1.0.0-pre.754" +kotlinx-wrappers-css = "2025.3.10" kotlinx-wrappers-csstype = "3.1.4-pre.754" kotlinx-wrappers-emotion = "11.11.4-pre.754" kotlinx-wrappers-history = "5.3.0-pre.506-compat" @@ -173,22 +174,22 @@ kotlinx-wrappers-web = "1.0.0-pre.754" kotlinxWrappers = "pre.754" kover = "0.7.5" kover-plugin = "0.7.5" -ksp = "2.1.20-RC-1.0.31" +ksp = "2.1.20-RC3-1.0.31" ktlint = "1.1.1" ktoml = "0.5.2" larray = "0.2.1" lettuce = "6.2.5.RELEASE" -lmaxDisruptor = "3.4.4" +lmaxDisruptor = "4.0.0" lmaxDisruptorProxy = "3.1.1" logback = "1.5.17" lz4 = "1.3.0" magicProgress = "0.3.2" mermaidDokka = "0.6.0" -micronaut = "4.7.6" -micronaut-aot = "2.6.0" +micronaut = "4.8.6" +micronaut-aot = "2.7.0" micronaut-lib = "4.7.6" micronaut-liquibase = "5.4.1" -micronaut-plugin = "4.4.5" +micronaut-plugin = "4.5.0" micronaut-xml = "3.1.0" mockito-bom = "5.10.0" mockito-junit = "5.10.0" @@ -292,7 +293,7 @@ kotlin-plugin-jpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kot kotlin-plugin-jsObjects = { id = "org.jetbrains.kotlin.plugin.js-plain-objects", version.ref = "kotlin-sdk" } kotlin-plugin-noarg = { id = "org.jetbrains.kotlin.plugin.noarg", version.ref = "kotlin-sdk" } kotlin-plugin-powerAssert = { id = "org.jetbrains.kotlin.plugin.power-assert", version.ref = "kotlin-sdk" } -kotlinx-plugin-abiValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "kotlinx-abiValidator" } +kotlinx-plugin-abiValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator" } kotlinx-plugin-benchmark = { id = "org.jetbrains.kotlinx.benchmark", version.ref = "kotlinx-benchmark" } kotlinx-plugin-knit = { id = "org.jetbrains.kotlinx.knit", version.ref = "kotlinx-knit" } kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover-plugin" } @@ -366,6 +367,7 @@ confundus = { group = "com.jakewharton.confundus", name = "confundus-gradle", ve consoleUi = { group = "de.codeshelf.consoleui", name = "consoleui", version.ref = "consoleui" } crossword = { group = "com.jakewharton.crossword", name = "crossword", version.ref = "crossword" } dekorate-kubernetes = { group = "io.dekorate", name = "kubernetes-annotations", version.ref = "dekorate" } +dirs = { group = "com.github.elide-dev", name = "directories-jvm", version.ref = "dirs" } errorprone-annotations = { group = "com.google.errorprone", name = "error_prone_annotations", version.ref = "errorprone" } gax-java = { group = "com.google.api", name = "gax", version.ref = "gax" } gax-java-grpc = { group = "com.google.api", name = "gax", version.ref = "gax" } diff --git a/gradle/mn-override.versions.toml b/gradle/mn-override.versions.toml index 615370a97d..2e4fddea48 100644 --- a/gradle/mn-override.versions.toml +++ b/gradle/mn-override.versions.toml @@ -1,9 +1,10 @@ [versions] -micronaut-core = "4.8.5" +micronaut-core = "4.8.6" +micronaut-context = "4.8.6" micronaut-platform = "4.7.6" micronaut-picocli = "5.7.0" -micronaut-graal = "4.8.5" -micronaut-runtime = "4.8.5" -micronaut-inject-kotlin = "4.8.5" +micronaut-graal = "4.8.6" +micronaut-runtime = "4.8.6" +micronaut-inject-kotlin = "4.8.6" micronaut-test-core = "4.7.0" micronaut-test-junit5 = "4.7.0" diff --git a/gradle/verification-metadata.disabled.xml b/gradle/verification-metadata.xml similarity index 50% rename from gradle/verification-metadata.disabled.xml rename to gradle/verification-metadata.xml index 0ab994516b..57e343996f 100644 --- a/gradle/verification-metadata.disabled.xml +++ b/gradle/verification-metadata.xml @@ -2,462 +2,9 @@ true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -468,24 +15,14 @@ - - - - - - - - - - - - - - + + + + - - - + + + @@ -498,24 +35,14 @@ - - - - - - - - - - - - - - + + + + - - - + + + @@ -524,16 +51,10 @@ - - - - - - - - - - + + + + @@ -620,24 +141,18 @@ - - + + - - + + - - - - - - - - + + @@ -646,12 +161,6 @@ - - - - - - @@ -678,57 +187,76 @@ - - - - + + + + + + + + - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + + + - - + + - - + + @@ -797,12 +325,6 @@ - - - - - - @@ -845,7 +367,6 @@ - @@ -856,30 +377,12 @@ - - - - - - - - - - - - - - - - - - @@ -916,24 +419,6 @@ - - - - - - - - - - - - - - - - - - @@ -946,24 +431,12 @@ - - - - - - - - - - - - @@ -988,30 +461,24 @@ + + + + + + - - - - - - - - - - - - @@ -1040,26 +507,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -1080,6 +527,16 @@ + + + + + + + + + + @@ -1090,26 +547,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -1130,6 +567,16 @@ + + + + + + + + + + @@ -1140,36 +587,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1180,6 +597,16 @@ + + + + + + + + + + @@ -1190,16 +617,6 @@ - - - - - - - - - - @@ -1232,54 +649,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - + + + @@ -1292,14 +675,14 @@ - - - - + + + + - - - + + + @@ -1332,46 +715,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - + + + @@ -1380,18 +731,6 @@ - - - - - - - - - - - - @@ -1402,16 +741,6 @@ - - - - - - - - - - @@ -1422,22 +751,6 @@ - - - - - - - - - - - - - - - - @@ -1448,22 +761,6 @@ - - - - - - - - - - - - - - - - @@ -1474,22 +771,6 @@ - - - - - - - - - - - - - - - - @@ -1500,22 +781,6 @@ - - - - - - - - - - - - - - - - @@ -1666,136 +931,108 @@ - - - - - - - - - - - - + + - - + + - - - - + + + + + + + + - - + + - - - - + + + + - - - - - - - - - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + @@ -1804,7 +1041,6 @@ - @@ -1821,65 +1057,28 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - + + + + - - - - - + + + - - - - + + + + @@ -1914,14 +1113,12 @@ - - @@ -1972,6 +1169,22 @@ + + + + + + + + + + + + + + + + @@ -2042,100 +1255,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - + + + - - - - + + + + - - - - - - - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + @@ -2154,16 +1331,6 @@ - - - - - - - - - - @@ -2196,12 +1363,6 @@ - - - - - - @@ -2224,6 +1385,16 @@ + + + + + + + + + + @@ -2244,14 +1415,14 @@ - - - - + + + + - - - + + + @@ -2276,8 +1447,8 @@ - - + + @@ -2301,10 +1472,6 @@ - - - - @@ -2320,22 +1487,6 @@ - - - - - - - - - - - - - - - - @@ -2354,20 +1505,8 @@ - - - - - - - - - - - - - - + + @@ -2376,6 +1515,12 @@ + + + + + + @@ -2386,50 +1531,50 @@ - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + @@ -2504,16 +1649,6 @@ - - - - - - - - - - @@ -2534,32 +1669,16 @@ - - - - - - - - + + - - - - - - - - - - - - + + @@ -2598,66 +1717,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2670,7 +1729,6 @@ - @@ -2925,16 +1983,6 @@ - - - - - - - - - - @@ -2995,10 +2043,10 @@ - - - - + + + + @@ -3011,26 +2059,30 @@ - - - - + + + + - - - - + + + + + + + + - - - - + + + + - - - + + + @@ -3043,6 +2095,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -3053,14 +2125,14 @@ - - - - + + + + - - - + + + @@ -3083,26 +2155,16 @@ - - - - - - - - - - - - - - + + + + @@ -3115,16 +2177,6 @@ - - - - - - - - - - @@ -3135,26 +2187,14 @@ - - - - - - - - - - - - @@ -3259,22 +2299,6 @@ - - - - - - - - - - - - - - - - @@ -3295,26 +2319,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3327,28 +2331,12 @@ - - - - - - - - - - - - - - - - @@ -3369,16 +2357,6 @@ - - - - - - - - - - @@ -3389,16 +2367,6 @@ - - - - - - - - - - @@ -3429,14 +2397,14 @@ - - - - + + + + - - - + + + @@ -3453,42 +2421,52 @@ - - + + - - + + - - + + - - + + - - - - + + + + - - - + + + + + + + + + + + + + - - - - + + + + - - - + + + @@ -3533,16 +2511,10 @@ - - - - - - @@ -3553,12 +2525,6 @@ - - - - - - @@ -3571,16 +2537,6 @@ - - - - - - - - - - @@ -3603,18 +2559,18 @@ - - + + - - + + - - + + @@ -3649,26 +2605,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3705,26 +2641,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3735,26 +2651,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3765,26 +2661,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3795,26 +2671,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3825,26 +2681,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3855,26 +2691,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3885,26 +2701,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3915,26 +2711,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3945,26 +2721,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -3975,26 +2731,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4005,26 +2741,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4035,26 +2751,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4065,26 +2761,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4095,26 +2771,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4125,26 +2781,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4155,26 +2791,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4185,26 +2801,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4215,26 +2811,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4245,26 +2821,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4275,26 +2831,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4305,26 +2841,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4335,26 +2851,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4365,26 +2861,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4395,26 +2871,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -4425,12 +2881,6 @@ - - - - - - @@ -4447,18 +2897,6 @@ - - - - - - - - - - - - @@ -4519,55 +2957,17 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4575,7603 +2975,5464 @@ - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - - - - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + - - - + + + - - - - - + + + - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + + + - - - + + + - - - - - - - - + + + + - - - + + + - - - + + + + + - - - - + + + + - - - + + + - - - + + + + + - - - + + + - - - + + + + + - - - + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - + + + - - - - + + + + - - - + + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - + + + - - - - - - - - + + + + - - - + + + - - - - - - - - + + + + - - - + + + - - - - - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - + + + - - - - - - - - - + + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - + + + + - - - - - - - - + + + + - - - - - + + + - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + - - - - - + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + + + + + - - - - + + + + - - - + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + + + + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + + + + + - - - - + + + + - - - + + + + + + + - - - - + + + + + + + + - - - + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - - + + + + - - - + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - - - - + + + + - - - - - - + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - + + + + + + + + - - - - + + + + - - - + + + + + - - - - + + + + - - - + + + + + - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + - - - + + + + + - - - + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + - - - - + + + + @@ -12270,16 +8531,6 @@ - - - - - - - - - - @@ -12290,16 +8541,6 @@ - - - - - - - - - - @@ -12320,16 +8561,6 @@ - - - - - - - - - - @@ -12340,6 +8571,16 @@ + + + + + + + + + + @@ -12375,10 +8616,6 @@ - - - - @@ -12400,17 +8637,7 @@ - - - - - - - - - - @@ -12457,10 +8684,6 @@ - - - - @@ -12471,16 +8694,8 @@ - - - - - - - - @@ -12491,26 +8706,14 @@ - - - - - - - - - - - - @@ -12526,26 +8729,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -12567,10 +8750,6 @@ - - - - @@ -12586,26 +8765,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -12627,10 +8786,6 @@ - - - - @@ -12646,26 +8801,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -12692,26 +8827,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -12733,10 +8848,6 @@ - - - - @@ -12752,26 +8863,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -12792,32 +8883,12 @@ - - - - - - - - - - - - - - - - - - - - @@ -12854,26 +8925,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -12910,22 +8961,6 @@ - - - - - - - - - - - - - - - - @@ -12952,16 +8987,6 @@ - - - - - - - - - - @@ -12982,19 +9007,8 @@ - - - - - - - - - - - @@ -13009,10 +9023,14 @@ - - - - + + + + + + + + @@ -13077,16 +9095,6 @@ - - - - - - - - - - @@ -13097,15 +9105,18 @@ - - - - + + + + + + + + - @@ -13120,16 +9131,6 @@ - - - - - - - - - - @@ -13170,6 +9171,16 @@ + + + + + + + + + + @@ -13202,12 +9213,6 @@ - - - - - - @@ -13248,24 +9253,14 @@ - - - - - - - - - - - - - - + + + + - - - + + + @@ -13278,26 +9273,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -13308,44 +9283,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -13356,6 +9299,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -13376,36 +9359,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -13416,16 +9369,6 @@ - - - - - - - - - - @@ -13466,22 +9409,6 @@ - - - - - - - - - - - - - - - - @@ -13492,6 +9419,16 @@ + + + + + + + + + + @@ -13508,24 +9445,18 @@ - - - - - - - - - - - - + + + + + + @@ -13544,24 +9475,18 @@ - - - - - - - - - - - - + + + + + + @@ -13578,20 +9503,24 @@ - - - - + + + + - - - + + + - - - - + + + + + + + + @@ -13618,12 +9547,12 @@ - - + + - - + + @@ -13650,16 +9579,6 @@ - - - - - - - - - - @@ -13670,12 +9589,6 @@ - - - - - - @@ -13690,13 +9603,12 @@ - - + + - @@ -13765,24 +9677,18 @@ - - + + - - - - - - @@ -13802,27 +9708,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -13830,12 +9715,6 @@ - - - - - - @@ -13882,16 +9761,6 @@ - - - - - - - - - - @@ -13918,12 +9787,6 @@ - - - - - - @@ -13936,12 +9799,6 @@ - - - - - - diff --git a/gradlew.bat b/gradlew.bat deleted file mode 100644 index 9b42019c79..0000000000 --- a/gradlew.bat +++ /dev/null @@ -1,94 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem -@rem SPDX-License-Identifier: Apache-2.0 -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/package-lock.kdl b/package-lock.kdl index 998e98d5da..7e70fdd142 100644 --- a/package-lock.kdl +++ b/package-lock.kdl @@ -1,4688 +1,4704 @@ -// This file is automatically generated and not intended for manual editing. lockfile-version 1 -root { - dependencies { - browserslist "4.24.4" - cssnano "7.0.6" - google-protobuf "3.21.4" - jszip "3.10.1" - lz-string "1.5.0" - postcss "8.5.3" - preact "10.26.4" - react "19.0.0" - react-dom "19.0.0" - typescript "5.8.2" - web-streams-polyfill "3.3.3" - } - dev-dependencies { - "@biomejs/biome" "1.9.4" - "@commitlint/cli" "19.7.1" - "@commitlint/config-conventional" "19.7.1" - "@mdx-js/esbuild" "3.1.0" - "@mitata/counters" "0.0.8" - "@prettier/plugin-xml" "3.4.1" - "@types/google-protobuf" "3.15.12" - "@types/node" "22.13.8" - commitlint "19.7.1" - esbuild "0.25.0" - eslint "9.21.0" - express ">=4.21.2 <5.0.0-0" - husky "9.1.7" - lint-staged "15.4.3" - mitata "1.0.34" - postcss-cli "11.0.0" - prettier "3.5.3" - prettier-plugin-java "2.6.7" - prettier-plugin-properties "0.3.0" - prettier-plugin-sh "0.15.0" - prettier-plugin-toml "2.0.2" - readable-stream "4.5.2" - } -} -pkg "@babel/code-frame" { - version "7.26.2" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz" - integrity "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==" - dependencies { - "@babel/helper-validator-identifier" ">=7.25.9 <8.0.0-0" - js-tokens ">=4.0.0 <5.0.0-0" - picocolors ">=1.0.0 <2.0.0-0" - } -} -pkg "@babel/helper-validator-identifier" { - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz" - integrity "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" -} -pkg "@biomejs/biome" { - version "1.9.4" - resolved "https://registry.npmjs.org/@biomejs/biome/-/biome-1.9.4.tgz" - integrity "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==" - optional-dependencies { - "@biomejs/cli-darwin-arm64" "1.9.4" - "@biomejs/cli-darwin-x64" "1.9.4" - "@biomejs/cli-linux-arm64" "1.9.4" - "@biomejs/cli-linux-arm64-musl" "1.9.4" - "@biomejs/cli-linux-x64" "1.9.4" - "@biomejs/cli-linux-x64-musl" "1.9.4" - "@biomejs/cli-win32-arm64" "1.9.4" - "@biomejs/cli-win32-x64" "1.9.4" - } -} -pkg "@biomejs/cli-darwin-arm64" { - version "1.9.4" - resolved "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz" - integrity "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==" -} -pkg "@biomejs/cli-darwin-x64" { - version "1.9.4" - resolved "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz" - integrity "sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==" -} -pkg "@biomejs/cli-linux-arm64" { - version "1.9.4" - resolved "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz" - integrity "sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==" -} -pkg "@biomejs/cli-linux-arm64-musl" { - version "1.9.4" - resolved "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz" - integrity "sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==" -} -pkg "@biomejs/cli-linux-x64" { - version "1.9.4" - resolved "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz" - integrity "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==" -} -pkg "@biomejs/cli-linux-x64-musl" { - version "1.9.4" - resolved "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz" - integrity "sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==" -} -pkg "@biomejs/cli-win32-arm64" { - version "1.9.4" - resolved "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz" - integrity "sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==" -} -pkg "@biomejs/cli-win32-x64" { - version "1.9.4" - resolved "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz" - integrity "sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==" -} -pkg "@chevrotain/cst-dts-gen" { - version "11.0.3" - resolved "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz" - integrity "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==" - dependencies { - "@chevrotain/gast" "11.0.3" - "@chevrotain/types" "11.0.3" - lodash-es "4.17.21" - } -} -pkg "@chevrotain/gast" { - version "11.0.3" - resolved "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz" - integrity "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==" - dependencies { - "@chevrotain/types" "11.0.3" - lodash-es "4.17.21" - } -} -pkg "@chevrotain/regexp-to-ast" { - version "11.0.3" - resolved "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz" - integrity "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==" -} -pkg "@chevrotain/types" { - version "11.0.3" - resolved "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz" - integrity "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" -} -pkg "@chevrotain/utils" { - version "11.0.3" - resolved "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz" - integrity "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" -} -pkg "@commitlint/cli" { - version "19.7.1" - resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-19.7.1.tgz" - integrity "sha512-iObGjR1tE/PfDtDTEfd+tnRkB3/HJzpQqRTyofS2MPPkDn1mp3DBC8SoPDayokfAy+xKhF8+bwRCJO25Nea0YQ==" - dependencies { - "@commitlint/format" ">=19.5.0 <20.0.0-0" - "@commitlint/lint" ">=19.7.1 <20.0.0-0" - "@commitlint/load" ">=19.6.1 <20.0.0-0" - "@commitlint/read" ">=19.5.0 <20.0.0-0" - "@commitlint/types" ">=19.5.0 <20.0.0-0" - tinyexec ">=0.3.0 <0.4.0-0" - yargs ">=17.0.0 <18.0.0-0" - } -} -pkg "@commitlint/config-conventional" { - version "19.7.1" - resolved "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.7.1.tgz" - integrity "sha512-fsEIF8zgiI/FIWSnykdQNj/0JE4av08MudLTyYHm4FlLWemKoQvPNUYU2M/3tktWcCEyq7aOkDDgtjrmgWFbvg==" - dependencies { - "@commitlint/types" ">=19.5.0 <20.0.0-0" - conventional-changelog-conventionalcommits ">=7.0.2 <8.0.0-0" - } -} -pkg "@commitlint/config-validator" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.5.0.tgz" - integrity "sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==" - dependencies { - "@commitlint/types" ">=19.5.0 <20.0.0-0" - ajv ">=8.11.0 <9.0.0-0" - } -} -pkg "@commitlint/config-validator" "ajv" { - version "8.17.1" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" - integrity "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==" - dependencies { - fast-deep-equal ">=3.1.3 <4.0.0-0" - fast-uri ">=3.0.1 <4.0.0-0" - json-schema-traverse ">=1.0.0 <2.0.0-0" - require-from-string ">=2.0.2 <3.0.0-0" - } -} -pkg "@commitlint/config-validator" "json-schema-traverse" { - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - integrity "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" -} -pkg "@commitlint/ensure" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.5.0.tgz" - integrity "sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==" - dependencies { - "@commitlint/types" ">=19.5.0 <20.0.0-0" - lodash.camelcase ">=4.3.0 <5.0.0-0" - lodash.kebabcase ">=4.1.1 <5.0.0-0" - lodash.snakecase ">=4.1.1 <5.0.0-0" - lodash.startcase ">=4.4.0 <5.0.0-0" - lodash.upperfirst ">=4.3.1 <5.0.0-0" - } -} -pkg "@commitlint/execute-rule" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz" - integrity "sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==" -} -pkg "@commitlint/format" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/format/-/format-19.5.0.tgz" - integrity "sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==" - dependencies { - "@commitlint/types" ">=19.5.0 <20.0.0-0" - chalk ">=5.3.0 <6.0.0-0" - } -} -pkg "@commitlint/format" "chalk" { - version "5.4.1" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz" - integrity "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==" -} -pkg "@commitlint/is-ignored" { - version "19.7.1" - resolved "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.7.1.tgz" - integrity "sha512-3IaOc6HVg2hAoGleRK3r9vL9zZ3XY0rf1RsUf6jdQLuaD46ZHnXBiOPTyQ004C4IvYjSWqJwlh0/u2P73aIE3g==" - dependencies { - "@commitlint/types" ">=19.5.0 <20.0.0-0" - semver ">=7.6.0 <8.0.0-0" - } -} -pkg "@commitlint/lint" { - version "19.7.1" - resolved "https://registry.npmjs.org/@commitlint/lint/-/lint-19.7.1.tgz" - integrity "sha512-LhcPfVjcOcOZA7LEuBBeO00o3MeZa+tWrX9Xyl1r9PMd5FWsEoZI9IgnGqTKZ0lZt5pO3ZlstgnRyY1CJJc9Xg==" - dependencies { - "@commitlint/is-ignored" ">=19.7.1 <20.0.0-0" - "@commitlint/parse" ">=19.5.0 <20.0.0-0" - "@commitlint/rules" ">=19.6.0 <20.0.0-0" - "@commitlint/types" ">=19.5.0 <20.0.0-0" - } -} -pkg "@commitlint/load" { - version "19.6.1" - resolved "https://registry.npmjs.org/@commitlint/load/-/load-19.6.1.tgz" - integrity "sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==" - dependencies { - "@commitlint/config-validator" ">=19.5.0 <20.0.0-0" - "@commitlint/execute-rule" ">=19.5.0 <20.0.0-0" - "@commitlint/resolve-extends" ">=19.5.0 <20.0.0-0" - "@commitlint/types" ">=19.5.0 <20.0.0-0" - chalk ">=5.3.0 <6.0.0-0" - cosmiconfig ">=9.0.0 <10.0.0-0" - cosmiconfig-typescript-loader ">=6.1.0 <7.0.0-0" - lodash.isplainobject ">=4.0.6 <5.0.0-0" - lodash.merge ">=4.6.2 <5.0.0-0" - lodash.uniq ">=4.5.0 <5.0.0-0" - } -} -pkg "@commitlint/load" "chalk" { - version "5.4.1" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz" - integrity "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==" -} -pkg "@commitlint/message" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/message/-/message-19.5.0.tgz" - integrity "sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==" -} -pkg "@commitlint/parse" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/parse/-/parse-19.5.0.tgz" - integrity "sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==" - dependencies { - "@commitlint/types" ">=19.5.0 <20.0.0-0" - conventional-changelog-angular ">=7.0.0 <8.0.0-0" - conventional-commits-parser ">=5.0.0 <6.0.0-0" - } -} -pkg "@commitlint/read" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/read/-/read-19.5.0.tgz" - integrity "sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==" - dependencies { - "@commitlint/top-level" ">=19.5.0 <20.0.0-0" - "@commitlint/types" ">=19.5.0 <20.0.0-0" - git-raw-commits ">=4.0.0 <5.0.0-0" - minimist ">=1.2.8 <2.0.0-0" - tinyexec ">=0.3.0 <0.4.0-0" - } -} -pkg "@commitlint/resolve-extends" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz" - integrity "sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==" - dependencies { - "@commitlint/config-validator" ">=19.5.0 <20.0.0-0" - "@commitlint/types" ">=19.5.0 <20.0.0-0" - global-directory ">=4.0.1 <5.0.0-0" - import-meta-resolve ">=4.0.0 <5.0.0-0" - lodash.mergewith ">=4.6.2 <5.0.0-0" - resolve-from ">=5.0.0 <6.0.0-0" - } -} -pkg "@commitlint/rules" { - version "19.6.0" - resolved "https://registry.npmjs.org/@commitlint/rules/-/rules-19.6.0.tgz" - integrity "sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==" - dependencies { - "@commitlint/ensure" ">=19.5.0 <20.0.0-0" - "@commitlint/message" ">=19.5.0 <20.0.0-0" - "@commitlint/to-lines" ">=19.5.0 <20.0.0-0" - "@commitlint/types" ">=19.5.0 <20.0.0-0" - } -} -pkg "@commitlint/to-lines" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.5.0.tgz" - integrity "sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==" -} -pkg "@commitlint/top-level" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.5.0.tgz" - integrity "sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==" - dependencies { - find-up ">=7.0.0 <8.0.0-0" - } -} -pkg "@commitlint/top-level" "find-up" { - version "7.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz" - integrity "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==" - dependencies { - locate-path ">=7.2.0 <8.0.0-0" - path-exists ">=5.0.0 <6.0.0-0" - unicorn-magic ">=0.1.0 <0.2.0-0" - } -} -pkg "@commitlint/top-level" "locate-path" { - version "7.2.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" - integrity "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==" - dependencies { - p-locate ">=6.0.0 <7.0.0-0" - } -} -pkg "@commitlint/top-level" "p-limit" { - version "4.0.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" - integrity "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==" - dependencies { - yocto-queue ">=1.0.0 <2.0.0-0" - } -} -pkg "@commitlint/top-level" "p-locate" { - version "6.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" - integrity "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==" - dependencies { - p-limit ">=4.0.0 <5.0.0-0" - } -} -pkg "@commitlint/top-level" "path-exists" { - version "5.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" - integrity "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==" -} -pkg "@commitlint/top-level" "unicorn-magic" { - version "0.1.0" - resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz" - integrity "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==" -} -pkg "@commitlint/top-level" "yocto-queue" { - version "1.1.1" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz" - integrity "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==" -} -pkg "@commitlint/types" { - version "19.5.0" - resolved "https://registry.npmjs.org/@commitlint/types/-/types-19.5.0.tgz" - integrity "sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==" - dependencies { - "@types/conventional-commits-parser" ">=5.0.0 <6.0.0-0" - chalk ">=5.3.0 <6.0.0-0" - } -} -pkg "@commitlint/types" "chalk" { - version "5.4.1" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz" - integrity "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==" -} -pkg "@esbuild/aix-ppc64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz" - integrity "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==" -} -pkg "@esbuild/android-arm" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz" - integrity "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==" -} -pkg "@esbuild/android-arm64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz" - integrity "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==" -} -pkg "@esbuild/android-x64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz" - integrity "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==" -} -pkg "@esbuild/darwin-arm64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz" - integrity "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==" -} -pkg "@esbuild/darwin-x64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz" - integrity "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==" -} -pkg "@esbuild/freebsd-arm64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz" - integrity "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==" -} -pkg "@esbuild/freebsd-x64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz" - integrity "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==" -} -pkg "@esbuild/linux-arm" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz" - integrity "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==" -} -pkg "@esbuild/linux-arm64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz" - integrity "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==" -} -pkg "@esbuild/linux-ia32" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz" - integrity "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==" -} -pkg "@esbuild/linux-loong64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz" - integrity "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==" -} -pkg "@esbuild/linux-mips64el" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz" - integrity "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==" -} -pkg "@esbuild/linux-ppc64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz" - integrity "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==" -} -pkg "@esbuild/linux-riscv64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz" - integrity "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==" -} -pkg "@esbuild/linux-s390x" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz" - integrity "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==" -} -pkg "@esbuild/linux-x64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz" - integrity "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==" -} -pkg "@esbuild/netbsd-arm64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz" - integrity "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==" -} -pkg "@esbuild/netbsd-x64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz" - integrity "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==" -} -pkg "@esbuild/openbsd-arm64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz" - integrity "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==" -} -pkg "@esbuild/openbsd-x64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz" - integrity "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==" -} -pkg "@esbuild/sunos-x64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz" - integrity "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==" -} -pkg "@esbuild/win32-arm64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz" - integrity "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==" -} -pkg "@esbuild/win32-ia32" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz" - integrity "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==" -} -pkg "@esbuild/win32-x64" { - version "0.25.0" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz" - integrity "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==" -} -pkg "@eslint-community/eslint-utils" { - version "4.4.1" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz" - integrity "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==" - dependencies { - eslint-visitor-keys ">=3.4.3 <4.0.0-0" - } -} -pkg "@eslint-community/eslint-utils" "eslint-visitor-keys" { - version "3.4.3" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - integrity "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" -} -pkg "@eslint-community/regexpp" { - version "4.12.1" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" - integrity "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==" -} -pkg "@eslint/config-array" { - version "0.19.2" - resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz" - integrity "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==" - dependencies { - "@eslint/object-schema" ">=2.1.6 <3.0.0-0" - debug ">=4.3.1 <5.0.0-0" - minimatch ">=3.1.2 <4.0.0-0" - } -} -pkg "@eslint/config-array" "debug" { - version "4.4.0" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" - integrity "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" - dependencies { - ms ">=2.1.3 <3.0.0-0" - } -} -pkg "@eslint/core" { - version "0.12.0" - resolved "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz" - integrity "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==" - dependencies { - "@types/json-schema" ">=7.0.15 <8.0.0-0" - } -} -pkg "@eslint/eslintrc" { - version "3.3.0" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz" - integrity "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==" - dependencies { - ajv ">=6.12.4 <7.0.0-0" - debug ">=4.3.2 <5.0.0-0" - espree ">=10.0.1 <11.0.0-0" - globals ">=14.0.0 <15.0.0-0" - ignore ">=5.2.0 <6.0.0-0" - import-fresh ">=3.2.1 <4.0.0-0" - js-yaml ">=4.1.0 <5.0.0-0" - minimatch ">=3.1.2 <4.0.0-0" - strip-json-comments ">=3.1.1 <4.0.0-0" - } -} -pkg "@eslint/eslintrc" "debug" { - version "4.4.0" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" - integrity "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" - dependencies { - ms ">=2.1.3 <3.0.0-0" - } -} -pkg "@eslint/js" { - version "9.21.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz" - integrity "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==" -} -pkg "@eslint/object-schema" { - version "2.1.6" - resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz" - integrity "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==" -} -pkg "@eslint/plugin-kit" { - version "0.2.7" - resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz" - integrity "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==" - dependencies { - "@eslint/core" ">=0.12.0 <0.13.0-0" - levn ">=0.4.1 <0.5.0-0" - } -} -pkg "@humanfs/core" { - version "0.19.1" - resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" - integrity "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==" -} -pkg "@humanfs/node" { - version "0.16.6" - resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz" - integrity "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==" - dependencies { - "@humanfs/core" ">=0.19.1 <0.20.0-0" - "@humanwhocodes/retry" ">=0.3.0 <0.4.0-0" - } -} -pkg "@humanfs/node" "@humanwhocodes/retry" { - version "0.3.1" - resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz" - integrity "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==" -} -pkg "@humanwhocodes/module-importer" { - version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - integrity "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" -} -pkg "@humanwhocodes/retry" { - version "0.4.2" - resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz" - integrity "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==" -} -pkg "@mdx-js/esbuild" { - version "3.1.0" - resolved "https://registry.npmjs.org/@mdx-js/esbuild/-/esbuild-3.1.0.tgz" - integrity "sha512-Jk42xUb1SEJxh6n2GBAtJjQISFIZccjz8XVEsHVhrlvZJAJziIxR9KyaFF6nTeTB/jCAFQGDgO7+oMRH/ApRsg==" - dependencies { - "@mdx-js/mdx" ">=3.0.0 <4.0.0-0" - "@types/unist" ">=3.0.0 <4.0.0-0" - source-map ">=0.7.0 <0.8.0-0" - vfile ">=6.0.0 <7.0.0-0" - vfile-message ">=4.0.0 <5.0.0-0" - } -} -pkg "@mdx-js/mdx" { - version "3.1.0" - resolved "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz" - integrity "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - "@types/estree-jsx" ">=1.0.0 <2.0.0-0" - "@types/hast" ">=3.0.0 <4.0.0-0" - "@types/mdx" ">=2.0.0 <3.0.0-0" - collapse-white-space ">=2.0.0 <3.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - estree-util-is-identifier-name ">=3.0.0 <4.0.0-0" - estree-util-scope ">=1.0.0 <2.0.0-0" - estree-walker ">=3.0.0 <4.0.0-0" - hast-util-to-jsx-runtime ">=2.0.0 <3.0.0-0" - markdown-extensions ">=2.0.0 <3.0.0-0" - recma-build-jsx ">=1.0.0 <2.0.0-0" - recma-jsx ">=1.0.0 <2.0.0-0" - recma-stringify ">=1.0.0 <2.0.0-0" - rehype-recma ">=1.0.0 <2.0.0-0" - remark-mdx ">=3.0.0 <4.0.0-0" - remark-parse ">=11.0.0 <12.0.0-0" - remark-rehype ">=11.0.0 <12.0.0-0" - source-map ">=0.7.0 <0.8.0-0" - unified ">=11.0.0 <12.0.0-0" - unist-util-position-from-estree ">=2.0.0 <3.0.0-0" - unist-util-stringify-position ">=4.0.0 <5.0.0-0" - unist-util-visit ">=5.0.0 <6.0.0-0" - vfile ">=6.0.0 <7.0.0-0" - } -} -pkg "@mitata/counters" { - version "0.0.8" - resolved "https://registry.npmjs.org/@mitata/counters/-/counters-0.0.8.tgz" - integrity "sha512-f11w0Y1ETFlarDP7CePj8Z+y8Gv5Ax4gMxWsEwrqh0kH/YIY030Ezx5SUJeQg0YPTZ2OHKGcLG1oGJbIqHzaJA==" -} -pkg "@nodelib/fs.scandir" { - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - dependencies { - "@nodelib/fs.stat" "2.0.5" - run-parallel ">=1.1.9 <2.0.0-0" - } -} -pkg "@nodelib/fs.stat" { - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" -} -pkg "@nodelib/fs.walk" { - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - integrity "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - dependencies { - "@nodelib/fs.scandir" "2.1.5" - fastq ">=1.6.0 <2.0.0-0" - } -} -pkg "@prettier/plugin-xml" { - version "3.4.1" - resolved "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-3.4.1.tgz" - integrity "sha512-Uf/6/+9ez6z/IvZErgobZ2G9n1ybxF5BhCd7eMcKqfoWuOzzNUxBipNo3QAP8kRC1VD18TIo84no7LhqtyDcTg==" - dependencies { - "@xml-tools/parser" ">=1.0.11 <2.0.0-0" - } -} -pkg "@sindresorhus/merge-streams" { - version "2.3.0" - resolved "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz" - integrity "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==" -} -pkg "@taplo/core" { - version "0.1.1" - resolved "https://registry.npmjs.org/@taplo/core/-/core-0.1.1.tgz" - integrity "sha512-BG/zLGf5wiNXGEVPvUAAX/4ilB3PwDUY2o0MV0y47mZbDZ9ad9UK/cIQsILat3bqbPJsALVbU6k3cskNZ3vAQg==" -} -pkg "@taplo/lib" { - version "0.4.0-alpha.2" - resolved "https://registry.npmjs.org/@taplo/lib/-/lib-0.4.0-alpha.2.tgz" - integrity "sha512-DV/Re3DPVY+BhBtLZ3dmP4mP6YMLSsgq9qGLXwOV38lvNF/fBlgvQswzlXmzCEefL/3q2eMoefZpOI/+GLuCNA==" - dependencies { - "@taplo/core" ">=0.1.0 <0.2.0-0" - } -} -pkg "@trysound/sax" { - version "0.2.0" - resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" - integrity "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" -} -pkg "@types/acorn" { - version "4.0.6" - resolved "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz" - integrity "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==" - dependencies { - "@types/estree" ">=0.0.0" - } -} -pkg "@types/conventional-commits-parser" { - version "5.0.1" - resolved "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz" - integrity "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==" - dependencies { - "@types/node" ">=0.0.0" - } -} -pkg "@types/debug" { - version "4.1.12" - resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz" - integrity "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==" - dependencies { - "@types/ms" ">=0.0.0" - } -} -pkg "@types/estree" { - version "1.0.6" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" - integrity "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" -} -pkg "@types/estree-jsx" { - version "1.0.5" - resolved "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz" - integrity "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==" - dependencies { - "@types/estree" ">=0.0.0" - } -} -pkg "@types/google-protobuf" { - version "3.15.12" - resolved "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz" - integrity "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==" -} -pkg "@types/hast" { - version "3.0.4" - resolved "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz" - integrity "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==" - dependencies { - "@types/unist" ">=0.0.0" - } -} -pkg "@types/json-schema" { - version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" - integrity "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" -} -pkg "@types/mdast" { - version "4.0.4" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz" - integrity "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==" - dependencies { - "@types/unist" ">=0.0.0" - } -} -pkg "@types/mdx" { - version "2.0.13" - resolved "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz" - integrity "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" -} -pkg "@types/ms" { - version "2.1.0" - resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz" - integrity "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" -} -pkg "@types/node" { - version "22.13.8" - resolved "https://registry.npmjs.org/@types/node/-/node-22.13.8.tgz" - integrity "sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==" - dependencies { - undici-types ">=6.20.0 <6.21.0-0" - } -} -pkg "@types/unist" { - version "3.0.3" - resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz" - integrity "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" -} -pkg "@ungap/structured-clone" { - version "1.3.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" - integrity "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" -} -pkg "@xml-tools/parser" { - version "1.0.11" - resolved "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz" - integrity "sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==" - dependencies { - chevrotain "7.1.1" - } -} -pkg "@xml-tools/parser" "chevrotain" { - version "7.1.1" - resolved "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz" - integrity "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==" - dependencies { - regexp-to-ast "0.5.0" - } -} -pkg "abort-controller" { - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - integrity "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" - dependencies { - event-target-shim ">=5.0.0 <6.0.0-0" - } -} -pkg "accepts" { - version "1.3.8" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - integrity "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" - dependencies { - mime-types ">=2.1.34 <2.2.0-0" - negotiator "0.6.3" - } -} -pkg "acorn" { - version "8.14.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz" - integrity "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==" -} -pkg "acorn-jsx" { - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" -} -pkg "ajv" { - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - dependencies { - fast-deep-equal ">=3.1.1 <4.0.0-0" - fast-json-stable-stringify ">=2.0.0 <3.0.0-0" - json-schema-traverse ">=0.4.1 <0.5.0-0" - uri-js ">=4.2.2 <5.0.0-0" - } -} -pkg "ansi-escapes" { - version "7.0.0" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz" - integrity "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==" - dependencies { - environment ">=1.0.0 <2.0.0-0" - } -} -pkg "ansi-regex" { - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" -} -pkg "ansi-styles" { - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - dependencies { - color-convert ">=2.0.1 <3.0.0-0" - } -} -pkg "anymatch" { - version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - integrity "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" - dependencies { - normalize-path ">=3.0.0 <4.0.0-0" - picomatch ">=2.0.4 <3.0.0-0" - } -} -pkg "argparse" { - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" -} -pkg "array-flatten" { - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" -} -pkg "array-ify" { - version "1.0.0" - resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" - integrity "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" -} -pkg "astring" { - version "1.9.0" - resolved "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz" - integrity "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==" -} -pkg "bail" { - version "2.0.2" - resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz" - integrity "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" -} -pkg "balanced-match" { - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" -} -pkg "base64-js" { - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" -} -pkg "binary-extensions" { - version "2.3.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" - integrity "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" -} -pkg "body-parser" { - version "1.20.3" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" - integrity "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==" - dependencies { - bytes "3.1.2" - content-type ">=1.0.5 <1.1.0-0" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.13.0" - raw-body "2.5.2" - type-is ">=1.6.18 <1.7.0-0" - unpipe "1.0.0" - } -} -pkg "boolbase" { - version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - integrity "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" -} -pkg "brace-expansion" { - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - dependencies { - balanced-match ">=1.0.0 <2.0.0-0" - concat-map "0.0.1" - } -} -pkg "braces" { - version "3.0.3" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" - integrity "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==" - dependencies { - fill-range ">=7.1.1 <8.0.0-0" - } -} -pkg "browserslist" { - version "4.24.4" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz" - integrity "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==" - dependencies { - caniuse-lite ">=1.0.30001688 <2.0.0-0" - electron-to-chromium ">=1.5.73 <2.0.0-0" - node-releases ">=2.0.19 <3.0.0-0" - update-browserslist-db ">=1.1.1 <2.0.0-0" - } -} -pkg "buffer" { - version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - integrity "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" - dependencies { - base64-js ">=1.3.1 <2.0.0-0" - ieee754 ">=1.2.1 <2.0.0-0" - } -} -pkg "bytes" { - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - integrity "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" -} -pkg "call-bind-apply-helpers" { - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" - integrity "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==" - dependencies { - es-errors ">=1.3.0 <2.0.0-0" - function-bind ">=1.1.2 <2.0.0-0" - } -} -pkg "call-bound" { - version "1.0.4" - resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" - integrity "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==" - dependencies { - call-bind-apply-helpers ">=1.0.2 <2.0.0-0" - get-intrinsic ">=1.3.0 <2.0.0-0" - } -} -pkg "callsites" { - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" -} -pkg "caniuse-api" { - version "3.0.0" - resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - integrity "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" - dependencies { - browserslist ">=4.0.0 <5.0.0-0" - caniuse-lite ">=1.0.0 <2.0.0-0" - lodash.memoize ">=4.1.2 <5.0.0-0" - lodash.uniq ">=4.5.0 <5.0.0-0" - } -} -pkg "caniuse-lite" { - version "1.0.30001702" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz" - integrity "sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==" -} -pkg "ccount" { - version "2.0.1" - resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz" - integrity "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" -} -pkg "chalk" { - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - dependencies { - ansi-styles ">=4.1.0 <5.0.0-0" - supports-color ">=7.1.0 <8.0.0-0" - } -} -pkg "character-entities" { - version "2.0.2" - resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz" - integrity "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" -} -pkg "character-entities-html4" { - version "2.1.0" - resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz" - integrity "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" -} -pkg "character-entities-legacy" { - version "3.0.0" - resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz" - integrity "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" -} -pkg "character-reference-invalid" { - version "2.0.1" - resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz" - integrity "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==" -} -pkg "chevrotain" { - version "11.0.3" - resolved "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz" - integrity "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==" - dependencies { - "@chevrotain/cst-dts-gen" "11.0.3" - "@chevrotain/gast" "11.0.3" - "@chevrotain/regexp-to-ast" "11.0.3" - "@chevrotain/types" "11.0.3" - "@chevrotain/utils" "11.0.3" - lodash-es "4.17.21" - } -} -pkg "chevrotain-allstar" { - version "0.3.1" - resolved "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz" - integrity "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==" - dependencies { - lodash-es ">=4.17.21 <5.0.0-0" - } -} -pkg "chokidar" { - version "3.6.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" - integrity "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==" - dependencies { - anymatch ">=3.1.2 <3.2.0-0" - braces ">=3.0.2 <3.1.0-0" - glob-parent ">=5.1.2 <5.2.0-0" - is-binary-path ">=2.1.0 <2.2.0-0" - is-glob ">=4.0.1 <4.1.0-0" - normalize-path ">=3.0.0 <3.1.0-0" - readdirp ">=3.6.0 <3.7.0-0" - } - optional-dependencies { - fsevents ">=2.3.2 <2.4.0-0" - } -} -pkg "cli-cursor" { - version "5.0.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz" - integrity "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==" - dependencies { - restore-cursor ">=5.0.0 <6.0.0-0" - } -} -pkg "cli-truncate" { - version "4.0.0" - resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz" - integrity "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==" - dependencies { - slice-ansi ">=5.0.0 <6.0.0-0" - string-width ">=7.0.0 <8.0.0-0" - } -} -pkg "cli-truncate" "ansi-regex" { - version "6.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" - integrity "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" -} -pkg "cli-truncate" "ansi-styles" { - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" -} -pkg "cli-truncate" "emoji-regex" { - version "10.4.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz" - integrity "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" -} -pkg "cli-truncate" "is-fullwidth-code-point" { - version "4.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" - integrity "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==" -} -pkg "cli-truncate" "slice-ansi" { - version "5.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" - integrity "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==" - dependencies { - ansi-styles ">=6.0.0 <7.0.0-0" - is-fullwidth-code-point ">=4.0.0 <5.0.0-0" - } -} -pkg "cli-truncate" "string-width" { - version "7.2.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" - integrity "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==" - dependencies { - emoji-regex ">=10.3.0 <11.0.0-0" - get-east-asian-width ">=1.0.0 <2.0.0-0" - strip-ansi ">=7.1.0 <8.0.0-0" - } -} -pkg "cli-truncate" "strip-ansi" { - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" - dependencies { - ansi-regex ">=6.0.1 <7.0.0-0" - } -} -pkg "cliui" { - version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - integrity "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" - dependencies { - string-width ">=4.2.0 <5.0.0-0" - strip-ansi ">=6.0.1 <7.0.0-0" - wrap-ansi ">=7.0.0 <8.0.0-0" - } -} -pkg "collapse-white-space" { - version "2.1.0" - resolved "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz" - integrity "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==" -} -pkg "color-convert" { - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - dependencies { - color-name ">=1.1.4 <1.2.0-0" - } -} -pkg "color-name" { - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" -} -pkg "colord" { - version "2.9.3" - resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" - integrity "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" -} -pkg "colorette" { - version "2.0.20" - resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" - integrity "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" -} -pkg "comma-separated-tokens" { - version "2.0.3" - resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz" - integrity "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==" -} -pkg "commander" { - version "13.1.0" - resolved "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz" - integrity "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==" -} -pkg "commitlint" { - version "19.7.1" - resolved "https://registry.npmjs.org/commitlint/-/commitlint-19.7.1.tgz" - integrity "sha512-iNWqXl/A1WN8qd9JehqUpzbOxczNBE1nzBiYE33TkHeTptq7Cvg5U4j8PpvO92Nxganv6o/20IO3omP5N5M7/A==" - dependencies { - "@commitlint/cli" ">=19.7.1 <20.0.0-0" - "@commitlint/types" ">=19.5.0 <20.0.0-0" - } -} -pkg "compare-func" { - version "2.0.0" - resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" - integrity "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==" - dependencies { - array-ify ">=1.0.0 <2.0.0-0" - dot-prop ">=5.1.0 <6.0.0-0" - } -} -pkg "concat-map" { - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" -} -pkg "content-disposition" { - version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - integrity "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" - dependencies { - safe-buffer "5.2.1" - } -} -pkg "content-type" { - version "1.0.5" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" - integrity "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" -} -pkg "conventional-changelog-angular" { - version "7.0.0" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz" - integrity "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==" - dependencies { - compare-func ">=2.0.0 <3.0.0-0" - } -} -pkg "conventional-changelog-conventionalcommits" { - version "7.0.2" - resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz" - integrity "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==" - dependencies { - compare-func ">=2.0.0 <3.0.0-0" - } -} -pkg "conventional-commits-parser" { - version "5.0.0" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz" - integrity "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==" - dependencies { - JSONStream ">=1.3.5 <2.0.0-0" - is-text-path ">=2.0.0 <3.0.0-0" - meow ">=12.0.1 <13.0.0-0" - split2 ">=4.0.0 <5.0.0-0" - } -} -pkg "cookie" { - version "0.7.1" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" - integrity "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" -} -pkg "cookie-signature" { - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" -} -pkg "core-util-is" { - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" -} -pkg "cosmiconfig" { - version "9.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz" - integrity "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==" - dependencies { - env-paths ">=2.2.1 <3.0.0-0" - import-fresh ">=3.3.0 <4.0.0-0" - js-yaml ">=4.1.0 <5.0.0-0" - parse-json ">=5.2.0 <6.0.0-0" - } -} -pkg "cosmiconfig-typescript-loader" { - version "6.1.0" - resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz" - integrity "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==" - dependencies { - jiti ">=2.4.1 <3.0.0-0" - } -} -pkg "cross-spawn" { - version "7.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" - integrity "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==" - dependencies { - path-key ">=3.1.0 <4.0.0-0" - shebang-command ">=2.0.0 <3.0.0-0" - which ">=2.0.1 <3.0.0-0" - } -} -pkg "css-declaration-sorter" { - version "7.2.0" - resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz" - integrity "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==" -} -pkg "css-select" { - version "5.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" - integrity "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" - dependencies { - boolbase ">=1.0.0 <2.0.0-0" - css-what ">=6.1.0 <7.0.0-0" - domhandler ">=5.0.2 <6.0.0-0" - domutils ">=3.0.1 <4.0.0-0" - nth-check ">=2.0.1 <3.0.0-0" - } -} -pkg "css-tree" { - version "2.3.1" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" - integrity "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==" - dependencies { - mdn-data "2.0.30" - source-map-js ">=1.0.1 <2.0.0-0" - } -} -pkg "css-what" { - version "6.1.0" - resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - integrity "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" -} -pkg "cssesc" { - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - integrity "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" -} -pkg "cssnano" { - version "7.0.6" - resolved "https://registry.npmjs.org/cssnano/-/cssnano-7.0.6.tgz" - integrity "sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==" - dependencies { - cssnano-preset-default ">=7.0.6 <8.0.0-0" - lilconfig ">=3.1.2 <4.0.0-0" - } -} -pkg "cssnano-preset-default" { - version "7.0.6" - resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz" - integrity "sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==" - dependencies { - browserslist ">=4.23.3 <5.0.0-0" - css-declaration-sorter ">=7.2.0 <8.0.0-0" - cssnano-utils ">=5.0.0 <6.0.0-0" - postcss-calc ">=10.0.2 <11.0.0-0" - postcss-colormin ">=7.0.2 <8.0.0-0" - postcss-convert-values ">=7.0.4 <8.0.0-0" - postcss-discard-comments ">=7.0.3 <8.0.0-0" - postcss-discard-duplicates ">=7.0.1 <8.0.0-0" - postcss-discard-empty ">=7.0.0 <8.0.0-0" - postcss-discard-overridden ">=7.0.0 <8.0.0-0" - postcss-merge-longhand ">=7.0.4 <8.0.0-0" - postcss-merge-rules ">=7.0.4 <8.0.0-0" - postcss-minify-font-values ">=7.0.0 <8.0.0-0" - postcss-minify-gradients ">=7.0.0 <8.0.0-0" - postcss-minify-params ">=7.0.2 <8.0.0-0" - postcss-minify-selectors ">=7.0.4 <8.0.0-0" - postcss-normalize-charset ">=7.0.0 <8.0.0-0" - postcss-normalize-display-values ">=7.0.0 <8.0.0-0" - postcss-normalize-positions ">=7.0.0 <8.0.0-0" - postcss-normalize-repeat-style ">=7.0.0 <8.0.0-0" - postcss-normalize-string ">=7.0.0 <8.0.0-0" - postcss-normalize-timing-functions ">=7.0.0 <8.0.0-0" - postcss-normalize-unicode ">=7.0.2 <8.0.0-0" - postcss-normalize-url ">=7.0.0 <8.0.0-0" - postcss-normalize-whitespace ">=7.0.0 <8.0.0-0" - postcss-ordered-values ">=7.0.1 <8.0.0-0" - postcss-reduce-initial ">=7.0.2 <8.0.0-0" - postcss-reduce-transforms ">=7.0.0 <8.0.0-0" - postcss-svgo ">=7.0.1 <8.0.0-0" - postcss-unique-selectors ">=7.0.3 <8.0.0-0" - } -} -pkg "cssnano-utils" { - version "5.0.0" - resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.0.tgz" - integrity "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==" -} -pkg "csso" { - version "5.0.5" - resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" - integrity "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==" - dependencies { - css-tree ">=2.2.0 <2.3.0-0" - } -} -pkg "csso" "css-tree" { - version "2.2.1" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" - integrity "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==" - dependencies { - mdn-data "2.0.28" - source-map-js ">=1.0.1 <2.0.0-0" - } -} -pkg "csso" "mdn-data" { - version "2.0.28" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" - integrity "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" -} -pkg "dargs" { - version "8.1.0" - resolved "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz" - integrity "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==" -} -pkg "debug" { - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - dependencies { - ms "2.0.0" - } -} -pkg "debug" "ms" { - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" -} -pkg "decode-named-character-reference" { - version "1.0.2" - resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz" - integrity "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==" - dependencies { - character-entities ">=2.0.0 <3.0.0-0" - } -} -pkg "deep-is" { - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - integrity "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" -} -pkg "depd" { - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" -} -pkg "dependency-graph" { - version "0.11.0" - resolved "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz" - integrity "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" -} -pkg "dequal" { - version "2.0.3" - resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" - integrity "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" -} -pkg "destroy" { - version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - integrity "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" -} -pkg "devlop" { - version "1.1.0" - resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz" - integrity "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==" - dependencies { - dequal ">=2.0.0 <3.0.0-0" - } -} -pkg "dom-serializer" { - version "2.0.0" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" - integrity "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" - dependencies { - domelementtype ">=2.3.0 <3.0.0-0" - domhandler ">=5.0.2 <6.0.0-0" - entities ">=4.2.0 <5.0.0-0" - } -} -pkg "domelementtype" { - version "2.3.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - integrity "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" -} -pkg "domhandler" { - version "5.0.3" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" - integrity "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" - dependencies { - domelementtype ">=2.3.0 <3.0.0-0" - } -} -pkg "domutils" { - version "3.2.2" - resolved "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz" - integrity "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==" - dependencies { - dom-serializer ">=2.0.0 <3.0.0-0" - domelementtype ">=2.3.0 <3.0.0-0" - domhandler ">=5.0.3 <6.0.0-0" - } -} -pkg "dot-prop" { - version "5.3.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - integrity "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" - dependencies { - is-obj ">=2.0.0 <3.0.0-0" - } -} -pkg "dot-properties" { - version "1.1.0" - resolved "https://registry.npmjs.org/dot-properties/-/dot-properties-1.1.0.tgz" - integrity "sha512-uyyuVNX+wq1lTrmLO9iJJAX/vpJ57uppiXQpsd4j1y6NAtHkhCROA4si4mTZMTRshCbcLC1+EMXWZV2MPHUl9A==" -} -pkg "dunder-proto" { - version "1.0.1" - resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" - integrity "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==" - dependencies { - call-bind-apply-helpers ">=1.0.1 <2.0.0-0" - es-errors ">=1.3.0 <2.0.0-0" - gopd ">=1.2.0 <2.0.0-0" - } -} -pkg "ee-first" { - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - integrity "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" -} -pkg "electron-to-chromium" { - version "1.5.112" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.112.tgz" - integrity "sha512-oen93kVyqSb3l+ziUgzIOlWt/oOuy4zRmpwestMn4rhFWAoFJeFuCVte9F2fASjeZZo7l/Cif9TiyrdW4CwEMA==" -} -pkg "emoji-regex" { - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" -} -pkg "encodeurl" { - version "2.0.0" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" - integrity "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" -} -pkg "entities" { - version "4.5.0" - resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" - integrity "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" -} -pkg "env-paths" { - version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" - integrity "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" -} -pkg "environment" { - version "1.1.0" - resolved "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz" - integrity "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==" -} -pkg "error-ex" { - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - integrity "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - dependencies { - is-arrayish ">=0.2.1 <0.3.0-0" - } -} -pkg "es-define-property" { - version "1.0.1" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" - integrity "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" -} -pkg "es-errors" { - version "1.3.0" - resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" - integrity "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" -} -pkg "es-object-atoms" { - version "1.1.1" - resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" - integrity "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==" - dependencies { - es-errors ">=1.3.0 <2.0.0-0" - } -} -pkg "esast-util-from-estree" { - version "2.0.0" - resolved "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz" - integrity "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==" - dependencies { - "@types/estree-jsx" ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - estree-util-visit ">=2.0.0 <3.0.0-0" - unist-util-position-from-estree ">=2.0.0 <3.0.0-0" - } -} -pkg "esast-util-from-js" { - version "2.0.1" - resolved "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz" - integrity "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==" - dependencies { - "@types/estree-jsx" ">=1.0.0 <2.0.0-0" - acorn ">=8.0.0 <9.0.0-0" - esast-util-from-estree ">=2.0.0 <3.0.0-0" - vfile-message ">=4.0.0 <5.0.0-0" - } -} -pkg "esbuild" { - version "0.25.0" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz" - integrity "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==" - optional-dependencies { - "@esbuild/aix-ppc64" "0.25.0" - "@esbuild/android-arm" "0.25.0" - "@esbuild/android-arm64" "0.25.0" - "@esbuild/android-x64" "0.25.0" - "@esbuild/darwin-arm64" "0.25.0" - "@esbuild/darwin-x64" "0.25.0" - "@esbuild/freebsd-arm64" "0.25.0" - "@esbuild/freebsd-x64" "0.25.0" - "@esbuild/linux-arm" "0.25.0" - "@esbuild/linux-arm64" "0.25.0" - "@esbuild/linux-ia32" "0.25.0" - "@esbuild/linux-loong64" "0.25.0" - "@esbuild/linux-mips64el" "0.25.0" - "@esbuild/linux-ppc64" "0.25.0" - "@esbuild/linux-riscv64" "0.25.0" - "@esbuild/linux-s390x" "0.25.0" - "@esbuild/linux-x64" "0.25.0" - "@esbuild/netbsd-arm64" "0.25.0" - "@esbuild/netbsd-x64" "0.25.0" - "@esbuild/openbsd-arm64" "0.25.0" - "@esbuild/openbsd-x64" "0.25.0" - "@esbuild/sunos-x64" "0.25.0" - "@esbuild/win32-arm64" "0.25.0" - "@esbuild/win32-ia32" "0.25.0" - "@esbuild/win32-x64" "0.25.0" - } -} -pkg "escalade" { - version "3.2.0" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" - integrity "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" -} -pkg "escape-html" { - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - integrity "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" -} -pkg "escape-string-regexp" { - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" -} -pkg "eslint" { - version "9.21.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz" - integrity "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==" - dependencies { - "@eslint-community/eslint-utils" ">=4.2.0 <5.0.0-0" - "@eslint-community/regexpp" ">=4.12.1 <5.0.0-0" - "@eslint/config-array" ">=0.19.2 <0.20.0-0" - "@eslint/core" ">=0.12.0 <0.13.0-0" - "@eslint/eslintrc" ">=3.3.0 <4.0.0-0" - "@eslint/js" "9.21.0" - "@eslint/plugin-kit" ">=0.2.7 <0.3.0-0" - "@humanfs/node" ">=0.16.6 <0.17.0-0" - "@humanwhocodes/module-importer" ">=1.0.1 <2.0.0-0" - "@humanwhocodes/retry" ">=0.4.2 <0.5.0-0" - "@types/estree" ">=1.0.6 <2.0.0-0" - "@types/json-schema" ">=7.0.15 <8.0.0-0" - ajv ">=6.12.4 <7.0.0-0" - chalk ">=4.0.0 <5.0.0-0" - cross-spawn ">=7.0.6 <8.0.0-0" - debug ">=4.3.2 <5.0.0-0" - escape-string-regexp ">=4.0.0 <5.0.0-0" - eslint-scope ">=8.2.0 <9.0.0-0" - eslint-visitor-keys ">=4.2.0 <5.0.0-0" - espree ">=10.3.0 <11.0.0-0" - esquery ">=1.5.0 <2.0.0-0" - esutils ">=2.0.2 <3.0.0-0" - fast-deep-equal ">=3.1.3 <4.0.0-0" - file-entry-cache ">=8.0.0 <9.0.0-0" - find-up ">=5.0.0 <6.0.0-0" - glob-parent ">=6.0.2 <7.0.0-0" - ignore ">=5.2.0 <6.0.0-0" - imurmurhash ">=0.1.4 <0.2.0-0" - is-glob ">=4.0.0 <5.0.0-0" - json-stable-stringify-without-jsonify ">=1.0.1 <2.0.0-0" - lodash.merge ">=4.6.2 <5.0.0-0" - minimatch ">=3.1.2 <4.0.0-0" - natural-compare ">=1.4.0 <2.0.0-0" - optionator ">=0.9.3 <0.10.0-0" - } -} -pkg "eslint-scope" { - version "8.2.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz" - integrity "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==" - dependencies { - esrecurse ">=4.3.0 <5.0.0-0" - estraverse ">=5.2.0 <6.0.0-0" - } -} -pkg "eslint-visitor-keys" { - version "4.2.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz" - integrity "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==" -} -pkg "eslint" "debug" { - version "4.4.0" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" - integrity "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" - dependencies { - ms ">=2.1.3 <3.0.0-0" - } -} -pkg "eslint" "glob-parent" { - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" - dependencies { - is-glob ">=4.0.3 <5.0.0-0" - } -} -pkg "espree" { - version "10.3.0" - resolved "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz" - integrity "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==" - dependencies { - acorn ">=8.14.0 <9.0.0-0" - acorn-jsx ">=5.3.2 <6.0.0-0" - eslint-visitor-keys ">=4.2.0 <5.0.0-0" - } -} -pkg "esquery" { - version "1.6.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" - integrity "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==" - dependencies { - estraverse ">=5.1.0 <6.0.0-0" - } -} -pkg "esrecurse" { - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - dependencies { - estraverse ">=5.2.0 <6.0.0-0" - } -} -pkg "estraverse" { - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" -} -pkg "estree-util-attach-comments" { - version "3.0.0" - resolved "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz" - integrity "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - } -} -pkg "estree-util-build-jsx" { - version "3.0.1" - resolved "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz" - integrity "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==" - dependencies { - "@types/estree-jsx" ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - estree-util-is-identifier-name ">=3.0.0 <4.0.0-0" - estree-walker ">=3.0.0 <4.0.0-0" - } -} -pkg "estree-util-is-identifier-name" { - version "3.0.0" - resolved "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz" - integrity "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==" -} -pkg "estree-util-scope" { - version "1.0.0" - resolved "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz" - integrity "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - } -} -pkg "estree-util-to-js" { - version "2.0.0" - resolved "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz" - integrity "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==" - dependencies { - "@types/estree-jsx" ">=1.0.0 <2.0.0-0" - astring ">=1.8.0 <2.0.0-0" - source-map ">=0.7.0 <0.8.0-0" - } -} -pkg "estree-util-visit" { - version "2.0.0" - resolved "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz" - integrity "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==" - dependencies { - "@types/estree-jsx" ">=1.0.0 <2.0.0-0" - "@types/unist" ">=3.0.0 <4.0.0-0" - } -} -pkg "estree-walker" { - version "3.0.3" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz" - integrity "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - } -} -pkg "esutils" { - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" -} -pkg "etag" { - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - integrity "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" -} -pkg "event-target-shim" { - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - integrity "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" -} -pkg "eventemitter3" { - version "5.0.1" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" - integrity "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" -} -pkg "events" { - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" -} -pkg "execa" { - version "8.0.1" - resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" - integrity "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==" - dependencies { - cross-spawn ">=7.0.3 <8.0.0-0" - get-stream ">=8.0.1 <9.0.0-0" - human-signals ">=5.0.0 <6.0.0-0" - is-stream ">=3.0.0 <4.0.0-0" - merge-stream ">=2.0.0 <3.0.0-0" - npm-run-path ">=5.1.0 <6.0.0-0" - onetime ">=6.0.0 <7.0.0-0" - signal-exit ">=4.1.0 <5.0.0-0" - strip-final-newline ">=3.0.0 <4.0.0-0" - } -} -pkg "express" { - version "4.21.2" - resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" - integrity "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==" - dependencies { - accepts ">=1.3.8 <1.4.0-0" - array-flatten "1.1.1" - body-parser "1.20.3" - content-disposition "0.5.4" - content-type ">=1.0.4 <1.1.0-0" - cookie "0.7.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl ">=2.0.0 <2.1.0-0" - escape-html ">=1.0.3 <1.1.0-0" - etag ">=1.8.1 <1.9.0-0" - finalhandler "1.3.1" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.3" - methods ">=1.1.2 <1.2.0-0" - on-finished "2.4.1" - parseurl ">=1.3.3 <1.4.0-0" - path-to-regexp "0.1.12" - proxy-addr ">=2.0.7 <2.1.0-0" - qs "6.13.0" - range-parser ">=1.2.1 <1.3.0-0" - safe-buffer "5.2.1" - send "0.19.0" - serve-static "1.16.2" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is ">=1.6.18 <1.7.0-0" - utils-merge "1.0.1" - vary ">=1.1.2 <1.2.0-0" - } -} -pkg "extend" { - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - integrity "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" -} -pkg "fast-deep-equal" { - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - integrity "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" -} -pkg "fast-glob" { - version "3.3.3" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" - integrity "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==" - dependencies { - "@nodelib/fs.stat" ">=2.0.2 <3.0.0-0" - "@nodelib/fs.walk" ">=1.2.3 <2.0.0-0" - glob-parent ">=5.1.2 <6.0.0-0" - merge2 ">=1.3.0 <2.0.0-0" - micromatch ">=4.0.8 <5.0.0-0" - } -} -pkg "fast-json-stable-stringify" { - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - integrity "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" -} -pkg "fast-levenshtein" { - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" -} -pkg "fast-uri" { - version "3.0.6" - resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz" - integrity "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==" -} -pkg "fastq" { - version "1.19.1" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz" - integrity "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==" - dependencies { - reusify ">=1.0.4 <2.0.0-0" - } -} -pkg "file-entry-cache" { - version "8.0.0" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" - integrity "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==" - dependencies { - flat-cache ">=4.0.0 <5.0.0-0" - } -} -pkg "fill-range" { - version "7.1.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" - integrity "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==" - dependencies { - to-regex-range ">=5.0.1 <6.0.0-0" - } -} -pkg "finalhandler" { - version "1.3.1" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz" - integrity "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==" - dependencies { - debug "2.6.9" - encodeurl ">=2.0.0 <2.1.0-0" - escape-html ">=1.0.3 <1.1.0-0" - on-finished "2.4.1" - parseurl ">=1.3.3 <1.4.0-0" - statuses "2.0.1" - unpipe ">=1.0.0 <1.1.0-0" - } -} -pkg "find-up" { - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - dependencies { - locate-path ">=6.0.0 <7.0.0-0" - path-exists ">=4.0.0 <5.0.0-0" - } -} -pkg "flat-cache" { - version "4.0.1" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" - integrity "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==" - dependencies { - flatted ">=3.2.9 <4.0.0-0" - keyv ">=4.5.4 <5.0.0-0" - } -} -pkg "flatted" { - version "3.3.3" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" - integrity "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==" -} -pkg "forwarded" { - version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - integrity "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" -} -pkg "fresh" { - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" -} -pkg "fs-extra" { - version "11.3.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz" - integrity "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==" - dependencies { - graceful-fs ">=4.2.0 <5.0.0-0" - jsonfile ">=6.0.1 <7.0.0-0" - universalify ">=2.0.0 <3.0.0-0" - } -} -pkg "fsevents" { - version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" - integrity "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" -} -pkg "function-bind" { - version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" - integrity "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" -} -pkg "get-caller-file" { - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - integrity "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" -} -pkg "get-east-asian-width" { - version "1.3.0" - resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz" - integrity "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==" -} -pkg "get-intrinsic" { - version "1.3.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" - integrity "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==" - dependencies { - call-bind-apply-helpers ">=1.0.2 <2.0.0-0" - es-define-property ">=1.0.1 <2.0.0-0" - es-errors ">=1.3.0 <2.0.0-0" - es-object-atoms ">=1.1.1 <2.0.0-0" - function-bind ">=1.1.2 <2.0.0-0" - get-proto ">=1.0.1 <2.0.0-0" - gopd ">=1.2.0 <2.0.0-0" - has-symbols ">=1.1.0 <2.0.0-0" - hasown ">=2.0.2 <3.0.0-0" - math-intrinsics ">=1.1.0 <2.0.0-0" - } -} -pkg "get-proto" { - version "1.0.1" - resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" - integrity "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==" - dependencies { - dunder-proto ">=1.0.1 <2.0.0-0" - es-object-atoms ">=1.0.0 <2.0.0-0" - } -} -pkg "get-stdin" { - version "9.0.0" - resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz" - integrity "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==" -} -pkg "get-stream" { - version "8.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" - integrity "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==" -} -pkg "git-raw-commits" { - version "4.0.0" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz" - integrity "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==" - dependencies { - dargs ">=8.0.0 <9.0.0-0" - meow ">=12.0.1 <13.0.0-0" - split2 ">=4.0.0 <5.0.0-0" - } -} -pkg "glob-parent" { - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - dependencies { - is-glob ">=4.0.1 <5.0.0-0" - } -} -pkg "global-directory" { - version "4.0.1" - resolved "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz" - integrity "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==" - dependencies { - ini "4.1.1" - } -} -pkg "globals" { - version "14.0.0" - resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" - integrity "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==" -} -pkg "globby" { - version "14.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz" - integrity "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==" - dependencies { - "@sindresorhus/merge-streams" ">=2.1.0 <3.0.0-0" - fast-glob ">=3.3.3 <4.0.0-0" - ignore ">=7.0.3 <8.0.0-0" - path-type ">=6.0.0 <7.0.0-0" - slash ">=5.1.0 <6.0.0-0" - unicorn-magic ">=0.3.0 <0.4.0-0" - } -} -pkg "globby" "ignore" { - version "7.0.3" - resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz" - integrity "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==" -} -pkg "google-protobuf" { - version "3.21.4" - resolved "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz" - integrity "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==" -} -pkg "gopd" { - version "1.2.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" - integrity "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" -} -pkg "graceful-fs" { - version "4.2.11" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" - integrity "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" -} -pkg "has-flag" { - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" -} -pkg "has-symbols" { - version "1.1.0" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" - integrity "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" -} -pkg "hasown" { - version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" - integrity "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==" - dependencies { - function-bind ">=1.1.2 <2.0.0-0" - } -} -pkg "hast-util-to-estree" { - version "3.1.3" - resolved "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz" - integrity "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - "@types/estree-jsx" ">=1.0.0 <2.0.0-0" - "@types/hast" ">=3.0.0 <4.0.0-0" - comma-separated-tokens ">=2.0.0 <3.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - estree-util-attach-comments ">=3.0.0 <4.0.0-0" - estree-util-is-identifier-name ">=3.0.0 <4.0.0-0" - hast-util-whitespace ">=3.0.0 <4.0.0-0" - mdast-util-mdx-expression ">=2.0.0 <3.0.0-0" - mdast-util-mdx-jsx ">=3.0.0 <4.0.0-0" - mdast-util-mdxjs-esm ">=2.0.0 <3.0.0-0" - property-information ">=7.0.0 <8.0.0-0" - space-separated-tokens ">=2.0.0 <3.0.0-0" - style-to-js ">=1.0.0 <2.0.0-0" - unist-util-position ">=5.0.0 <6.0.0-0" - zwitch ">=2.0.0 <3.0.0-0" - } -} -pkg "hast-util-to-jsx-runtime" { - version "2.3.5" - resolved "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.5.tgz" - integrity "sha512-gHD+HoFxOMmmXLuq9f2dZDMQHVcplCVpMfBNRpJsF03yyLZvJGzsFORe8orVuYDX9k2w0VH0uF8oryFd1whqKQ==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - "@types/hast" ">=3.0.0 <4.0.0-0" - "@types/unist" ">=3.0.0 <4.0.0-0" - comma-separated-tokens ">=2.0.0 <3.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - estree-util-is-identifier-name ">=3.0.0 <4.0.0-0" - hast-util-whitespace ">=3.0.0 <4.0.0-0" - mdast-util-mdx-expression ">=2.0.0 <3.0.0-0" - mdast-util-mdx-jsx ">=3.0.0 <4.0.0-0" - mdast-util-mdxjs-esm ">=2.0.0 <3.0.0-0" - property-information ">=7.0.0 <8.0.0-0" - space-separated-tokens ">=2.0.0 <3.0.0-0" - style-to-object ">=1.0.0 <2.0.0-0" - unist-util-position ">=5.0.0 <6.0.0-0" - vfile-message ">=4.0.0 <5.0.0-0" - } -} -pkg "hast-util-whitespace" { - version "3.0.0" - resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz" - integrity "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==" - dependencies { - "@types/hast" ">=3.0.0 <4.0.0-0" - } -} -pkg "http-errors" { - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - integrity "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" - dependencies { - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - } -} -pkg "human-signals" { - version "5.0.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" - integrity "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==" -} -pkg "husky" { - version "9.1.7" - resolved "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz" - integrity "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==" -} -pkg "iconv-lite" { - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - dependencies { - safer-buffer ">=2.1.2 <3.0.0" - } -} -pkg "ieee754" { - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" -} -pkg "ignore" { - version "5.3.2" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" - integrity "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" -} -pkg "immediate" { - version "3.0.6" - resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" - integrity "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" -} -pkg "import-fresh" { - version "3.3.1" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz" - integrity "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==" - dependencies { - parent-module ">=1.0.0 <2.0.0-0" - resolve-from ">=4.0.0 <5.0.0-0" - } -} -pkg "import-fresh" "resolve-from" { - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" -} -pkg "import-meta-resolve" { - version "4.1.0" - resolved "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz" - integrity "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==" -} -pkg "imurmurhash" { - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" -} -pkg "inherits" { - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" -} -pkg "ini" { - version "4.1.1" - resolved "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz" - integrity "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==" -} -pkg "inline-style-parser" { - version "0.2.4" - resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz" - integrity "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" -} -pkg "ipaddr.js" { - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" -} -pkg "is-alphabetical" { - version "2.0.1" - resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz" - integrity "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==" -} -pkg "is-alphanumerical" { - version "2.0.1" - resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz" - integrity "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==" - dependencies { - is-alphabetical ">=2.0.0 <3.0.0-0" - is-decimal ">=2.0.0 <3.0.0-0" - } -} -pkg "is-arrayish" { - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" -} -pkg "is-binary-path" { - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - dependencies { - binary-extensions ">=2.0.0 <3.0.0-0" - } -} -pkg "is-decimal" { - version "2.0.1" - resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz" - integrity "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==" -} -pkg "is-extglob" { - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" -} -pkg "is-fullwidth-code-point" { - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - integrity "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" -} -pkg "is-glob" { - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - dependencies { - is-extglob ">=2.1.1 <3.0.0-0" - } -} -pkg "is-hexadecimal" { - version "2.0.1" - resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz" - integrity "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==" -} -pkg "is-number" { - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" -} -pkg "is-obj" { - version "2.0.0" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - integrity "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" -} -pkg "is-plain-obj" { - version "4.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz" - integrity "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" -} -pkg "is-stream" { - version "3.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" - integrity "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" -} -pkg "is-text-path" { - version "2.0.0" - resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz" - integrity "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==" - dependencies { - text-extensions ">=2.0.0 <3.0.0-0" - } -} -pkg "isarray" { - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" -} -pkg "isexe" { - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" -} -pkg "java-parser" { - version "2.3.3" - resolved "https://registry.npmjs.org/java-parser/-/java-parser-2.3.3.tgz" - integrity "sha512-9YY8OGlNGfq5TDDq2SBjtIEHMVLeV8vSSZrXDaQBhQ84hi1zc3/+5l3DF3wW8JGqQT2kNVha05dziSamvN8M/g==" - dependencies { - chevrotain "11.0.3" - chevrotain-allstar "0.3.1" - lodash "4.17.21" - } -} -pkg "jiti" { - version "2.4.2" - resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz" - integrity "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==" -} -pkg "js-tokens" { - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" -} -pkg "js-yaml" { - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - dependencies { - argparse ">=2.0.1 <3.0.0-0" - } -} -pkg "json-buffer" { - version "3.0.1" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" - integrity "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" -} -pkg "json-parse-even-better-errors" { - version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - integrity "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" -} -pkg "json-schema-traverse" { - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - integrity "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" -} -pkg "json-stable-stringify-without-jsonify" { - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" -} -pkg "jsonfile" { - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - integrity "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - dependencies { - universalify ">=2.0.0 <3.0.0-0" - } - optional-dependencies { - graceful-fs ">=4.1.6 <5.0.0-0" - } -} -pkg "jsonparse" { - version "1.3.1" - resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" - integrity "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" -} -pkg "JSONStream" { - version "1.3.5" - resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" - integrity "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" - dependencies { - jsonparse ">=1.2.0 <2.0.0-0" - through ">=2.2.7 <3.0.0" - } -} -pkg "jszip" { - version "3.10.1" - resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" - integrity "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==" - dependencies { - lie ">=3.3.0 <3.4.0-0" - pako ">=1.0.2 <1.1.0-0" - readable-stream ">=2.3.6 <2.4.0-0" - setimmediate ">=1.0.5 <2.0.0-0" - } -} -pkg "jszip" "readable-stream" { - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==" - dependencies { - core-util-is ">=1.0.0 <1.1.0-0" - inherits ">=2.0.3 <2.1.0-0" - isarray ">=1.0.0 <1.1.0-0" - process-nextick-args ">=2.0.0 <2.1.0-0" - safe-buffer ">=5.1.1 <5.2.0-0" - string_decoder ">=1.1.1 <1.2.0-0" - util-deprecate ">=1.0.1 <1.1.0-0" - } -} -pkg "jszip" "safe-buffer" { - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" -} -pkg "jszip" "string_decoder" { - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - dependencies { - safe-buffer ">=5.1.0 <5.2.0-0" - } -} -pkg "keyv" { - version "4.5.4" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" - integrity "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==" - dependencies { - json-buffer "3.0.1" - } -} -pkg "levn" { - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" - dependencies { - prelude-ls ">=1.2.1 <2.0.0-0" - type-check ">=0.4.0 <0.5.0-0" - } -} -pkg "lie" { - version "3.3.0" - resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" - integrity "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==" - dependencies { - immediate ">=3.0.5 <3.1.0-0" - } -} -pkg "lilconfig" { - version "3.1.3" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz" - integrity "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==" -} -pkg "lines-and-columns" { - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" -} -pkg "lint-staged" { - version "15.4.3" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz" - integrity "sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==" - dependencies { - chalk ">=5.4.1 <6.0.0-0" - commander ">=13.1.0 <14.0.0-0" - debug ">=4.4.0 <5.0.0-0" - execa ">=8.0.1 <9.0.0-0" - lilconfig ">=3.1.3 <4.0.0-0" - listr2 ">=8.2.5 <9.0.0-0" - micromatch ">=4.0.8 <5.0.0-0" - pidtree ">=0.6.0 <0.7.0-0" - string-argv ">=0.3.2 <0.4.0-0" - yaml ">=2.7.0 <3.0.0-0" - } -} -pkg "lint-staged" "chalk" { - version "5.4.1" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz" - integrity "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==" -} -pkg "lint-staged" "debug" { - version "4.4.0" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" - integrity "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" - dependencies { - ms ">=2.1.3 <3.0.0-0" - } -} -pkg "listr2" { - version "8.2.5" - resolved "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz" - integrity "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==" - dependencies { - cli-truncate ">=4.0.0 <5.0.0-0" - colorette ">=2.0.20 <3.0.0-0" - eventemitter3 ">=5.0.1 <6.0.0-0" - log-update ">=6.1.0 <7.0.0-0" - rfdc ">=1.4.1 <2.0.0-0" - wrap-ansi ">=9.0.0 <10.0.0-0" - } -} -pkg "listr2" "ansi-regex" { - version "6.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" - integrity "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" -} -pkg "listr2" "ansi-styles" { - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" -} -pkg "listr2" "emoji-regex" { - version "10.4.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz" - integrity "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" -} -pkg "listr2" "string-width" { - version "7.2.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" - integrity "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==" - dependencies { - emoji-regex ">=10.3.0 <11.0.0-0" - get-east-asian-width ">=1.0.0 <2.0.0-0" - strip-ansi ">=7.1.0 <8.0.0-0" - } -} -pkg "listr2" "strip-ansi" { - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" - dependencies { - ansi-regex ">=6.0.1 <7.0.0-0" - } -} -pkg "listr2" "wrap-ansi" { - version "9.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz" - integrity "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==" - dependencies { - ansi-styles ">=6.2.1 <7.0.0-0" - string-width ">=7.0.0 <8.0.0-0" - strip-ansi ">=7.1.0 <8.0.0-0" - } -} -pkg "locate-path" { - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - dependencies { - p-locate ">=5.0.0 <6.0.0-0" - } -} -pkg "lodash" { - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" -} -pkg "lodash-es" { - version "4.17.21" - resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" - integrity "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" -} -pkg "lodash.camelcase" { - version "4.3.0" - resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" - integrity "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" -} -pkg "lodash.isplainobject" { - version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" - integrity "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" -} -pkg "lodash.kebabcase" { - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz" - integrity "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==" -} -pkg "lodash.memoize" { - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - integrity "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" -} -pkg "lodash.merge" { - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" -} -pkg "lodash.mergewith" { - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz" - integrity "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" -} -pkg "lodash.snakecase" { - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz" - integrity "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" -} -pkg "lodash.startcase" { - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz" - integrity "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==" -} -pkg "lodash.uniq" { - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - integrity "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" -} -pkg "lodash.upperfirst" { - version "4.3.1" - resolved "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz" - integrity "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==" -} -pkg "log-update" { - version "6.1.0" - resolved "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz" - integrity "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==" - dependencies { - ansi-escapes ">=7.0.0 <8.0.0-0" - cli-cursor ">=5.0.0 <6.0.0-0" - slice-ansi ">=7.1.0 <8.0.0-0" - strip-ansi ">=7.1.0 <8.0.0-0" - wrap-ansi ">=9.0.0 <10.0.0-0" - } -} -pkg "log-update" "ansi-regex" { - version "6.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" - integrity "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" -} -pkg "log-update" "ansi-styles" { - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" -} -pkg "log-update" "emoji-regex" { - version "10.4.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz" - integrity "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" -} -pkg "log-update" "string-width" { - version "7.2.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" - integrity "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==" - dependencies { - emoji-regex ">=10.3.0 <11.0.0-0" - get-east-asian-width ">=1.0.0 <2.0.0-0" - strip-ansi ">=7.1.0 <8.0.0-0" - } -} -pkg "log-update" "strip-ansi" { - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" - dependencies { - ansi-regex ">=6.0.1 <7.0.0-0" - } -} -pkg "log-update" "wrap-ansi" { - version "9.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz" - integrity "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==" - dependencies { - ansi-styles ">=6.2.1 <7.0.0-0" - string-width ">=7.0.0 <8.0.0-0" - strip-ansi ">=7.1.0 <8.0.0-0" - } -} -pkg "longest-streak" { - version "3.1.0" - resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz" - integrity "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==" -} -pkg "lz-string" { - version "1.5.0" - resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" - integrity "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" -} -pkg "markdown-extensions" { - version "2.0.0" - resolved "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz" - integrity "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==" -} -pkg "math-intrinsics" { - version "1.1.0" - resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" - integrity "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" -} -pkg "mdast-util-from-markdown" { - version "2.0.2" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz" - integrity "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==" - dependencies { - "@types/mdast" ">=4.0.0 <5.0.0-0" - "@types/unist" ">=3.0.0 <4.0.0-0" - decode-named-character-reference ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - mdast-util-to-string ">=4.0.0 <5.0.0-0" - micromark ">=4.0.0 <5.0.0-0" - micromark-util-decode-numeric-character-reference ">=2.0.0 <3.0.0-0" - micromark-util-decode-string ">=2.0.0 <3.0.0-0" - micromark-util-normalize-identifier ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - unist-util-stringify-position ">=4.0.0 <5.0.0-0" - } -} -pkg "mdast-util-mdx" { - version "3.0.0" - resolved "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz" - integrity "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==" - dependencies { - mdast-util-from-markdown ">=2.0.0 <3.0.0-0" - mdast-util-mdx-expression ">=2.0.0 <3.0.0-0" - mdast-util-mdx-jsx ">=3.0.0 <4.0.0-0" - mdast-util-mdxjs-esm ">=2.0.0 <3.0.0-0" - mdast-util-to-markdown ">=2.0.0 <3.0.0-0" - } -} -pkg "mdast-util-mdx-expression" { - version "2.0.1" - resolved "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz" - integrity "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==" - dependencies { - "@types/estree-jsx" ">=1.0.0 <2.0.0-0" - "@types/hast" ">=3.0.0 <4.0.0-0" - "@types/mdast" ">=4.0.0 <5.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - mdast-util-from-markdown ">=2.0.0 <3.0.0-0" - mdast-util-to-markdown ">=2.0.0 <3.0.0-0" - } -} -pkg "mdast-util-mdx-jsx" { - version "3.2.0" - resolved "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz" - integrity "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==" - dependencies { - "@types/estree-jsx" ">=1.0.0 <2.0.0-0" - "@types/hast" ">=3.0.0 <4.0.0-0" - "@types/mdast" ">=4.0.0 <5.0.0-0" - "@types/unist" ">=3.0.0 <4.0.0-0" - ccount ">=2.0.0 <3.0.0-0" - devlop ">=1.1.0 <2.0.0-0" - mdast-util-from-markdown ">=2.0.0 <3.0.0-0" - mdast-util-to-markdown ">=2.0.0 <3.0.0-0" - parse-entities ">=4.0.0 <5.0.0-0" - stringify-entities ">=4.0.0 <5.0.0-0" - unist-util-stringify-position ">=4.0.0 <5.0.0-0" - vfile-message ">=4.0.0 <5.0.0-0" - } -} -pkg "mdast-util-mdxjs-esm" { - version "2.0.1" - resolved "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz" - integrity "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==" - dependencies { - "@types/estree-jsx" ">=1.0.0 <2.0.0-0" - "@types/hast" ">=3.0.0 <4.0.0-0" - "@types/mdast" ">=4.0.0 <5.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - mdast-util-from-markdown ">=2.0.0 <3.0.0-0" - mdast-util-to-markdown ">=2.0.0 <3.0.0-0" - } -} -pkg "mdast-util-phrasing" { - version "4.1.0" - resolved "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz" - integrity "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==" - dependencies { - "@types/mdast" ">=4.0.0 <5.0.0-0" - unist-util-is ">=6.0.0 <7.0.0-0" - } -} -pkg "mdast-util-to-hast" { - version "13.2.0" - resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz" - integrity "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==" - dependencies { - "@types/hast" ">=3.0.0 <4.0.0-0" - "@types/mdast" ">=4.0.0 <5.0.0-0" - "@ungap/structured-clone" ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - micromark-util-sanitize-uri ">=2.0.0 <3.0.0-0" - trim-lines ">=3.0.0 <4.0.0-0" - unist-util-position ">=5.0.0 <6.0.0-0" - unist-util-visit ">=5.0.0 <6.0.0-0" - vfile ">=6.0.0 <7.0.0-0" - } -} -pkg "mdast-util-to-markdown" { - version "2.1.2" - resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz" - integrity "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==" - dependencies { - "@types/mdast" ">=4.0.0 <5.0.0-0" - "@types/unist" ">=3.0.0 <4.0.0-0" - longest-streak ">=3.0.0 <4.0.0-0" - mdast-util-phrasing ">=4.0.0 <5.0.0-0" - mdast-util-to-string ">=4.0.0 <5.0.0-0" - micromark-util-classify-character ">=2.0.0 <3.0.0-0" - micromark-util-decode-string ">=2.0.0 <3.0.0-0" - unist-util-visit ">=5.0.0 <6.0.0-0" - zwitch ">=2.0.0 <3.0.0-0" - } -} -pkg "mdast-util-to-string" { - version "4.0.0" - resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz" - integrity "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==" - dependencies { - "@types/mdast" ">=4.0.0 <5.0.0-0" - } -} -pkg "mdn-data" { - version "2.0.30" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" - integrity "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" -} -pkg "media-typer" { - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" -} -pkg "meow" { - version "12.1.1" - resolved "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz" - integrity "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==" -} -pkg "merge-descriptors" { - version "1.0.3" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" - integrity "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" -} -pkg "merge-stream" { - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" -} -pkg "merge2" { - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" -} -pkg "methods" { - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" -} -pkg "micromark" { - version "4.0.2" - resolved "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz" - integrity "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==" - dependencies { - "@types/debug" ">=4.0.0 <5.0.0-0" - debug ">=4.0.0 <5.0.0-0" - decode-named-character-reference ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - micromark-core-commonmark ">=2.0.0 <3.0.0-0" - micromark-factory-space ">=2.0.0 <3.0.0-0" - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-chunked ">=2.0.0 <3.0.0-0" - micromark-util-combine-extensions ">=2.0.0 <3.0.0-0" - micromark-util-decode-numeric-character-reference ">=2.0.0 <3.0.0-0" - micromark-util-encode ">=2.0.0 <3.0.0-0" - micromark-util-normalize-identifier ">=2.0.0 <3.0.0-0" - micromark-util-resolve-all ">=2.0.0 <3.0.0-0" - micromark-util-sanitize-uri ">=2.0.0 <3.0.0-0" - micromark-util-subtokenize ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-core-commonmark" { - version "2.0.3" - resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz" - integrity "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==" - dependencies { - decode-named-character-reference ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - micromark-factory-destination ">=2.0.0 <3.0.0-0" - micromark-factory-label ">=2.0.0 <3.0.0-0" - micromark-factory-space ">=2.0.0 <3.0.0-0" - micromark-factory-title ">=2.0.0 <3.0.0-0" - micromark-factory-whitespace ">=2.0.0 <3.0.0-0" - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-chunked ">=2.0.0 <3.0.0-0" - micromark-util-classify-character ">=2.0.0 <3.0.0-0" - micromark-util-html-tag-name ">=2.0.0 <3.0.0-0" - micromark-util-normalize-identifier ">=2.0.0 <3.0.0-0" - micromark-util-resolve-all ">=2.0.0 <3.0.0-0" - micromark-util-subtokenize ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-extension-mdx-expression" { - version "3.0.0" - resolved "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz" - integrity "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - micromark-factory-mdx-expression ">=2.0.0 <3.0.0-0" - micromark-factory-space ">=2.0.0 <3.0.0-0" - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-events-to-acorn ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-extension-mdx-jsx" { - version "3.0.1" - resolved "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz" - integrity "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==" - dependencies { - "@types/acorn" ">=4.0.0 <5.0.0-0" - "@types/estree" ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - estree-util-is-identifier-name ">=3.0.0 <4.0.0-0" - micromark-factory-mdx-expression ">=2.0.0 <3.0.0-0" - micromark-factory-space ">=2.0.0 <3.0.0-0" - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-events-to-acorn ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - vfile-message ">=4.0.0 <5.0.0-0" - } -} -pkg "micromark-extension-mdx-md" { - version "2.0.0" - resolved "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz" - integrity "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==" - dependencies { - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-extension-mdxjs" { - version "3.0.0" - resolved "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz" - integrity "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==" - dependencies { - acorn ">=8.0.0 <9.0.0-0" - acorn-jsx ">=5.0.0 <6.0.0-0" - micromark-extension-mdx-expression ">=3.0.0 <4.0.0-0" - micromark-extension-mdx-jsx ">=3.0.0 <4.0.0-0" - micromark-extension-mdx-md ">=2.0.0 <3.0.0-0" - micromark-extension-mdxjs-esm ">=3.0.0 <4.0.0-0" - micromark-util-combine-extensions ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-extension-mdxjs-esm" { - version "3.0.0" - resolved "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz" - integrity "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - micromark-core-commonmark ">=2.0.0 <3.0.0-0" - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-events-to-acorn ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - unist-util-position-from-estree ">=2.0.0 <3.0.0-0" - vfile-message ">=4.0.0 <5.0.0-0" - } -} -pkg "micromark-factory-destination" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz" - integrity "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==" - dependencies { - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-factory-label" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz" - integrity "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==" - dependencies { - devlop ">=1.0.0 <2.0.0-0" - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-factory-mdx-expression" { - version "2.0.2" - resolved "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz" - integrity "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - micromark-factory-space ">=2.0.0 <3.0.0-0" - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-events-to-acorn ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - unist-util-position-from-estree ">=2.0.0 <3.0.0-0" - vfile-message ">=4.0.0 <5.0.0-0" - } -} -pkg "micromark-factory-space" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz" - integrity "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==" - dependencies { - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-factory-title" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz" - integrity "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==" - dependencies { - micromark-factory-space ">=2.0.0 <3.0.0-0" - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-factory-whitespace" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz" - integrity "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==" - dependencies { - micromark-factory-space ">=2.0.0 <3.0.0-0" - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-character" { - version "2.1.1" - resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz" - integrity "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==" - dependencies { - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-chunked" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz" - integrity "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==" - dependencies { - micromark-util-symbol ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-classify-character" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz" - integrity "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==" - dependencies { - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-combine-extensions" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz" - integrity "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==" - dependencies { - micromark-util-chunked ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-decode-numeric-character-reference" { - version "2.0.2" - resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz" - integrity "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==" - dependencies { - micromark-util-symbol ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-decode-string" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz" - integrity "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==" - dependencies { - decode-named-character-reference ">=1.0.0 <2.0.0-0" - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-decode-numeric-character-reference ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-encode" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz" - integrity "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==" -} -pkg "micromark-util-events-to-acorn" { - version "2.0.2" - resolved "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz" - integrity "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==" - dependencies { - "@types/acorn" ">=4.0.0 <5.0.0-0" - "@types/estree" ">=1.0.0 <2.0.0-0" - "@types/unist" ">=3.0.0 <4.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - estree-util-visit ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - vfile-message ">=4.0.0 <5.0.0-0" - } -} -pkg "micromark-util-html-tag-name" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz" - integrity "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==" -} -pkg "micromark-util-normalize-identifier" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz" - integrity "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==" - dependencies { - micromark-util-symbol ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-resolve-all" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz" - integrity "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==" - dependencies { - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-sanitize-uri" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz" - integrity "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==" - dependencies { - micromark-util-character ">=2.0.0 <3.0.0-0" - micromark-util-encode ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-subtokenize" { - version "2.1.0" - resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz" - integrity "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==" - dependencies { - devlop ">=1.0.0 <2.0.0-0" - micromark-util-chunked ">=2.0.0 <3.0.0-0" - micromark-util-symbol ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - } -} -pkg "micromark-util-symbol" { - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz" - integrity "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==" -} -pkg "micromark-util-types" { - version "2.0.2" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz" - integrity "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==" -} -pkg "micromark" "debug" { - version "4.4.0" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" - integrity "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" - dependencies { - ms ">=2.1.3 <3.0.0-0" - } -} -pkg "micromatch" { - version "4.0.8" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" - integrity "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==" - dependencies { - braces ">=3.0.3 <4.0.0-0" - picomatch ">=2.3.1 <3.0.0-0" - } -} -pkg "mime" { - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" -} -pkg "mime-db" { - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" -} -pkg "mime-types" { - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - dependencies { - mime-db "1.52.0" - } -} -pkg "mimic-fn" { - version "4.0.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" - integrity "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" -} -pkg "mimic-function" { - version "5.0.1" - resolved "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz" - integrity "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==" -} -pkg "minimatch" { - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - dependencies { - brace-expansion ">=1.1.7 <2.0.0-0" - } -} -pkg "minimist" { - version "1.2.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" - integrity "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" -} -pkg "mitata" { - version "1.0.34" - resolved "https://registry.npmjs.org/mitata/-/mitata-1.0.34.tgz" - integrity "sha512-Mc3zrtNBKIMeHSCQ0XqRLo1vbdIx1wvFV9c8NJAiyho6AjNfMY8bVhbS12bwciUdd1t4rj8099CH3N3NFahaUA==" -} -pkg "ms" { - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" -} -pkg "mvdan-sh" { - version "0.10.1" - resolved "https://registry.npmjs.org/mvdan-sh/-/mvdan-sh-0.10.1.tgz" - integrity "sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==" -} -pkg "nanoid" { - version "3.3.8" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz" - integrity "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==" -} -pkg "natural-compare" { - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" -} -pkg "negotiator" { - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" -} -pkg "node-releases" { - version "2.0.19" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz" - integrity "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" -} -pkg "normalize-path" { - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" -} -pkg "npm-run-path" { - version "5.3.0" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" - integrity "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==" - dependencies { - path-key ">=4.0.0 <5.0.0-0" - } -} -pkg "npm-run-path" "path-key" { - version "4.0.0" - resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" - integrity "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==" -} -pkg "nth-check" { - version "2.1.1" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - integrity "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" - dependencies { - boolbase ">=1.0.0 <2.0.0-0" - } -} -pkg "object-inspect" { - version "1.13.4" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" - integrity "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" -} -pkg "on-finished" { - version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - integrity "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" - dependencies { - ee-first "1.1.1" - } -} -pkg "onetime" { - version "6.0.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" - integrity "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==" - dependencies { - mimic-fn ">=4.0.0 <5.0.0-0" - } -} -pkg "optionator" { - version "0.9.4" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" - integrity "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==" - dependencies { - deep-is ">=0.1.3 <0.2.0-0" - fast-levenshtein ">=2.0.6 <3.0.0-0" - levn ">=0.4.1 <0.5.0-0" - prelude-ls ">=1.2.1 <2.0.0-0" - type-check ">=0.4.0 <0.5.0-0" - word-wrap ">=1.2.5 <2.0.0-0" - } -} -pkg "p-limit" { - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - dependencies { - yocto-queue ">=0.1.0 <0.2.0-0" - } -} -pkg "p-locate" { - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - dependencies { - p-limit ">=3.0.2 <4.0.0-0" - } -} -pkg "pako" { - version "1.0.11" - resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - integrity "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" -} -pkg "parent-module" { - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - integrity "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - dependencies { - callsites ">=3.0.0 <4.0.0-0" - } -} -pkg "parse-entities" { - version "4.0.2" - resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz" - integrity "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==" - dependencies { - "@types/unist" ">=2.0.0 <3.0.0-0" - character-entities-legacy ">=3.0.0 <4.0.0-0" - character-reference-invalid ">=2.0.0 <3.0.0-0" - decode-named-character-reference ">=1.0.0 <2.0.0-0" - is-alphanumerical ">=2.0.0 <3.0.0-0" - is-decimal ">=2.0.0 <3.0.0-0" - is-hexadecimal ">=2.0.0 <3.0.0-0" - } -} -pkg "parse-entities" "@types/unist" { - version "2.0.11" - resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz" - integrity "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" -} -pkg "parse-json" { - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - integrity "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - dependencies { - "@babel/code-frame" ">=7.0.0 <8.0.0-0" - error-ex ">=1.3.1 <2.0.0-0" - json-parse-even-better-errors ">=2.3.0 <3.0.0-0" - lines-and-columns ">=1.1.6 <2.0.0-0" - } -} -pkg "parseurl" { - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - integrity "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" -} -pkg "path-exists" { - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" -} -pkg "path-key" { - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" -} -pkg "path-to-regexp" { - version "0.1.12" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" - integrity "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" -} -pkg "path-type" { - version "6.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz" - integrity "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==" -} -pkg "picocolors" { - version "1.1.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" - integrity "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" -} -pkg "picomatch" { - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" -} -pkg "pidtree" { - version "0.6.0" - resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" - integrity "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==" -} -pkg "pify" { - version "2.3.0" - resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - integrity "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" -} -pkg "postcss" { - version "8.5.3" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz" - integrity "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==" - dependencies { - nanoid ">=3.3.8 <4.0.0-0" - picocolors ">=1.1.1 <2.0.0-0" - source-map-js ">=1.2.1 <2.0.0-0" - } -} -pkg "postcss-calc" { - version "10.1.1" - resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz" - integrity "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==" - dependencies { - postcss-selector-parser ">=7.0.0 <8.0.0-0" - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-calc" "postcss-selector-parser" { - version "7.1.0" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz" - integrity "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==" - dependencies { - cssesc ">=3.0.0 <4.0.0-0" - util-deprecate ">=1.0.2 <2.0.0-0" - } -} -pkg "postcss-cli" { - version "11.0.0" - resolved "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.0.tgz" - integrity "sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==" - dependencies { - chokidar ">=3.3.0 <4.0.0-0" - dependency-graph ">=0.11.0 <0.12.0-0" - fs-extra ">=11.0.0 <12.0.0-0" - get-stdin ">=9.0.0 <10.0.0-0" - globby ">=14.0.0 <15.0.0-0" - picocolors ">=1.0.0 <2.0.0-0" - postcss-load-config ">=5.0.0 <6.0.0-0" - postcss-reporter ">=7.0.0 <8.0.0-0" - pretty-hrtime ">=1.0.3 <2.0.0-0" - read-cache ">=1.0.0 <2.0.0-0" - slash ">=5.0.0 <6.0.0-0" - yargs ">=17.0.0 <18.0.0-0" - } -} -pkg "postcss-colormin" { - version "7.0.2" - resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz" - integrity "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==" - dependencies { - browserslist ">=4.23.3 <5.0.0-0" - caniuse-api ">=3.0.0 <4.0.0-0" - colord ">=2.9.3 <3.0.0-0" - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-convert-values" { - version "7.0.4" - resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz" - integrity "sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==" - dependencies { - browserslist ">=4.23.3 <5.0.0-0" - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-discard-comments" { - version "7.0.3" - resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz" - integrity "sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==" - dependencies { - postcss-selector-parser ">=6.1.2 <7.0.0-0" - } -} -pkg "postcss-discard-duplicates" { - version "7.0.1" - resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz" - integrity "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==" -} -pkg "postcss-discard-empty" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz" - integrity "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==" -} -pkg "postcss-discard-overridden" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz" - integrity "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==" -} -pkg "postcss-load-config" { - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz" - integrity "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==" - dependencies { - lilconfig ">=3.1.1 <4.0.0-0" - yaml ">=2.4.2 <3.0.0-0" - } -} -pkg "postcss-merge-longhand" { - version "7.0.4" - resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz" - integrity "sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - stylehacks ">=7.0.4 <8.0.0-0" - } -} -pkg "postcss-merge-rules" { - version "7.0.4" - resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz" - integrity "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==" - dependencies { - browserslist ">=4.23.3 <5.0.0-0" - caniuse-api ">=3.0.0 <4.0.0-0" - cssnano-utils ">=5.0.0 <6.0.0-0" - postcss-selector-parser ">=6.1.2 <7.0.0-0" - } -} -pkg "postcss-minify-font-values" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz" - integrity "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-minify-gradients" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz" - integrity "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==" - dependencies { - colord ">=2.9.3 <3.0.0-0" - cssnano-utils ">=5.0.0 <6.0.0-0" - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-minify-params" { - version "7.0.2" - resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz" - integrity "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==" - dependencies { - browserslist ">=4.23.3 <5.0.0-0" - cssnano-utils ">=5.0.0 <6.0.0-0" - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-minify-selectors" { - version "7.0.4" - resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz" - integrity "sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==" - dependencies { - cssesc ">=3.0.0 <4.0.0-0" - postcss-selector-parser ">=6.1.2 <7.0.0-0" - } -} -pkg "postcss-normalize-charset" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz" - integrity "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==" -} -pkg "postcss-normalize-display-values" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz" - integrity "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-normalize-positions" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz" - integrity "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-normalize-repeat-style" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz" - integrity "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-normalize-string" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz" - integrity "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-normalize-timing-functions" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz" - integrity "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-normalize-unicode" { - version "7.0.2" - resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz" - integrity "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==" - dependencies { - browserslist ">=4.23.3 <5.0.0-0" - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-normalize-url" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz" - integrity "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-normalize-whitespace" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz" - integrity "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-ordered-values" { - version "7.0.1" - resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz" - integrity "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==" - dependencies { - cssnano-utils ">=5.0.0 <6.0.0-0" - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-reduce-initial" { - version "7.0.2" - resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz" - integrity "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==" - dependencies { - browserslist ">=4.23.3 <5.0.0-0" - caniuse-api ">=3.0.0 <4.0.0-0" - } -} -pkg "postcss-reduce-transforms" { - version "7.0.0" - resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz" - integrity "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - } -} -pkg "postcss-reporter" { - version "7.1.0" - resolved "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz" - integrity "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==" - dependencies { - picocolors ">=1.0.0 <2.0.0-0" - thenby ">=1.3.4 <2.0.0-0" - } -} -pkg "postcss-selector-parser" { - version "6.1.2" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" - integrity "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==" - dependencies { - cssesc ">=3.0.0 <4.0.0-0" - util-deprecate ">=1.0.2 <2.0.0-0" - } -} -pkg "postcss-svgo" { - version "7.0.1" - resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz" - integrity "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==" - dependencies { - postcss-value-parser ">=4.2.0 <5.0.0-0" - svgo ">=3.3.2 <4.0.0-0" - } -} -pkg "postcss-unique-selectors" { - version "7.0.3" - resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz" - integrity "sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==" - dependencies { - postcss-selector-parser ">=6.1.2 <7.0.0-0" - } -} -pkg "postcss-value-parser" { - version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - integrity "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" -} -pkg "preact" { - version "10.26.4" - resolved "https://registry.npmjs.org/preact/-/preact-10.26.4.tgz" - integrity "sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==" -} -pkg "prelude-ls" { - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" -} -pkg "prettier" { - version "3.5.3" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz" - integrity "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==" -} -pkg "prettier-plugin-java" { - version "2.6.7" - resolved "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-2.6.7.tgz" - integrity "sha512-AVm+X7fhAZpYKiUCdUIGZ8HJbkGkTUgYQIKVuCQEplcqpGw2ewVnNGcPb1Kc3+MYMfiEqzhd8ZYhMGVHw6tZdQ==" - dependencies { - java-parser "2.3.3" - lodash "4.17.21" - } -} -pkg "prettier-plugin-properties" { - version "0.3.0" - resolved "https://registry.npmjs.org/prettier-plugin-properties/-/prettier-plugin-properties-0.3.0.tgz" - integrity "sha512-j2h4NbG6hIaRx0W7CDPUH+yDbzXHmI2urPC1EC8pYrsS5R5AYgAmcSDN0oea+C5mBiN6BK0AkiSKPj0RC17NDQ==" - dependencies { - dot-properties ">=1.0.0 <2.0.0-0" - } -} -pkg "prettier-plugin-sh" { - version "0.15.0" - resolved "https://registry.npmjs.org/prettier-plugin-sh/-/prettier-plugin-sh-0.15.0.tgz" - integrity "sha512-U0PikJr/yr2bzzARl43qI0mApBj0C1xdAfA04AZa6LnvIKawXHhuy2fFo6LNA7weRzGlAiNbaEFfKMFo0nZr/A==" - dependencies { - mvdan-sh ">=0.10.1 <0.11.0-0" - sh-syntax ">=0.4.2 <0.5.0-0" - } -} -pkg "prettier-plugin-toml" { - version "2.0.2" - resolved "https://registry.npmjs.org/prettier-plugin-toml/-/prettier-plugin-toml-2.0.2.tgz" - integrity "sha512-tUIIhyfdVX5DMsLGKX/2qaEwi3W48OkUSR7XC91PRI5jFzhexmaYWkrSP1Xh/eWUcEc0TVMQenM3lB09xLQstQ==" - dependencies { - "@taplo/lib" ">=0.4.0-alpha.2 <0.5.0-0" - } -} -pkg "pretty-hrtime" { - version "1.0.3" - resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" - integrity "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" -} -pkg "process" { - version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - integrity "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" -} -pkg "process-nextick-args" { - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - integrity "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" -} -pkg "property-information" { - version "7.0.0" - resolved "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz" - integrity "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==" -} -pkg "proxy-addr" { - version "2.0.7" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - integrity "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" - dependencies { - forwarded "0.2.0" - ipaddr.js "1.9.1" - } -} -pkg "punycode" { - version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" - integrity "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" -} -pkg "qs" { - version "6.13.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" - integrity "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==" - dependencies { - side-channel ">=1.0.6 <2.0.0-0" - } -} -pkg "queue-microtask" { - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - integrity "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" -} -pkg "range-parser" { - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" -} -pkg "raw-body" { - version "2.5.2" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" - integrity "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==" - dependencies { - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - } -} -pkg "react" { - version "19.0.0" - resolved "https://registry.npmjs.org/react/-/react-19.0.0.tgz" - integrity "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==" -} -pkg "react-dom" { - version "19.0.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz" - integrity "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==" - dependencies { - scheduler ">=0.25.0 <0.26.0-0" - } -} -pkg "read-cache" { - version "1.0.0" - resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" - integrity "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==" - dependencies { - pify ">=2.3.0 <3.0.0-0" - } -} -pkg "readable-stream" { - version "4.5.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz" - integrity "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==" - dependencies { - abort-controller ">=3.0.0 <4.0.0-0" - buffer ">=6.0.3 <7.0.0-0" - events ">=3.3.0 <4.0.0-0" - process ">=0.11.10 <0.12.0-0" - string_decoder ">=1.3.0 <2.0.0-0" - } -} -pkg "readdirp" { - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - dependencies { - picomatch ">=2.2.1 <3.0.0-0" - } -} -pkg "recma-build-jsx" { - version "1.0.0" - resolved "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz" - integrity "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - estree-util-build-jsx ">=3.0.0 <4.0.0-0" - vfile ">=6.0.0 <7.0.0-0" - } -} -pkg "recma-jsx" { - version "1.0.0" - resolved "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz" - integrity "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==" - dependencies { - acorn-jsx ">=5.0.0 <6.0.0-0" - estree-util-to-js ">=2.0.0 <3.0.0-0" - recma-parse ">=1.0.0 <2.0.0-0" - recma-stringify ">=1.0.0 <2.0.0-0" - unified ">=11.0.0 <12.0.0-0" - } -} -pkg "recma-parse" { - version "1.0.0" - resolved "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz" - integrity "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - esast-util-from-js ">=2.0.0 <3.0.0-0" - unified ">=11.0.0 <12.0.0-0" - vfile ">=6.0.0 <7.0.0-0" - } -} -pkg "recma-stringify" { - version "1.0.0" - resolved "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz" - integrity "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - estree-util-to-js ">=2.0.0 <3.0.0-0" - unified ">=11.0.0 <12.0.0-0" - vfile ">=6.0.0 <7.0.0-0" - } -} -pkg "regexp-to-ast" { - version "0.5.0" - resolved "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz" - integrity "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==" -} -pkg "rehype-recma" { - version "1.0.0" - resolved "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz" - integrity "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==" - dependencies { - "@types/estree" ">=1.0.0 <2.0.0-0" - "@types/hast" ">=3.0.0 <4.0.0-0" - hast-util-to-estree ">=3.0.0 <4.0.0-0" - } -} -pkg "remark-mdx" { - version "3.1.0" - resolved "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz" - integrity "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==" - dependencies { - mdast-util-mdx ">=3.0.0 <4.0.0-0" - micromark-extension-mdxjs ">=3.0.0 <4.0.0-0" - } -} -pkg "remark-parse" { - version "11.0.0" - resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz" - integrity "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==" - dependencies { - "@types/mdast" ">=4.0.0 <5.0.0-0" - mdast-util-from-markdown ">=2.0.0 <3.0.0-0" - micromark-util-types ">=2.0.0 <3.0.0-0" - unified ">=11.0.0 <12.0.0-0" - } -} -pkg "remark-rehype" { - version "11.1.1" - resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz" - integrity "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==" - dependencies { - "@types/hast" ">=3.0.0 <4.0.0-0" - "@types/mdast" ">=4.0.0 <5.0.0-0" - mdast-util-to-hast ">=13.0.0 <14.0.0-0" - unified ">=11.0.0 <12.0.0-0" - vfile ">=6.0.0 <7.0.0-0" - } -} -pkg "require-directory" { - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" -} -pkg "require-from-string" { - version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - integrity "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" -} -pkg "resolve-from" { - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - integrity "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" -} -pkg "restore-cursor" { - version "5.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz" - integrity "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==" - dependencies { - onetime ">=7.0.0 <8.0.0-0" - signal-exit ">=4.1.0 <5.0.0-0" - } -} -pkg "restore-cursor" "onetime" { - version "7.0.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz" - integrity "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==" - dependencies { - mimic-function ">=5.0.0 <6.0.0-0" - } -} -pkg "reusify" { - version "1.1.0" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" - integrity "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==" -} -pkg "rfdc" { - version "1.4.1" - resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" - integrity "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" -} -pkg "run-parallel" { - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - dependencies { - queue-microtask ">=1.2.2 <2.0.0-0" - } -} -pkg "safe-buffer" { - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" -} -pkg "safer-buffer" { - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" -} -pkg "scheduler" { - version "0.25.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz" - integrity "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==" -} -pkg "semver" { - version "7.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" - integrity "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" -} -pkg "send" { - version "0.19.0" - resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" - integrity "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==" - dependencies { - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl ">=1.0.2 <1.1.0-0" - escape-html ">=1.0.3 <1.1.0-0" - etag ">=1.8.1 <1.9.0-0" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser ">=1.2.1 <1.3.0-0" - statuses "2.0.1" - } -} -pkg "send" "encodeurl" { - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" -} -pkg "serve-static" { - version "1.16.2" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz" - integrity "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==" - dependencies { - encodeurl ">=2.0.0 <2.1.0-0" - escape-html ">=1.0.3 <1.1.0-0" - parseurl ">=1.3.3 <1.4.0-0" - send "0.19.0" - } -} -pkg "setimmediate" { - version "1.0.5" - resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - integrity "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" -} -pkg "setprototypeof" { - version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - integrity "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" -} -pkg "sh-syntax" { - version "0.4.2" - resolved "https://registry.npmjs.org/sh-syntax/-/sh-syntax-0.4.2.tgz" - integrity "sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==" - dependencies { - tslib ">=2.6.2 <3.0.0-0" - } -} -pkg "shebang-command" { - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - dependencies { - shebang-regex ">=3.0.0 <4.0.0-0" - } -} -pkg "shebang-regex" { - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" -} -pkg "side-channel" { - version "1.1.0" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" - integrity "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==" - dependencies { - es-errors ">=1.3.0 <2.0.0-0" - object-inspect ">=1.13.3 <2.0.0-0" - side-channel-list ">=1.0.0 <2.0.0-0" - side-channel-map ">=1.0.1 <2.0.0-0" - side-channel-weakmap ">=1.0.2 <2.0.0-0" - } -} -pkg "side-channel-list" { - version "1.0.0" - resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" - integrity "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==" - dependencies { - es-errors ">=1.3.0 <2.0.0-0" - object-inspect ">=1.13.3 <2.0.0-0" - } -} -pkg "side-channel-map" { - version "1.0.1" - resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" - integrity "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==" - dependencies { - call-bound ">=1.0.2 <2.0.0-0" - es-errors ">=1.3.0 <2.0.0-0" - get-intrinsic ">=1.2.5 <2.0.0-0" - object-inspect ">=1.13.3 <2.0.0-0" - } -} -pkg "side-channel-weakmap" { - version "1.0.2" - resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" - integrity "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==" - dependencies { - call-bound ">=1.0.2 <2.0.0-0" - es-errors ">=1.3.0 <2.0.0-0" - get-intrinsic ">=1.2.5 <2.0.0-0" - object-inspect ">=1.13.3 <2.0.0-0" - side-channel-map ">=1.0.1 <2.0.0-0" - } -} -pkg "signal-exit" { - version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - integrity "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" -} -pkg "slash" { - version "5.1.0" - resolved "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz" - integrity "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==" -} -pkg "slice-ansi" { - version "7.1.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz" - integrity "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==" - dependencies { - ansi-styles ">=6.2.1 <7.0.0-0" - is-fullwidth-code-point ">=5.0.0 <6.0.0-0" - } -} -pkg "slice-ansi" "ansi-styles" { - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" -} -pkg "slice-ansi" "is-fullwidth-code-point" { - version "5.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz" - integrity "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==" - dependencies { - get-east-asian-width ">=1.0.0 <2.0.0-0" - } -} -pkg "source-map" { - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - integrity "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" -} -pkg "source-map-js" { - version "1.2.1" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" - integrity "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" -} -pkg "space-separated-tokens" { - version "2.0.2" - resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz" - integrity "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==" -} -pkg "split2" { - version "4.2.0" - resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" - integrity "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" -} -pkg "statuses" { - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" -} -pkg "string-argv" { - version "0.3.2" - resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" - integrity "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==" -} -pkg "string-width" { - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - dependencies { - emoji-regex ">=8.0.0 <9.0.0-0" - is-fullwidth-code-point ">=3.0.0 <4.0.0-0" - strip-ansi ">=6.0.1 <7.0.0-0" - } -} -pkg "string_decoder" { - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" - dependencies { - safe-buffer ">=5.2.0 <5.3.0-0" - } -} -pkg "stringify-entities" { - version "4.0.4" - resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" - integrity "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==" - dependencies { - character-entities-html4 ">=2.0.0 <3.0.0-0" - character-entities-legacy ">=3.0.0 <4.0.0-0" - } -} -pkg "strip-ansi" { - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - dependencies { - ansi-regex ">=5.0.1 <6.0.0-0" - } -} -pkg "strip-final-newline" { - version "3.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" - integrity "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==" -} -pkg "strip-json-comments" { - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" -} -pkg "style-to-js" { - version "1.1.16" - resolved "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz" - integrity "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==" - dependencies { - style-to-object "1.0.8" - } -} -pkg "style-to-object" { - version "1.0.8" - resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz" - integrity "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==" - dependencies { - inline-style-parser "0.2.4" - } -} -pkg "stylehacks" { - version "7.0.4" - resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz" - integrity "sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==" - dependencies { - browserslist ">=4.23.3 <5.0.0-0" - postcss-selector-parser ">=6.1.2 <7.0.0-0" - } -} -pkg "supports-color" { - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - dependencies { - has-flag ">=4.0.0 <5.0.0-0" - } -} -pkg "svgo" { - version "3.3.2" - resolved "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz" - integrity "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==" - dependencies { - "@trysound/sax" "0.2.0" - commander ">=7.2.0 <8.0.0-0" - css-select ">=5.1.0 <6.0.0-0" - css-tree ">=2.3.1 <3.0.0-0" - css-what ">=6.1.0 <7.0.0-0" - csso ">=5.0.5 <6.0.0-0" - picocolors ">=1.0.0 <2.0.0-0" - } -} -pkg "svgo" "commander" { - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - integrity "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" -} -pkg "text-extensions" { - version "2.4.0" - resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz" - integrity "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==" -} -pkg "thenby" { - version "1.3.4" - resolved "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz" - integrity "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==" -} -pkg "through" { - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - integrity "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" -} -pkg "tinyexec" { - version "0.3.2" - resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz" - integrity "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" -} -pkg "to-regex-range" { - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - dependencies { - is-number ">=7.0.0 <8.0.0-0" - } -} -pkg "toidentifier" { - version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - integrity "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" -} -pkg "trim-lines" { - version "3.0.1" - resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz" - integrity "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" -} -pkg "trough" { - version "2.2.0" - resolved "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz" - integrity "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==" -} -pkg "tslib" { - version "2.8.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" - integrity "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" -} -pkg "type-check" { - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - dependencies { - prelude-ls ">=1.2.1 <2.0.0-0" - } -} -pkg "type-is" { - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - integrity "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" - dependencies { - media-typer "0.3.0" - mime-types ">=2.1.24 <2.2.0-0" - } -} -pkg "typescript" { - version "5.8.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz" - integrity "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==" -} -pkg "undici-types" { - version "6.20.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz" - integrity "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" -} -pkg "unicorn-magic" { - version "0.3.0" - resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz" - integrity "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==" -} -pkg "unified" { - version "11.0.5" - resolved "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz" - integrity "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==" - dependencies { - "@types/unist" ">=3.0.0 <4.0.0-0" - bail ">=2.0.0 <3.0.0-0" - devlop ">=1.0.0 <2.0.0-0" - extend ">=3.0.0 <4.0.0-0" - is-plain-obj ">=4.0.0 <5.0.0-0" - trough ">=2.0.0 <3.0.0-0" - vfile ">=6.0.0 <7.0.0-0" - } -} -pkg "unist-util-is" { - version "6.0.0" - resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz" - integrity "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==" - dependencies { - "@types/unist" ">=3.0.0 <4.0.0-0" - } -} -pkg "unist-util-position" { - version "5.0.0" - resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz" - integrity "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==" - dependencies { - "@types/unist" ">=3.0.0 <4.0.0-0" - } -} -pkg "unist-util-position-from-estree" { - version "2.0.0" - resolved "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz" - integrity "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==" - dependencies { - "@types/unist" ">=3.0.0 <4.0.0-0" - } -} -pkg "unist-util-stringify-position" { - version "4.0.0" - resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz" - integrity "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==" - dependencies { - "@types/unist" ">=3.0.0 <4.0.0-0" - } -} -pkg "unist-util-visit" { - version "5.0.0" - resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz" - integrity "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==" - dependencies { - "@types/unist" ">=3.0.0 <4.0.0-0" - unist-util-is ">=6.0.0 <7.0.0-0" - unist-util-visit-parents ">=6.0.0 <7.0.0-0" - } -} -pkg "unist-util-visit-parents" { - version "6.0.1" - resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz" - integrity "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==" - dependencies { - "@types/unist" ">=3.0.0 <4.0.0-0" - unist-util-is ">=6.0.0 <7.0.0-0" - } -} -pkg "universalify" { - version "2.0.1" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" - integrity "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" -} -pkg "unpipe" { - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - integrity "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" -} -pkg "update-browserslist-db" { - version "1.1.3" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz" - integrity "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==" - dependencies { - escalade ">=3.2.0 <4.0.0-0" - picocolors ">=1.1.1 <2.0.0-0" - } -} -pkg "uri-js" { - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - dependencies { - punycode ">=2.1.0 <3.0.0-0" - } -} -pkg "util-deprecate" { - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" -} -pkg "utils-merge" { - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - integrity "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" -} -pkg "vary" { - version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - integrity "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" -} -pkg "vfile" { - version "6.0.3" - resolved "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz" - integrity "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==" - dependencies { - "@types/unist" ">=3.0.0 <4.0.0-0" - vfile-message ">=4.0.0 <5.0.0-0" - } -} -pkg "vfile-message" { - version "4.0.2" - resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz" - integrity "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==" - dependencies { - "@types/unist" ">=3.0.0 <4.0.0-0" - unist-util-stringify-position ">=4.0.0 <5.0.0-0" - } -} -pkg "web-streams-polyfill" { - version "3.3.3" - resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz" - integrity "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==" -} -pkg "which" { - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - dependencies { - isexe ">=2.0.0 <3.0.0-0" - } -} -pkg "word-wrap" { - version "1.2.5" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" - integrity "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" -} -pkg "wrap-ansi" { - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - dependencies { - ansi-styles ">=4.0.0 <5.0.0-0" - string-width ">=4.1.0 <5.0.0-0" - strip-ansi ">=6.0.0 <7.0.0-0" - } -} -pkg "y18n" { - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - integrity "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" -} -pkg "yaml" { - version "2.7.0" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz" - integrity "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==" -} -pkg "yargs" { - version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" - integrity "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==" - dependencies { - cliui ">=8.0.1 <9.0.0-0" - escalade ">=3.1.1 <4.0.0-0" - get-caller-file ">=2.0.5 <3.0.0-0" - require-directory ">=2.1.1 <3.0.0-0" - string-width ">=4.2.3 <5.0.0-0" - y18n ">=5.0.5 <6.0.0-0" - yargs-parser ">=21.1.1 <22.0.0-0" - } -} -pkg "yargs-parser" { - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - integrity "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" -} -pkg "yocto-queue" { - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" -} -pkg "zwitch" { - version "2.0.4" - resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz" - integrity "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==" +root{ +dependencies{ +browserslist "4.24.4" +cssnano "7.0.6" +google-protobuf "3.21.4" +jszip "3.10.1" +lz-string "1.5.0" +postcss "8.5.3" +preact "10.26.4" +react "19.0.0" +react-dom "19.0.0" +typescript "5.8.2" +web-streams-polyfill "3.3.3" + } +dev-dependencies{ +"@biomejs/biome" "1.9.4" +"@commitlint/cli" "19.8.0" +"@commitlint/config-conventional" "19.8.0" +"@mdx-js/esbuild" "3.1.0" +"@mitata/counters" "0.0.8" +"@prettier/plugin-xml" "3.4.1" +"@types/google-protobuf" "3.15.12" +"@types/node" "22.13.10" +commitlint "19.8.0" +esbuild "0.25.0" +eslint "9.22.0" +express ">=4.21.2 <5.0.0-0" +husky "9.1.7" +lint-staged "15.5.0" +mitata "1.0.34" +postcss-cli "11.0.0" +prettier "3.5.3" +prettier-plugin-java "2.6.7" +prettier-plugin-properties "0.3.0" +prettier-plugin-sh "0.15.0" +prettier-plugin-toml "2.0.2" +readable-stream "4.5.2" + } +} +pkg "@babel/code-frame"{ +version "7.26.2" +resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz" +integrity "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==" +dependencies{ +"@babel/helper-validator-identifier" ">=7.25.9 <8.0.0-0" +js-tokens ">=4.0.0 <5.0.0-0" +picocolors ">=1.0.0 <2.0.0-0" + } +} +pkg "@babel/helper-validator-identifier"{ +version "7.25.9" +resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz" +integrity "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" +} +pkg "@biomejs/biome"{ +version "1.9.4" +resolved "https://registry.npmjs.org/@biomejs/biome/-/biome-1.9.4.tgz" +integrity "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==" +optional-dependencies{ +"@biomejs/cli-darwin-arm64" "1.9.4" +"@biomejs/cli-darwin-x64" "1.9.4" +"@biomejs/cli-linux-arm64" "1.9.4" +"@biomejs/cli-linux-arm64-musl" "1.9.4" +"@biomejs/cli-linux-x64" "1.9.4" +"@biomejs/cli-linux-x64-musl" "1.9.4" +"@biomejs/cli-win32-arm64" "1.9.4" +"@biomejs/cli-win32-x64" "1.9.4" + } +} +pkg "@biomejs/cli-darwin-arm64"{ +version "1.9.4" +resolved "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz" +integrity "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==" +} +pkg "@biomejs/cli-darwin-x64"{ +version "1.9.4" +resolved "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz" +integrity "sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==" +} +pkg "@biomejs/cli-linux-arm64"{ +version "1.9.4" +resolved "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz" +integrity "sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==" +} +pkg "@biomejs/cli-linux-arm64-musl"{ +version "1.9.4" +resolved "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz" +integrity "sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==" +} +pkg "@biomejs/cli-linux-x64"{ +version "1.9.4" +resolved "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz" +integrity "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==" +} +pkg "@biomejs/cli-linux-x64-musl"{ +version "1.9.4" +resolved "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz" +integrity "sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==" +} +pkg "@biomejs/cli-win32-arm64"{ +version "1.9.4" +resolved "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz" +integrity "sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==" +} +pkg "@biomejs/cli-win32-x64"{ +version "1.9.4" +resolved "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz" +integrity "sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==" +} +pkg "@chevrotain/cst-dts-gen"{ +version "11.0.3" +resolved "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz" +integrity "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==" +dependencies{ +"@chevrotain/gast" "11.0.3" +"@chevrotain/types" "11.0.3" +lodash-es "4.17.21" + } +} +pkg "@chevrotain/gast"{ +version "11.0.3" +resolved "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz" +integrity "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==" +dependencies{ +"@chevrotain/types" "11.0.3" +lodash-es "4.17.21" + } +} +pkg "@chevrotain/regexp-to-ast"{ +version "11.0.3" +resolved "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz" +integrity "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==" +} +pkg "@chevrotain/types"{ +version "11.0.3" +resolved "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz" +integrity "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" +} +pkg "@chevrotain/utils"{ +version "11.0.3" +resolved "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz" +integrity "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" +} +pkg "@commitlint/cli"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.0.tgz" +integrity "sha512-t/fCrLVu+Ru01h0DtlgHZXbHV2Y8gKocTR5elDOqIRUzQd0/6hpt2VIWOj9b3NDo7y4/gfxeR2zRtXq/qO6iUg==" +dependencies{ +"@commitlint/format" ">=19.8.0 <20.0.0-0" +"@commitlint/lint" ">=19.8.0 <20.0.0-0" +"@commitlint/load" ">=19.8.0 <20.0.0-0" +"@commitlint/read" ">=19.8.0 <20.0.0-0" +"@commitlint/types" ">=19.8.0 <20.0.0-0" +tinyexec ">=0.3.0 <0.4.0-0" +yargs ">=17.0.0 <18.0.0-0" + } +} +pkg "@commitlint/config-conventional"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.0.tgz" +integrity "sha512-9I2kKJwcAPwMoAj38hwqFXG0CzS2Kj+SAByPUQ0SlHTfb7VUhYVmo7G2w2tBrqmOf7PFd6MpZ/a1GQJo8na8kw==" +dependencies{ +"@commitlint/types" ">=19.8.0 <20.0.0-0" +conventional-changelog-conventionalcommits ">=7.0.2 <8.0.0-0" + } +} +pkg "@commitlint/config-validator"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.0.tgz" +integrity "sha512-+r5ZvD/0hQC3w5VOHJhGcCooiAVdynFlCe2d6I9dU+PvXdV3O+fU4vipVg+6hyLbQUuCH82mz3HnT/cBQTYYuA==" +dependencies{ +"@commitlint/types" ">=19.8.0 <20.0.0-0" +ajv ">=8.11.0 <9.0.0-0" + } +} +pkg "@commitlint/config-validator" ajv{ +version "8.17.1" +resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" +integrity "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==" +dependencies{ +fast-deep-equal ">=3.1.3 <4.0.0-0" +fast-uri ">=3.0.1 <4.0.0-0" +json-schema-traverse ">=1.0.0 <2.0.0-0" +require-from-string ">=2.0.2 <3.0.0-0" + } +} +pkg "@commitlint/config-validator" json-schema-traverse{ +version "1.0.0" +resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" +integrity "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" +} +pkg "@commitlint/ensure"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.0.tgz" +integrity "sha512-kNiNU4/bhEQ/wutI1tp1pVW1mQ0QbAjfPRo5v8SaxoVV+ARhkB8Wjg3BSseNYECPzWWfg/WDqQGIfV1RaBFQZg==" +dependencies{ +"@commitlint/types" ">=19.8.0 <20.0.0-0" +lodash.camelcase ">=4.3.0 <5.0.0-0" +lodash.kebabcase ">=4.1.1 <5.0.0-0" +lodash.snakecase ">=4.1.1 <5.0.0-0" +lodash.startcase ">=4.4.0 <5.0.0-0" +lodash.upperfirst ">=4.3.1 <5.0.0-0" + } +} +pkg "@commitlint/execute-rule"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.0.tgz" +integrity "sha512-fuLeI+EZ9x2v/+TXKAjplBJWI9CNrHnyi5nvUQGQt4WRkww/d95oVRsc9ajpt4xFrFmqMZkd/xBQHZDvALIY7A==" +} +pkg "@commitlint/format"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/format/-/format-19.8.0.tgz" +integrity "sha512-EOpA8IERpQstxwp/WGnDArA7S+wlZDeTeKi98WMOvaDLKbjptuHWdOYYr790iO7kTCif/z971PKPI2PkWMfOxg==" +dependencies{ +"@commitlint/types" ">=19.8.0 <20.0.0-0" +chalk ">=5.3.0 <6.0.0-0" + } +} +pkg "@commitlint/is-ignored"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.0.tgz" +integrity "sha512-L2Jv9yUg/I+jF3zikOV0rdiHUul9X3a/oU5HIXhAJLE2+TXTnEBfqYP9G5yMw/Yb40SnR764g4fyDK6WR2xtpw==" +dependencies{ +"@commitlint/types" ">=19.8.0 <20.0.0-0" +semver ">=7.6.0 <8.0.0-0" + } +} +pkg "@commitlint/lint"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.0.tgz" +integrity "sha512-+/NZKyWKSf39FeNpqhfMebmaLa1P90i1Nrb1SrA7oSU5GNN/lksA4z6+ZTnsft01YfhRZSYMbgGsARXvkr/VLQ==" +dependencies{ +"@commitlint/is-ignored" ">=19.8.0 <20.0.0-0" +"@commitlint/parse" ">=19.8.0 <20.0.0-0" +"@commitlint/rules" ">=19.8.0 <20.0.0-0" +"@commitlint/types" ">=19.8.0 <20.0.0-0" + } +} +pkg "@commitlint/load"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/load/-/load-19.8.0.tgz" +integrity "sha512-4rvmm3ff81Sfb+mcWT5WKlyOa+Hd33WSbirTVUer0wjS1Hv/Hzr07Uv1ULIV9DkimZKNyOwXn593c+h8lsDQPQ==" +dependencies{ +"@commitlint/config-validator" ">=19.8.0 <20.0.0-0" +"@commitlint/execute-rule" ">=19.8.0 <20.0.0-0" +"@commitlint/resolve-extends" ">=19.8.0 <20.0.0-0" +"@commitlint/types" ">=19.8.0 <20.0.0-0" +chalk ">=5.3.0 <6.0.0-0" +cosmiconfig ">=9.0.0 <10.0.0-0" +cosmiconfig-typescript-loader ">=6.1.0 <7.0.0-0" +lodash.isplainobject ">=4.0.6 <5.0.0-0" +lodash.merge ">=4.6.2 <5.0.0-0" +lodash.uniq ">=4.5.0 <5.0.0-0" + } +} +pkg "@commitlint/message"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/message/-/message-19.8.0.tgz" +integrity "sha512-qs/5Vi9bYjf+ZV40bvdCyBn5DvbuelhR6qewLE8Bh476F7KnNyLfdM/ETJ4cp96WgeeHo6tesA2TMXS0sh5X4A==" +} +pkg "@commitlint/parse"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.0.tgz" +integrity "sha512-YNIKAc4EXvNeAvyeEnzgvm1VyAe0/b3Wax7pjJSwXuhqIQ1/t2hD3OYRXb6D5/GffIvaX82RbjD+nWtMZCLL7Q==" +dependencies{ +"@commitlint/types" ">=19.8.0 <20.0.0-0" +conventional-changelog-angular ">=7.0.0 <8.0.0-0" +conventional-commits-parser ">=5.0.0 <6.0.0-0" + } +} +pkg "@commitlint/read"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/read/-/read-19.8.0.tgz" +integrity "sha512-6ywxOGYajcxK1y1MfzrOnwsXO6nnErna88gRWEl3qqOOP8MDu/DTeRkGLXBFIZuRZ7mm5yyxU5BmeUvMpNte5w==" +dependencies{ +"@commitlint/top-level" ">=19.8.0 <20.0.0-0" +"@commitlint/types" ">=19.8.0 <20.0.0-0" +git-raw-commits ">=4.0.0 <5.0.0-0" +minimist ">=1.2.8 <2.0.0-0" +tinyexec ">=0.3.0 <0.4.0-0" + } +} +pkg "@commitlint/resolve-extends"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.0.tgz" +integrity "sha512-CLanRQwuG2LPfFVvrkTrBR/L/DMy3+ETsgBqW1OvRxmzp/bbVJW0Xw23LnnExgYcsaFtos967lul1CsbsnJlzQ==" +dependencies{ +"@commitlint/config-validator" ">=19.8.0 <20.0.0-0" +"@commitlint/types" ">=19.8.0 <20.0.0-0" +global-directory ">=4.0.1 <5.0.0-0" +import-meta-resolve ">=4.0.0 <5.0.0-0" +lodash.mergewith ">=4.6.2 <5.0.0-0" +resolve-from ">=5.0.0 <6.0.0-0" + } +} +pkg "@commitlint/resolve-extends" resolve-from{ +version "5.0.0" +resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" +integrity "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" +} +pkg "@commitlint/rules"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.0.tgz" +integrity "sha512-IZ5IE90h6DSWNuNK/cwjABLAKdy8tP8OgGVGbXe1noBEX5hSsu00uRlLu6JuruiXjWJz2dZc+YSw3H0UZyl/mA==" +dependencies{ +"@commitlint/ensure" ">=19.8.0 <20.0.0-0" +"@commitlint/message" ">=19.8.0 <20.0.0-0" +"@commitlint/to-lines" ">=19.8.0 <20.0.0-0" +"@commitlint/types" ">=19.8.0 <20.0.0-0" + } +} +pkg "@commitlint/to-lines"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.0.tgz" +integrity "sha512-3CKLUw41Cur8VMjh16y8LcsOaKbmQjAKCWlXx6B0vOUREplp6em9uIVhI8Cv934qiwkbi2+uv+mVZPnXJi1o9A==" +} +pkg "@commitlint/top-level"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.0.tgz" +integrity "sha512-Rphgoc/omYZisoNkcfaBRPQr4myZEHhLPx2/vTXNLjiCw4RgfPR1wEgUpJ9OOmDCiv5ZyIExhprNLhteqH4FuQ==" +dependencies{ +find-up ">=7.0.0 <8.0.0-0" + } +} +pkg "@commitlint/top-level" find-up{ +version "7.0.0" +resolved "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz" +integrity "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==" +dependencies{ +locate-path ">=7.2.0 <8.0.0-0" +path-exists ">=5.0.0 <6.0.0-0" +unicorn-magic ">=0.1.0 <0.2.0-0" + } +} +pkg "@commitlint/top-level" locate-path{ +version "7.2.0" +resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" +integrity "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==" +dependencies{ +p-locate ">=6.0.0 <7.0.0-0" + } +} +pkg "@commitlint/top-level" p-limit{ +version "4.0.0" +resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" +integrity "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==" +dependencies{ +yocto-queue ">=1.0.0 <2.0.0-0" + } +} +pkg "@commitlint/top-level" p-locate{ +version "6.0.0" +resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" +integrity "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==" +dependencies{ +p-limit ">=4.0.0 <5.0.0-0" + } +} +pkg "@commitlint/top-level" path-exists{ +version "5.0.0" +resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" +integrity "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==" +} +pkg "@commitlint/top-level" unicorn-magic{ +version "0.1.0" +resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz" +integrity "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==" +} +pkg "@commitlint/top-level" yocto-queue{ +version "1.2.0" +resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.0.tgz" +integrity "sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==" +} +pkg "@commitlint/types"{ +version "19.8.0" +resolved "https://registry.npmjs.org/@commitlint/types/-/types-19.8.0.tgz" +integrity "sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg==" +dependencies{ +"@types/conventional-commits-parser" ">=5.0.0 <6.0.0-0" +chalk ">=5.3.0 <6.0.0-0" + } +} +pkg "@esbuild/aix-ppc64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz" +integrity "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==" +} +pkg "@esbuild/android-arm"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz" +integrity "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==" +} +pkg "@esbuild/android-arm64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz" +integrity "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==" +} +pkg "@esbuild/android-x64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz" +integrity "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==" +} +pkg "@esbuild/darwin-arm64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz" +integrity "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==" +} +pkg "@esbuild/darwin-x64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz" +integrity "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==" +} +pkg "@esbuild/freebsd-arm64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz" +integrity "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==" +} +pkg "@esbuild/freebsd-x64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz" +integrity "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==" +} +pkg "@esbuild/linux-arm"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz" +integrity "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==" +} +pkg "@esbuild/linux-arm64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz" +integrity "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==" +} +pkg "@esbuild/linux-ia32"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz" +integrity "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==" +} +pkg "@esbuild/linux-loong64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz" +integrity "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==" +} +pkg "@esbuild/linux-mips64el"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz" +integrity "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==" +} +pkg "@esbuild/linux-ppc64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz" +integrity "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==" +} +pkg "@esbuild/linux-riscv64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz" +integrity "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==" +} +pkg "@esbuild/linux-s390x"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz" +integrity "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==" +} +pkg "@esbuild/linux-x64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz" +integrity "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==" +} +pkg "@esbuild/netbsd-arm64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz" +integrity "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==" +} +pkg "@esbuild/netbsd-x64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz" +integrity "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==" +} +pkg "@esbuild/openbsd-arm64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz" +integrity "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==" +} +pkg "@esbuild/openbsd-x64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz" +integrity "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==" +} +pkg "@esbuild/sunos-x64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz" +integrity "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==" +} +pkg "@esbuild/win32-arm64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz" +integrity "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==" +} +pkg "@esbuild/win32-ia32"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz" +integrity "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==" +} +pkg "@esbuild/win32-x64"{ +version "0.25.0" +resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz" +integrity "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==" +} +pkg "@eslint-community/eslint-utils"{ +version "4.4.1" +resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz" +integrity "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==" +dependencies{ +eslint-visitor-keys ">=3.4.3 <4.0.0-0" + } +} +pkg "@eslint-community/eslint-utils" eslint-visitor-keys{ +version "3.4.3" +resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" +integrity "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" +} +pkg "@eslint-community/regexpp"{ +version "4.12.1" +resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" +integrity "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==" +} +pkg "@eslint/config-array"{ +version "0.19.2" +resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz" +integrity "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==" +dependencies{ +"@eslint/object-schema" ">=2.1.6 <3.0.0-0" +debug ">=4.3.1 <5.0.0-0" +minimatch ">=3.1.2 <4.0.0-0" + } +} +pkg "@eslint/config-array" debug{ +version "4.4.0" +resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" +integrity "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" +dependencies{ +ms ">=2.1.3 <3.0.0-0" + } +} +pkg "@eslint/config-array" ms{ +version "2.1.3" +resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" +integrity "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" +} +pkg "@eslint/config-helpers"{ +version "0.1.0" +resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz" +integrity "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==" +} +pkg "@eslint/core"{ +version "0.12.0" +resolved "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz" +integrity "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==" +dependencies{ +"@types/json-schema" ">=7.0.15 <8.0.0-0" + } +} +pkg "@eslint/eslintrc"{ +version "3.3.0" +resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz" +integrity "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==" +dependencies{ +ajv ">=6.12.4 <7.0.0-0" +debug ">=4.3.2 <5.0.0-0" +espree ">=10.0.1 <11.0.0-0" +globals ">=14.0.0 <15.0.0-0" +ignore ">=5.2.0 <6.0.0-0" +import-fresh ">=3.2.1 <4.0.0-0" +js-yaml ">=4.1.0 <5.0.0-0" +minimatch ">=3.1.2 <4.0.0-0" +strip-json-comments ">=3.1.1 <4.0.0-0" + } +} +pkg "@eslint/eslintrc" debug{ +version "4.4.0" +resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" +integrity "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" +dependencies{ +ms ">=2.1.3 <3.0.0-0" + } +} +pkg "@eslint/eslintrc" ms{ +version "2.1.3" +resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" +integrity "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" +} +pkg "@eslint/js"{ +version "9.22.0" +resolved "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz" +integrity "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==" +} +pkg "@eslint/object-schema"{ +version "2.1.6" +resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz" +integrity "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==" +} +pkg "@eslint/plugin-kit"{ +version "0.2.7" +resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz" +integrity "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==" +dependencies{ +"@eslint/core" ">=0.12.0 <0.13.0-0" +levn ">=0.4.1 <0.5.0-0" + } +} +pkg "@humanfs/core"{ +version "0.19.1" +resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" +integrity "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==" +} +pkg "@humanfs/node"{ +version "0.16.6" +resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz" +integrity "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==" +dependencies{ +"@humanfs/core" ">=0.19.1 <0.20.0-0" +"@humanwhocodes/retry" ">=0.3.0 <0.4.0-0" + } +} +pkg "@humanfs/node" "@humanwhocodes/retry"{ +version "0.3.1" +resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz" +integrity "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==" +} +pkg "@humanwhocodes/module-importer"{ +version "1.0.1" +resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" +integrity "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" +} +pkg "@humanwhocodes/retry"{ +version "0.4.2" +resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz" +integrity "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==" +} +pkg "@mdx-js/esbuild"{ +version "3.1.0" +resolved "https://registry.npmjs.org/@mdx-js/esbuild/-/esbuild-3.1.0.tgz" +integrity "sha512-Jk42xUb1SEJxh6n2GBAtJjQISFIZccjz8XVEsHVhrlvZJAJziIxR9KyaFF6nTeTB/jCAFQGDgO7+oMRH/ApRsg==" +dependencies{ +"@mdx-js/mdx" ">=3.0.0 <4.0.0-0" +"@types/unist" ">=3.0.0 <4.0.0-0" +source-map ">=0.7.0 <0.8.0-0" +vfile ">=6.0.0 <7.0.0-0" +vfile-message ">=4.0.0 <5.0.0-0" + } +} +pkg "@mdx-js/mdx"{ +version "3.1.0" +resolved "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz" +integrity "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +"@types/estree-jsx" ">=1.0.0 <2.0.0-0" +"@types/hast" ">=3.0.0 <4.0.0-0" +"@types/mdx" ">=2.0.0 <3.0.0-0" +collapse-white-space ">=2.0.0 <3.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +estree-util-is-identifier-name ">=3.0.0 <4.0.0-0" +estree-util-scope ">=1.0.0 <2.0.0-0" +estree-walker ">=3.0.0 <4.0.0-0" +hast-util-to-jsx-runtime ">=2.0.0 <3.0.0-0" +markdown-extensions ">=2.0.0 <3.0.0-0" +recma-build-jsx ">=1.0.0 <2.0.0-0" +recma-jsx ">=1.0.0 <2.0.0-0" +recma-stringify ">=1.0.0 <2.0.0-0" +rehype-recma ">=1.0.0 <2.0.0-0" +remark-mdx ">=3.0.0 <4.0.0-0" +remark-parse ">=11.0.0 <12.0.0-0" +remark-rehype ">=11.0.0 <12.0.0-0" +source-map ">=0.7.0 <0.8.0-0" +unified ">=11.0.0 <12.0.0-0" +unist-util-position-from-estree ">=2.0.0 <3.0.0-0" +unist-util-stringify-position ">=4.0.0 <5.0.0-0" +unist-util-visit ">=5.0.0 <6.0.0-0" +vfile ">=6.0.0 <7.0.0-0" + } +} +pkg "@mitata/counters"{ +version "0.0.8" +resolved "https://registry.npmjs.org/@mitata/counters/-/counters-0.0.8.tgz" +integrity "sha512-f11w0Y1ETFlarDP7CePj8Z+y8Gv5Ax4gMxWsEwrqh0kH/YIY030Ezx5SUJeQg0YPTZ2OHKGcLG1oGJbIqHzaJA==" +} +pkg "@nodelib/fs.scandir"{ +version "2.1.5" +resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" +integrity "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" +dependencies{ +"@nodelib/fs.stat" "2.0.5" +run-parallel ">=1.1.9 <2.0.0-0" + } +} +pkg "@nodelib/fs.stat"{ +version "2.0.5" +resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" +integrity "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" +} +pkg "@nodelib/fs.walk"{ +version "1.2.8" +resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" +integrity "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" +dependencies{ +"@nodelib/fs.scandir" "2.1.5" +fastq ">=1.6.0 <2.0.0-0" + } +} +pkg "@prettier/plugin-xml"{ +version "3.4.1" +resolved "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-3.4.1.tgz" +integrity "sha512-Uf/6/+9ez6z/IvZErgobZ2G9n1ybxF5BhCd7eMcKqfoWuOzzNUxBipNo3QAP8kRC1VD18TIo84no7LhqtyDcTg==" +dependencies{ +"@xml-tools/parser" ">=1.0.11 <2.0.0-0" + } +} +pkg "@sindresorhus/merge-streams"{ +version "2.3.0" +resolved "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz" +integrity "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==" +} +pkg "@taplo/core"{ +version "0.1.1" +resolved "https://registry.npmjs.org/@taplo/core/-/core-0.1.1.tgz" +integrity "sha512-BG/zLGf5wiNXGEVPvUAAX/4ilB3PwDUY2o0MV0y47mZbDZ9ad9UK/cIQsILat3bqbPJsALVbU6k3cskNZ3vAQg==" +} +pkg "@taplo/lib"{ +version "0.4.0-alpha.2" +resolved "https://registry.npmjs.org/@taplo/lib/-/lib-0.4.0-alpha.2.tgz" +integrity "sha512-DV/Re3DPVY+BhBtLZ3dmP4mP6YMLSsgq9qGLXwOV38lvNF/fBlgvQswzlXmzCEefL/3q2eMoefZpOI/+GLuCNA==" +dependencies{ +"@taplo/core" ">=0.1.0 <0.2.0-0" + } +} +pkg "@trysound/sax"{ +version "0.2.0" +resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" +integrity "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" +} +pkg "@types/acorn"{ +version "4.0.6" +resolved "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz" +integrity "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==" +dependencies{ +"@types/estree" ">=0.0.0" + } +} +pkg "@types/conventional-commits-parser"{ +version "5.0.1" +resolved "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz" +integrity "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==" +dependencies{ +"@types/node" ">=0.0.0" + } +} +pkg "@types/debug"{ +version "4.1.12" +resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz" +integrity "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==" +dependencies{ +"@types/ms" ">=0.0.0" + } +} +pkg "@types/estree"{ +version "1.0.6" +resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" +integrity "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" +} +pkg "@types/estree-jsx"{ +version "1.0.5" +resolved "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz" +integrity "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==" +dependencies{ +"@types/estree" ">=0.0.0" + } +} +pkg "@types/google-protobuf"{ +version "3.15.12" +resolved "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz" +integrity "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==" +} +pkg "@types/hast"{ +version "3.0.4" +resolved "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz" +integrity "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==" +dependencies{ +"@types/unist" ">=0.0.0" + } +} +pkg "@types/json-schema"{ +version "7.0.15" +resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" +integrity "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" +} +pkg "@types/mdast"{ +version "4.0.4" +resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz" +integrity "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==" +dependencies{ +"@types/unist" ">=0.0.0" + } +} +pkg "@types/mdx"{ +version "2.0.13" +resolved "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz" +integrity "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" +} +pkg "@types/ms"{ +version "2.1.0" +resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz" +integrity "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" +} +pkg "@types/node"{ +version "22.13.10" +resolved "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz" +integrity "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==" +dependencies{ +undici-types ">=6.20.0 <6.21.0-0" + } +} +pkg "@types/unist"{ +version "3.0.3" +resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz" +integrity "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" +} +pkg "@ungap/structured-clone"{ +version "1.3.0" +resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" +integrity "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" +} +pkg "@xml-tools/parser"{ +version "1.0.11" +resolved "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz" +integrity "sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==" +dependencies{ +chevrotain "7.1.1" + } +} +pkg "@xml-tools/parser" chevrotain{ +version "7.1.1" +resolved "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz" +integrity "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==" +dependencies{ +regexp-to-ast "0.5.0" + } +} +pkg abort-controller{ +version "3.0.0" +resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" +integrity "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" +dependencies{ +event-target-shim ">=5.0.0 <6.0.0-0" + } +} +pkg accepts{ +version "1.3.8" +resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" +integrity "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" +dependencies{ +mime-types ">=2.1.34 <2.2.0-0" +negotiator "0.6.3" + } +} +pkg acorn{ +version "8.14.1" +resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz" +integrity "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==" +} +pkg acorn-jsx{ +version "5.3.2" +resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" +integrity "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" +} +pkg ajv{ +version "6.12.6" +resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" +integrity "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" +dependencies{ +fast-deep-equal ">=3.1.1 <4.0.0-0" +fast-json-stable-stringify ">=2.0.0 <3.0.0-0" +json-schema-traverse ">=0.4.1 <0.5.0-0" +uri-js ">=4.2.2 <5.0.0-0" + } +} +pkg ansi-escapes{ +version "7.0.0" +resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz" +integrity "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==" +dependencies{ +environment ">=1.0.0 <2.0.0-0" + } +} +pkg ansi-regex{ +version "6.1.0" +resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" +integrity "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" +} +pkg ansi-styles{ +version "4.3.0" +resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" +integrity "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" +dependencies{ +color-convert ">=2.0.1 <3.0.0-0" + } +} +pkg anymatch{ +version "3.1.3" +resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" +integrity "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" +dependencies{ +normalize-path ">=3.0.0 <4.0.0-0" +picomatch ">=2.0.4 <3.0.0-0" + } +} +pkg argparse{ +version "2.0.1" +resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" +integrity "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" +} +pkg array-flatten{ +version "1.1.1" +resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" +integrity "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" +} +pkg array-ify{ +version "1.0.0" +resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" +integrity "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" +} +pkg astring{ +version "1.9.0" +resolved "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz" +integrity "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==" +} +pkg bail{ +version "2.0.2" +resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz" +integrity "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" +} +pkg balanced-match{ +version "1.0.2" +resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" +integrity "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" +} +pkg base64-js{ +version "1.5.1" +resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" +integrity "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" +} +pkg binary-extensions{ +version "2.3.0" +resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" +integrity "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" +} +pkg body-parser{ +version "1.20.3" +resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" +integrity "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==" +dependencies{ +bytes "3.1.2" +content-type ">=1.0.5 <1.1.0-0" +debug "2.6.9" +depd "2.0.0" +destroy "1.2.0" +http-errors "2.0.0" +iconv-lite "0.4.24" +on-finished "2.4.1" +qs "6.13.0" +raw-body "2.5.2" +type-is ">=1.6.18 <1.7.0-0" +unpipe "1.0.0" + } +} +pkg boolbase{ +version "1.0.0" +resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" +integrity "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" +} +pkg brace-expansion{ +version "1.1.11" +resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" +integrity "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" +dependencies{ +balanced-match ">=1.0.0 <2.0.0-0" +concat-map "0.0.1" + } +} +pkg braces{ +version "3.0.3" +resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" +integrity "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==" +dependencies{ +fill-range ">=7.1.1 <8.0.0-0" + } +} +pkg browserslist{ +version "4.24.4" +resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz" +integrity "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==" +dependencies{ +caniuse-lite ">=1.0.30001688 <2.0.0-0" +electron-to-chromium ">=1.5.73 <2.0.0-0" +node-releases ">=2.0.19 <3.0.0-0" +update-browserslist-db ">=1.1.1 <2.0.0-0" + } +} +pkg buffer{ +version "6.0.3" +resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" +integrity "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" +dependencies{ +base64-js ">=1.3.1 <2.0.0-0" +ieee754 ">=1.2.1 <2.0.0-0" + } +} +pkg bytes{ +version "3.1.2" +resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" +integrity "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" +} +pkg call-bind-apply-helpers{ +version "1.0.2" +resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" +integrity "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==" +dependencies{ +es-errors ">=1.3.0 <2.0.0-0" +function-bind ">=1.1.2 <2.0.0-0" + } +} +pkg call-bound{ +version "1.0.4" +resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" +integrity "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==" +dependencies{ +call-bind-apply-helpers ">=1.0.2 <2.0.0-0" +get-intrinsic ">=1.3.0 <2.0.0-0" + } +} +pkg callsites{ +version "3.1.0" +resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" +integrity "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" +} +pkg caniuse-api{ +version "3.0.0" +resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" +integrity "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" +dependencies{ +browserslist ">=4.0.0 <5.0.0-0" +caniuse-lite ">=1.0.0 <2.0.0-0" +lodash.memoize ">=4.1.2 <5.0.0-0" +lodash.uniq ">=4.5.0 <5.0.0-0" + } +} +pkg caniuse-lite{ +version "1.0.30001703" +resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001703.tgz" +integrity "sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==" +} +pkg ccount{ +version "2.0.1" +resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz" +integrity "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" +} +pkg chalk{ +version "5.4.1" +resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz" +integrity "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==" +} +pkg character-entities{ +version "2.0.2" +resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz" +integrity "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" +} +pkg character-entities-html4{ +version "2.1.0" +resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz" +integrity "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" +} +pkg character-entities-legacy{ +version "3.0.0" +resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz" +integrity "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" +} +pkg character-reference-invalid{ +version "2.0.1" +resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz" +integrity "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==" +} +pkg chevrotain{ +version "11.0.3" +resolved "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz" +integrity "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==" +dependencies{ +"@chevrotain/cst-dts-gen" "11.0.3" +"@chevrotain/gast" "11.0.3" +"@chevrotain/regexp-to-ast" "11.0.3" +"@chevrotain/types" "11.0.3" +"@chevrotain/utils" "11.0.3" +lodash-es "4.17.21" + } +} +pkg chevrotain-allstar{ +version "0.3.1" +resolved "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz" +integrity "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==" +dependencies{ +lodash-es ">=4.17.21 <5.0.0-0" + } +} +pkg chokidar{ +version "3.6.0" +resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" +integrity "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==" +dependencies{ +anymatch ">=3.1.2 <3.2.0-0" +braces ">=3.0.2 <3.1.0-0" +glob-parent ">=5.1.2 <5.2.0-0" +is-binary-path ">=2.1.0 <2.2.0-0" +is-glob ">=4.0.1 <4.1.0-0" +normalize-path ">=3.0.0 <3.1.0-0" +readdirp ">=3.6.0 <3.7.0-0" + } +optional-dependencies{ +fsevents ">=2.3.2 <2.4.0-0" + } +} +pkg chokidar glob-parent{ +version "5.1.2" +resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" +integrity "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" +dependencies{ +is-glob ">=4.0.1 <5.0.0-0" + } +} +pkg cli-cursor{ +version "5.0.0" +resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz" +integrity "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==" +dependencies{ +restore-cursor ">=5.0.0 <6.0.0-0" + } +} +pkg cli-truncate{ +version "4.0.0" +resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz" +integrity "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==" +dependencies{ +slice-ansi ">=5.0.0 <6.0.0-0" +string-width ">=7.0.0 <8.0.0-0" + } +} +pkg cli-truncate emoji-regex{ +version "10.4.0" +resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz" +integrity "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" +} +pkg cli-truncate string-width{ +version "7.2.0" +resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" +integrity "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==" +dependencies{ +emoji-regex ">=10.3.0 <11.0.0-0" +get-east-asian-width ">=1.0.0 <2.0.0-0" +strip-ansi ">=7.1.0 <8.0.0-0" + } +} +pkg cliui{ +version "8.0.1" +resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" +integrity "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" +dependencies{ +string-width ">=4.2.0 <5.0.0-0" +strip-ansi ">=6.0.1 <7.0.0-0" +wrap-ansi ">=7.0.0 <8.0.0-0" + } +} +pkg cliui ansi-regex{ +version "5.0.1" +resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" +integrity "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" +} +pkg cliui strip-ansi{ +version "6.0.1" +resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" +integrity "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" +dependencies{ +ansi-regex ">=5.0.1 <6.0.0-0" + } +} +pkg cliui wrap-ansi{ +version "7.0.0" +resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" +integrity "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" +dependencies{ +ansi-styles ">=4.0.0 <5.0.0-0" +string-width ">=4.1.0 <5.0.0-0" +strip-ansi ">=6.0.0 <7.0.0-0" + } +} +pkg collapse-white-space{ +version "2.1.0" +resolved "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz" +integrity "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==" +} +pkg color-convert{ +version "2.0.1" +resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" +integrity "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" +dependencies{ +color-name ">=1.1.4 <1.2.0-0" + } +} +pkg color-name{ +version "1.1.4" +resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" +integrity "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" +} +pkg colord{ +version "2.9.3" +resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" +integrity "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" +} +pkg colorette{ +version "2.0.20" +resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" +integrity "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" +} +pkg comma-separated-tokens{ +version "2.0.3" +resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz" +integrity "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==" +} +pkg commander{ +version "13.1.0" +resolved "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz" +integrity "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==" +} +pkg commitlint{ +version "19.8.0" +resolved "https://registry.npmjs.org/commitlint/-/commitlint-19.8.0.tgz" +integrity "sha512-O5waRm0RsjH1g2sT4ifTV58sBYW3wPjfclsdicj1NWUyF91aF0fSqFgKC8EEOUi9RRLKBOhlJarS6V1jWIUx1Q==" +dependencies{ +"@commitlint/cli" ">=19.8.0 <20.0.0-0" +"@commitlint/types" ">=19.8.0 <20.0.0-0" + } +} +pkg compare-func{ +version "2.0.0" +resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" +integrity "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==" +dependencies{ +array-ify ">=1.0.0 <2.0.0-0" +dot-prop ">=5.1.0 <6.0.0-0" + } +} +pkg concat-map{ +version "0.0.1" +resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" +integrity "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" +} +pkg content-disposition{ +version "0.5.4" +resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" +integrity "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" +dependencies{ +safe-buffer "5.2.1" + } +} +pkg content-type{ +version "1.0.5" +resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" +integrity "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" +} +pkg conventional-changelog-angular{ +version "7.0.0" +resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz" +integrity "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==" +dependencies{ +compare-func ">=2.0.0 <3.0.0-0" + } +} +pkg conventional-changelog-conventionalcommits{ +version "7.0.2" +resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz" +integrity "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==" +dependencies{ +compare-func ">=2.0.0 <3.0.0-0" + } +} +pkg conventional-commits-parser{ +version "5.0.0" +resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz" +integrity "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==" +dependencies{ +JSONStream ">=1.3.5 <2.0.0-0" +is-text-path ">=2.0.0 <3.0.0-0" +meow ">=12.0.1 <13.0.0-0" +split2 ">=4.0.0 <5.0.0-0" + } +} +pkg cookie{ +version "0.7.1" +resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" +integrity "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" +} +pkg cookie-signature{ +version "1.0.6" +resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" +integrity "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" +} +pkg core-util-is{ +version "1.0.3" +resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" +integrity "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" +} +pkg cosmiconfig{ +version "9.0.0" +resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz" +integrity "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==" +dependencies{ +env-paths ">=2.2.1 <3.0.0-0" +import-fresh ">=3.3.0 <4.0.0-0" +js-yaml ">=4.1.0 <5.0.0-0" +parse-json ">=5.2.0 <6.0.0-0" + } +} +pkg cosmiconfig-typescript-loader{ +version "6.1.0" +resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz" +integrity "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==" +dependencies{ +jiti ">=2.4.1 <3.0.0-0" + } +} +pkg cross-spawn{ +version "7.0.6" +resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" +integrity "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==" +dependencies{ +path-key ">=3.1.0 <4.0.0-0" +shebang-command ">=2.0.0 <3.0.0-0" +which ">=2.0.1 <3.0.0-0" + } +} +pkg css-declaration-sorter{ +version "7.2.0" +resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz" +integrity "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==" +} +pkg css-select{ +version "5.1.0" +resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" +integrity "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" +dependencies{ +boolbase ">=1.0.0 <2.0.0-0" +css-what ">=6.1.0 <7.0.0-0" +domhandler ">=5.0.2 <6.0.0-0" +domutils ">=3.0.1 <4.0.0-0" +nth-check ">=2.0.1 <3.0.0-0" + } +} +pkg css-tree{ +version "2.3.1" +resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" +integrity "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==" +dependencies{ +mdn-data "2.0.30" +source-map-js ">=1.0.1 <2.0.0-0" + } +} +pkg css-what{ +version "6.1.0" +resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" +integrity "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" +} +pkg cssesc{ +version "3.0.0" +resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" +integrity "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" +} +pkg cssnano{ +version "7.0.6" +resolved "https://registry.npmjs.org/cssnano/-/cssnano-7.0.6.tgz" +integrity "sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==" +dependencies{ +cssnano-preset-default ">=7.0.6 <8.0.0-0" +lilconfig ">=3.1.2 <4.0.0-0" + } +} +pkg cssnano-preset-default{ +version "7.0.6" +resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz" +integrity "sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==" +dependencies{ +browserslist ">=4.23.3 <5.0.0-0" +css-declaration-sorter ">=7.2.0 <8.0.0-0" +cssnano-utils ">=5.0.0 <6.0.0-0" +postcss-calc ">=10.0.2 <11.0.0-0" +postcss-colormin ">=7.0.2 <8.0.0-0" +postcss-convert-values ">=7.0.4 <8.0.0-0" +postcss-discard-comments ">=7.0.3 <8.0.0-0" +postcss-discard-duplicates ">=7.0.1 <8.0.0-0" +postcss-discard-empty ">=7.0.0 <8.0.0-0" +postcss-discard-overridden ">=7.0.0 <8.0.0-0" +postcss-merge-longhand ">=7.0.4 <8.0.0-0" +postcss-merge-rules ">=7.0.4 <8.0.0-0" +postcss-minify-font-values ">=7.0.0 <8.0.0-0" +postcss-minify-gradients ">=7.0.0 <8.0.0-0" +postcss-minify-params ">=7.0.2 <8.0.0-0" +postcss-minify-selectors ">=7.0.4 <8.0.0-0" +postcss-normalize-charset ">=7.0.0 <8.0.0-0" +postcss-normalize-display-values ">=7.0.0 <8.0.0-0" +postcss-normalize-positions ">=7.0.0 <8.0.0-0" +postcss-normalize-repeat-style ">=7.0.0 <8.0.0-0" +postcss-normalize-string ">=7.0.0 <8.0.0-0" +postcss-normalize-timing-functions ">=7.0.0 <8.0.0-0" +postcss-normalize-unicode ">=7.0.2 <8.0.0-0" +postcss-normalize-url ">=7.0.0 <8.0.0-0" +postcss-normalize-whitespace ">=7.0.0 <8.0.0-0" +postcss-ordered-values ">=7.0.1 <8.0.0-0" +postcss-reduce-initial ">=7.0.2 <8.0.0-0" +postcss-reduce-transforms ">=7.0.0 <8.0.0-0" +postcss-svgo ">=7.0.1 <8.0.0-0" +postcss-unique-selectors ">=7.0.3 <8.0.0-0" + } +} +pkg cssnano-utils{ +version "5.0.0" +resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.0.tgz" +integrity "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==" +} +pkg csso{ +version "5.0.5" +resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" +integrity "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==" +dependencies{ +css-tree ">=2.2.0 <2.3.0-0" + } +} +pkg csso css-tree{ +version "2.2.1" +resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" +integrity "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==" +dependencies{ +mdn-data "2.0.28" +source-map-js ">=1.0.1 <2.0.0-0" + } +} +pkg csso mdn-data{ +version "2.0.28" +resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" +integrity "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" +} +pkg dargs{ +version "8.1.0" +resolved "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz" +integrity "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==" +} +pkg debug{ +version "2.6.9" +resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" +integrity "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" +dependencies{ +ms "2.0.0" + } +} +pkg decode-named-character-reference{ +version "1.1.0" +resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz" +integrity "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==" +dependencies{ +character-entities ">=2.0.0 <3.0.0-0" + } +} +pkg deep-is{ +version "0.1.4" +resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" +integrity "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" +} +pkg depd{ +version "2.0.0" +resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" +integrity "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" +} +pkg dependency-graph{ +version "0.11.0" +resolved "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz" +integrity "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" +} +pkg dequal{ +version "2.0.3" +resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" +integrity "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" +} +pkg destroy{ +version "1.2.0" +resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" +integrity "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" +} +pkg devlop{ +version "1.1.0" +resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz" +integrity "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==" +dependencies{ +dequal ">=2.0.0 <3.0.0-0" + } +} +pkg dom-serializer{ +version "2.0.0" +resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" +integrity "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" +dependencies{ +domelementtype ">=2.3.0 <3.0.0-0" +domhandler ">=5.0.2 <6.0.0-0" +entities ">=4.2.0 <5.0.0-0" + } +} +pkg domelementtype{ +version "2.3.0" +resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" +integrity "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" +} +pkg domhandler{ +version "5.0.3" +resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" +integrity "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" +dependencies{ +domelementtype ">=2.3.0 <3.0.0-0" + } +} +pkg domutils{ +version "3.2.2" +resolved "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz" +integrity "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==" +dependencies{ +dom-serializer ">=2.0.0 <3.0.0-0" +domelementtype ">=2.3.0 <3.0.0-0" +domhandler ">=5.0.3 <6.0.0-0" + } +} +pkg dot-prop{ +version "5.3.0" +resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" +integrity "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" +dependencies{ +is-obj ">=2.0.0 <3.0.0-0" + } +} +pkg dot-properties{ +version "1.1.0" +resolved "https://registry.npmjs.org/dot-properties/-/dot-properties-1.1.0.tgz" +integrity "sha512-uyyuVNX+wq1lTrmLO9iJJAX/vpJ57uppiXQpsd4j1y6NAtHkhCROA4si4mTZMTRshCbcLC1+EMXWZV2MPHUl9A==" +} +pkg dunder-proto{ +version "1.0.1" +resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" +integrity "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==" +dependencies{ +call-bind-apply-helpers ">=1.0.1 <2.0.0-0" +es-errors ">=1.3.0 <2.0.0-0" +gopd ">=1.2.0 <2.0.0-0" + } +} +pkg ee-first{ +version "1.1.1" +resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" +integrity "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" +} +pkg electron-to-chromium{ +version "1.5.114" +resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.114.tgz" +integrity "sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==" +} +pkg emoji-regex{ +version "8.0.0" +resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" +integrity "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" +} +pkg encodeurl{ +version "2.0.0" +resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" +integrity "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" +} +pkg entities{ +version "4.5.0" +resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" +integrity "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" +} +pkg env-paths{ +version "2.2.1" +resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" +integrity "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" +} +pkg environment{ +version "1.1.0" +resolved "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz" +integrity "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==" +} +pkg error-ex{ +version "1.3.2" +resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" +integrity "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" +dependencies{ +is-arrayish ">=0.2.1 <0.3.0-0" + } +} +pkg es-define-property{ +version "1.0.1" +resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" +integrity "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" +} +pkg es-errors{ +version "1.3.0" +resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" +integrity "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" +} +pkg es-object-atoms{ +version "1.1.1" +resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" +integrity "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==" +dependencies{ +es-errors ">=1.3.0 <2.0.0-0" + } +} +pkg esast-util-from-estree{ +version "2.0.0" +resolved "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz" +integrity "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==" +dependencies{ +"@types/estree-jsx" ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +estree-util-visit ">=2.0.0 <3.0.0-0" +unist-util-position-from-estree ">=2.0.0 <3.0.0-0" + } +} +pkg esast-util-from-js{ +version "2.0.1" +resolved "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz" +integrity "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==" +dependencies{ +"@types/estree-jsx" ">=1.0.0 <2.0.0-0" +acorn ">=8.0.0 <9.0.0-0" +esast-util-from-estree ">=2.0.0 <3.0.0-0" +vfile-message ">=4.0.0 <5.0.0-0" + } +} +pkg esbuild{ +version "0.25.0" +resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz" +integrity "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==" +optional-dependencies{ +"@esbuild/aix-ppc64" "0.25.0" +"@esbuild/android-arm" "0.25.0" +"@esbuild/android-arm64" "0.25.0" +"@esbuild/android-x64" "0.25.0" +"@esbuild/darwin-arm64" "0.25.0" +"@esbuild/darwin-x64" "0.25.0" +"@esbuild/freebsd-arm64" "0.25.0" +"@esbuild/freebsd-x64" "0.25.0" +"@esbuild/linux-arm" "0.25.0" +"@esbuild/linux-arm64" "0.25.0" +"@esbuild/linux-ia32" "0.25.0" +"@esbuild/linux-loong64" "0.25.0" +"@esbuild/linux-mips64el" "0.25.0" +"@esbuild/linux-ppc64" "0.25.0" +"@esbuild/linux-riscv64" "0.25.0" +"@esbuild/linux-s390x" "0.25.0" +"@esbuild/linux-x64" "0.25.0" +"@esbuild/netbsd-arm64" "0.25.0" +"@esbuild/netbsd-x64" "0.25.0" +"@esbuild/openbsd-arm64" "0.25.0" +"@esbuild/openbsd-x64" "0.25.0" +"@esbuild/sunos-x64" "0.25.0" +"@esbuild/win32-arm64" "0.25.0" +"@esbuild/win32-ia32" "0.25.0" +"@esbuild/win32-x64" "0.25.0" + } +} +pkg escalade{ +version "3.2.0" +resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" +integrity "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" +} +pkg escape-html{ +version "1.0.3" +resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" +integrity "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" +} +pkg escape-string-regexp{ +version "4.0.0" +resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" +integrity "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" +} +pkg eslint{ +version "9.22.0" +resolved "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz" +integrity "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==" +dependencies{ +"@eslint-community/eslint-utils" ">=4.2.0 <5.0.0-0" +"@eslint-community/regexpp" ">=4.12.1 <5.0.0-0" +"@eslint/config-array" ">=0.19.2 <0.20.0-0" +"@eslint/config-helpers" ">=0.1.0 <0.2.0-0" +"@eslint/core" ">=0.12.0 <0.13.0-0" +"@eslint/eslintrc" ">=3.3.0 <4.0.0-0" +"@eslint/js" "9.22.0" +"@eslint/plugin-kit" ">=0.2.7 <0.3.0-0" +"@humanfs/node" ">=0.16.6 <0.17.0-0" +"@humanwhocodes/module-importer" ">=1.0.1 <2.0.0-0" +"@humanwhocodes/retry" ">=0.4.2 <0.5.0-0" +"@types/estree" ">=1.0.6 <2.0.0-0" +"@types/json-schema" ">=7.0.15 <8.0.0-0" +ajv ">=6.12.4 <7.0.0-0" +chalk ">=4.0.0 <5.0.0-0" +cross-spawn ">=7.0.6 <8.0.0-0" +debug ">=4.3.2 <5.0.0-0" +escape-string-regexp ">=4.0.0 <5.0.0-0" +eslint-scope ">=8.3.0 <9.0.0-0" +eslint-visitor-keys ">=4.2.0 <5.0.0-0" +espree ">=10.3.0 <11.0.0-0" +esquery ">=1.5.0 <2.0.0-0" +esutils ">=2.0.2 <3.0.0-0" +fast-deep-equal ">=3.1.3 <4.0.0-0" +file-entry-cache ">=8.0.0 <9.0.0-0" +find-up ">=5.0.0 <6.0.0-0" +glob-parent ">=6.0.2 <7.0.0-0" +ignore ">=5.2.0 <6.0.0-0" +imurmurhash ">=0.1.4 <0.2.0-0" +is-glob ">=4.0.0 <5.0.0-0" +json-stable-stringify-without-jsonify ">=1.0.1 <2.0.0-0" +lodash.merge ">=4.6.2 <5.0.0-0" +minimatch ">=3.1.2 <4.0.0-0" +natural-compare ">=1.4.0 <2.0.0-0" +optionator ">=0.9.3 <0.10.0-0" + } +} +pkg eslint-scope{ +version "8.3.0" +resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz" +integrity "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==" +dependencies{ +esrecurse ">=4.3.0 <5.0.0-0" +estraverse ">=5.2.0 <6.0.0-0" + } +} +pkg eslint-visitor-keys{ +version "4.2.0" +resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz" +integrity "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==" +} +pkg eslint chalk{ +version "4.1.2" +resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" +integrity "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" +dependencies{ +ansi-styles ">=4.1.0 <5.0.0-0" +supports-color ">=7.1.0 <8.0.0-0" + } +} +pkg eslint debug{ +version "4.4.0" +resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" +integrity "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" +dependencies{ +ms ">=2.1.3 <3.0.0-0" + } +} +pkg eslint ms{ +version "2.1.3" +resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" +integrity "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" +} +pkg espree{ +version "10.3.0" +resolved "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz" +integrity "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==" +dependencies{ +acorn ">=8.14.0 <9.0.0-0" +acorn-jsx ">=5.3.2 <6.0.0-0" +eslint-visitor-keys ">=4.2.0 <5.0.0-0" + } +} +pkg esquery{ +version "1.6.0" +resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" +integrity "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==" +dependencies{ +estraverse ">=5.1.0 <6.0.0-0" + } +} +pkg esrecurse{ +version "4.3.0" +resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" +integrity "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" +dependencies{ +estraverse ">=5.2.0 <6.0.0-0" + } +} +pkg estraverse{ +version "5.3.0" +resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" +integrity "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" +} +pkg estree-util-attach-comments{ +version "3.0.0" +resolved "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz" +integrity "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" + } +} +pkg estree-util-build-jsx{ +version "3.0.1" +resolved "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz" +integrity "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==" +dependencies{ +"@types/estree-jsx" ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +estree-util-is-identifier-name ">=3.0.0 <4.0.0-0" +estree-walker ">=3.0.0 <4.0.0-0" + } +} +pkg estree-util-is-identifier-name{ +version "3.0.0" +resolved "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz" +integrity "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==" +} +pkg estree-util-scope{ +version "1.0.0" +resolved "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz" +integrity "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" + } +} +pkg estree-util-to-js{ +version "2.0.0" +resolved "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz" +integrity "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==" +dependencies{ +"@types/estree-jsx" ">=1.0.0 <2.0.0-0" +astring ">=1.8.0 <2.0.0-0" +source-map ">=0.7.0 <0.8.0-0" + } +} +pkg estree-util-visit{ +version "2.0.0" +resolved "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz" +integrity "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==" +dependencies{ +"@types/estree-jsx" ">=1.0.0 <2.0.0-0" +"@types/unist" ">=3.0.0 <4.0.0-0" + } +} +pkg estree-walker{ +version "3.0.3" +resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz" +integrity "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" + } +} +pkg esutils{ +version "2.0.3" +resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" +integrity "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" +} +pkg etag{ +version "1.8.1" +resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" +integrity "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" +} +pkg event-target-shim{ +version "5.0.1" +resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" +integrity "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" +} +pkg eventemitter3{ +version "5.0.1" +resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" +integrity "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" +} +pkg events{ +version "3.3.0" +resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" +integrity "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" +} +pkg execa{ +version "8.0.1" +resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" +integrity "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==" +dependencies{ +cross-spawn ">=7.0.3 <8.0.0-0" +get-stream ">=8.0.1 <9.0.0-0" +human-signals ">=5.0.0 <6.0.0-0" +is-stream ">=3.0.0 <4.0.0-0" +merge-stream ">=2.0.0 <3.0.0-0" +npm-run-path ">=5.1.0 <6.0.0-0" +onetime ">=6.0.0 <7.0.0-0" +signal-exit ">=4.1.0 <5.0.0-0" +strip-final-newline ">=3.0.0 <4.0.0-0" + } +} +pkg express{ +version "4.21.2" +resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" +integrity "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==" +dependencies{ +accepts ">=1.3.8 <1.4.0-0" +array-flatten "1.1.1" +body-parser "1.20.3" +content-disposition "0.5.4" +content-type ">=1.0.4 <1.1.0-0" +cookie "0.7.1" +cookie-signature "1.0.6" +debug "2.6.9" +depd "2.0.0" +encodeurl ">=2.0.0 <2.1.0-0" +escape-html ">=1.0.3 <1.1.0-0" +etag ">=1.8.1 <1.9.0-0" +finalhandler "1.3.1" +fresh "0.5.2" +http-errors "2.0.0" +merge-descriptors "1.0.3" +methods ">=1.1.2 <1.2.0-0" +on-finished "2.4.1" +parseurl ">=1.3.3 <1.4.0-0" +path-to-regexp "0.1.12" +proxy-addr ">=2.0.7 <2.1.0-0" +qs "6.13.0" +range-parser ">=1.2.1 <1.3.0-0" +safe-buffer "5.2.1" +send "0.19.0" +serve-static "1.16.2" +setprototypeof "1.2.0" +statuses "2.0.1" +type-is ">=1.6.18 <1.7.0-0" +utils-merge "1.0.1" +vary ">=1.1.2 <1.2.0-0" + } +} +pkg extend{ +version "3.0.2" +resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" +integrity "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" +} +pkg fast-deep-equal{ +version "3.1.3" +resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" +integrity "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" +} +pkg fast-glob{ +version "3.3.3" +resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" +integrity "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==" +dependencies{ +"@nodelib/fs.stat" ">=2.0.2 <3.0.0-0" +"@nodelib/fs.walk" ">=1.2.3 <2.0.0-0" +glob-parent ">=5.1.2 <6.0.0-0" +merge2 ">=1.3.0 <2.0.0-0" +micromatch ">=4.0.8 <5.0.0-0" + } +} +pkg fast-glob glob-parent{ +version "5.1.2" +resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" +integrity "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" +dependencies{ +is-glob ">=4.0.1 <5.0.0-0" + } +} +pkg fast-json-stable-stringify{ +version "2.1.0" +resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" +integrity "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" +} +pkg fast-levenshtein{ +version "2.0.6" +resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" +integrity "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" +} +pkg fast-uri{ +version "3.0.6" +resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz" +integrity "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==" +} +pkg fastq{ +version "1.19.1" +resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz" +integrity "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==" +dependencies{ +reusify ">=1.0.4 <2.0.0-0" + } +} +pkg file-entry-cache{ +version "8.0.0" +resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" +integrity "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==" +dependencies{ +flat-cache ">=4.0.0 <5.0.0-0" + } +} +pkg fill-range{ +version "7.1.1" +resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" +integrity "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==" +dependencies{ +to-regex-range ">=5.0.1 <6.0.0-0" + } +} +pkg finalhandler{ +version "1.3.1" +resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz" +integrity "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==" +dependencies{ +debug "2.6.9" +encodeurl ">=2.0.0 <2.1.0-0" +escape-html ">=1.0.3 <1.1.0-0" +on-finished "2.4.1" +parseurl ">=1.3.3 <1.4.0-0" +statuses "2.0.1" +unpipe ">=1.0.0 <1.1.0-0" + } +} +pkg find-up{ +version "5.0.0" +resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" +integrity "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" +dependencies{ +locate-path ">=6.0.0 <7.0.0-0" +path-exists ">=4.0.0 <5.0.0-0" + } +} +pkg flat-cache{ +version "4.0.1" +resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" +integrity "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==" +dependencies{ +flatted ">=3.2.9 <4.0.0-0" +keyv ">=4.5.4 <5.0.0-0" + } +} +pkg flatted{ +version "3.3.3" +resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" +integrity "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==" +} +pkg forwarded{ +version "0.2.0" +resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" +integrity "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" +} +pkg fresh{ +version "0.5.2" +resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" +integrity "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" +} +pkg fs-extra{ +version "11.3.0" +resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz" +integrity "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==" +dependencies{ +graceful-fs ">=4.2.0 <5.0.0-0" +jsonfile ">=6.0.1 <7.0.0-0" +universalify ">=2.0.0 <3.0.0-0" + } +} +pkg fsevents{ +version "2.3.3" +resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" +integrity "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" +} +pkg function-bind{ +version "1.1.2" +resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" +integrity "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" +} +pkg get-caller-file{ +version "2.0.5" +resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" +integrity "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" +} +pkg get-east-asian-width{ +version "1.3.0" +resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz" +integrity "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==" +} +pkg get-intrinsic{ +version "1.3.0" +resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" +integrity "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==" +dependencies{ +call-bind-apply-helpers ">=1.0.2 <2.0.0-0" +es-define-property ">=1.0.1 <2.0.0-0" +es-errors ">=1.3.0 <2.0.0-0" +es-object-atoms ">=1.1.1 <2.0.0-0" +function-bind ">=1.1.2 <2.0.0-0" +get-proto ">=1.0.1 <2.0.0-0" +gopd ">=1.2.0 <2.0.0-0" +has-symbols ">=1.1.0 <2.0.0-0" +hasown ">=2.0.2 <3.0.0-0" +math-intrinsics ">=1.1.0 <2.0.0-0" + } +} +pkg get-proto{ +version "1.0.1" +resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" +integrity "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==" +dependencies{ +dunder-proto ">=1.0.1 <2.0.0-0" +es-object-atoms ">=1.0.0 <2.0.0-0" + } +} +pkg get-stdin{ +version "9.0.0" +resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz" +integrity "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==" +} +pkg get-stream{ +version "8.0.1" +resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" +integrity "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==" +} +pkg git-raw-commits{ +version "4.0.0" +resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz" +integrity "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==" +dependencies{ +dargs ">=8.0.0 <9.0.0-0" +meow ">=12.0.1 <13.0.0-0" +split2 ">=4.0.0 <5.0.0-0" + } +} +pkg glob-parent{ +version "6.0.2" +resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" +integrity "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" +dependencies{ +is-glob ">=4.0.3 <5.0.0-0" + } +} +pkg global-directory{ +version "4.0.1" +resolved "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz" +integrity "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==" +dependencies{ +ini "4.1.1" + } +} +pkg globals{ +version "14.0.0" +resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" +integrity "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==" +} +pkg globby{ +version "14.1.0" +resolved "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz" +integrity "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==" +dependencies{ +"@sindresorhus/merge-streams" ">=2.1.0 <3.0.0-0" +fast-glob ">=3.3.3 <4.0.0-0" +ignore ">=7.0.3 <8.0.0-0" +path-type ">=6.0.0 <7.0.0-0" +slash ">=5.1.0 <6.0.0-0" +unicorn-magic ">=0.3.0 <0.4.0-0" + } +} +pkg globby ignore{ +version "7.0.3" +resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz" +integrity "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==" +} +pkg google-protobuf{ +version "3.21.4" +resolved "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz" +integrity "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==" +} +pkg gopd{ +version "1.2.0" +resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" +integrity "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" +} +pkg graceful-fs{ +version "4.2.11" +resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" +integrity "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" +} +pkg has-flag{ +version "4.0.0" +resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" +integrity "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" +} +pkg has-symbols{ +version "1.1.0" +resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" +integrity "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" +} +pkg hasown{ +version "2.0.2" +resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" +integrity "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==" +dependencies{ +function-bind ">=1.1.2 <2.0.0-0" + } +} +pkg hast-util-to-estree{ +version "3.1.3" +resolved "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz" +integrity "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +"@types/estree-jsx" ">=1.0.0 <2.0.0-0" +"@types/hast" ">=3.0.0 <4.0.0-0" +comma-separated-tokens ">=2.0.0 <3.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +estree-util-attach-comments ">=3.0.0 <4.0.0-0" +estree-util-is-identifier-name ">=3.0.0 <4.0.0-0" +hast-util-whitespace ">=3.0.0 <4.0.0-0" +mdast-util-mdx-expression ">=2.0.0 <3.0.0-0" +mdast-util-mdx-jsx ">=3.0.0 <4.0.0-0" +mdast-util-mdxjs-esm ">=2.0.0 <3.0.0-0" +property-information ">=7.0.0 <8.0.0-0" +space-separated-tokens ">=2.0.0 <3.0.0-0" +style-to-js ">=1.0.0 <2.0.0-0" +unist-util-position ">=5.0.0 <6.0.0-0" +zwitch ">=2.0.0 <3.0.0-0" + } +} +pkg hast-util-to-jsx-runtime{ +version "2.3.6" +resolved "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz" +integrity "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +"@types/hast" ">=3.0.0 <4.0.0-0" +"@types/unist" ">=3.0.0 <4.0.0-0" +comma-separated-tokens ">=2.0.0 <3.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +estree-util-is-identifier-name ">=3.0.0 <4.0.0-0" +hast-util-whitespace ">=3.0.0 <4.0.0-0" +mdast-util-mdx-expression ">=2.0.0 <3.0.0-0" +mdast-util-mdx-jsx ">=3.0.0 <4.0.0-0" +mdast-util-mdxjs-esm ">=2.0.0 <3.0.0-0" +property-information ">=7.0.0 <8.0.0-0" +space-separated-tokens ">=2.0.0 <3.0.0-0" +style-to-js ">=1.0.0 <2.0.0-0" +unist-util-position ">=5.0.0 <6.0.0-0" +vfile-message ">=4.0.0 <5.0.0-0" + } +} +pkg hast-util-whitespace{ +version "3.0.0" +resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz" +integrity "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==" +dependencies{ +"@types/hast" ">=3.0.0 <4.0.0-0" + } +} +pkg http-errors{ +version "2.0.0" +resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" +integrity "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" +dependencies{ +depd "2.0.0" +inherits "2.0.4" +setprototypeof "1.2.0" +statuses "2.0.1" +toidentifier "1.0.1" + } +} +pkg human-signals{ +version "5.0.0" +resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" +integrity "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==" +} +pkg husky{ +version "9.1.7" +resolved "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz" +integrity "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==" +} +pkg iconv-lite{ +version "0.4.24" +resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" +integrity "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" +dependencies{ +safer-buffer ">=2.1.2 <3.0.0" + } +} +pkg ieee754{ +version "1.2.1" +resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" +integrity "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" +} +pkg ignore{ +version "5.3.2" +resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" +integrity "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" +} +pkg immediate{ +version "3.0.6" +resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" +integrity "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" +} +pkg import-fresh{ +version "3.3.1" +resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz" +integrity "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==" +dependencies{ +parent-module ">=1.0.0 <2.0.0-0" +resolve-from ">=4.0.0 <5.0.0-0" + } +} +pkg import-meta-resolve{ +version "4.1.0" +resolved "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz" +integrity "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==" +} +pkg imurmurhash{ +version "0.1.4" +resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" +integrity "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" +} +pkg inherits{ +version "2.0.4" +resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" +integrity "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" +} +pkg ini{ +version "4.1.1" +resolved "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz" +integrity "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==" +} +pkg inline-style-parser{ +version "0.2.4" +resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz" +integrity "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" +} +pkg ipaddr.js{ +version "1.9.1" +resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" +integrity "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" +} +pkg is-alphabetical{ +version "2.0.1" +resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz" +integrity "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==" +} +pkg is-alphanumerical{ +version "2.0.1" +resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz" +integrity "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==" +dependencies{ +is-alphabetical ">=2.0.0 <3.0.0-0" +is-decimal ">=2.0.0 <3.0.0-0" + } +} +pkg is-arrayish{ +version "0.2.1" +resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" +integrity "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" +} +pkg is-binary-path{ +version "2.1.0" +resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" +integrity "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" +dependencies{ +binary-extensions ">=2.0.0 <3.0.0-0" + } +} +pkg is-decimal{ +version "2.0.1" +resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz" +integrity "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==" +} +pkg is-extglob{ +version "2.1.1" +resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" +integrity "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" +} +pkg is-fullwidth-code-point{ +version "3.0.0" +resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" +integrity "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" +} +pkg is-glob{ +version "4.0.3" +resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" +integrity "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" +dependencies{ +is-extglob ">=2.1.1 <3.0.0-0" + } +} +pkg is-hexadecimal{ +version "2.0.1" +resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz" +integrity "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==" +} +pkg is-number{ +version "7.0.0" +resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" +integrity "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" +} +pkg is-obj{ +version "2.0.0" +resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" +integrity "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" +} +pkg is-plain-obj{ +version "4.1.0" +resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz" +integrity "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" +} +pkg is-stream{ +version "3.0.0" +resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" +integrity "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" +} +pkg is-text-path{ +version "2.0.0" +resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz" +integrity "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==" +dependencies{ +text-extensions ">=2.0.0 <3.0.0-0" + } +} +pkg isarray{ +version "1.0.0" +resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" +integrity "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" +} +pkg isexe{ +version "2.0.0" +resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" +integrity "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" +} +pkg java-parser{ +version "2.3.3" +resolved "https://registry.npmjs.org/java-parser/-/java-parser-2.3.3.tgz" +integrity "sha512-9YY8OGlNGfq5TDDq2SBjtIEHMVLeV8vSSZrXDaQBhQ84hi1zc3/+5l3DF3wW8JGqQT2kNVha05dziSamvN8M/g==" +dependencies{ +chevrotain "11.0.3" +chevrotain-allstar "0.3.1" +lodash "4.17.21" + } +} +pkg jiti{ +version "2.4.2" +resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz" +integrity "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==" +} +pkg js-tokens{ +version "4.0.0" +resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" +integrity "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" +} +pkg js-yaml{ +version "4.1.0" +resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" +integrity "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" +dependencies{ +argparse ">=2.0.1 <3.0.0-0" + } +} +pkg json-buffer{ +version "3.0.1" +resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" +integrity "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" +} +pkg json-parse-even-better-errors{ +version "2.3.1" +resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" +integrity "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" +} +pkg json-schema-traverse{ +version "0.4.1" +resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" +integrity "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" +} +pkg json-stable-stringify-without-jsonify{ +version "1.0.1" +resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" +integrity "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" +} +pkg jsonfile{ +version "6.1.0" +resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" +integrity "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" +dependencies{ +universalify ">=2.0.0 <3.0.0-0" + } +optional-dependencies{ +graceful-fs ">=4.1.6 <5.0.0-0" + } +} +pkg jsonparse{ +version "1.3.1" +resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" +integrity "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" +} +pkg JSONStream{ +version "1.3.5" +resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" +integrity "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" +dependencies{ +jsonparse ">=1.2.0 <2.0.0-0" +through ">=2.2.7 <3.0.0" + } +} +pkg jszip{ +version "3.10.1" +resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" +integrity "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==" +dependencies{ +lie ">=3.3.0 <3.4.0-0" +pako ">=1.0.2 <1.1.0-0" +readable-stream ">=2.3.6 <2.4.0-0" +setimmediate ">=1.0.5 <2.0.0-0" + } +} +pkg jszip readable-stream{ +version "2.3.8" +resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" +integrity "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==" +dependencies{ +core-util-is ">=1.0.0 <1.1.0-0" +inherits ">=2.0.3 <2.1.0-0" +isarray ">=1.0.0 <1.1.0-0" +process-nextick-args ">=2.0.0 <2.1.0-0" +safe-buffer ">=5.1.1 <5.2.0-0" +string_decoder ">=1.1.1 <1.2.0-0" +util-deprecate ">=1.0.1 <1.1.0-0" + } +} +pkg jszip safe-buffer{ +version "5.1.2" +resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" +integrity "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" +} +pkg jszip string_decoder{ +version "1.1.1" +resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" +integrity "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" +dependencies{ +safe-buffer ">=5.1.0 <5.2.0-0" + } +} +pkg keyv{ +version "4.5.4" +resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" +integrity "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==" +dependencies{ +json-buffer "3.0.1" + } +} +pkg levn{ +version "0.4.1" +resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" +integrity "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" +dependencies{ +prelude-ls ">=1.2.1 <2.0.0-0" +type-check ">=0.4.0 <0.5.0-0" + } +} +pkg lie{ +version "3.3.0" +resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" +integrity "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==" +dependencies{ +immediate ">=3.0.5 <3.1.0-0" + } +} +pkg lilconfig{ +version "3.1.3" +resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz" +integrity "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==" +} +pkg lines-and-columns{ +version "1.2.4" +resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" +integrity "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" +} +pkg lint-staged{ +version "15.5.0" +resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.0.tgz" +integrity "sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==" +dependencies{ +chalk ">=5.4.1 <6.0.0-0" +commander ">=13.1.0 <14.0.0-0" +debug ">=4.4.0 <5.0.0-0" +execa ">=8.0.1 <9.0.0-0" +lilconfig ">=3.1.3 <4.0.0-0" +listr2 ">=8.2.5 <9.0.0-0" +micromatch ">=4.0.8 <5.0.0-0" +pidtree ">=0.6.0 <0.7.0-0" +string-argv ">=0.3.2 <0.4.0-0" +yaml ">=2.7.0 <3.0.0-0" + } +} +pkg lint-staged debug{ +version "4.4.0" +resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" +integrity "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" +dependencies{ +ms ">=2.1.3 <3.0.0-0" + } +} +pkg lint-staged ms{ +version "2.1.3" +resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" +integrity "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" +} +pkg listr2{ +version "8.2.5" +resolved "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz" +integrity "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==" +dependencies{ +cli-truncate ">=4.0.0 <5.0.0-0" +colorette ">=2.0.20 <3.0.0-0" +eventemitter3 ">=5.0.1 <6.0.0-0" +log-update ">=6.1.0 <7.0.0-0" +rfdc ">=1.4.1 <2.0.0-0" +wrap-ansi ">=9.0.0 <10.0.0-0" + } +} +pkg locate-path{ +version "6.0.0" +resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" +integrity "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" +dependencies{ +p-locate ">=5.0.0 <6.0.0-0" + } +} +pkg lodash{ +version "4.17.21" +resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" +integrity "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" +} +pkg lodash-es{ +version "4.17.21" +resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" +integrity "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" +} +pkg lodash.camelcase{ +version "4.3.0" +resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" +integrity "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" +} +pkg lodash.isplainobject{ +version "4.0.6" +resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" +integrity "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" +} +pkg lodash.kebabcase{ +version "4.1.1" +resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz" +integrity "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==" +} +pkg lodash.memoize{ +version "4.1.2" +resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" +integrity "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" +} +pkg lodash.merge{ +version "4.6.2" +resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" +integrity "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" +} +pkg lodash.mergewith{ +version "4.6.2" +resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz" +integrity "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" +} +pkg lodash.snakecase{ +version "4.1.1" +resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz" +integrity "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" +} +pkg lodash.startcase{ +version "4.4.0" +resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz" +integrity "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==" +} +pkg lodash.uniq{ +version "4.5.0" +resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" +integrity "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" +} +pkg lodash.upperfirst{ +version "4.3.1" +resolved "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz" +integrity "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==" +} +pkg log-update{ +version "6.1.0" +resolved "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz" +integrity "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==" +dependencies{ +ansi-escapes ">=7.0.0 <8.0.0-0" +cli-cursor ">=5.0.0 <6.0.0-0" +slice-ansi ">=7.1.0 <8.0.0-0" +strip-ansi ">=7.1.0 <8.0.0-0" +wrap-ansi ">=9.0.0 <10.0.0-0" + } +} +pkg log-update ansi-styles{ +version "6.2.1" +resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" +integrity "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" +} +pkg log-update is-fullwidth-code-point{ +version "5.0.0" +resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz" +integrity "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==" +dependencies{ +get-east-asian-width ">=1.0.0 <2.0.0-0" + } +} +pkg log-update slice-ansi{ +version "7.1.0" +resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz" +integrity "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==" +dependencies{ +ansi-styles ">=6.2.1 <7.0.0-0" +is-fullwidth-code-point ">=5.0.0 <6.0.0-0" + } +} +pkg longest-streak{ +version "3.1.0" +resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz" +integrity "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==" +} +pkg lz-string{ +version "1.5.0" +resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" +integrity "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" +} +pkg markdown-extensions{ +version "2.0.0" +resolved "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz" +integrity "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==" +} +pkg math-intrinsics{ +version "1.1.0" +resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" +integrity "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" +} +pkg mdast-util-from-markdown{ +version "2.0.2" +resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz" +integrity "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==" +dependencies{ +"@types/mdast" ">=4.0.0 <5.0.0-0" +"@types/unist" ">=3.0.0 <4.0.0-0" +decode-named-character-reference ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +mdast-util-to-string ">=4.0.0 <5.0.0-0" +micromark ">=4.0.0 <5.0.0-0" +micromark-util-decode-numeric-character-reference ">=2.0.0 <3.0.0-0" +micromark-util-decode-string ">=2.0.0 <3.0.0-0" +micromark-util-normalize-identifier ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" +unist-util-stringify-position ">=4.0.0 <5.0.0-0" + } +} +pkg mdast-util-mdx{ +version "3.0.0" +resolved "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz" +integrity "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==" +dependencies{ +mdast-util-from-markdown ">=2.0.0 <3.0.0-0" +mdast-util-mdx-expression ">=2.0.0 <3.0.0-0" +mdast-util-mdx-jsx ">=3.0.0 <4.0.0-0" +mdast-util-mdxjs-esm ">=2.0.0 <3.0.0-0" +mdast-util-to-markdown ">=2.0.0 <3.0.0-0" + } +} +pkg mdast-util-mdx-expression{ +version "2.0.1" +resolved "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz" +integrity "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==" +dependencies{ +"@types/estree-jsx" ">=1.0.0 <2.0.0-0" +"@types/hast" ">=3.0.0 <4.0.0-0" +"@types/mdast" ">=4.0.0 <5.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +mdast-util-from-markdown ">=2.0.0 <3.0.0-0" +mdast-util-to-markdown ">=2.0.0 <3.0.0-0" + } +} +pkg mdast-util-mdx-jsx{ +version "3.2.0" +resolved "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz" +integrity "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==" +dependencies{ +"@types/estree-jsx" ">=1.0.0 <2.0.0-0" +"@types/hast" ">=3.0.0 <4.0.0-0" +"@types/mdast" ">=4.0.0 <5.0.0-0" +"@types/unist" ">=3.0.0 <4.0.0-0" +ccount ">=2.0.0 <3.0.0-0" +devlop ">=1.1.0 <2.0.0-0" +mdast-util-from-markdown ">=2.0.0 <3.0.0-0" +mdast-util-to-markdown ">=2.0.0 <3.0.0-0" +parse-entities ">=4.0.0 <5.0.0-0" +stringify-entities ">=4.0.0 <5.0.0-0" +unist-util-stringify-position ">=4.0.0 <5.0.0-0" +vfile-message ">=4.0.0 <5.0.0-0" + } +} +pkg mdast-util-mdxjs-esm{ +version "2.0.1" +resolved "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz" +integrity "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==" +dependencies{ +"@types/estree-jsx" ">=1.0.0 <2.0.0-0" +"@types/hast" ">=3.0.0 <4.0.0-0" +"@types/mdast" ">=4.0.0 <5.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +mdast-util-from-markdown ">=2.0.0 <3.0.0-0" +mdast-util-to-markdown ">=2.0.0 <3.0.0-0" + } +} +pkg mdast-util-phrasing{ +version "4.1.0" +resolved "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz" +integrity "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==" +dependencies{ +"@types/mdast" ">=4.0.0 <5.0.0-0" +unist-util-is ">=6.0.0 <7.0.0-0" + } +} +pkg mdast-util-to-hast{ +version "13.2.0" +resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz" +integrity "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==" +dependencies{ +"@types/hast" ">=3.0.0 <4.0.0-0" +"@types/mdast" ">=4.0.0 <5.0.0-0" +"@ungap/structured-clone" ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +micromark-util-sanitize-uri ">=2.0.0 <3.0.0-0" +trim-lines ">=3.0.0 <4.0.0-0" +unist-util-position ">=5.0.0 <6.0.0-0" +unist-util-visit ">=5.0.0 <6.0.0-0" +vfile ">=6.0.0 <7.0.0-0" + } +} +pkg mdast-util-to-markdown{ +version "2.1.2" +resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz" +integrity "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==" +dependencies{ +"@types/mdast" ">=4.0.0 <5.0.0-0" +"@types/unist" ">=3.0.0 <4.0.0-0" +longest-streak ">=3.0.0 <4.0.0-0" +mdast-util-phrasing ">=4.0.0 <5.0.0-0" +mdast-util-to-string ">=4.0.0 <5.0.0-0" +micromark-util-classify-character ">=2.0.0 <3.0.0-0" +micromark-util-decode-string ">=2.0.0 <3.0.0-0" +unist-util-visit ">=5.0.0 <6.0.0-0" +zwitch ">=2.0.0 <3.0.0-0" + } +} +pkg mdast-util-to-string{ +version "4.0.0" +resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz" +integrity "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==" +dependencies{ +"@types/mdast" ">=4.0.0 <5.0.0-0" + } +} +pkg mdn-data{ +version "2.0.30" +resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" +integrity "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" +} +pkg media-typer{ +version "0.3.0" +resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" +integrity "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" +} +pkg meow{ +version "12.1.1" +resolved "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz" +integrity "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==" +} +pkg merge-descriptors{ +version "1.0.3" +resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" +integrity "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" +} +pkg merge-stream{ +version "2.0.0" +resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" +integrity "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" +} +pkg merge2{ +version "1.4.1" +resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" +integrity "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" +} +pkg methods{ +version "1.1.2" +resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" +integrity "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" +} +pkg micromark{ +version "4.0.2" +resolved "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz" +integrity "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==" +dependencies{ +"@types/debug" ">=4.0.0 <5.0.0-0" +debug ">=4.0.0 <5.0.0-0" +decode-named-character-reference ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +micromark-core-commonmark ">=2.0.0 <3.0.0-0" +micromark-factory-space ">=2.0.0 <3.0.0-0" +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-chunked ">=2.0.0 <3.0.0-0" +micromark-util-combine-extensions ">=2.0.0 <3.0.0-0" +micromark-util-decode-numeric-character-reference ">=2.0.0 <3.0.0-0" +micromark-util-encode ">=2.0.0 <3.0.0-0" +micromark-util-normalize-identifier ">=2.0.0 <3.0.0-0" +micromark-util-resolve-all ">=2.0.0 <3.0.0-0" +micromark-util-sanitize-uri ">=2.0.0 <3.0.0-0" +micromark-util-subtokenize ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-core-commonmark{ +version "2.0.3" +resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz" +integrity "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==" +dependencies{ +decode-named-character-reference ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +micromark-factory-destination ">=2.0.0 <3.0.0-0" +micromark-factory-label ">=2.0.0 <3.0.0-0" +micromark-factory-space ">=2.0.0 <3.0.0-0" +micromark-factory-title ">=2.0.0 <3.0.0-0" +micromark-factory-whitespace ">=2.0.0 <3.0.0-0" +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-chunked ">=2.0.0 <3.0.0-0" +micromark-util-classify-character ">=2.0.0 <3.0.0-0" +micromark-util-html-tag-name ">=2.0.0 <3.0.0-0" +micromark-util-normalize-identifier ">=2.0.0 <3.0.0-0" +micromark-util-resolve-all ">=2.0.0 <3.0.0-0" +micromark-util-subtokenize ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-extension-mdx-expression{ +version "3.0.0" +resolved "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz" +integrity "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +micromark-factory-mdx-expression ">=2.0.0 <3.0.0-0" +micromark-factory-space ">=2.0.0 <3.0.0-0" +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-events-to-acorn ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-extension-mdx-jsx{ +version "3.0.1" +resolved "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz" +integrity "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==" +dependencies{ +"@types/acorn" ">=4.0.0 <5.0.0-0" +"@types/estree" ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +estree-util-is-identifier-name ">=3.0.0 <4.0.0-0" +micromark-factory-mdx-expression ">=2.0.0 <3.0.0-0" +micromark-factory-space ">=2.0.0 <3.0.0-0" +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-events-to-acorn ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" +vfile-message ">=4.0.0 <5.0.0-0" + } +} +pkg micromark-extension-mdx-md{ +version "2.0.0" +resolved "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz" +integrity "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==" +dependencies{ +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-extension-mdxjs{ +version "3.0.0" +resolved "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz" +integrity "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==" +dependencies{ +acorn ">=8.0.0 <9.0.0-0" +acorn-jsx ">=5.0.0 <6.0.0-0" +micromark-extension-mdx-expression ">=3.0.0 <4.0.0-0" +micromark-extension-mdx-jsx ">=3.0.0 <4.0.0-0" +micromark-extension-mdx-md ">=2.0.0 <3.0.0-0" +micromark-extension-mdxjs-esm ">=3.0.0 <4.0.0-0" +micromark-util-combine-extensions ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-extension-mdxjs-esm{ +version "3.0.0" +resolved "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz" +integrity "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +micromark-core-commonmark ">=2.0.0 <3.0.0-0" +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-events-to-acorn ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" +unist-util-position-from-estree ">=2.0.0 <3.0.0-0" +vfile-message ">=4.0.0 <5.0.0-0" + } +} +pkg micromark-factory-destination{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz" +integrity "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==" +dependencies{ +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-factory-label{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz" +integrity "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==" +dependencies{ +devlop ">=1.0.0 <2.0.0-0" +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-factory-mdx-expression{ +version "2.0.2" +resolved "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz" +integrity "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +micromark-factory-space ">=2.0.0 <3.0.0-0" +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-events-to-acorn ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" +unist-util-position-from-estree ">=2.0.0 <3.0.0-0" +vfile-message ">=4.0.0 <5.0.0-0" + } +} +pkg micromark-factory-space{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz" +integrity "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==" +dependencies{ +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-factory-title{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz" +integrity "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==" +dependencies{ +micromark-factory-space ">=2.0.0 <3.0.0-0" +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-factory-whitespace{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz" +integrity "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==" +dependencies{ +micromark-factory-space ">=2.0.0 <3.0.0-0" +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-character{ +version "2.1.1" +resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz" +integrity "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==" +dependencies{ +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-chunked{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz" +integrity "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==" +dependencies{ +micromark-util-symbol ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-classify-character{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz" +integrity "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==" +dependencies{ +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-combine-extensions{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz" +integrity "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==" +dependencies{ +micromark-util-chunked ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-decode-numeric-character-reference{ +version "2.0.2" +resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz" +integrity "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==" +dependencies{ +micromark-util-symbol ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-decode-string{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz" +integrity "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==" +dependencies{ +decode-named-character-reference ">=1.0.0 <2.0.0-0" +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-decode-numeric-character-reference ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-encode{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz" +integrity "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==" +} +pkg micromark-util-events-to-acorn{ +version "2.0.2" +resolved "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz" +integrity "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==" +dependencies{ +"@types/acorn" ">=4.0.0 <5.0.0-0" +"@types/estree" ">=1.0.0 <2.0.0-0" +"@types/unist" ">=3.0.0 <4.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +estree-util-visit ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" +vfile-message ">=4.0.0 <5.0.0-0" + } +} +pkg micromark-util-html-tag-name{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz" +integrity "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==" +} +pkg micromark-util-normalize-identifier{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz" +integrity "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==" +dependencies{ +micromark-util-symbol ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-resolve-all{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz" +integrity "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==" +dependencies{ +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-sanitize-uri{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz" +integrity "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==" +dependencies{ +micromark-util-character ">=2.0.0 <3.0.0-0" +micromark-util-encode ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-subtokenize{ +version "2.1.0" +resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz" +integrity "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==" +dependencies{ +devlop ">=1.0.0 <2.0.0-0" +micromark-util-chunked ">=2.0.0 <3.0.0-0" +micromark-util-symbol ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" + } +} +pkg micromark-util-symbol{ +version "2.0.1" +resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz" +integrity "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==" +} +pkg micromark-util-types{ +version "2.0.2" +resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz" +integrity "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==" +} +pkg micromark debug{ +version "4.4.0" +resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" +integrity "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==" +dependencies{ +ms ">=2.1.3 <3.0.0-0" + } +} +pkg micromark ms{ +version "2.1.3" +resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" +integrity "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" +} +pkg micromatch{ +version "4.0.8" +resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" +integrity "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==" +dependencies{ +braces ">=3.0.3 <4.0.0-0" +picomatch ">=2.3.1 <3.0.0-0" + } +} +pkg mime{ +version "1.6.0" +resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" +integrity "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" +} +pkg mime-db{ +version "1.52.0" +resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" +integrity "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" +} +pkg mime-types{ +version "2.1.35" +resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" +integrity "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" +dependencies{ +mime-db "1.52.0" + } +} +pkg mimic-fn{ +version "4.0.0" +resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" +integrity "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" +} +pkg mimic-function{ +version "5.0.1" +resolved "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz" +integrity "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==" +} +pkg minimatch{ +version "3.1.2" +resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" +integrity "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" +dependencies{ +brace-expansion ">=1.1.7 <2.0.0-0" + } +} +pkg minimist{ +version "1.2.8" +resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" +integrity "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" +} +pkg mitata{ +version "1.0.34" +resolved "https://registry.npmjs.org/mitata/-/mitata-1.0.34.tgz" +integrity "sha512-Mc3zrtNBKIMeHSCQ0XqRLo1vbdIx1wvFV9c8NJAiyho6AjNfMY8bVhbS12bwciUdd1t4rj8099CH3N3NFahaUA==" +} +pkg ms{ +version "2.0.0" +resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" +integrity "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" +} +pkg mvdan-sh{ +version "0.10.1" +resolved "https://registry.npmjs.org/mvdan-sh/-/mvdan-sh-0.10.1.tgz" +integrity "sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==" +} +pkg nanoid{ +version "3.3.9" +resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz" +integrity "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==" +} +pkg natural-compare{ +version "1.4.0" +resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" +integrity "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" +} +pkg negotiator{ +version "0.6.3" +resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" +integrity "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" +} +pkg node-releases{ +version "2.0.19" +resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz" +integrity "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" +} +pkg normalize-path{ +version "3.0.0" +resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" +integrity "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" +} +pkg npm-run-path{ +version "5.3.0" +resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" +integrity "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==" +dependencies{ +path-key ">=4.0.0 <5.0.0-0" + } +} +pkg npm-run-path path-key{ +version "4.0.0" +resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" +integrity "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==" +} +pkg nth-check{ +version "2.1.1" +resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" +integrity "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" +dependencies{ +boolbase ">=1.0.0 <2.0.0-0" + } +} +pkg object-inspect{ +version "1.13.4" +resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" +integrity "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" +} +pkg on-finished{ +version "2.4.1" +resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" +integrity "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" +dependencies{ +ee-first "1.1.1" + } +} +pkg onetime{ +version "6.0.0" +resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" +integrity "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==" +dependencies{ +mimic-fn ">=4.0.0 <5.0.0-0" + } +} +pkg optionator{ +version "0.9.4" +resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" +integrity "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==" +dependencies{ +deep-is ">=0.1.3 <0.2.0-0" +fast-levenshtein ">=2.0.6 <3.0.0-0" +levn ">=0.4.1 <0.5.0-0" +prelude-ls ">=1.2.1 <2.0.0-0" +type-check ">=0.4.0 <0.5.0-0" +word-wrap ">=1.2.5 <2.0.0-0" + } +} +pkg p-limit{ +version "3.1.0" +resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" +integrity "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" +dependencies{ +yocto-queue ">=0.1.0 <0.2.0-0" + } +} +pkg p-locate{ +version "5.0.0" +resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" +integrity "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" +dependencies{ +p-limit ">=3.0.2 <4.0.0-0" + } +} +pkg pako{ +version "1.0.11" +resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" +integrity "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" +} +pkg parent-module{ +version "1.0.1" +resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" +integrity "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" +dependencies{ +callsites ">=3.0.0 <4.0.0-0" + } +} +pkg parse-entities{ +version "4.0.2" +resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz" +integrity "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==" +dependencies{ +"@types/unist" ">=2.0.0 <3.0.0-0" +character-entities-legacy ">=3.0.0 <4.0.0-0" +character-reference-invalid ">=2.0.0 <3.0.0-0" +decode-named-character-reference ">=1.0.0 <2.0.0-0" +is-alphanumerical ">=2.0.0 <3.0.0-0" +is-decimal ">=2.0.0 <3.0.0-0" +is-hexadecimal ">=2.0.0 <3.0.0-0" + } +} +pkg parse-entities "@types/unist"{ +version "2.0.11" +resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz" +integrity "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" +} +pkg parse-json{ +version "5.2.0" +resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" +integrity "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" +dependencies{ +"@babel/code-frame" ">=7.0.0 <8.0.0-0" +error-ex ">=1.3.1 <2.0.0-0" +json-parse-even-better-errors ">=2.3.0 <3.0.0-0" +lines-and-columns ">=1.1.6 <2.0.0-0" + } +} +pkg parseurl{ +version "1.3.3" +resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" +integrity "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" +} +pkg path-exists{ +version "4.0.0" +resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" +integrity "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" +} +pkg path-key{ +version "3.1.1" +resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" +integrity "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" +} +pkg path-to-regexp{ +version "0.1.12" +resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" +integrity "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" +} +pkg path-type{ +version "6.0.0" +resolved "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz" +integrity "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==" +} +pkg picocolors{ +version "1.1.1" +resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" +integrity "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" +} +pkg picomatch{ +version "2.3.1" +resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" +integrity "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" +} +pkg pidtree{ +version "0.6.0" +resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" +integrity "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==" +} +pkg pify{ +version "2.3.0" +resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" +integrity "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" +} +pkg postcss{ +version "8.5.3" +resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz" +integrity "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==" +dependencies{ +nanoid ">=3.3.8 <4.0.0-0" +picocolors ">=1.1.1 <2.0.0-0" +source-map-js ">=1.2.1 <2.0.0-0" + } +} +pkg postcss-calc{ +version "10.1.1" +resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz" +integrity "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==" +dependencies{ +postcss-selector-parser ">=7.0.0 <8.0.0-0" +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-cli{ +version "11.0.0" +resolved "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.0.tgz" +integrity "sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==" +dependencies{ +chokidar ">=3.3.0 <4.0.0-0" +dependency-graph ">=0.11.0 <0.12.0-0" +fs-extra ">=11.0.0 <12.0.0-0" +get-stdin ">=9.0.0 <10.0.0-0" +globby ">=14.0.0 <15.0.0-0" +picocolors ">=1.0.0 <2.0.0-0" +postcss-load-config ">=5.0.0 <6.0.0-0" +postcss-reporter ">=7.0.0 <8.0.0-0" +pretty-hrtime ">=1.0.3 <2.0.0-0" +read-cache ">=1.0.0 <2.0.0-0" +slash ">=5.0.0 <6.0.0-0" +yargs ">=17.0.0 <18.0.0-0" + } +} +pkg postcss-colormin{ +version "7.0.2" +resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz" +integrity "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==" +dependencies{ +browserslist ">=4.23.3 <5.0.0-0" +caniuse-api ">=3.0.0 <4.0.0-0" +colord ">=2.9.3 <3.0.0-0" +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-convert-values{ +version "7.0.4" +resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz" +integrity "sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==" +dependencies{ +browserslist ">=4.23.3 <5.0.0-0" +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-discard-comments{ +version "7.0.3" +resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz" +integrity "sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==" +dependencies{ +postcss-selector-parser ">=6.1.2 <7.0.0-0" + } +} +pkg postcss-discard-comments postcss-selector-parser{ +version "6.1.2" +resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" +integrity "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==" +dependencies{ +cssesc ">=3.0.0 <4.0.0-0" +util-deprecate ">=1.0.2 <2.0.0-0" + } +} +pkg postcss-discard-duplicates{ +version "7.0.1" +resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz" +integrity "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==" +} +pkg postcss-discard-empty{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz" +integrity "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==" +} +pkg postcss-discard-overridden{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz" +integrity "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==" +} +pkg postcss-load-config{ +version "5.1.0" +resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz" +integrity "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==" +dependencies{ +lilconfig ">=3.1.1 <4.0.0-0" +yaml ">=2.4.2 <3.0.0-0" + } +} +pkg postcss-merge-longhand{ +version "7.0.4" +resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz" +integrity "sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" +stylehacks ">=7.0.4 <8.0.0-0" + } +} +pkg postcss-merge-rules{ +version "7.0.4" +resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz" +integrity "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==" +dependencies{ +browserslist ">=4.23.3 <5.0.0-0" +caniuse-api ">=3.0.0 <4.0.0-0" +cssnano-utils ">=5.0.0 <6.0.0-0" +postcss-selector-parser ">=6.1.2 <7.0.0-0" + } +} +pkg postcss-merge-rules postcss-selector-parser{ +version "6.1.2" +resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" +integrity "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==" +dependencies{ +cssesc ">=3.0.0 <4.0.0-0" +util-deprecate ">=1.0.2 <2.0.0-0" + } +} +pkg postcss-minify-font-values{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz" +integrity "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-minify-gradients{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz" +integrity "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==" +dependencies{ +colord ">=2.9.3 <3.0.0-0" +cssnano-utils ">=5.0.0 <6.0.0-0" +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-minify-params{ +version "7.0.2" +resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz" +integrity "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==" +dependencies{ +browserslist ">=4.23.3 <5.0.0-0" +cssnano-utils ">=5.0.0 <6.0.0-0" +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-minify-selectors{ +version "7.0.4" +resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz" +integrity "sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==" +dependencies{ +cssesc ">=3.0.0 <4.0.0-0" +postcss-selector-parser ">=6.1.2 <7.0.0-0" + } +} +pkg postcss-minify-selectors postcss-selector-parser{ +version "6.1.2" +resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" +integrity "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==" +dependencies{ +cssesc ">=3.0.0 <4.0.0-0" +util-deprecate ">=1.0.2 <2.0.0-0" + } +} +pkg postcss-normalize-charset{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz" +integrity "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==" +} +pkg postcss-normalize-display-values{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz" +integrity "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-normalize-positions{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz" +integrity "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-normalize-repeat-style{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz" +integrity "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-normalize-string{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz" +integrity "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-normalize-timing-functions{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz" +integrity "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-normalize-unicode{ +version "7.0.2" +resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz" +integrity "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==" +dependencies{ +browserslist ">=4.23.3 <5.0.0-0" +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-normalize-url{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz" +integrity "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-normalize-whitespace{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz" +integrity "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-ordered-values{ +version "7.0.1" +resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz" +integrity "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==" +dependencies{ +cssnano-utils ">=5.0.0 <6.0.0-0" +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-reduce-initial{ +version "7.0.2" +resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz" +integrity "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==" +dependencies{ +browserslist ">=4.23.3 <5.0.0-0" +caniuse-api ">=3.0.0 <4.0.0-0" + } +} +pkg postcss-reduce-transforms{ +version "7.0.0" +resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz" +integrity "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" + } +} +pkg postcss-reporter{ +version "7.1.0" +resolved "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz" +integrity "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==" +dependencies{ +picocolors ">=1.0.0 <2.0.0-0" +thenby ">=1.3.4 <2.0.0-0" + } +} +pkg postcss-selector-parser{ +version "7.1.0" +resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz" +integrity "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==" +dependencies{ +cssesc ">=3.0.0 <4.0.0-0" +util-deprecate ">=1.0.2 <2.0.0-0" + } +} +pkg postcss-svgo{ +version "7.0.1" +resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz" +integrity "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==" +dependencies{ +postcss-value-parser ">=4.2.0 <5.0.0-0" +svgo ">=3.3.2 <4.0.0-0" + } +} +pkg postcss-unique-selectors{ +version "7.0.3" +resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz" +integrity "sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==" +dependencies{ +postcss-selector-parser ">=6.1.2 <7.0.0-0" + } +} +pkg postcss-unique-selectors postcss-selector-parser{ +version "6.1.2" +resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" +integrity "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==" +dependencies{ +cssesc ">=3.0.0 <4.0.0-0" +util-deprecate ">=1.0.2 <2.0.0-0" + } +} +pkg postcss-value-parser{ +version "4.2.0" +resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" +integrity "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" +} +pkg preact{ +version "10.26.4" +resolved "https://registry.npmjs.org/preact/-/preact-10.26.4.tgz" +integrity "sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==" +} +pkg prelude-ls{ +version "1.2.1" +resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" +integrity "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" +} +pkg prettier{ +version "3.5.3" +resolved "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz" +integrity "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==" +} +pkg prettier-plugin-java{ +version "2.6.7" +resolved "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-2.6.7.tgz" +integrity "sha512-AVm+X7fhAZpYKiUCdUIGZ8HJbkGkTUgYQIKVuCQEplcqpGw2ewVnNGcPb1Kc3+MYMfiEqzhd8ZYhMGVHw6tZdQ==" +dependencies{ +java-parser "2.3.3" +lodash "4.17.21" + } +} +pkg prettier-plugin-properties{ +version "0.3.0" +resolved "https://registry.npmjs.org/prettier-plugin-properties/-/prettier-plugin-properties-0.3.0.tgz" +integrity "sha512-j2h4NbG6hIaRx0W7CDPUH+yDbzXHmI2urPC1EC8pYrsS5R5AYgAmcSDN0oea+C5mBiN6BK0AkiSKPj0RC17NDQ==" +dependencies{ +dot-properties ">=1.0.0 <2.0.0-0" + } +} +pkg prettier-plugin-sh{ +version "0.15.0" +resolved "https://registry.npmjs.org/prettier-plugin-sh/-/prettier-plugin-sh-0.15.0.tgz" +integrity "sha512-U0PikJr/yr2bzzARl43qI0mApBj0C1xdAfA04AZa6LnvIKawXHhuy2fFo6LNA7weRzGlAiNbaEFfKMFo0nZr/A==" +dependencies{ +mvdan-sh ">=0.10.1 <0.11.0-0" +sh-syntax ">=0.4.2 <0.5.0-0" + } +} +pkg prettier-plugin-toml{ +version "2.0.2" +resolved "https://registry.npmjs.org/prettier-plugin-toml/-/prettier-plugin-toml-2.0.2.tgz" +integrity "sha512-tUIIhyfdVX5DMsLGKX/2qaEwi3W48OkUSR7XC91PRI5jFzhexmaYWkrSP1Xh/eWUcEc0TVMQenM3lB09xLQstQ==" +dependencies{ +"@taplo/lib" ">=0.4.0-alpha.2 <0.5.0-0" + } +} +pkg pretty-hrtime{ +version "1.0.3" +resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" +integrity "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" +} +pkg process{ +version "0.11.10" +resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" +integrity "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" +} +pkg process-nextick-args{ +version "2.0.1" +resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" +integrity "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" +} +pkg property-information{ +version "7.0.0" +resolved "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz" +integrity "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==" +} +pkg proxy-addr{ +version "2.0.7" +resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" +integrity "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" +dependencies{ +forwarded "0.2.0" +ipaddr.js "1.9.1" + } +} +pkg punycode{ +version "2.3.1" +resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" +integrity "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" +} +pkg qs{ +version "6.13.0" +resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" +integrity "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==" +dependencies{ +side-channel ">=1.0.6 <2.0.0-0" + } +} +pkg queue-microtask{ +version "1.2.3" +resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" +integrity "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" +} +pkg range-parser{ +version "1.2.1" +resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" +integrity "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" +} +pkg raw-body{ +version "2.5.2" +resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" +integrity "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==" +dependencies{ +bytes "3.1.2" +http-errors "2.0.0" +iconv-lite "0.4.24" +unpipe "1.0.0" + } +} +pkg react{ +version "19.0.0" +resolved "https://registry.npmjs.org/react/-/react-19.0.0.tgz" +integrity "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==" +} +pkg react-dom{ +version "19.0.0" +resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz" +integrity "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==" +dependencies{ +scheduler ">=0.25.0 <0.26.0-0" + } +} +pkg read-cache{ +version "1.0.0" +resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" +integrity "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==" +dependencies{ +pify ">=2.3.0 <3.0.0-0" + } +} +pkg readable-stream{ +version "4.5.2" +resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz" +integrity "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==" +dependencies{ +abort-controller ">=3.0.0 <4.0.0-0" +buffer ">=6.0.3 <7.0.0-0" +events ">=3.3.0 <4.0.0-0" +process ">=0.11.10 <0.12.0-0" +string_decoder ">=1.3.0 <2.0.0-0" + } +} +pkg readdirp{ +version "3.6.0" +resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" +integrity "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" +dependencies{ +picomatch ">=2.2.1 <3.0.0-0" + } +} +pkg recma-build-jsx{ +version "1.0.0" +resolved "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz" +integrity "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +estree-util-build-jsx ">=3.0.0 <4.0.0-0" +vfile ">=6.0.0 <7.0.0-0" + } +} +pkg recma-jsx{ +version "1.0.0" +resolved "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz" +integrity "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==" +dependencies{ +acorn-jsx ">=5.0.0 <6.0.0-0" +estree-util-to-js ">=2.0.0 <3.0.0-0" +recma-parse ">=1.0.0 <2.0.0-0" +recma-stringify ">=1.0.0 <2.0.0-0" +unified ">=11.0.0 <12.0.0-0" + } +} +pkg recma-parse{ +version "1.0.0" +resolved "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz" +integrity "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +esast-util-from-js ">=2.0.0 <3.0.0-0" +unified ">=11.0.0 <12.0.0-0" +vfile ">=6.0.0 <7.0.0-0" + } +} +pkg recma-stringify{ +version "1.0.0" +resolved "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz" +integrity "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +estree-util-to-js ">=2.0.0 <3.0.0-0" +unified ">=11.0.0 <12.0.0-0" +vfile ">=6.0.0 <7.0.0-0" + } +} +pkg regexp-to-ast{ +version "0.5.0" +resolved "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz" +integrity "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==" +} +pkg rehype-recma{ +version "1.0.0" +resolved "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz" +integrity "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==" +dependencies{ +"@types/estree" ">=1.0.0 <2.0.0-0" +"@types/hast" ">=3.0.0 <4.0.0-0" +hast-util-to-estree ">=3.0.0 <4.0.0-0" + } +} +pkg remark-mdx{ +version "3.1.0" +resolved "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz" +integrity "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==" +dependencies{ +mdast-util-mdx ">=3.0.0 <4.0.0-0" +micromark-extension-mdxjs ">=3.0.0 <4.0.0-0" + } +} +pkg remark-parse{ +version "11.0.0" +resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz" +integrity "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==" +dependencies{ +"@types/mdast" ">=4.0.0 <5.0.0-0" +mdast-util-from-markdown ">=2.0.0 <3.0.0-0" +micromark-util-types ">=2.0.0 <3.0.0-0" +unified ">=11.0.0 <12.0.0-0" + } +} +pkg remark-rehype{ +version "11.1.1" +resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz" +integrity "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==" +dependencies{ +"@types/hast" ">=3.0.0 <4.0.0-0" +"@types/mdast" ">=4.0.0 <5.0.0-0" +mdast-util-to-hast ">=13.0.0 <14.0.0-0" +unified ">=11.0.0 <12.0.0-0" +vfile ">=6.0.0 <7.0.0-0" + } +} +pkg require-directory{ +version "2.1.1" +resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" +integrity "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" +} +pkg require-from-string{ +version "2.0.2" +resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" +integrity "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" +} +pkg resolve-from{ +version "4.0.0" +resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" +integrity "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" +} +pkg restore-cursor{ +version "5.1.0" +resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz" +integrity "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==" +dependencies{ +onetime ">=7.0.0 <8.0.0-0" +signal-exit ">=4.1.0 <5.0.0-0" + } +} +pkg restore-cursor onetime{ +version "7.0.0" +resolved "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz" +integrity "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==" +dependencies{ +mimic-function ">=5.0.0 <6.0.0-0" + } +} +pkg reusify{ +version "1.1.0" +resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" +integrity "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==" +} +pkg rfdc{ +version "1.4.1" +resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" +integrity "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" +} +pkg run-parallel{ +version "1.2.0" +resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" +integrity "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" +dependencies{ +queue-microtask ">=1.2.2 <2.0.0-0" + } +} +pkg safe-buffer{ +version "5.2.1" +resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" +integrity "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" +} +pkg safer-buffer{ +version "2.1.2" +resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" +integrity "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" +} +pkg scheduler{ +version "0.25.0" +resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz" +integrity "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==" +} +pkg semver{ +version "7.7.1" +resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" +integrity "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" +} +pkg send{ +version "0.19.0" +resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" +integrity "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==" +dependencies{ +debug "2.6.9" +depd "2.0.0" +destroy "1.2.0" +encodeurl ">=1.0.2 <1.1.0-0" +escape-html ">=1.0.3 <1.1.0-0" +etag ">=1.8.1 <1.9.0-0" +fresh "0.5.2" +http-errors "2.0.0" +mime "1.6.0" +ms "2.1.3" +on-finished "2.4.1" +range-parser ">=1.2.1 <1.3.0-0" +statuses "2.0.1" + } +} +pkg send encodeurl{ +version "1.0.2" +resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" +integrity "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" +} +pkg send ms{ +version "2.1.3" +resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" +integrity "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" +} +pkg serve-static{ +version "1.16.2" +resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz" +integrity "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==" +dependencies{ +encodeurl ">=2.0.0 <2.1.0-0" +escape-html ">=1.0.3 <1.1.0-0" +parseurl ">=1.3.3 <1.4.0-0" +send "0.19.0" + } +} +pkg setimmediate{ +version "1.0.5" +resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" +integrity "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" +} +pkg setprototypeof{ +version "1.2.0" +resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" +integrity "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" +} +pkg sh-syntax{ +version "0.4.2" +resolved "https://registry.npmjs.org/sh-syntax/-/sh-syntax-0.4.2.tgz" +integrity "sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==" +dependencies{ +tslib ">=2.6.2 <3.0.0-0" + } +} +pkg shebang-command{ +version "2.0.0" +resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" +integrity "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" +dependencies{ +shebang-regex ">=3.0.0 <4.0.0-0" + } +} +pkg shebang-regex{ +version "3.0.0" +resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" +integrity "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" +} +pkg side-channel{ +version "1.1.0" +resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" +integrity "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==" +dependencies{ +es-errors ">=1.3.0 <2.0.0-0" +object-inspect ">=1.13.3 <2.0.0-0" +side-channel-list ">=1.0.0 <2.0.0-0" +side-channel-map ">=1.0.1 <2.0.0-0" +side-channel-weakmap ">=1.0.2 <2.0.0-0" + } +} +pkg side-channel-list{ +version "1.0.0" +resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" +integrity "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==" +dependencies{ +es-errors ">=1.3.0 <2.0.0-0" +object-inspect ">=1.13.3 <2.0.0-0" + } +} +pkg side-channel-map{ +version "1.0.1" +resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" +integrity "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==" +dependencies{ +call-bound ">=1.0.2 <2.0.0-0" +es-errors ">=1.3.0 <2.0.0-0" +get-intrinsic ">=1.2.5 <2.0.0-0" +object-inspect ">=1.13.3 <2.0.0-0" + } +} +pkg side-channel-weakmap{ +version "1.0.2" +resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" +integrity "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==" +dependencies{ +call-bound ">=1.0.2 <2.0.0-0" +es-errors ">=1.3.0 <2.0.0-0" +get-intrinsic ">=1.2.5 <2.0.0-0" +object-inspect ">=1.13.3 <2.0.0-0" +side-channel-map ">=1.0.1 <2.0.0-0" + } +} +pkg signal-exit{ +version "4.1.0" +resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" +integrity "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" +} +pkg slash{ +version "5.1.0" +resolved "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz" +integrity "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==" +} +pkg slice-ansi{ +version "5.0.0" +resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" +integrity "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==" +dependencies{ +ansi-styles ">=6.0.0 <7.0.0-0" +is-fullwidth-code-point ">=4.0.0 <5.0.0-0" + } +} +pkg slice-ansi ansi-styles{ +version "6.2.1" +resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" +integrity "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" +} +pkg slice-ansi is-fullwidth-code-point{ +version "4.0.0" +resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" +integrity "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==" +} +pkg source-map{ +version "0.7.4" +resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" +integrity "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" +} +pkg source-map-js{ +version "1.2.1" +resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" +integrity "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" +} +pkg space-separated-tokens{ +version "2.0.2" +resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz" +integrity "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==" +} +pkg split2{ +version "4.2.0" +resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" +integrity "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" +} +pkg statuses{ +version "2.0.1" +resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" +integrity "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" +} +pkg string-argv{ +version "0.3.2" +resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" +integrity "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==" +} +pkg string-width{ +version "4.2.3" +resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" +integrity "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" +dependencies{ +emoji-regex ">=8.0.0 <9.0.0-0" +is-fullwidth-code-point ">=3.0.0 <4.0.0-0" +strip-ansi ">=6.0.1 <7.0.0-0" + } +} +pkg string-width ansi-regex{ +version "5.0.1" +resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" +integrity "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" +} +pkg string-width strip-ansi{ +version "6.0.1" +resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" +integrity "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" +dependencies{ +ansi-regex ">=5.0.1 <6.0.0-0" + } +} +pkg string_decoder{ +version "1.3.0" +resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" +integrity "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" +dependencies{ +safe-buffer ">=5.2.0 <5.3.0-0" + } +} +pkg stringify-entities{ +version "4.0.4" +resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" +integrity "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==" +dependencies{ +character-entities-html4 ">=2.0.0 <3.0.0-0" +character-entities-legacy ">=3.0.0 <4.0.0-0" + } +} +pkg strip-ansi{ +version "7.1.0" +resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" +integrity "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" +dependencies{ +ansi-regex ">=6.0.1 <7.0.0-0" + } +} +pkg strip-final-newline{ +version "3.0.0" +resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" +integrity "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==" +} +pkg strip-json-comments{ +version "3.1.1" +resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" +integrity "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" +} +pkg style-to-js{ +version "1.1.16" +resolved "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz" +integrity "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==" +dependencies{ +style-to-object "1.0.8" + } +} +pkg style-to-object{ +version "1.0.8" +resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz" +integrity "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==" +dependencies{ +inline-style-parser "0.2.4" + } +} +pkg stylehacks{ +version "7.0.4" +resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz" +integrity "sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==" +dependencies{ +browserslist ">=4.23.3 <5.0.0-0" +postcss-selector-parser ">=6.1.2 <7.0.0-0" + } +} +pkg stylehacks postcss-selector-parser{ +version "6.1.2" +resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" +integrity "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==" +dependencies{ +cssesc ">=3.0.0 <4.0.0-0" +util-deprecate ">=1.0.2 <2.0.0-0" + } +} +pkg supports-color{ +version "7.2.0" +resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" +integrity "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" +dependencies{ +has-flag ">=4.0.0 <5.0.0-0" + } +} +pkg svgo{ +version "3.3.2" +resolved "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz" +integrity "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==" +dependencies{ +"@trysound/sax" "0.2.0" +commander ">=7.2.0 <8.0.0-0" +css-select ">=5.1.0 <6.0.0-0" +css-tree ">=2.3.1 <3.0.0-0" +css-what ">=6.1.0 <7.0.0-0" +csso ">=5.0.5 <6.0.0-0" +picocolors ">=1.0.0 <2.0.0-0" + } +} +pkg svgo commander{ +version "7.2.0" +resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" +integrity "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" +} +pkg text-extensions{ +version "2.4.0" +resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz" +integrity "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==" +} +pkg thenby{ +version "1.3.4" +resolved "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz" +integrity "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==" +} +pkg through{ +version "2.3.8" +resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" +integrity "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" +} +pkg tinyexec{ +version "0.3.2" +resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz" +integrity "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" +} +pkg to-regex-range{ +version "5.0.1" +resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" +integrity "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" +dependencies{ +is-number ">=7.0.0 <8.0.0-0" + } +} +pkg toidentifier{ +version "1.0.1" +resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" +integrity "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" +} +pkg trim-lines{ +version "3.0.1" +resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz" +integrity "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" +} +pkg trough{ +version "2.2.0" +resolved "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz" +integrity "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==" +} +pkg tslib{ +version "2.8.1" +resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" +integrity "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" +} +pkg type-check{ +version "0.4.0" +resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" +integrity "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" +dependencies{ +prelude-ls ">=1.2.1 <2.0.0-0" + } +} +pkg type-is{ +version "1.6.18" +resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" +integrity "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" +dependencies{ +media-typer "0.3.0" +mime-types ">=2.1.24 <2.2.0-0" + } +} +pkg typescript{ +version "5.8.2" +resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz" +integrity "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==" +} +pkg undici-types{ +version "6.20.0" +resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz" +integrity "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" +} +pkg unicorn-magic{ +version "0.3.0" +resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz" +integrity "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==" +} +pkg unified{ +version "11.0.5" +resolved "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz" +integrity "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==" +dependencies{ +"@types/unist" ">=3.0.0 <4.0.0-0" +bail ">=2.0.0 <3.0.0-0" +devlop ">=1.0.0 <2.0.0-0" +extend ">=3.0.0 <4.0.0-0" +is-plain-obj ">=4.0.0 <5.0.0-0" +trough ">=2.0.0 <3.0.0-0" +vfile ">=6.0.0 <7.0.0-0" + } +} +pkg unist-util-is{ +version "6.0.0" +resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz" +integrity "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==" +dependencies{ +"@types/unist" ">=3.0.0 <4.0.0-0" + } +} +pkg unist-util-position{ +version "5.0.0" +resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz" +integrity "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==" +dependencies{ +"@types/unist" ">=3.0.0 <4.0.0-0" + } +} +pkg unist-util-position-from-estree{ +version "2.0.0" +resolved "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz" +integrity "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==" +dependencies{ +"@types/unist" ">=3.0.0 <4.0.0-0" + } +} +pkg unist-util-stringify-position{ +version "4.0.0" +resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz" +integrity "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==" +dependencies{ +"@types/unist" ">=3.0.0 <4.0.0-0" + } +} +pkg unist-util-visit{ +version "5.0.0" +resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz" +integrity "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==" +dependencies{ +"@types/unist" ">=3.0.0 <4.0.0-0" +unist-util-is ">=6.0.0 <7.0.0-0" +unist-util-visit-parents ">=6.0.0 <7.0.0-0" + } +} +pkg unist-util-visit-parents{ +version "6.0.1" +resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz" +integrity "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==" +dependencies{ +"@types/unist" ">=3.0.0 <4.0.0-0" +unist-util-is ">=6.0.0 <7.0.0-0" + } +} +pkg universalify{ +version "2.0.1" +resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" +integrity "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" +} +pkg unpipe{ +version "1.0.0" +resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" +integrity "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" +} +pkg update-browserslist-db{ +version "1.1.3" +resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz" +integrity "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==" +dependencies{ +escalade ">=3.2.0 <4.0.0-0" +picocolors ">=1.1.1 <2.0.0-0" + } +} +pkg uri-js{ +version "4.4.1" +resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" +integrity "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" +dependencies{ +punycode ">=2.1.0 <3.0.0-0" + } +} +pkg util-deprecate{ +version "1.0.2" +resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" +integrity "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" +} +pkg utils-merge{ +version "1.0.1" +resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" +integrity "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" +} +pkg vary{ +version "1.1.2" +resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" +integrity "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" +} +pkg vfile{ +version "6.0.3" +resolved "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz" +integrity "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==" +dependencies{ +"@types/unist" ">=3.0.0 <4.0.0-0" +vfile-message ">=4.0.0 <5.0.0-0" + } +} +pkg vfile-message{ +version "4.0.2" +resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz" +integrity "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==" +dependencies{ +"@types/unist" ">=3.0.0 <4.0.0-0" +unist-util-stringify-position ">=4.0.0 <5.0.0-0" + } +} +pkg web-streams-polyfill{ +version "3.3.3" +resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz" +integrity "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==" +} +pkg which{ +version "2.0.2" +resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" +integrity "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" +dependencies{ +isexe ">=2.0.0 <3.0.0-0" + } +} +pkg word-wrap{ +version "1.2.5" +resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" +integrity "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" +} +pkg wrap-ansi{ +version "9.0.0" +resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz" +integrity "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==" +dependencies{ +ansi-styles ">=6.2.1 <7.0.0-0" +string-width ">=7.0.0 <8.0.0-0" +strip-ansi ">=7.1.0 <8.0.0-0" + } +} +pkg wrap-ansi ansi-styles{ +version "6.2.1" +resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" +integrity "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" +} +pkg wrap-ansi emoji-regex{ +version "10.4.0" +resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz" +integrity "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" +} +pkg wrap-ansi string-width{ +version "7.2.0" +resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" +integrity "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==" +dependencies{ +emoji-regex ">=10.3.0 <11.0.0-0" +get-east-asian-width ">=1.0.0 <2.0.0-0" +strip-ansi ">=7.1.0 <8.0.0-0" + } +} +pkg y18n{ +version "5.0.8" +resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" +integrity "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" +} +pkg yaml{ +version "2.7.0" +resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz" +integrity "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==" +} +pkg yargs{ +version "17.7.2" +resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" +integrity "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==" +dependencies{ +cliui ">=8.0.1 <9.0.0-0" +escalade ">=3.1.1 <4.0.0-0" +get-caller-file ">=2.0.5 <3.0.0-0" +require-directory ">=2.1.1 <3.0.0-0" +string-width ">=4.2.3 <5.0.0-0" +y18n ">=5.0.5 <6.0.0-0" +yargs-parser ">=21.1.1 <22.0.0-0" + } +} +pkg yargs-parser{ +version "21.1.1" +resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" +integrity "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" +} +pkg yocto-queue{ +version "0.1.0" +resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" +integrity "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" +} +pkg zwitch{ +version "2.0.4" +resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz" +integrity "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==" } diff --git a/package.json b/package.json index bc9ecdb6fc..efcf7379f1 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@elide-dev/framework", "version": "1.0.0-alpha14", "private": true, - "packageManager": "pnpm@10.5.2", + "packageManager": "pnpm@10.6.2", "lint-staged": { "not-packages/*": "pnpm exec prettier --ignore-unknown" }, @@ -18,7 +18,7 @@ "dependencies": { "browserslist": "4.24.4", "cssnano": "7.0.6", - "esbuild": "0.25.0", + "esbuild": "0.25.1", "google-protobuf": "3.21.4", "jszip": "3.10.1", "lz-string": "1.5.0", @@ -32,19 +32,19 @@ }, "devDependencies": { "@biomejs/biome": "1.9.4", - "@commitlint/cli": "19.7.1", - "@commitlint/config-conventional": "19.7.1", + "@commitlint/cli": "19.8.0", + "@commitlint/config-conventional": "19.8.0", "@mdx-js/esbuild": "3.1.0", "@mitata/counters": "0.0.8", "@prettier/plugin-xml": "3.4.1", "@types/google-protobuf": "3.15.12", - "@types/node": "22.13.8", - "commitlint": "19.7.1", + "@types/node": "22.13.10", + "commitlint": "19.8.0", "esbuild": "0.25.0", - "eslint": "9.21.0", + "eslint": "9.22.0", "express": "^4.21.2", "husky": "9.1.7", - "lint-staged": "15.4.3", + "lint-staged": "15.5.0", "mitata": "1.0.34", "postcss-cli": "11.0.0", "prettier": "3.5.3", @@ -61,11 +61,16 @@ "scripts": { "build": "make build", "test": "make test", + "fmt:check": "cp -fv ./config/biome.jsonc . && pnpm biome format --check . ; rm -f biome.jsonc", + "fmt": "cp -fv ./config/biome.jsonc . && pnpm biome format . ; rm -f biome.jsonc", "upgrade-node": "yarn upgrade-interactive", "upgrade-gradle": "gradle-upgrade-interactive", "prettier": "prettier", "husky": "husky", "lint": "prettier --write . --plugin=prettier-plugin-sh --plugin=prettier-plugin-toml --plugin=prettier-plugin-properties --plugin=prettier-plugin-java", "lint:check": "prettier --check . --plugin=prettier-plugin-sh --plugin=prettier-plugin-toml --plugin=prettier-plugin-properties --plugin=prettier-plugin-java" + }, + "prettier": { + "plugins": ["@prettier/plugin-xml", "prettier-plugin-toml", "prettier-plugin-sh", "prettier-plugin-properties"] } } diff --git a/packages/base/api/base.api b/packages/base/api/base.api index 0c80845a01..ba9f8ff8ac 100644 --- a/packages/base/api/base.api +++ b/packages/base/api/base.api @@ -545,13 +545,6 @@ public final class elide/util/Hex : elide/util/Encoder { public final fun getCHARACTER_SET ()[C } -public final class elide/util/RuntimeFlag { - public static final field DEFAULT_INSPECT_PORT I - public static final field INSTANCE Lelide/util/RuntimeFlag; - public final fun getWarmup ()Z - public final fun resolve (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; -} - public final class elide/util/UUID { public static final field INSTANCE Lelide/util/UUID; public final fun random ()Ljava/lang/String; diff --git a/packages/base/src/jvmMain/kotlin/elide/util/RuntimeFlag.kt b/packages/base/src/jvmMain/kotlin/elide/util/RuntimeFlag.kt deleted file mode 100644 index 328cab0904..0000000000 --- a/packages/base/src/jvmMain/kotlin/elide/util/RuntimeFlag.kt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ -package elide.util - -import java.util.concurrent.atomic.AtomicReference -import elide.AppEnvironment - -/** Static server flags, which may be set via Java system properties or environment variables. */ -@Suppress("unused", "MemberVisibilityCanBePrivate") public object RuntimeFlag { - /** Default port to listen on for the VM inspector. */ - public const val DEFAULT_INSPECT_PORT: Int = 4200 - - // Server arguments provided by the boot entrypoint. - private val args: AtomicReference> = AtomicReference(emptyArray()) - - /** Whether to enable VM pre-warming. */ - public val warmup: Boolean get() = resolve("elide.vm.prewarm", "true") { - it.trim().toBoolean() - } - - // Resolve an enumerated flag value. - public fun resolve(name: String, defaultValue: String, then: (String) -> R): R { - val value = System.getProperty(name, System.getenv(name)) - return if (value?.isNotBlank() == true) { - then.invoke(value) - } else { - then.invoke(defaultValue) - } - } -} diff --git a/packages/base/src/jvmTest/kotlin/elide/runtime/LoggerTest.kt b/packages/base/src/jvmTest/kotlin/elide/runtime/LoggerTest.kt index bd4d2e3b54..d9bcbd7594 100644 --- a/packages/base/src/jvmTest/kotlin/elide/runtime/LoggerTest.kt +++ b/packages/base/src/jvmTest/kotlin/elide/runtime/LoggerTest.kt @@ -17,9 +17,20 @@ import org.junit.jupiter.api.assertDoesNotThrow import kotlin.test.Test import kotlin.test.assertIs import kotlin.test.assertNotNull +import elide.runtime.jvm.jvmLevel /** Tests for acquiring [Logger] instances on the JVM. */ class LoggerTest { + @Test fun testLoggerLevels() { + val levels = LogLevel.entries + assertNotNull(levels) + levels.forEach { + assertNotNull(it.name) + assertNotNull(it.ordinal) + assertNotNull(it.jvmLevel) + } + } + @Test fun testLoggerAsSlf4j() { val logger = Logging.of(LoggerTest::class) assertIs(logger) diff --git a/packages/biome.jsonc b/packages/biome.jsonc new file mode 100644 index 0000000000..3974095225 --- /dev/null +++ b/packages/biome.jsonc @@ -0,0 +1,4 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", + "extends": ["../config/biome.jsonc"] +} diff --git a/packages/cli/build.gradle.kts b/packages/cli/build.gradle.kts index 380ae24664..e8f7823d95 100644 --- a/packages/cli/build.gradle.kts +++ b/packages/cli/build.gradle.kts @@ -106,7 +106,7 @@ val enablePkl = true val enableJs = true val enableJsIsolate = false val enableTs = true -val enablePython = false +val enablePython = true val enablePythonDynamic = true val enableRuby = false val enableLlvm = false @@ -119,7 +119,7 @@ val enableNativeTransportV2 = false val enableSqliteStatic = true val enableStatic = false val enableStaticJni = true -val preferShared = true +val preferShared = false val enableToolchains = false val forceFfm = false val enableClang = false @@ -138,12 +138,12 @@ val enableExperimentalLlvmEdge = false val enableFfm = hostIsLinux && System.getProperty("os.arch") != "aarch64" val enableEmbeddedResources = false val enableResourceFilter = false -val enableAuxCache = false -val enableAuxCacheTrace = false +val enableAuxCache = true +val enableAuxCacheTrace = true val enableJpms = false val enableConscrypt = false val enableBouncycastle = false -val enableEmbeddedJvm = true +val enableEmbeddedJvm = false val enableEmbeddedBuilder = false val enableBuildReport = true val enableHeapReport = false @@ -163,7 +163,7 @@ val enableHeapDump = false val enableJmx = false val enableVerboseClassLoading = false val jniDebug = false -val glibcTarget = "glibc" +val glibcTarget = if (enableStatic) "musl" else "glibc" val dumpPointsTo = false val elideTarget = TargetInfo.current(project) val defaultArchTarget = when { @@ -183,11 +183,8 @@ val exclusions = listOfNotNull( libs.jline.native, libs.jline.terminal.jna, - // prefer jpms jna when enabled - if (enableJna) null else libs.jna.jpms, - // only include jline jni integration if ffm is disabled - if (enableFfm && forceFfm) libs.jline.terminal.jni else null, + if (enableFfm) libs.jline.terminal.jni else null, // exclude kotlin compiler if kotlin is not enabled; it includes shadowed jline configs if (enableKotlin) null else libs.kotlin.compiler.embedded, @@ -407,6 +404,7 @@ dependencies { api(projects.packages.base) api(mn.micronaut.inject) implementation(projects.packages.terminal) + implementation(libs.dirs) jvmOnly(libs.snakeyaml) // Native-image transitive compile dependencies @@ -510,7 +508,7 @@ dependencies { runtimeOnly(mn.micronaut.graal) implementation(mn.netty.handler) -// we have to include _some_ support for JNA in order to support oshi et al. + // we have to include _some_ support for JNA in order to support oshi et al. implementation(libs.jna) if (enableJnaStatic) { implementation(libs.jna.graalvm) @@ -807,6 +805,42 @@ val initializeAtBuildTimeTest: List = listOf( "org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter", ) +val initializeAtRuntimeNonLinux: List = listOfNotNull( + "oshi.hardware.platform.linux", + "oshi.jna.platform.linux.LinuxLibc", + "oshi.util.UserGroupInfo", + "oshi.driver.linux.Lshw", + "com.sun.jna.platform.linux.LibC", + "oshi.software.os", + "oshi.software.os.linux", + "oshi.software.os.linux.LinuxOperatingSystem", + "oshi.util.platform.linux.DevPath", + "oshi.util.platform.linux.ProcPath", + "oshi.util.platform.linux.SysPath", +) + +val initializeAtRuntimeNonMac: List = listOfNotNull( + "com.sun.jna.platform.mac.CoreFoundation", + "oshi.hardware.platform.mac", + "oshi.hardware.platform.mac.MacFirmware", + "oshi.jna.platform.mac.IOKit", + "oshi.jna.platform.mac.SystemB", + "oshi.jna.platform.mac.SystemConfiguration", + "oshi.software.os.mac", + "oshi.software.os.mac.MacOperatingSystem", + "oshi.software.os.unix.aix", + "oshi.software.os.unix.aix.AixOperatingSystem", + "oshi.software.os.unix.freebsd", + "oshi.software.os.unix.freebsd.FreeBsdOperatingSystem", + "oshi.software.os.unix.openbsd", + "oshi.software.os.unix.openbsd.OpenBsdOperatingSystem", + "oshi.software.os.unix.solaris", + "oshi.software.os.unix.solaris.SolarisOperatingSystem", + "oshi.util.platform.mac.CFUtil", + "oshi.util.platform.mac.SmcUtil", + "oshi.util.platform.mac.SysctlUtil", +) + val initializeAtRuntime: List = listOfNotNull( onlyIf(!enableSqliteStatic, "org.sqlite.SQLiteJDBCLoader"), onlyIf(!enableSqliteStatic, "org.sqlite.core.NativeDB"), @@ -816,21 +850,18 @@ val initializeAtRuntime: List = listOfNotNull( "com.github.ajalt.mordant.rendering.TextStyles", "elide.tool.err.ErrPrinter", "com.google.protobuf.RuntimeVersion", - - // @TODO: seal this into formal config "elide.tool.err.ErrorHandler${'$'}ErrorContext", + "com.google.protobuf.RuntimeVersion", // pkl needs this "org.msgpack.core.buffer.DirectBufferAccess", // --- JNA ----- - "com.sun.jna.Native", "com.sun.jna.Structure${'$'}FFIType", "com.sun.jna.platform.mac.IOKit", "com.sun.jna.platform.mac.IOKitUtil", "com.sun.jna.platform.mac.SystemB", - "com.sun.jna.platform.linux.Udev", // --- Jansi/JLine ----- @@ -856,44 +887,15 @@ val initializeAtRuntime: List = listOfNotNull( // --- OSHI ----- - "com.sun.jna.platform.mac.CoreFoundation", - "oshi.hardware.platform.linux", - "oshi.hardware.platform.mac", - "oshi.hardware.platform.mac.MacFirmware", + "oshi.util.GlobalConfig", "oshi.hardware.platform.unix", "oshi.hardware.platform.unix.aix", "oshi.hardware.platform.unix.freebsd", "oshi.hardware.platform.unix.openbsd", "oshi.hardware.platform.unix.solaris", "oshi.hardware.platform.windows", - "oshi.jna.platform.mac.IOKit", - "oshi.jna.platform.mac.SystemB", - "oshi.jna.platform.mac.SystemConfiguration", - "oshi.jna.platform.linux.LinuxLibc", - "oshi.util.UserGroupInfo", - "oshi.driver.linux.Lshw", - "com.sun.jna.platform.linux.LibC", - "oshi.software.os", - "oshi.software.os.linux", - "oshi.software.os.linux.LinuxOperatingSystem", - "oshi.software.os.mac", - "oshi.software.os.mac.MacOperatingSystem", - "oshi.software.os.unix.aix", - "oshi.software.os.unix.aix.AixOperatingSystem", - "oshi.software.os.unix.freebsd", - "oshi.software.os.unix.freebsd.FreeBsdOperatingSystem", - "oshi.software.os.unix.openbsd", - "oshi.software.os.unix.openbsd.OpenBsdOperatingSystem", - "oshi.software.os.unix.solaris", - "oshi.software.os.unix.solaris.SolarisOperatingSystem", "oshi.software.os.windows", "oshi.software.os.windows.WindowsOperatingSystem", - "oshi.util.platform.linux.DevPath", - "oshi.util.platform.linux.ProcPath", - "oshi.util.platform.linux.SysPath", - "oshi.util.platform.mac.CFUtil", - "oshi.util.platform.mac.SmcUtil", - "oshi.util.platform.mac.SysctlUtil", "oshi.util.platform.unix.freebsd.BsdSysctlUtil", "oshi.util.platform.unix.freebsd.ProcstatUtil", "oshi.util.platform.unix.openbsd.FstatUtil", @@ -1007,6 +1009,10 @@ val initializeAtRuntime: List = listOfNotNull( "elide.tool.cli.cmd.discord", "elide.tool.cli.cmd.discord.ToolDiscordCommand", "elide.tool.cli.cmd.selftest.SelfTestCommand", +).plus( + initializeAtRuntimeNonLinux.onlyIf(!HostManager.hostIsLinux) +).plus( + initializeAtRuntimeNonMac.onlyIf(!HostManager.hostIsMac) ) val initializeAtRuntimeTest: List = emptyList() @@ -1096,16 +1102,6 @@ val commonNativeArgs = listOfNotNull( "-H:MaxRuntimeCompileMethods=20000", "-H:ExcludeResources=META-INF/native/libumbrella.so", "-H:ExcludeResources=META-INF/native/libumbrella.a", - "-H:ExcludeResources=kotlin/kotlin.kotlin_builtins", - "-H:ExcludeResources=kotlin/annotation/annotation.kotlin_builtins", - "-H:ExcludeResources=kotlin/collections/collections.kotlin_builtins", - "-H:ExcludeResources=kotlin/concurrent/atomics/atomics.kotlin_builtins", - "-H:ExcludeResources=kotlin/coroutines/coroutines.kotlin_builtins", - "-H:ExcludeResources=kotlin/internal/internal.kotlin_builtins", - "-H:ExcludeResources=kotlin/ranges/ranges.kotlin_builtins", - "-H:ExcludeResources=kotlin/reflect/reflect.kotlin_builtins", - "-H:ExcludeResources=META-INF/.*kotlin_module", - "-H:ExcludeResources=com/sun/jna/.*", "-H:ExcludeResources=.*.proto", "-H:ExcludeResources=elide/app/.*\\.proto", "-H:ExcludeResources=elide/assets/.*\\.proto", @@ -1124,16 +1120,13 @@ val commonNativeArgs = listOfNotNull( "-H:ExcludeResources=elide/vfs/.*\\.proto", "-H:ExcludeResources=logback.xml", "-H:ExcludeResources=META-INF/native/libsqlite.*", - "-H:ExcludeResources=lib/linux-x86_64/libbrotli.so", "-H:ExcludeResources=META-INF/elide/embedded/runtime/js/runtime.current.json", "-H:ExcludeResources=META-INF/maven/com.aayushatharva.brotli4j/native-linux-x86_64/pom.xml", "-H:ExcludeResources=META-INF/maven/com.aayushatharva.brotli4j/native-linux-x86_64/pom.properties", "-H:ExcludeResources=META-INF/native/x86_64-unknown-linux-gnu/libsqlitejdbc.so", "-H:ExcludeResources=META-INF/micronaut/io.micronaut.core.graal.GraalReflectionConfigurer/.*", "-H:ExcludeResources=META-INF/elide/embedded/runtime/wasm/runtime.json", - "-H:ExcludeResources=org/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/.*", "-H:ExcludeResources=org/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/coll/zh.res", - "-H:ExcludeResources=org/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/coll/ucadata.icu", "-H:ExcludeResources=org/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/brkitr/khmerdict.dict", "-H:ExcludeResources=org/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/coll/ko.res", "-H:ExcludeResources=org/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/brkitr/burmesedict.dict", @@ -1154,7 +1147,7 @@ val commonNativeArgs = listOfNotNull( "-Delide.lang.kotlin=$enableKotlin", "-Delide.lang.pkl=$enablePkl", "-Delide.lang.experimental=$enableExperimental", - "-Delide.staticUmbrella=false", + "-Delide.staticUmbrella=true", "-Delide.root=$rootPath", "-Delide.target=$targetPath", "-Delide.natives=$nativesPath", @@ -1254,10 +1247,14 @@ val experimentalFlags = listOf( "-H:+VectorPolynomialIntrinsics", ) +// C compiler flags to be included on Linux only. +val linuxOnlyCFlags: List = listOf( + "-fstack-clash-protection", +) + // C compiler flags which are always included. val commonCFlags: List = listOf( "-DELIDE", - "-fstack-clash-protection", "-fstack-protector-strong", "-fexceptions", "-ffunction-sections", @@ -1273,6 +1270,8 @@ val commonCFlags: List = listOf( listOf("-fuse-ld=$cLinker").onlyIf(cLinker != null) ).plus( System.getenv("CFLAGS")?.ifEmpty { null }?.split(" ") ?: emptyList() +).plus( + linuxOnlyCFlags.onlyIf(HostManager.hostIsLinux) ) // Linker flags which are always included. @@ -1305,10 +1304,18 @@ val profiles: List = if (enableEdge) listOf( "pkl-eval.iprof", "ts-hello.iprof", "ts-sqlite.iprof", -) else listOf( - "js-path-fs.iprof", - "js-sqlite.iprof", +) else listOfNotNull( + "cli-help.iprof", + "js-cpu.iprof", + "js-fetch.iprof", + "js-fs.iprof", + "js-hello.iprof", + "js-paths.iprof", "pkl-eval.iprof", + onlyIf(enablePython, "py-hello.iprof"), + onlyIf(enablePython, "py-interop.iprof"), + "ts-hello.iprof", + "ts-sqlite.iprof", ) // GVM release flags @@ -1346,7 +1353,8 @@ val jvmDefs = mutableMapOf( "elide.target" to elideTarget.triple, "elide.graalvm.ee" to oracleGvm.toString(), "elide.mosaic" to enableMosaic.toString(), - "elide.staticJni" to enableJnaStatic.toString(), + "elide.staticJni" to enableStaticJni.toString(), + "elide.targetLibc" to glibcTarget, "elide.js.vm.enableStreams" to "true", "elide.kotlin.version" to libs.versions.kotlin.sdk.get(), "elide.kotlin.verbose" to "false", @@ -1414,6 +1422,14 @@ val darwinOnlyArgs = defaultPlatformArgs.plus(listOf( "--gc=serial", "-R:MaximumHeapSizePercent=80", "--initialize-at-build-time=sun.awt.resources.awtosx", + "-H:NativeLinkerOption=-flto", + "-H:NativeLinkerOption=-lm", + "-H:NativeLinkerOption=$nativesPath/libdiag.dylib", + "-H:NativeLinkerOption=$nativesPath/libsqlitejdbc.dylib", + "-H:NativeLinkerOption=$nativesPath/libumbrella.dylib", + "-H:NativeLinkerOption=$nativesPath/libjs.dylib", + "-H:NativeLinkerOption=$nativesPath/libposix.dylib", + "-H:NativeLinkerOption=$nativesPath/libterminal.dylib", ).plus(if (oracleGvm) listOf( "-Delide.vm.engine.preinitialize=true", ) else listOf( @@ -1422,6 +1438,7 @@ val darwinOnlyArgs = defaultPlatformArgs.plus(listOf( "-J-Xmx12g", ) else listOf( "-J-Xmx48g", + "--parallelism=12", ))).plus(if (oracleGvm && enableAuxCache) listOf( "-H:+AuxiliaryEngineCache", ) else emptyList()) @@ -1436,12 +1453,13 @@ val linuxOnlyArgs = defaultPlatformArgs.plus( "-H:NativeLinkerOption=-flto", "-H:NativeLinkerOption=-Wl,--gc-sections", "-H:NativeLinkerOption=-Wl,--emit-relocs", - "-H:NativeLinkerOption=$nativesPath/libdiag.so", - "-H:NativeLinkerOption=$nativesPath/libsqlitejdbc.so", - "-H:NativeLinkerOption=$nativesPath/libumbrella.so", - "-H:NativeLinkerOption=$nativesPath/libjs.so", - "-H:NativeLinkerOption=$nativesPath/libposix.so", - "-H:NativeLinkerOption=$nativesPath/libterminal.so", + "-H:NativeLinkerOption=-lm", + "-H:NativeLinkerOption=$nativesPath/libdiag.a", + "-H:NativeLinkerOption=$nativesPath/libsqlitejdbc.a", + "-H:NativeLinkerOption=$nativesPath/libumbrella.a", + "-H:NativeLinkerOption=$nativesPath/libjs.a", + "-H:NativeLinkerOption=$nativesPath/libposix.a", + "-H:NativeLinkerOption=$nativesPath/libterminal.a", "-H:ExcludeResources=.*dylib", "-H:ExcludeResources=.*jnilib", "-H:ExcludeResources=.*dll", @@ -1460,7 +1478,6 @@ val linuxOnlyArgs = defaultPlatformArgs.plus( ) ).plus( listOf( - "-H:NativeLinkerOption=-lm", "-H:NativeLinkerOption=-lssl", "-H:NativeLinkerOption=-lcrypto", "-H:NativeLinkerOption=-lstdc++", @@ -1542,7 +1559,10 @@ fun nativeCliImageArgs( when (platform) { "windows" -> if (release) windowsReleaseArgs else windowsOnlyArgs "darwin" -> if (release) darwinReleaseArgs else darwinOnlyArgs - "linux" -> if (target == "musl") muslArgs else (if (release) linuxReleaseArgs else linuxOnlyArgs) + "linux" -> + if (target == "musl") + linuxOnlyArgs.plus(muslArgs) + else (if (release) linuxReleaseArgs else linuxOnlyArgs) else -> defaultPlatformArgs }, ).plus( @@ -1592,8 +1612,6 @@ graalvmNative { enableExperimentalPredefinedClasses = true enableExperimentalUnsafeAllocationTracing = true - val userCodeFilter = layout.projectDirectory.file("src/config/user-code-filter.json").asFile.path - enabled = ( (System.getenv("GRAALVM_AGENT") == "true" || project.properties.containsKey("agent")) && !gradle.startParameter.isProfile // profiler for build can't also be active @@ -1601,10 +1619,6 @@ graalvmNative { modes { standard {} - - conditional { - userCodeFilterPath = userCodeFilter - } } metadataCopy { inputTaskNames.addAll(listOf("run", "optimizedRun")) @@ -1928,6 +1942,7 @@ tasks { } named("run", JavaExec::class).configure { + workingDir = rootProject.layout.projectDirectory.asFile if (enableToolchains) javaLauncher = gvmLauncher jvmDefs.forEach { @@ -1999,10 +2014,17 @@ tasks { test { if (enableToolchains) javaLauncher = gvmLauncher + // must be root project so that test scripts can be resolved during smoke tests + workingDir = rootProject.layout.projectDirectory.asFile + jvmDefs.forEach { systemProperty(it.key, it.value) } + systemProperty( + "elide.rootDir", + rootProject.layout.projectDirectory.asFile.absolutePath, + ) systemProperty( "micronaut.environments", "dev", diff --git a/packages/cli/detekt-baseline.xml b/packages/cli/detekt-baseline.xml index 0abe3e236e..209aeff858 100644 --- a/packages/cli/detekt-baseline.xml +++ b/packages/cli/detekt-baseline.xml @@ -4,6 +4,7 @@ ComplexCondition:RuntimeWorkdirManager.kt$RuntimeWorkdirManager$(base != null && (base.parentFile == null || base.absolutePath == "/")) || files.isEmpty() LargeClass:ToolShellCommand.kt$ToolShellCommand : AbstractSubcommand + LongMethod:ToolShellCommand.kt$ToolShellCommand$override suspend fun CommandContext.invoke(state: ToolContext<ToolState>): CommandResult LoopWithTooManyJumpStatements:ToolShellCommand.kt$ToolShellCommand$while MagicNumber:RuntimeWorkdirManager.kt$RuntimeWorkdirManager$15 MagicNumber:ToolShellCommand.kt$ToolShellCommand$1000L @@ -13,25 +14,20 @@ MatchingDeclarationName:SanityTests.kt$SanitySelfTest : SelfTest ReturnCount:ExecutionController.kt$ExecutionController$private fun toHost(polyglotException: PolyglotException): Throwable ReturnCount:RuntimeWorkdirManager.kt$RuntimeWorkdirManager$private fun nearestDirectoryWithAnyOfTheseFiles( files: Array<String>, base: File? = null, depth: Int? = null, ): File? + ReturnCount:ToolShellCommand.kt$ToolShellCommand$override suspend fun CommandContext.invoke(state: ToolContext<ToolState>): CommandResult SpreadOperator:ToolInvokeCommand.kt$ToolInvokeCommand$(*selectedTools.map { it to buildArgs(action, it) }.toTypedArray()) - SwallowedException:DefaultProjectManager.kt$DefaultProjectManager.Companion$ioe: IOException - SwallowedException:DefaultProjectManager.kt$DefaultProjectManager.Companion$thr: Throwable SwallowedException:PersistedError.kt$PersistedError.RuntimeInfo$err: Throwable TooGenericExceptionCaught:AbstractToolCommand.kt$AbstractToolCommand$err: Throwable TooGenericExceptionCaught:CommandTestRunner.kt$CommandTestRunner$thr: Throwable - TooGenericExceptionCaught:DefaultProjectManager.kt$DefaultProjectManager.Companion$thr: Throwable TooGenericExceptionCaught:PersistedError.kt$PersistedError.RuntimeInfo$err: Throwable TooGenericExceptionCaught:TestContext.kt$TestContext.Companion$err: Throwable TooGenericExceptionCaught:ToolInvokeCommand.kt$ToolInvokeCommand$err: Throwable TopLevelPropertyNaming:ToolInvokeCommand.kt$private const val jsHint = "package.json" TopLevelPropertyNaming:ToolInvokeCommand.kt$private const val pyHint = "requirements.txt" - UnusedParameter:AbstractToolCommand.kt$AbstractToolCommand$args: Array<String> - UnusedParameter:LanguageSelector.kt$LanguageSelector$project: () -> ProjectInfo? UnusedPrivateProperty:AbstractToolCommand.kt$AbstractToolCommand$// Initialization state. private val initialized: AtomicBoolean = AtomicBoolean(false) UnusedPrivateProperty:ExecutionController.kt$ExecutionController$private val tRunException: Lazy<Value> = Lazy.of { loadClass("jdk.jshell.spi.ExecutionControl\$RunException") } UnusedPrivateProperty:ToolInvokeCommand.kt$// Sub-commands for Orogene. private val orogeneActions = sortedSetOf( "add", "apply", "login", "logout", "ping", "reapply", "remove", "view", "help", ) UnusedPrivateProperty:ToolInvokeCommand.kt$// Sub-commands for Uv. private val uvActions = sortedSetOf( "pip", "tool", "toolchain", "venv", "cache", "self", "version", "help", ) - VariableNaming:AbstractScriptEngineFactory.kt$AbstractScriptEngineFactory.PolyglotContext$private val `in`: PolyglotReader VariableNaming:InspectorConfig.kt$InspectorConfig$/** Specifies whether the inspector should suspend for internal (facade) sources. */ @Option( names = ["--inspect:internal"], description = ["Specifies whether the inspector should suspend for internal (facade) sources"], defaultValue = "false", hidden = false, ) internal var `internal`: Boolean = false diff --git a/packages/cli/gradle.lockfile b/packages/cli/gradle.lockfile index cd53f9b16c..3cefca486a 100644 --- a/packages/cli/gradle.lockfile +++ b/packages/cli/gradle.lockfile @@ -1,29 +1,19 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -androidx.annotation:annotation-jvm:1.8.0=runtimeClasspath -androidx.annotation:annotation:1.8.0=runtimeClasspath -androidx.collection:collection-jvm:1.4.0=runtimeClasspath -androidx.collection:collection:1.4.0=runtimeClasspath -ch.qos.logback:logback-classic:1.5.16=compileClasspath,runtimeClasspath -ch.qos.logback:logback-core:1.5.16=compileClasspath,runtimeClasspath +ch.qos.logback:logback-classic:1.5.17=compileClasspath,runtimeClasspath +ch.qos.logback:logback-core:1.5.17=compileClasspath,runtimeClasspath com.aayushatharva.brotli4j:brotli4j:1.18.0=compileClasspath,runtimeClasspath -com.aayushatharva.brotli4j:native-linux-aarch64:1.18.0=compileClasspath,runtimeClasspath -com.aayushatharva.brotli4j:native-linux-x86_64:1.18.0=compileClasspath,runtimeClasspath -com.aayushatharva.brotli4j:native-osx-aarch64:1.18.0=compileClasspath,runtimeClasspath -com.aayushatharva.brotli4j:native-osx-x86_64:1.18.0=compileClasspath,runtimeClasspath -com.aayushatharva.brotli4j:native-windows-x86_64:1.18.0=compileClasspath,runtimeClasspath +com.aayushatharva.brotli4j:native-linux-aarch64:1.18.0=runtimeClasspath +com.aayushatharva.brotli4j:native-linux-x86_64:1.18.0=runtimeClasspath +com.aayushatharva.brotli4j:native-osx-aarch64:1.18.0=runtimeClasspath +com.aayushatharva.brotli4j:native-osx-x86_64:1.18.0=runtimeClasspath +com.aayushatharva.brotli4j:native-windows-x86_64:1.18.0=runtimeClasspath com.aayushatharva.brotli4j:service:1.18.0=compileClasspath,runtimeClasspath com.amazonaws:aws-java-sdk-bom:1.12.777=compileClasspath,runtimeClasspath com.arthenica:smart-exception-common:0.2.1=compileClasspath,runtimeClasspath com.arthenica:smart-exception-java9:0.2.1=compileClasspath,runtimeClasspath com.azure:azure-sdk-bom:1.2.29=compileClasspath,runtimeClasspath -com.fasterxml.jackson.core:jackson-annotations:2.18.2=runtimeClasspath -com.fasterxml.jackson.core:jackson-core:2.18.2=runtimeClasspath -com.fasterxml.jackson.core:jackson-databind:2.18.2=runtimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.18.2=runtimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=runtimeClasspath -com.fasterxml.jackson.module:jackson-module-kotlin:2.18.2=runtimeClasspath com.fasterxml.jackson:jackson-bom:2.17.2=compileClasspath com.fasterxml.jackson:jackson-bom:2.18.2=runtimeClasspath com.github.ajalt.clikt:clikt-core-jvm:5.0.3=compileClasspath,runtimeClasspath @@ -46,10 +36,13 @@ com.github.ajalt.mordant:mordant-jvm:3.0.1=compileClasspath,runtimeClasspath com.github.ajalt.mordant:mordant-markdown-jvm:3.0.1=runtimeClasspath com.github.ajalt.mordant:mordant-markdown:3.0.1=runtimeClasspath com.github.ajalt.mordant:mordant:3.0.1=compileClasspath,runtimeClasspath +com.github.elide-dev:directories-jvm:bf76af41b9=compileClasspath,runtimeClasspath +com.github.elide-tools.jimfs:jimfs:66161ebdf9=runtimeClasspath +com.github.elide-tools:jimfs:66161ebdf9=runtimeClasspath com.github.javaparser:javaparser-core:3.26.3=runtimeClasspath com.github.javaparser:javaparser-symbol-solver-core:3.26.3=runtimeClasspath com.github.lukfor:magic-progress:0.3.2=compileClasspath,runtimeClasspath -com.github.oshi:oshi-core-java11:6.6.6=runtimeClasspath +com.github.oshi:oshi-core-java11:6.7.0=runtimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath com.google.common.html.types:proto:1.0.8=runtimeClasspath com.google.common.html.types:types:1.0.8=compileClasspath,runtimeClasspath @@ -58,23 +51,14 @@ com.google.guava:failureaccess:1.0.2=compileClasspath,runtimeClasspath com.google.guava:guava:33.3.1-jre=compileClasspath,runtimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=compileClasspath,runtimeClasspath com.google.j2objc:j2objc-annotations:3.0.0=compileClasspath,runtimeClasspath -com.google.jimfs:jimfs:1.3.0=runtimeClasspath com.google.jsinterop:jsinterop-annotations:1.0.1=compileClasspath,runtimeClasspath com.google.protobuf:protobuf-bom:3.25.5=compileClasspath,runtimeClasspath -com.google.protobuf:protobuf-java:3.25.2=runtimeClasspath -com.google.protobuf:protobuf-kotlin:3.25.2=runtimeClasspath -com.jakewharton.finalization:finalization-hook-jvm:0.1.0=runtimeClasspath -com.jakewharton.finalization:finalization-hook:0.1.0=runtimeClasspath -com.jakewharton.mosaic:mosaic-runtime-jvm:0.16.0=compileClasspath,runtimeClasspath -com.jakewharton.mosaic:mosaic-runtime:0.16.0=compileClasspath,runtimeClasspath +com.google.protobuf:protobuf-java:4.28.2=runtimeClasspath +com.google.protobuf:protobuf-kotlin:4.28.2=runtimeClasspath com.oracle.coherence.ce:coherence-bom:23.03=compileClasspath,runtimeClasspath commons-codec:commons-codec:1.18.0=compileClasspath,runtimeClasspath commons-io:commons-io:2.16.1=compileClasspath commons-io:commons-io:2.18.0=runtimeClasspath -de.cketti.unicode:kotlin-codepoints-jvm:0.9.0=runtimeClasspath -de.cketti.unicode:kotlin-codepoints:0.9.0=runtimeClasspath -dev.drewhamilton.poko:poko-annotations-jvm:0.18.2=runtimeClasspath -dev.drewhamilton.poko:poko-annotations:0.18.2=runtimeClasspath dev.elide:elide-uuid-core-jvm:2.0.0-Beta3-0.20.0-rc1=compileClasspath,runtimeClasspath dev.elide:elide-uuid-core:2.0.0-Beta3-0.20.0-rc1=compileClasspath,runtimeClasspath dev.langchain4j:langchain4j-bom:0.35.0=compileClasspath,runtimeClasspath @@ -96,7 +80,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -111,7 +95,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -127,10 +111,10 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.picocli:micronaut-picocli:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.picocli:micronaut-picocli:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -140,56 +124,58 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeClasspath +io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath +io.micronaut.sourcegen:micronaut-sourcegen-bom:1.6.2=runtimeClasspath +io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer:1.6.2=runtimeClasspath +io.micronaut.sourcegen:micronaut-sourcegen-model:1.6.2=runtimeClasspath io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context-propagation:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-processor:4.7.11=runtimeClasspath -io.micronaut:micronaut-core-reactive:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-discovery-core:4.7.11=runtimeClasspath -io.micronaut:micronaut-graal:4.7.11=runtimeClasspath -io.micronaut:micronaut-http:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-jackson-core:4.7.11=runtimeClasspath -io.micronaut:micronaut-jackson-databind:4.7.11=runtimeClasspath -io.micronaut:micronaut-json-core:4.7.11=runtimeClasspath -io.micronaut:micronaut-retry:4.7.11=runtimeClasspath -io.micronaut:micronaut-runtime:4.7.11=runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context-propagation:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath +io.micronaut:micronaut-core-bom:4.8.2=runtimeClasspath +io.micronaut:micronaut-core-processor:4.8.5=runtimeClasspath +io.micronaut:micronaut-core-reactive:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-discovery-core:4.8.5=runtimeClasspath +io.micronaut:micronaut-graal:4.8.5=runtimeClasspath +io.micronaut:micronaut-http:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-retry:4.8.5=runtimeClasspath +io.micronaut:micronaut-runtime:4.8.5=runtimeClasspath io.netty.incubator:netty-incubator-transport-classes-io_uring:0.0.26.Final=compileClasspath,runtimeClasspath -io.netty.incubator:netty-incubator-transport-native-io_uring:0.0.26.Final=runtimeClasspath +io.netty.incubator:netty-incubator-transport-native-io_uring:0.0.26.Final=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.netty:netty-buffer:4.1.118.Final=compileClasspath,runtimeClasspath -io.netty:netty-codec-dns:4.1.118.Final=runtimeClasspath +io.netty:netty-codec-dns:4.1.118.Final=compileClasspath,runtimeClasspath io.netty:netty-codec-http2:4.1.118.Final=runtimeClasspath io.netty:netty-codec-http:4.1.118.Final=runtimeClasspath io.netty:netty-codec:4.1.118.Final=compileClasspath,runtimeClasspath io.netty:netty-common:4.1.118.Final=compileClasspath,runtimeClasspath io.netty:netty-handler:4.1.118.Final=compileClasspath,runtimeClasspath -io.netty:netty-resolver-dns-classes-macos:4.1.118.Final=runtimeClasspath -io.netty:netty-resolver-dns-native-macos:4.1.118.Final=runtimeClasspath -io.netty:netty-resolver-dns:4.1.118.Final=runtimeClasspath +io.netty:netty-resolver-dns-classes-macos:4.1.118.Final=compileClasspath,runtimeClasspath +io.netty:netty-resolver-dns-native-macos:4.1.118.Final=compileClasspath,runtimeClasspath +io.netty:netty-resolver-dns:4.1.118.Final=compileClasspath,runtimeClasspath io.netty:netty-resolver:4.1.118.Final=compileClasspath,runtimeClasspath -io.netty:netty-tcnative-boringssl-static:2.0.70.Final=runtimeClasspath -io.netty:netty-tcnative-classes:2.0.70.Final=runtimeClasspath +io.netty:netty-tcnative-boringssl-static:2.0.70.Final=compileClasspath,runtimeClasspath +io.netty:netty-tcnative-classes:2.0.70.Final=compileClasspath,runtimeClasspath +io.netty:netty-tcnative:2.0.70.Final=compileClasspath,runtimeClasspath io.netty:netty-transport-classes-epoll:4.1.118.Final=compileClasspath,runtimeClasspath io.netty:netty-transport-classes-kqueue:4.1.118.Final=compileClasspath,runtimeClasspath -io.netty:netty-transport-native-epoll:4.1.118.Final=runtimeClasspath -io.netty:netty-transport-native-kqueue:4.1.118.Final=runtimeClasspath +io.netty:netty-transport-native-epoll:4.1.118.Final=compileClasspath,runtimeClasspath +io.netty:netty-transport-native-kqueue:4.1.118.Final=compileClasspath,runtimeClasspath io.netty:netty-transport-native-unix-common:4.1.118.Final=compileClasspath,runtimeClasspath io.netty:netty-transport:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath @@ -197,117 +183,56 @@ io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compil io.opentelemetry:opentelemetry-bom-alpha:1.40.0-alpha=compileClasspath,runtimeClasspath io.opentelemetry:opentelemetry-bom:1.32.0=compileClasspath,runtimeClasspath io.projectreactor:reactor-bom:2023.0.10=compileClasspath,runtimeClasspath -io.projectreactor:reactor-core:3.6.10=runtimeClasspath +io.projectreactor:reactor-core:3.7.2=runtimeClasspath io.rest-assured:rest-assured-bom:5.5.0=compileClasspath,runtimeClasspath io.zipkin.brave:brave-bom:6.0.3=compileClasspath,runtimeClasspath io.zipkin.reporter2:zipkin-reporter-bom:3.4.2=compileClasspath,runtimeClasspath jakarta.annotation:jakarta.annotation-api:2.1.1=compileClasspath,runtimeClasspath jakarta.inject:jakarta.inject-api:2.0.1=compileClasspath,runtimeClasspath +jakarta.validation:jakarta.validation-api:3.1.1=compileClasspath,runtimeClasspath javax.annotation:jsr250-api:1.0=compileClasspath,runtimeClasspath -net.java.dev.jna:jna-jpms:5.16.0=compileClasspath,runtimeClasspath +net.java.dev.jna:jna-jpms:5.16.0=runtimeClasspath net.java.dev.jna:jna-platform-jpms:5.16.0=runtimeClasspath +net.java.dev.jna:jna:5.16.0=compileClasspath,runtimeClasspath org.apache.commons:commons-compress:1.27.1=compileClasspath,runtimeClasspath org.apache.commons:commons-lang3:3.16.0=compileClasspath,runtimeClasspath org.apache.groovy:groovy-bom:4.0.18=compileClasspath,runtimeClasspath org.apache.logging.log4j:log4j-bom:2.24.3=compileClasspath,runtimeClasspath -org.bouncycastle:bcpkix-jdk18on:1.78.1=compileClasspath,runtimeClasspath -org.bouncycastle:bcprov-jdk18on:1.80=compileClasspath,runtimeClasspath -org.bouncycastle:bcutil-jdk18on:1.78.1=compileClasspath,runtimeClasspath org.checkerframework:checker-qual:3.43.0=compileClasspath,runtimeClasspath org.eclipse.jetty:jetty-bom:11.0.24=compileClasspath,runtimeClasspath org.fusesource.jansi:jansi:2.4.1=runtimeClasspath org.graalvm.compiler:compiler:24.1.2=compileClasspath -org.graalvm.espresso:espresso-language:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.espresso:espresso-libs-resources:24.1.2=runtimeClasspath -org.graalvm.espresso:espresso-runtime-resources-jdk21:24.1.2=runtimeClasspath -org.graalvm.espresso:hotswap:24.1.2=runtimeClasspath -org.graalvm.espresso:java-community:24.1.2=runtimeClasspath -org.graalvm.espresso:polyglot:24.1.2=compileClasspath,runtimeClasspath org.graalvm.js:js-community:24.1.2=runtimeClasspath -org.graalvm.js:js-isolate-darwin-aarch64:24.1.2=runtimeClasspath -org.graalvm.js:js-isolate-darwin-amd64:24.1.2=runtimeClasspath -org.graalvm.js:js-isolate-linux-aarch64:24.1.2=runtimeClasspath -org.graalvm.js:js-isolate-linux-amd64:24.1.2=runtimeClasspath -org.graalvm.js:js-isolate-windows-amd64:24.1.2=runtimeClasspath -org.graalvm.llvm:llvm-api:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.llvm:llvm-language-native-resources:24.1.2=runtimeClasspath -org.graalvm.llvm:llvm-language-native:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.llvm:llvm-language-nfi:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.llvm:llvm-language:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.llvm:llvm-native-community:24.1.2=runtimeClasspath org.graalvm.nativeimage:native-image-base:24.1.2=compileClasspath org.graalvm.nativeimage:objectfile:24.1.2=compileClasspath org.graalvm.nativeimage:pointsto:24.1.2=compileClasspath org.graalvm.nativeimage:svm:24.1.2=compileClasspath -org.graalvm.polyglot:java-community:24.1.2=compileClasspath,runtimeClasspath org.graalvm.polyglot:js-community:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.polyglot:js-isolate-darwin-aarch64:24.1.2=runtimeClasspath -org.graalvm.polyglot:js-isolate-darwin-amd64:24.1.2=runtimeClasspath -org.graalvm.polyglot:js-isolate-linux-aarch64:24.1.2=runtimeClasspath -org.graalvm.polyglot:js-isolate-linux-amd64:24.1.2=runtimeClasspath -org.graalvm.polyglot:js-isolate-windows-amd64:24.1.2=runtimeClasspath -org.graalvm.polyglot:js-isolate:24.1.2=compileClasspath,runtimeClasspath org.graalvm.polyglot:polyglot:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.polyglot:python-community:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.polyglot:ruby-community:24.1.2=compileClasspath,runtimeClasspath org.graalvm.polyglot:wasm-community:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.python:python-community:24.1.2=runtimeClasspath -org.graalvm.python:python-embedding:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.python:python-language:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.python:python-resources:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.regex:regex:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.ruby:ruby-annotations:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.ruby:ruby-community:24.1.2=runtimeClasspath -org.graalvm.ruby:ruby-language:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.ruby:ruby-resources:24.1.2=runtimeClasspath -org.graalvm.ruby:ruby-shared:24.1.2=compileClasspath,runtimeClasspath +org.graalvm.regex:regex:24.1.2=runtimeClasspath org.graalvm.sdk:collections:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:graal-sdk:24.1.2=runtimeClasspath org.graalvm.sdk:jniutils:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.sdk:nativebridge:24.1.2=runtimeClasspath org.graalvm.sdk:nativeimage:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:word:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.shadowed:antlr4:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.shadowed:icu4j:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.shadowed:jcodings:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.shadowed:jline:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.shadowed:joni:24.1.2=compileClasspath,runtimeClasspath +org.graalvm.shadowed:icu4j:24.1.2=runtimeClasspath org.graalvm.shadowed:json:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.shadowed:xz:24.1.2=compileClasspath,runtimeClasspath org.graalvm.tools:chromeinspector-tool:24.1.2=compileClasspath,runtimeClasspath org.graalvm.tools:coverage-tool:24.1.2=compileClasspath,runtimeClasspath org.graalvm.tools:dap-tool:24.1.2=compileClasspath,runtimeClasspath org.graalvm.tools:profiler-tool:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-api:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-compiler:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.truffle:truffle-enterprise:24.1.2=runtimeClasspath -org.graalvm.truffle:truffle-nfi-libffi:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.truffle:truffle-nfi:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-runtime:24.1.2=compileClasspath,runtimeClasspath org.graalvm.wasm:wasm-community:24.1.2=runtimeClasspath org.graalvm.wasm:wasm-language:24.1.2=runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath -org.jetbrains.compose.annotation-internal:annotation:1.7.3=runtimeClasspath -org.jetbrains.compose.collection-internal:collection:1.7.3=runtimeClasspath -org.jetbrains.compose.runtime:runtime-desktop:1.7.3=compileClasspath,runtimeClasspath -org.jetbrains.compose.runtime:runtime:1.7.3=compileClasspath,runtimeClasspath -org.jetbrains.intellij.deps:trove4j:1.0.20200330=runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-reflect:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-script-runtime:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-common:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-jvm-host:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-jvm:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-reflect:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -322,10 +247,10 @@ org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-core:0.7.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -341,28 +266,27 @@ org.jline:jline-console:3.28.0=compileClasspath,runtimeClasspath org.jline:jline-reader:3.28.0=compileClasspath,runtimeClasspath org.jline:jline-style:3.28.0=compileClasspath,runtimeClasspath org.jline:jline-terminal-ffm:3.28.0=compileClasspath,runtimeClasspath -org.jline:jline-terminal-jansi:3.28.0=compileClasspath,runtimeClasspath -org.jline:jline-terminal-jna:3.28.0=compileClasspath,runtimeClasspath +org.jline:jline-terminal-jansi:3.28.0=runtimeClasspath org.jline:jline-terminal-jni:3.28.0=compileClasspath,runtimeClasspath org.jline:jline-terminal:3.28.0=compileClasspath,runtimeClasspath -org.jline:jline:3.28.0=runtimeClasspath org.junit:junit-bom:5.11.3=compileClasspath,runtimeClasspath org.msgpack:msgpack-core:0.9.8=runtimeClasspath org.organicdesign:Paguro:3.10.3=runtimeClasspath +org.ow2.asm:asm-analysis:9.7.1=runtimeClasspath org.ow2.asm:asm-commons:9.7.1=runtimeClasspath org.ow2.asm:asm-tree:9.7.1=runtimeClasspath +org.ow2.asm:asm-util:9.7.1=runtimeClasspath org.ow2.asm:asm:9.7.1=runtimeClasspath -org.pkl-lang:pkl-cli:0.28.0-SNAPSHOT=compileClasspath,runtimeClasspath -org.pkl-lang:pkl-commons-cli:0.28.0-SNAPSHOT=compileClasspath,runtimeClasspath -org.pkl-lang:pkl-commons:0.28.0-SNAPSHOT=runtimeClasspath -org.pkl-lang:pkl-core:0.28.0-SNAPSHOT=compileClasspath,runtimeClasspath +org.pkl-lang:pkl-cli:0.28.1=compileClasspath,runtimeClasspath +org.pkl-lang:pkl-commons-cli:0.28.1=compileClasspath,runtimeClasspath +org.pkl-lang:pkl-commons:0.28.1=runtimeClasspath +org.pkl-lang:pkl-core:0.28.1=compileClasspath,runtimeClasspath org.reactivestreams:reactive-streams:1.0.4=compileClasspath,runtimeClasspath org.slf4j:jul-to-slf4j:2.0.16=compileClasspath,runtimeClasspath -org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath +org.slf4j:slf4j-api:2.0.17=compileClasspath,runtimeClasspath org.snakeyaml:snakeyaml-engine:2.9=runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath -org.yaml:snakeyaml:2.4=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/cli/package.json b/packages/cli/package.json index 35756d6934..5adc0ef101 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,13 +1,13 @@ { "name": "@elide-dev/elide", - "version": "1.0.0-alpha14", + "version": "1.0.0-beta1", "description": "Elide polyglot application runtime", "homepage": "https://elide.dev", "license": "(MIT OR Apache-2.0)", "keywords": ["runtime", "js", "ts", "polyglot", "server", "framework", "kotlin", "javascript", "typescript"], "repository": "github:elide-dev/elide", "config": { - "elideVersion": "1.0.0-alpha14" + "elideVersion": "1.0.0-beta1" }, "author": { "name": "Sam Gammon", diff --git a/packages/cli/packaging/content/doc/ACKNOWLEDGEMENTS.txt b/packages/cli/packaging/content/doc/ACKNOWLEDGEMENTS.txt index 3ba5b13c49..22f4c99748 100644 --- a/packages/cli/packaging/content/doc/ACKNOWLEDGEMENTS.txt +++ b/packages/cli/packaging/content/doc/ACKNOWLEDGEMENTS.txt @@ -1 +1,16 @@ -Coming soon. +Elide would like to thank and acknowledge the following individuals and organizations for their hard work +upstream, and downstream, without which Elide could not possibly exist: + +- GraalVM and Java teams at Oracle and Oracle Labs +- Sam Lambert, CEO of Planetscale, for a lot of advice and guidance +- Vic Gundotra, former EVP at Google, for his advice and encouragement +- Justine Tunney, author of Cosmo, APE, and Llamafile, for her support and sheer brilliance +- Mike Hearn, Christian Humer, and Fabio Niephaus at Oracle Labs +- Kat Marchan, the author of Orogene +- Charlie Marsh, the author of uv and ruff +- Andrey Breslav, creator of Kotlin, for his advice, guidance, and encouragement +- Naman Goel, the author of StyleX, for his guidance in all aspects +- Theo of @t3.gg fame, for a lot of guidance and advice about JS runtimes +- Norman Maurer for his amazing work on Netty for many years +- Graeme Rocher, the creator of Grails and Micronaut +- E.J. Technologies, who contributed a license for JProfiler diff --git a/packages/cli/packaging/install-debug.sh b/packages/cli/packaging/install-debug.sh index c6dca07128..d3830f6de3 100755 --- a/packages/cli/packaging/install-debug.sh +++ b/packages/cli/packaging/install-debug.sh @@ -1,7 +1,7 @@ #!/bin/bash # -# Copyright (c) 2024 Elide Technologies, Inc. +# Copyright (c) 2022-2025 Elide Technologies, Inc. # # Licensed under the MIT license (the "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at @@ -18,7 +18,7 @@ # Elide Installer # --------------- -# Version: 0.15 +# Version: 0.17 # Author: Sam Gammon # # This script can be used as a one-liner to install the Elide command-line interface. Various arguments can be passed to @@ -33,6 +33,7 @@ # --arch= Install for a specific architecture (optional, overrides detection) # --os= Install for a specific operating system (optional, overrides detection) # --[no]-path Whether to add the install directory to the PATH +# --gha Prefer to serve the download directly from GitHub # --no-banner Opt out of the announcement banner after install # --no-color Disable color output # --debug Enable debug output @@ -41,6 +42,8 @@ # --help Show the installer tool's help message # # Changelog: +# 0.17 2025-03-16 Sam Gammon Release at 1.0.0-beta1 +# 0.16 2025-03-14 Sam Gammon Added --gha flag for 1.0.0-beta1 release # 0.15 2025-01-26 Sam Gammon Issuance of alpha12 release # 0.14 2025-01-26 Sam Gammon Issuance of alpha11 release # 0.13 2024-05-12 Sam Gammon Fixes for install prefix and alpha9 release @@ -60,8 +63,8 @@ set -e set +x -TOOL_REVISION="1.0.0-alpha14" -INSTALLER_VERSION="v0.15" +TOOL_REVISION="1.0.0-beta1" +INSTALLER_VERSION="v0.17" TOOL="cli" VERSION="v1" @@ -136,6 +139,7 @@ if [[ "$@" == *"help"* ]]; then echo -e " ${YELLOW}--install-rev${NC}= Install a specific version of Elide" echo -e " ${YELLOW}--${NC}[${YELLOW}no${NC}]${YELLOW}-path${NC} Whether to add the install directory to the PATH" echo -e " ${YELLOW}--no-banner${NC} Opt out of the announcement banner after install" + echo -e " ${YELLOW}--gha${NC} Prefer to serve the download directly from GitHub" echo -e " ${YELLOW}--no-color${NC} Disable color output" echo -e " ${YELLOW}--debug${NC} Enable debug output" echo -e " ${YELLOW}--trace${NC} Enable bash tracing" @@ -168,6 +172,11 @@ if [[ "$@" == *"no-banner"* ]]; then SHOW_BANNER="false" fi +if [[ "$@" == *"gha"* ]]; then + debug "Preferring GHA." + DOWNLOAD_BASE="https://gha.elide.zip" +fi + if [[ "$@" == *"trace"* ]]; then debug "Trace mode is active." set -x diff --git a/packages/cli/packaging/install.sh b/packages/cli/packaging/install.sh index e9d4c87193..13add8c77e 100755 --- a/packages/cli/packaging/install.sh +++ b/packages/cli/packaging/install.sh @@ -1,8 +1,8 @@ #!/bin/bash set -e set +x -TOOL_REVISION="1.0.0-alpha14" -INSTALLER_VERSION="v0.15" +TOOL_REVISION="1.0.0-beta1" +INSTALLER_VERSION="v0.17" TOOL="cli" VERSION="v1" RELEASE="snapshot" @@ -66,13 +66,14 @@ if [[ "$@" == *"help"* ]]; then echo -e " ${YELLOW}--install-rev${NC}= Install a specific version of Elide" echo -e " ${YELLOW}--${NC}[${YELLOW}no${NC}]${YELLOW}-path${NC} Whether to add the install directory to the PATH" echo -e " ${YELLOW}--no-banner${NC} Opt out of the announcement banner after install" + echo -e " ${YELLOW}--gha${NC} Prefer to serve the download directly from GitHub" echo -e " ${YELLOW}--no-color${NC} Disable color output" echo -e " ${YELLOW}--debug${NC} Enable debug output" echo -e " ${YELLOW}--trace${NC} Enable bash tracing" echo -e " ${YELLOW}--version${NC} Show version information" echo -e " ${YELLOW}--help${NC} Show this help message" echo -e "" - echo -e "Copyright 2024, Elide Technologies, Inc." + echo -e "Copyright 2025, Elide Technologies, Inc." exit 0 fi if [[ "$@" == *"version"* ]]; then @@ -92,6 +93,10 @@ if [[ "$@" == *"no-banner"* ]]; then debug "Opting out of install banner." SHOW_BANNER="false" fi +if [[ "$@" == *"gha"* ]]; then + debug "Preferring GHA." + DOWNLOAD_BASE="https://gha.elide.zip" +fi if [[ "$@" == *"trace"* ]]; then debug "Trace mode is active." set -x diff --git a/packages/cli/packaging/npm/elide.js b/packages/cli/packaging/npm/elide.js index 0f501e33f9..b0910621f9 100644 --- a/packages/cli/packaging/npm/elide.js +++ b/packages/cli/packaging/npm/elide.js @@ -11,7 +11,7 @@ * License for the specific language governing permissions and limitations under the License. */ -const version = "1.0.0-alpha14" +const version = "1.0.0-beta1" const os = require("node:os") const fs = require("node:fs") diff --git a/packages/cli/packaging/npm/elide.sh b/packages/cli/packaging/npm/elide.sh index 297069a3d1..64654dd9e5 100755 --- a/packages/cli/packaging/npm/elide.sh +++ b/packages/cli/packaging/npm/elide.sh @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations under the License. # -latest_known_version="1.0.0-alpha14" +latest_known_version="1.0.0-beta1" # detect elide command, if it is not here, echo a message # and exit with a non-zero exit code diff --git a/packages/cli/packaging/npm/package.json.tpl b/packages/cli/packaging/npm/package.json.tpl index 4d9ae148fa..ad5b17d83f 100644 --- a/packages/cli/packaging/npm/package.json.tpl +++ b/packages/cli/packaging/npm/package.json.tpl @@ -1,6 +1,6 @@ { "name": "@elide-dev/elide", - "version": "1.0.0-alpha14", + "version": "1.0.0-beta1", "description": "Elide polyglot application runtime", "homepage": "https://elide.dev", "license": "MIT", @@ -17,7 +17,7 @@ ], "repository": "github:elide-dev/elide", "config": { - "elideVersion": "1.0.0-alpha14" + "elideVersion": "1.0.0-beta1" }, "author": { "name": "Sam Gammon", diff --git a/packages/cli/profiles.zip b/packages/cli/profiles.zip index c640ded336..eed35d6b4c 100644 Binary files a/packages/cli/profiles.zip and b/packages/cli/profiles.zip differ diff --git a/packages/cli/src/main/kotlin/dev/elide/cli/bridge/CliNativeBridge.kt b/packages/cli/src/main/kotlin/dev/elide/cli/bridge/CliNativeBridge.kt index 87303c5c81..5ac4d2e994 100644 --- a/packages/cli/src/main/kotlin/dev/elide/cli/bridge/CliNativeBridge.kt +++ b/packages/cli/src/main/kotlin/dev/elide/cli/bridge/CliNativeBridge.kt @@ -10,9 +10,6 @@ import org.graalvm.nativeimage.ImageInfo * Bridges native methods from Elide's `umbrella` library, via JNI access points. */ object CliNativeBridge { - // If flipped, the CLI native bridge will only be eagerly loaded under native conditions. - private const val EAGER_LOAD_NATIVE_ONLY = false - /** Native platform-agnostic library name for Elide's umbrella library. */ private const val NATIVE_LIB_NAME = "umbrella" @@ -21,7 +18,7 @@ object CliNativeBridge { /** Initialize the native layer. */ @Synchronized public fun initialize() { - if (!initialized && (!EAGER_LOAD_NATIVE_ONLY || ImageInfo.inImageCode())) { + if (!initialized && !ImageInfo.inImageCode()) { System.loadLibrary(NATIVE_LIB_NAME) initialized = true val init = initializeNative() diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/AbstractToolCommand.kt b/packages/cli/src/main/kotlin/elide/tool/cli/AbstractToolCommand.kt index b380432e89..6b30fa4921 100644 --- a/packages/cli/src/main/kotlin/elide/tool/cli/AbstractToolCommand.kt +++ b/packages/cli/src/main/kotlin/elide/tool/cli/AbstractToolCommand.kt @@ -24,7 +24,7 @@ import elide.tool.cli.err.AbstractToolError import elide.tool.cli.state.CommandOptions import elide.tool.cli.state.CommandState -public typealias CommandScope = CoroutineScope +typealias CommandScope = CoroutineScope /** Root base for all commands, which defines the structure of interaction with Clikt. */ abstract class CliCommandInvocation : @@ -190,6 +190,7 @@ abstract class AbstractToolCommand: * * @return Exit code from running the command. */ + @Suppress("UNUSED_PARAMETER") suspend fun exec(args: Array): CommandResult = execute(Dispatchers.Unconfined) { invoke(it).also(commandResult::set) // enter context and invoke } diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/Elide.kt b/packages/cli/src/main/kotlin/elide/tool/cli/Elide.kt index 1fcec96677..84af774055 100644 --- a/packages/cli/src/main/kotlin/elide/tool/cli/Elide.kt +++ b/packages/cli/src/main/kotlin/elide/tool/cli/Elide.kt @@ -26,7 +26,6 @@ import org.graalvm.nativeimage.ProcessProperties import picocli.CommandLine import picocli.CommandLine.Command import picocli.CommandLine.Help -import picocli.CommandLine.Option import picocli.CommandLine.Parameters import picocli.CommandLine.ScopeType import java.util.* @@ -38,6 +37,7 @@ import elide.runtime.core.HostPlatform import elide.runtime.core.HostPlatform.OperatingSystem import elide.runtime.gvm.internals.ProcessManager import elide.tool.cli.cfg.ElideCLITool.ELIDE_TOOL_VERSION +import elide.tool.cli.cmd.discord.ToolDiscordCommand import elide.tool.cli.cmd.help.HelpCommand import elide.tool.cli.cmd.info.ToolInfoCommand import elide.tool.cli.cmd.pkl.ToolPklCommand @@ -79,7 +79,7 @@ internal val applicationContextBuilder = ApplicationContext HelpCommand::class, ToolShellCommand::class, ToolPklCommand::class, - //ToolDiscordCommand::class, + ToolDiscordCommand::class, ], headerHeading = ("@|bold,fg(magenta)%n" + " ______ __ __ _____ ______%n" + @@ -94,9 +94,9 @@ internal val applicationContextBuilder = ApplicationContext "", " Usage: ", " or: elide @|bold,fg(cyan) info|help|discord|bug...|@ [OPTIONS]", - " or: elide @|bold,fg(yellow) srcfile.|@ [OPTIONS]", - " or: elide @|bold,fg(cyan) js|kt|jvm|python|ruby|wasm|node|deno|@ [OPTIONS] [FILE] [ARG...]", - " or: elide @|bold,fg(cyan) js|kt|jvm|python|ruby|wasm|node|deno|@ [OPTIONS] [@|bold,fg(cyan) --code|@ CODE]", + " or: elide @|bold,fg(yellow) srcfile.|@ [OPTIONS]", + " or: elide @|bold,fg(cyan) js|node|deno|@ [OPTIONS] [FILE] [ARG...]", + " or: elide @|bold,fg(cyan) js|node|deno|@ [OPTIONS] [@|bold,fg(cyan) --code|@ CODE]", " or: elide @|bold,fg(cyan) run|repl|serve|@ [OPTIONS] [FILE] [ARG...]", " or: elide @|bold,fg(cyan) run|repl|serve|@ [OPTIONS] [@|bold,fg(cyan) --code|@ CODE]", " or: elide @|bold,fg(cyan) run|repl|@ [OPTIONS]", @@ -350,15 +350,6 @@ internal val applicationContextBuilder = ApplicationContext // Bean context. @Inject internal lateinit var beanContext: BeanContext - /** Request timeout value to apply. */ - @Option( - names = ["--timeout"], - description = ["Timeout to apply to application requests. Expressed in seconds."], - defaultValue = "30", - scope = ScopeType.INHERIT, - ) - internal var timeout: Int = DEFAULT_CMD_TIMEOUT - /** Source file shortcut alias. */ @Parameters( index = "0", @@ -380,20 +371,27 @@ internal val applicationContextBuilder = ApplicationContext internal var args: List? = null override suspend fun CommandContext.invoke(state: CommandState): CommandResult { - // proxy to the `shell` command for a naked run - val bean = beanContext.getBean(ToolShellCommand::class.java).apply { - this@Elide.srcfile?.let { - if (!ToolShellCommand.languageAliasToEngineId.contains(it)) { - runnable = it - if (this@Elide.args?.isNotEmpty() == true) { - arguments = this@Elide.args!! + if (srcfile == "discord" || Statics.args.firstOrNull() == "discord") { + beanContext.getBean(ToolDiscordCommand::class.java).let { + it.call() + return it.commandResult.get() + } + } else { + // proxy to the `shell` command for a naked run + val bean = beanContext.getBean(ToolShellCommand::class.java).apply { + this@Elide.srcfile?.let { + if (!ToolShellCommand.languageAliasToEngineId.contains(it)) { + runnable = it + if (this@Elide.args?.isNotEmpty() == true) { + arguments = this@Elide.args!! + } + } else { + languageHint = it } - } else { - languageHint = it } } + bean.call() + return bean.commandResult.get() } - bean.call() - return bean.commandResult.get() } } diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/Statics.kt b/packages/cli/src/main/kotlin/elide/tool/cli/Statics.kt index e6c7ef17b3..d08657fe3a 100644 --- a/packages/cli/src/main/kotlin/elide/tool/cli/Statics.kt +++ b/packages/cli/src/main/kotlin/elide/tool/cli/Statics.kt @@ -50,7 +50,7 @@ internal object Statics { private val initialArgs = atomic>(emptyArray()) /** Invocation args. */ - internal val args: Array = initialArgs.value + internal val args: Array get() = initialArgs.value // Stream which drops all data. private val noOpStream by lazy { diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/cmd/discord/ToolDiscordCommand.kt b/packages/cli/src/main/kotlin/elide/tool/cli/cmd/discord/ToolDiscordCommand.kt index 00ddde7e9e..b8bb72b304 100644 --- a/packages/cli/src/main/kotlin/elide/tool/cli/cmd/discord/ToolDiscordCommand.kt +++ b/packages/cli/src/main/kotlin/elide/tool/cli/cmd/discord/ToolDiscordCommand.kt @@ -16,8 +16,6 @@ package elide.tool.cli.cmd.discord import io.micronaut.core.annotation.Introspected import picocli.CommandLine.Command import picocli.CommandLine.Option -import java.awt.Desktop -import java.net.URI import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import elide.annotations.Singleton @@ -36,7 +34,6 @@ import elide.tool.cli.ToolState @Singleton internal open class ToolDiscordCommand : AbstractSubcommand() { companion object { private const val REDIRECT_TARGET = "https://elide.dev/discord" - private val REDIRECT_URI = URI(REDIRECT_TARGET) } /** Whether to open the link in the default browser (defaults to `true`). */ @@ -56,13 +53,10 @@ import elide.tool.cli.ToolState val os = System.getProperty("os.name", "unknown").lowercase() when { - Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE) -> - Desktop.getDesktop().browse(REDIRECT_URI) - os.contains("windows") -> { Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler $REDIRECT_TARGET") } - os.contains("mac") || os.contains("darwin") -> { + os.contains("mac") || os.contains("darwin") || os.contains("linux") -> { Runtime.getRuntime().exec("open $REDIRECT_TARGET") } else -> printLink.invoke() diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/LanguageSelector.kt b/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/LanguageSelector.kt index 841ec1140d..be801124ec 100644 --- a/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/LanguageSelector.kt +++ b/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/LanguageSelector.kt @@ -28,7 +28,6 @@ import elide.tool.cli.GuestLanguage.RUBY import elide.tool.cli.GuestLanguage.TYPESCRIPT import elide.tool.cli.GuestLanguage.WASM import elide.tool.cli.cmd.repl.ToolShellCommand.Companion.languageAliasToEngineId -import elide.tool.project.ProjectInfo /** Allows selecting a language by name. */ @Introspected @ReflectiveAccess class LanguageSelector { @@ -115,7 +114,6 @@ import elide.tool.project.ProjectInfo internal fun primary( spec: CommandSpec?, langs: EnumSet, - project: () -> ProjectInfo?, languageHint: String?, ): GuestLanguage { // languages by flags diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/ToolShellCommand.kt b/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/ToolShellCommand.kt index 0d69b4e247..8cc69a0d5c 100644 --- a/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/ToolShellCommand.kt +++ b/packages/cli/src/main/kotlin/elide/tool/cli/cmd/repl/ToolShellCommand.kt @@ -50,7 +50,6 @@ import java.nio.file.Path import java.nio.file.Paths import java.util.* import java.util.concurrent.Phaser -import java.util.concurrent.TimeUnit import java.util.function.Supplier import java.util.stream.Stream import javax.tools.ToolProvider @@ -79,6 +78,7 @@ import elide.runtime.plugins.vfs.vfs import elide.tool.cli.* import elide.tool.cli.GuestLanguage.* import elide.tool.cli.cfg.ElideCLITool.GVM_RESOURCES +import elide.tool.cli.err.AbstractToolError import elide.tool.cli.err.ShellError import elide.tool.cli.options.AccessControlOptions import elide.tool.cli.options.EngineJavaScriptOptions @@ -117,8 +117,8 @@ private typealias ContextAccessor = () -> PolyglotContext " or: elide @|bold,fg(cyan) run|shell|@ --js [OPTIONS]", " or: elide @|bold,fg(cyan) run|shell|@ --languages", " or: elide @|bold,fg(cyan) run|shell|@ --language=[@|bold,fg(green) JS|@] [OPTIONS]", - " or: elide @|bold,fg(cyan) js|kt|jvm|python|ruby|wasm|node|deno|@ [OPTIONS]", - " or: elide @|bold,fg(cyan) js|kt|jvm|python|ruby|wasm|node|deno|@ [OPTIONS] FILE", + " or: elide @|bold,fg(cyan) js|node|deno|@ [OPTIONS]", + " or: elide @|bold,fg(cyan) js|node|deno|@ [OPTIONS] FILE", ], ) @Introspected @@ -1129,15 +1129,13 @@ private typealias ContextAccessor = () -> PolyglotContext requireNotNull(targetLang) { "Failed to resolve target language for source file" } - - return script.bufferedReader(StandardCharsets.UTF_8).use { reader -> - Source.newBuilder(targetLang.symbol, reader, script.name) - .encoding(StandardCharsets.UTF_8) - .internal(false) - .cached(true) - .uri(script.toURI()) - .build() - } + val abs = script.absoluteFile + return Source.newBuilder(targetLang.symbol, abs) + .encoding(StandardCharsets.UTF_8) + .internal(false) + .cached(true) + .uri(abs.toURI()) + .build() } private val commandSpecifiesServer: Boolean by lazy { @@ -1282,7 +1280,6 @@ private typealias ContextAccessor = () -> PolyglotContext // of supported languages. If JS is disabled, there can only be one language; otherwise the default language is JS. If // a file is provided with a specific matching file extension for a given language, that language is used. private fun resolvePrimaryLanguage( - project: () -> ProjectInfo?, languageSelector: LanguageSelector?, languages: EnumSet, fileInput: File?, @@ -1297,7 +1294,7 @@ private typealias ContextAccessor = () -> PolyglotContext languages.size == 1 -> languages.first() // an explicit flag from a user takes top precedence - languageSelector != null -> languageSelector.primary(commandSpec, languages, project, languageHint) + languageSelector != null -> languageSelector.primary(commandSpec, languages, languageHint) // we have to have at least one language languages.isEmpty() -> error("Cannot start VM with no enabled guest languages") @@ -1356,7 +1353,7 @@ private typealias ContextAccessor = () -> PolyglotContext langs.forEach { lang -> when (lang) { // Primary Engines - JS -> install(elide.runtime.plugins.js.JavaScript) { + JS -> configure(elide.runtime.plugins.js.JavaScript) { logging.debug("Configuring JS VM") resourcesPath = GVM_RESOURCES executable = cmd @@ -1365,12 +1362,12 @@ private typealias ContextAccessor = () -> PolyglotContext jsSettings.apply(this) } - WASM -> install(elide.runtime.plugins.wasm.Wasm) { + WASM -> configure(elide.runtime.plugins.wasm.Wasm) { logging.debug("Configuring WASM VM") resourcesPath = GVM_RESOURCES } - TYPESCRIPT -> install(elide.runtime.plugins.typescript.TypeScript) { + TYPESCRIPT -> configure(elide.runtime.plugins.typescript.TypeScript) { logging.debug("Configuring TypeScript support") resourcesPath = GVM_RESOURCES } @@ -1385,15 +1382,13 @@ private typealias ContextAccessor = () -> PolyglotContext // } // } -// PYTHON -> ignoreNotInstalled { -// install(elide.runtime.plugins.python.Python) { -// logging.debug("Configuring Python VM") -// installIntrinsics(intrinsics, GraalVMGuest.PYTHON, versionProp) -// resourcesPath = GVM_RESOURCES -// executable = cmd -// executableList = listOf(cmd).plus(args) -// } -// } + PYTHON -> configure(elide.runtime.plugins.python.Python) { + logging.debug("Configuring Python VM") + installIntrinsics(intrinsics, GraalVMGuest.PYTHON, versionProp) + resourcesPath = GVM_RESOURCES + executable = cmd + executableList = listOf(cmd).plus(args) + } // // Secondary Engines: JVM // JVM -> ignoreNotInstalled { @@ -1490,7 +1485,6 @@ private typealias ContextAccessor = () -> PolyglotContext // resolve the language to use val projectFut = projectConfigJob.asCompletableFuture() - val project = { projectFut.get(1, TimeUnit.SECONDS) } // apply project configurations to context, if needed projectFut.whenComplete { value, err -> @@ -1525,7 +1519,6 @@ private typealias ContextAccessor = () -> PolyglotContext }) val primaryLang: (File?) -> GuestLanguage = { target -> resolvePrimaryLanguage( - project, language, allSupportedLangs, when { @@ -1538,106 +1531,132 @@ private typealias ContextAccessor = () -> PolyglotContext ) } - resolveEngine(onByDefaultLangs).unwrap().use { - withDeferredContext(onByDefaultLangs) { - // warn about experimental status, as applicable - if (verbose && experimentalLangs.isNotEmpty()) { - logging.warn( - "Caution: Support for ${experimentalLangs.joinToString(", ") { i -> i.formalName }} " + - "considered experimental.", - ) - } - - when (val scriptTargetOrCode = runnable) { - // run in interactive mode - null, "-" -> if (useStdin || runnable == "-") { - // activate interactive behavior - enableInteractive() - - // consume from stdin - primaryLang(null).let { lang -> - input.buffer.use { buffer -> - executeSource( - "from stdin", - langs, - lang, - it, - Source.newBuilder(lang.symbol, buffer, "stdin") - .cached(false) - .buildLiteral(), - ) - } - } - } else if (!serveMode()) { - logging.debug("Beginning interactive guest session") - enableInteractive() - beginInteractiveSession( - langs, - primaryLang(null), - engine(), - it, + try { + resolveEngine(onByDefaultLangs).unwrap().use { + withDeferredContext(onByDefaultLangs) { + // warn about experimental status, as applicable + if (verbose && experimentalLangs.isNotEmpty()) { + logging.warn( + "Caution: Support for ${experimentalLangs.joinToString(", ") { i -> i.formalName }} " + + "considered experimental.", ) - } else { - logging.error("To run a server, pass a file, or code via stdin or `-c`") } - // run a script as a file, or perhaps a string literal - else -> if (executeLiteral) { - logging.trace("Interpreting runnable parameter as code") - executeSingleStatement( - langs, - primaryLang(null), - it, - scriptTargetOrCode, - ) - } else { - // no literal execution flag = we need to parse `runnable` as a file path - logging.trace("Interpreting runnable parameter as file path (`--code` was not passed)") - File(scriptTargetOrCode).let { scriptFile -> - primaryLang.invoke(scriptFile).let { lang -> - when (lang.executionMode) { - // if this engine supports direct execution of source files, execute it that way - ExecutionMode.SOURCE_DIRECT -> executeSource( - scriptFile.name, + when (val scriptTargetOrCode = runnable) { + // run in interactive mode + null, "-" -> if (useStdin || runnable == "-") { + // activate interactive behavior + enableInteractive() + + // consume from stdin + primaryLang(null).let { lang -> + input.buffer.use { buffer -> + executeSource( + "from stdin", langs, lang, it, - readExecutableScript( - allSupportedLangs, - langs, - lang, - scriptFile, - ), + Source.newBuilder(lang.symbol, buffer, "stdin") + .cached(false) + .buildLiteral(), ) + } + } + } else if (!serveMode()) { + logging.debug("Beginning interactive guest session") + enableInteractive() + beginInteractiveSession( + langs, + primaryLang(null), + engine(), + it, + ) + } else { + logging.error("To run a server, pass a file, or code via stdin or `-c`") + } - // otherwise, if we need to "compile" this source first (as is the case for LLVM targets and JVM - // targets like Java and Kotlin), then conduct that phase and load a symbol to begin execution. - ExecutionMode.SOURCE_COMPILED -> executeCompiled( - scriptFile, - langs, - lang, - it, - compileEntrypoint( + // run a script as a file, or perhaps a string literal + else -> if (executeLiteral) { + logging.trace("Interpreting runnable parameter as code") + executeSingleStatement( + langs, + primaryLang(null), + it, + scriptTargetOrCode, + ) + } else { + // no literal execution flag = we need to parse `runnable` as a file path + logging.trace("Interpreting runnable parameter as file path (`--code` was not passed)") + File(scriptTargetOrCode).let { scriptFile -> + primaryLang.invoke(scriptFile).let { lang -> + when (lang.executionMode) { + // if this engine supports direct execution of source files, execute it that way + ExecutionMode.SOURCE_DIRECT -> executeSource( + scriptFile.name, + langs, lang, it, + readExecutableScript( + allSupportedLangs, + langs, + lang, + scriptFile, + ), + ) + + // otherwise, if we need to "compile" this source first (as is the case for LLVM targets and JVM + // targets like Java and Kotlin), then conduct that phase and load a symbol to begin execution. + ExecutionMode.SOURCE_COMPILED -> executeCompiled( scriptFile, - ), - ) + langs, + lang, + it, + compileEntrypoint( + lang, + it, + scriptFile, + ), + ) + } } } } } } + + // don't exit if we have a running server + if (serverRunning.value) { + // wait for all tasks to arrive + logging.debug("Waiting for long-lived tasks to arrive") + phaser.value.arriveAndAwaitAdvance() + logging.debug("Exiting") + } + return success() } + } catch (err: AbstractToolError.Known) { + when (err.case) { + ShellError.FILE_NOT_FOUND -> { + logging.warn("File not found: '$runnable'") + return err("File not found", exitCode = 1) + } + + ShellError.FILE_NOT_READABLE -> { + logging.warn("File not readable: '$runnable'") + return err("File not readable", exitCode = 1) + } - // don't exit if we have a running server - if (serverRunning.value) { - // wait for all tasks to arrive - logging.debug("Waiting for long-lived tasks to arrive") - phaser.value.arriveAndAwaitAdvance() - logging.debug("Exiting") + ShellError.NOT_A_FILE -> { + logging.warn("Not a file: '$runnable'") + return err("Not a file", exitCode = 1) + } + + ShellError.FILE_TYPE_MISMATCH -> { + logging.warn("File type mismatch: '$runnable'") + return err("File type mismatch", exitCode = 1) + } + + else -> throw err } - return success() } } } diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/err/AbstractToolError.kt b/packages/cli/src/main/kotlin/elide/tool/cli/err/AbstractToolError.kt index d2902bd6fd..d22e490e8a 100644 --- a/packages/cli/src/main/kotlin/elide/tool/cli/err/AbstractToolError.kt +++ b/packages/cli/src/main/kotlin/elide/tool/cli/err/AbstractToolError.kt @@ -65,7 +65,7 @@ import elide.tool.cli.ToolCommand /** Implements a known error case, defined from a [ToolErrorCase] implementation. */ internal class Known internal constructor ( - case: ToolErrorCase<*>, + internal val case: ToolErrorCase<*>, command: ToolCommand? = null, additionalMessage: String? = null, cause: Throwable? = null, diff --git a/packages/cli/src/main/kotlin/elide/tool/cli/main.kt b/packages/cli/src/main/kotlin/elide/tool/cli/main.kt index a57bf07719..d0e50c4e79 100644 --- a/packages/cli/src/main/kotlin/elide/tool/cli/main.kt +++ b/packages/cli/src/main/kotlin/elide/tool/cli/main.kt @@ -122,6 +122,7 @@ inline fun setStaticProperties(binPath: String) { System.setProperty("java.library.path", newJavaPath) System.setProperty("elide.js.vm.enableStreams", "true") + System.setProperty("org.jline.terminal.disableDeprecatedProviderWarning", "true") System.setProperty("java.util.logging.config.class", "elide.tool.cli.InertLoggerConfigurator") System.setProperty("jdk.httpclient.allowRestrictedHeaders", "Host,Content-Length") System.setProperty("jansi.eager", "false") diff --git a/packages/cli/src/main/kotlin/elide/tool/control/AbstractScriptEngineFactory.kt b/packages/cli/src/main/kotlin/elide/tool/control/AbstractScriptEngineFactory.kt deleted file mode 100644 index 63084794a3..0000000000 --- a/packages/cli/src/main/kotlin/elide/tool/control/AbstractScriptEngineFactory.kt +++ /dev/null @@ -1,507 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.tool.control - -import org.graalvm.home.Version -import org.graalvm.polyglot.* -import java.io.* -import javax.script.* -import kotlin.collections.MutableMap.MutableEntry -import elide.runtime.gvm.GraalVMGuest - -/** - * TBD. - */ -abstract class AbstractScriptEngineFactory protected constructor (val engine: GraalVMGuest) : ScriptEngineFactory { - companion object { - private val polyglotEngine = Engine.newBuilder().build() - } - - private val languageId: String = engine.engine - private val language by lazy { - requireNotNull(polyglotEngine.languages[languageId]) { - "Failed to resolve language implementation with ID $languageId" - } - } - - override fun getEngineName(): String { - return language.implementationName - } - - override fun getEngineVersion(): String { - return Version.getCurrent().toString() - } - - override fun getExtensions(): MutableList { - return mutableListOf(languageId) - } - - override fun getMimeTypes(): MutableList? { - return language.mimeTypes.toMutableList() - } - - override fun getNames(): MutableList? { - return mutableListOf(language.name, languageId, language.implementationName) - } - - override fun getLanguageName(): String { - return language.name - } - - override fun getLanguageVersion(): String { - return language.version - } - - override fun getParameter(key: String): Any? { - return when (key) { - ScriptEngine.ENGINE -> engineName - ScriptEngine.ENGINE_VERSION -> engineVersion - ScriptEngine.LANGUAGE -> languageName - ScriptEngine.LANGUAGE_VERSION -> languageVersion - ScriptEngine.NAME -> languageId - else -> null - } - } - - override fun getMethodCallSyntax(obj: String, m: String, vararg args: String): String { - throw UnsupportedOperationException("Unimplemented method 'getMethodCallSyntax'") - } - - override fun getOutputStatement(toDisplay: String): String { - throw UnsupportedOperationException("Unimplemented method 'getOutputStatement'") - } - - override fun getProgram(vararg statements: String): String { - throw UnsupportedOperationException("Unimplemented method 'getProgram'") - } - - override fun getScriptEngine(): ScriptEngine { - return PolyglotEngine(languageId, this) - } - - private class PolyglotEngine constructor( - private val languageId: String, - private val factory: ScriptEngineFactory - ) : ScriptEngine, - Compilable, Invocable, AutoCloseable { - private val defaultContext: PolyglotContext = PolyglotContext(languageId) - - override fun close() { - defaultContext.getContext()!!.close() - } - - @Throws(ScriptException::class) override fun compile(script: String): CompiledScript { - val src = Source.create(languageId, script) - try { - defaultContext.getContext()!!.parse(src) // only for the side-effect of validating the source - } catch (e: PolyglotException) { - throw ScriptException(e) - } - return PolyglotCompiledScript(src, this) - } - - @Throws(ScriptException::class) override fun compile(script: Reader): CompiledScript { - val src: Source - try { - src = Source.newBuilder(languageId, script, "sourcefromreader").build() - defaultContext.getContext()!!.parse(src) // only for the side-effect of validating the source - } catch (e: PolyglotException) { - throw ScriptException(e) - } catch (e: IOException) { - throw ScriptException(e) - } - return PolyglotCompiledScript(src, this) - } - - @Throws(ScriptException::class) override fun eval(script: String, context: ScriptContext): Any { - return if (context is PolyglotContext) { - try { - context.getContext()!!.eval(languageId, script).`as`( - Any::class.java, - ) - } catch (e: PolyglotException) { - throw ScriptException(e) - } - } else { - throw ClassCastException("invalid context") - } - } - - @Throws(ScriptException::class) override fun eval(reader: Reader, context: ScriptContext): Any { - val src: Source = try { - Source.newBuilder(languageId, reader, "sourcefromreader").build() - } catch (e: IOException) { - throw ScriptException(e) - } - return if (context is PolyglotContext) { - try { - context.getContext()!!.eval(src).`as`(Any::class.java) - } catch (e: PolyglotException) { - throw ScriptException(e) - } - } else { - throw ScriptException("invalid context") - } - } - - @Throws(ScriptException::class) override fun eval(script: String): Any { - return eval(script, defaultContext) - } - - @Throws(ScriptException::class) override fun eval(reader: Reader): Any { - return eval(reader, defaultContext) - } - - @Throws(ScriptException::class) override fun eval(script: String, n: Bindings): Any { - throw UnsupportedOperationException("Bindings for Polyglot language cannot be created explicitly") - } - - @Throws(ScriptException::class) override fun eval(reader: Reader, n: Bindings): Any { - throw UnsupportedOperationException("Bindings for Polyglot language cannot be created explicitly") - } - - override fun put(key: String, value: Any) { - defaultContext.getBindings(ScriptContext.ENGINE_SCOPE)!![key] = value - } - - override fun get(key: String): Any { - return defaultContext.getBindings(ScriptContext.ENGINE_SCOPE)!![key]!! - } - - override fun getBindings(scope: Int): Bindings? { - return defaultContext.getBindings(scope) - } - - override fun setBindings(bindings: Bindings, scope: Int) { - defaultContext.setBindings(bindings, scope) - } - - override fun createBindings(): Bindings { - throw UnsupportedOperationException("Bindings for Polyglot language cannot be created explicitly") - } - - override fun getContext(): ScriptContext { - return defaultContext - } - - override fun setContext(context: ScriptContext) { - throw UnsupportedOperationException("The context of a Polyglot ScriptEngine cannot be modified.") - } - - override fun getFactory(): ScriptEngineFactory { - return factory - } - - @Throws( - ScriptException::class, - NoSuchMethodException::class, - ) override fun invokeMethod(thiz: Any, name: String, vararg args: Any): Any { - return try { - val receiver = defaultContext.getContext()!!.asValue(thiz) - if (receiver.canInvokeMember(name)) { - receiver.invokeMember(name, *args).`as`(Any::class.java) - } else { - throw NoSuchMethodException(name) - } - } catch (e: PolyglotException) { - throw ScriptException(e) - } - } - - @Throws( - ScriptException::class, - NoSuchMethodException::class, - ) override fun invokeFunction(name: String, vararg args: Any): Any { - throw UnsupportedOperationException() - } - - override fun getInterface(clasz: Class?): T { - throw UnsupportedOperationException() - } - - override fun getInterface(thiz: Any?, clasz: Class?): T { - return defaultContext.getContext()!!.asValue(thiz).`as`(clasz) - } - } - - private class PolyglotContext (private val languageId: String) : ScriptContext { - private var context: Context? = null - private val `in`: PolyglotReader - private val out: PolyglotWriter - private val err: PolyglotWriter - private var globalBindings: Bindings? = null - - init { - `in` = PolyglotReader(InputStreamReader(System.`in`)) - out = PolyglotWriter(OutputStreamWriter(System.out)) - err = PolyglotWriter(OutputStreamWriter(System.err)) - } - - fun getContext(): Context? { - if (context == null) { - val builder = Context.newBuilder(languageId) - .`in`(`in`) - .out(out) - .err(err) - .allowAllAccess(true) - val globalBindings = getBindings(ScriptContext.GLOBAL_SCOPE) - if (globalBindings != null) { - for ((key, value) in globalBindings) { - if (value is String) { - builder.option(key, value) - } - } - } - context = builder.build() - } - return context - } - - override fun setBindings(bindings: Bindings, scope: Int) { - globalBindings = if (scope == ScriptContext.GLOBAL_SCOPE) { - if (context == null) { - bindings - } else { - throw UnsupportedOperationException( - "Global bindings for Polyglot language can only be set before the context is initialized.", - ) - } - } else { - throw UnsupportedOperationException("Bindings objects for Polyglot language is final.") - } - } - - override fun getBindings(scope: Int): Bindings? { - return if (scope == ScriptContext.ENGINE_SCOPE) { - PolyglotBindings(getContext()!!.getBindings(languageId)) - } else if (scope == ScriptContext.GLOBAL_SCOPE) { - globalBindings - } else { - null - } - } - - override fun setAttribute(name: String, value: Any, scope: Int) { - if (scope == ScriptContext.ENGINE_SCOPE) { - getBindings(scope)!![name] = value - } else if (scope == ScriptContext.GLOBAL_SCOPE) { - if (context == null) { - globalBindings!![name] = value - } else { - throw IllegalStateException("Cannot modify global bindings after context creation.") - } - } - } - - override fun getAttribute(name: String, scope: Int): Any? { - if (scope == ScriptContext.ENGINE_SCOPE) { - return getBindings(scope)!![name]!! - } else if (scope == ScriptContext.GLOBAL_SCOPE) { - return globalBindings!![name]!! - } - return null - } - - override fun removeAttribute(name: String, scope: Int): Any? { - val prev = getAttribute(name, scope) - if (prev != null) { - if (scope == ScriptContext.ENGINE_SCOPE) { - getBindings(scope)!!.remove(name) - } else if (scope == ScriptContext.GLOBAL_SCOPE) { - if (context == null) { - globalBindings!!.remove(name) - } else { - throw IllegalStateException("Cannot modify global bindings after context creation.") - } - } - } - return prev - } - - override fun getAttribute(name: String): Any? { - return getAttribute(name, ScriptContext.ENGINE_SCOPE) - } - - override fun getAttributesScope(name: String): Int { - if (getAttribute(name, ScriptContext.ENGINE_SCOPE) != null) { - return ScriptContext.ENGINE_SCOPE - } else if (getAttribute(name, ScriptContext.GLOBAL_SCOPE) != null) { - return ScriptContext.GLOBAL_SCOPE - } - return -1 - } - - override fun getWriter(): Writer { - return out.writer - } - - override fun getErrorWriter(): Writer { - return err.writer - } - - override fun setWriter(writer: Writer) { - out.writer = writer - } - - override fun setErrorWriter(writer: Writer) { - err.writer = writer - } - - override fun getReader(): Reader { - return `in`.reader - } - - override fun setReader(reader: Reader) { - `in`.reader = reader - } - - override fun getScopes(): MutableList { - return mutableListOf(ScriptContext.ENGINE_SCOPE, ScriptContext.GLOBAL_SCOPE) - } - - private class PolyglotReader(inputStreamReader: InputStreamReader) : InputStream() { - @Volatile var reader: Reader - - init { - reader = inputStreamReader - } - - @Throws(IOException::class) override fun read(): Int { - return reader.read() - } - } - - private class PolyglotWriter(outputStreamWriter: OutputStreamWriter) : OutputStream() { - @Volatile var writer: Writer - - init { - writer = outputStreamWriter - } - - @Throws(IOException::class) override fun write(b: Int) { - writer.write(b) - } - } - } - - private class PolyglotCompiledScript(private val source: Source, private val engine: ScriptEngine) : - CompiledScript() { - @Throws(ScriptException::class) override fun eval(context: ScriptContext): Any { - if (context is PolyglotContext) { - return context.getContext()!!.eval(source).`as`(Any::class.java) - } - throw UnsupportedOperationException( - "Polyglot CompiledScript instances can only be evaluated in Polyglot.", - ) - } - - override fun getEngine(): ScriptEngine { - return engine - } - } - - private class PolyglotBindings internal constructor(private val languageBindings: Value) : Bindings { - override val size: Int - get() = keys.size - - override fun isEmpty(): Boolean { - return size == 0 - } - - override fun containsValue(value: Any): Boolean { - for (s in keys) { - if (get(s) === value) { - return true - } - } - return false - } - - override fun clear() { - for (s in keys) { - remove(s) - } - } - - override val keys: MutableSet - get() = languageBindings.memberKeys - - override val values: MutableCollection get() { - val values: MutableList = ArrayList() - for (s in keys) { - when (val v = get(s)) { - null -> {} - else -> values.add(v) - } - } - return values - } - - override val entries: MutableSet> get() { - val values: MutableSet> = HashSet() - for (s in keys) { - values.add( - object : MutableEntry { - override val key: String get() = s - override val value: Any get() = get(s)!! - override fun setValue(newValue: Any): Any { - return put(s, newValue)!! - } - }, - ) - } - return values - } - - override fun put(key: String, value: Any): Any? { - val previous = get(key) - languageBindings.putMember(key, value) - return previous - } - - override fun putAll(from: Map) { - for ((key, value) in from) { - put(key, value) - } - } - - override fun containsKey(key: String?): Boolean { - return if (key is String) { - languageBindings.hasMember(key) - } else { - false - } - } - - override fun get(key: String?): Any? { - if (key is String) { - val value = languageBindings.getMember(key) - if (value != null) { - return value.`as`(Any::class.java) - } - } - return null - } - - override fun remove(key: String?): Any? { - val prev = get(key) - return if (prev != null) { - languageBindings.removeMember(key as String) - prev - } else { - null - } - } - } -} diff --git a/packages/cli/src/main/kotlin/elide/tool/control/JvmScriptEngine.kt b/packages/cli/src/main/kotlin/elide/tool/control/JvmScriptEngine.kt deleted file mode 100644 index 2ab3068f40..0000000000 --- a/packages/cli/src/main/kotlin/elide/tool/control/JvmScriptEngine.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.tool.control - -import elide.runtime.gvm.GraalVMGuest.JVM - -/** - * TBD. - */ -class JvmScriptEngine : AbstractScriptEngineFactory(JVM) diff --git a/packages/cli/src/main/kotlin/elide/tool/control/PythonScriptEngine.kt b/packages/cli/src/main/kotlin/elide/tool/control/PythonScriptEngine.kt deleted file mode 100644 index 8ec6122305..0000000000 --- a/packages/cli/src/main/kotlin/elide/tool/control/PythonScriptEngine.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.tool.control - -import elide.runtime.gvm.GraalVMGuest.PYTHON - -/** - * TBD. - */ -class PythonScriptEngine : AbstractScriptEngineFactory(PYTHON) diff --git a/packages/cli/src/main/kotlin/elide/tool/control/RubyScriptEngine.kt b/packages/cli/src/main/kotlin/elide/tool/control/RubyScriptEngine.kt deleted file mode 100644 index 3041ff98c0..0000000000 --- a/packages/cli/src/main/kotlin/elide/tool/control/RubyScriptEngine.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.tool.control - -import elide.runtime.gvm.GraalVMGuest.RUBY - -/** - * TBD. - */ -class RubyScriptEngine : AbstractScriptEngineFactory(RUBY) diff --git a/packages/cli/src/main/kotlin/elide/tool/engine/EngineTests.kt b/packages/cli/src/main/kotlin/elide/tool/engine/EngineTests.kt deleted file mode 100644 index 2b1b2e7e39..0000000000 --- a/packages/cli/src/main/kotlin/elide/tool/engine/EngineTests.kt +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -//@file:Suppress("RubyInterpreter", "RubyResolve") -// -//package elide.tool.engine -// -//import io.micronaut.context.annotation.Bean -//import io.micronaut.context.annotation.Requires -//import io.micronaut.context.condition.Condition -//import io.micronaut.context.condition.ConditionContext -//import org.graalvm.polyglot.Context -//import org.graalvm.polyglot.Engine -//import org.graalvm.polyglot.Source -//import elide.tool.annotations.EmbeddedTest -//import elide.tool.testing.SelfTest -//import elide.tool.testing.TestContext.Companion.assertDoesNotThrow - - -//abstract class LanguageCondition ( -// private val language: String, -// private val disabledByDefault: Boolean = false, -//): Condition { -// companion object { -// private val ENGINE = Engine.create() -// } -// -// override fun matches(context: ConditionContext<*>): Boolean { -// return ENGINE.languages.containsKey(language) && !disabledByDefault -// } -//} - -//class JsEngineCondition: LanguageCondition("js") -//class PythonEngineCondition: LanguageCondition("python") -//class RubyEngineCondition: LanguageCondition("ruby") -//class JvmEngineCondition: LanguageCondition("java") -//class WasmEngineCondition: LanguageCondition("wasm") -// -///** Basic engine tests. */ -//@Bean @EmbeddedTest class EngineTest : SelfTest() { -// override suspend fun SelfTestContext.test() = assertDoesNotThrow { -// Engine.create() -// }.let { -// assertNotNull(it, "should be able to create an engine") -// assertTrue(it.languages.isNotEmpty(), "should be able to query engine languages") -// -// assertTrue(it.languages.containsKey("js")) { -// "javascript language support should always be present" -// } -// } -//} -// -///** JavaScript engine tests. */ -//@Bean @EmbeddedTest class JsEngineTest : SelfTest() { -// override suspend fun SelfTestContext.test() = assertDoesNotThrow { -// Context.newBuilder("js") -// .allowAllAccess(true) -// .build() -// }.let { -// assertNotNull(it, "should be able to create plain js context") -// it.use { ctx -> -// try { -// ctx.enter() -// val result = ctx.eval(Source.create( -// "js", -// // language=javascript -// """ -// function hello() { -// return "hi"; -// } -// hello(); -// """.trimIndent() -// )) -// -// assertNotNull(result, "should get result from pure js execution") -// assertFalse(result.isNull, "should not get `null` guest value for expected \"hi\"") -// assertEquals("hi", result.asString(), "should be able to decode guest string") -// } finally { -// ctx.leave() -// } -// } -// } -//} -// -///** WASM engine tests. */ -//@Bean @EmbeddedTest class WasmEngineTest : SelfTest() { -// override suspend fun SelfTestContext.test() = assertDoesNotThrow { -// Context.newBuilder("wasm") -// .allowAllAccess(true) -// .build() -// }.let { -// assertNotNull(it, "should be able to create plain wasm context") -// } -//} -// -///** Python engine tests. */ -//@Requires(condition = PythonEngineCondition::class) -//@Bean @EmbeddedTest class PythonEngineTest : SelfTest() { -// override suspend fun SelfTestContext.test() = assertDoesNotThrow { -// Context.newBuilder("python") -// .environment(System.getenv()) -// .allowAllAccess(true) -// .build() -// }.let { -// assertNotNull(it, "should be able to create plain python context") -// it.use { ctx -> -// try { -// ctx.enter() -// val result = ctx.eval(Source.create( -// "python", -// // language=python -// """ -// def hello(): -// return "hi" -// hello() -// """.trimIndent() -// )) -// -// assertNotNull(result, "should get result from pure python execution") -// assertFalse(result.isNull, "should not get `null` guest value for expected \"hi\"") -// assertEquals("hi", result.asString(), "should be able to decode guest string") -// } finally { -// ctx.leave() -// } -// } -// } -//} -// -///** Ruby engine tests. */ -//@Requires(condition = RubyEngineCondition::class) -//@Bean @EmbeddedTest class RubyEngineTest : SelfTest() { -// override suspend fun SelfTestContext.test() = assertDoesNotThrow { -// Context.newBuilder("ruby") -// .environment(System.getenv()) -// .allowAllAccess(true) -// .build() -// }.let { -// assertNotNull(it, "should be able to create plain ruby context") -// it.use { ctx -> -// val result = try { -// ctx.enter() -// ctx.eval(Source.create( -// "ruby", -// // language=ruby -// """ -// def hello -// "hi" -// end -// hello -// """.trimIndent() -// )) -// } finally { -// ctx.leave() -// } -// -// assertNotNull(result, "should get result from pure ruby execution") -// assertFalse(result.isNull, "should not get `null` guest value for expected \"hi\"") -// assertEquals("hi", result.asString(), "should be able to decode guest string") -// } -// } -//} -// -///** JVM engine tests. */ -//@Requires(condition = JvmEngineCondition::class) -//@Bean @EmbeddedTest class JvmEngineTest : SelfTest() { -// override suspend fun SelfTestContext.test() = assertDoesNotThrow { -// Context.newBuilder("java").build() -// }.let { -// assertNotNull(it, "should be able to create plain java context") -// } -//} -// -///** Should always provide an OS name. */ -//@Bean @EmbeddedTest class OsNameTest : SelfTest() { -// override suspend fun SelfTestContext.test() { -// assertNotNull(System.getProperty("os.name"), "`os.name` should not be `null`") -// } -//} -// -///** Should always provide an OS arch. */ -//@Bean @EmbeddedTest class OsArchTest : SelfTest() { -// override suspend fun SelfTestContext.test() { -// assertNotNull(System.getProperty("os.arch"), "`os.arch` should not be `null`") -// } -//} diff --git a/packages/cli/src/main/kotlin/elide/tool/feature/ToolingUmbrellaFeature.kt b/packages/cli/src/main/kotlin/elide/tool/feature/ToolingUmbrellaFeature.kt index 933fb73499..8c32684871 100644 --- a/packages/cli/src/main/kotlin/elide/tool/feature/ToolingUmbrellaFeature.kt +++ b/packages/cli/src/main/kotlin/elide/tool/feature/ToolingUmbrellaFeature.kt @@ -15,6 +15,7 @@ package elide.tool.feature import dev.elide.cli.bridge.CliNativeBridge +import org.graalvm.nativeimage.Platform import org.graalvm.nativeimage.hosted.Feature.BeforeAnalysisAccess import org.graalvm.nativeimage.hosted.Feature.IsInConfigurationAccess import org.graalvm.nativeimage.hosted.RuntimeJNIAccess.register @@ -42,6 +43,66 @@ import elide.runtime.feature.engine.AbstractStaticNativeLibraryFeature eager = true, )) else emptyList() + override fun unpackNatives(access: BeforeAnalysisAccess) = when { + /* Dynamic JNI */ + + Platform.includedIn(Platform.LINUX::class.java) -> when (System.getProperty("os.arch")) { + "x86_64", "amd64" -> access.unpackLibrary( + "jnidispatch", + "jnidispatch", + "x86-64", + "com/sun/jna/linux-x86-64/libjnidispatch.so", + ) + + "aarch64", "arm64" -> access.unpackLibrary( + "jnidispatch", + "jnidispatch", + "aarch64", + "com/sun/jna/linux-aarch64/libjnidispatch.so", + ) + + else -> error("Unsupported architecture: ${System.getProperty("os.arch")}") + } + + Platform.includedIn(Platform.MACOS::class.java) -> when (System.getProperty("os.arch")) { + "x86_64", "amd64" -> access.unpackLibrary( + "jnidispatch", + "jnidispatch", + "x86-64", + "com/sun/jna/darwin-x86-64/libjnidispatch.jnilib", + ) + + "aarch64", "arm64" -> access.unpackLibrary( + "jnidispatch", + "jnidispatch", + "x86-64", + "com/sun/jna/darwin-aarch64/libjnidispatch.jnilib", + ) + + else -> error("Unsupported architecture: ${System.getProperty("os.arch")}") + } + + Platform.includedIn(Platform.WINDOWS::class.java) -> when (System.getProperty("os.arch")) { + "x86_64", "amd64" -> access.unpackLibrary( + "jnidispatch", + "jnidispatch", + "x86-64", + "com/sun/jna/win32-x86-64/jnidispatch.dll", + ) + + "aarch64", "arm64" -> access.unpackLibrary( + "jnidispatch", + "jnidispatch", + "x86-64", + "com/sun/jna/win32-aarch64/jnidispatch.dll", + ) + + else -> error("Unsupported architecture: ${System.getProperty("os.arch")}") + } + + else -> error("Unsupported OS: ${System.getProperty("os.name")}") + } + private fun registerJniCalls() { CliNativeBridge.initialize() register(CliNativeBridge::class.java) diff --git a/packages/cli/src/main/kotlin/elide/tool/lint/Diagnostics.kt b/packages/cli/src/main/kotlin/elide/tool/lint/Diagnostics.kt deleted file mode 100644 index e070d7e868..0000000000 --- a/packages/cli/src/main/kotlin/elide/tool/lint/Diagnostics.kt +++ /dev/null @@ -1,9 +0,0 @@ -package elide.tool.lint - -/** - * # Diagnostics - * - * Static utilities for working with [Formatter] and [Linter] tools. - */ -data object Diagnostics { -} diff --git a/packages/cli/src/main/kotlin/elide/tool/lint/Formatter.kt b/packages/cli/src/main/kotlin/elide/tool/lint/Formatter.kt deleted file mode 100644 index a680be8127..0000000000 --- a/packages/cli/src/main/kotlin/elide/tool/lint/Formatter.kt +++ /dev/null @@ -1,12 +0,0 @@ -package elide.tool.lint - -import elide.tool.Tool - -/** - * # Formatter Agent - * - * Describes the API provided by a tool implementation which can format source code; linters are often also formatters, - * so implementations may elect to also implement [Linter]. - */ -interface Formatter : Tool { -} diff --git a/packages/cli/src/main/kotlin/elide/tool/lint/Linter.kt b/packages/cli/src/main/kotlin/elide/tool/lint/Linter.kt deleted file mode 100644 index 9e9a8f30f7..0000000000 --- a/packages/cli/src/main/kotlin/elide/tool/lint/Linter.kt +++ /dev/null @@ -1,13 +0,0 @@ -package elide.tool.lint - -import elide.tool.Tool - -/** - * # Linter Agent - * - * Describes the API provided by a tool implementation which can lint source code, and potentially format source code, - * if the implementation also extends [Formatter]. - */ -interface Linter : Tool { - -} diff --git a/packages/cli/src/main/kotlin/elide/tool/project/DefaultProjectManager.kt b/packages/cli/src/main/kotlin/elide/tool/project/DefaultProjectManager.kt index b6adf76eb3..64e026bc56 100644 --- a/packages/cli/src/main/kotlin/elide/tool/project/DefaultProjectManager.kt +++ b/packages/cli/src/main/kotlin/elide/tool/project/DefaultProjectManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -10,7 +10,6 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under the License. */ - package elide.tool.project import java.io.File @@ -22,14 +21,10 @@ import java.util.stream.Collectors import kotlinx.coroutines.Deferred import kotlinx.coroutines.async import kotlinx.coroutines.coroutineScope -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.decodeFromStream import elide.annotations.Inject import elide.annotations.Singleton import elide.runtime.plugins.env.EnvConfig.EnvVar import elide.tool.io.WorkdirManager -import elide.tool.project.struct.nodepkg.NodePackage /** Default implementation of [ProjectManager]. */ @Singleton internal class DefaultProjectManager @Inject constructor ( @@ -42,45 +37,9 @@ import elide.tool.project.struct.nodepkg.NodePackage // Filename for local `.env` file. private const val DOT_ENV_FILE_LOCAL = ".env.local" - // Maps handlers to their config names. - private val mainConfigHandlers = mapOf( - "package.json" to ::resolvePackageJson, - ) - - @OptIn(ExperimentalSerializationApi::class) - private val jsonSettings: Json = Json { - ignoreUnknownKeys = true - decodeEnumsCaseInsensitive = true - isLenient = true - } - - // Read a `package.json` as an Elide project configuration. - @OptIn(ExperimentalSerializationApi::class) - @JvmStatic private fun resolvePackageJson(file: File): ProjectConfig? { - return try { - file.inputStream().use { inbuf -> - jsonSettings.decodeFromStream( - NodePackage.serializer(), - inbuf, - ) - } - } catch (thr: Throwable) { - null - }?.let { rawPackageConfig -> - ProjectConfig.packageJson(file.absolutePath, rawPackageConfig) - } - } - // Resolve the project configuration which we are going to use as the main config. - @JvmStatic private fun resolveMainConfig(dir: File): ProjectConfig? { - return mainConfigHandlers.firstNotNullOfOrNull { - dir.resolve(it.key).let { file -> - if (file.exists() && file.canRead()) { - it.value.invoke(file) - } else null - } - } - } + @Suppress("UNUSED_PARAMETER", "FunctionOnlyReturningConstant", "unused") + @JvmStatic private fun resolveMainConfig(dir: File): ProjectConfig? = null // Read a .env file into a sorted map of env var strings, or return `null` if it cannot be read. @JvmStatic private fun readDotEnvFileToMap(file: File): Pair>? { @@ -95,14 +54,16 @@ import elide.tool.project.struct.nodepkg.NodePackage } else null }.filter { it != null - }.collect(Collectors.toMap( - { it!!.first }, - { it!!.second }, - { left, _ -> error("Duplicate env key in same `.env` file: $left") }, - ::ConcurrentSkipListMap, - )) + }.collect( + Collectors.toMap( + { it!!.first }, + { it!!.second }, + { left, _ -> error("Duplicate env key in same `.env` file: $left") }, + ::ConcurrentSkipListMap, + ) + ) } - } catch (ioe: IOException) { + } catch (_: IOException) { return null // cannot read file } } else null // file does not exist or is not readable @@ -117,19 +78,23 @@ import elide.tool.project.struct.nodepkg.NodePackage if (maps.isNotEmpty()) { // after parsing our env maps, merge into a single sorted map, with later entries winning in the flattened // stream (resulting in later maps overriding). - ProjectInfo.ProjectEnvironment.wrapping(maps.stream().flatMap { (file, group) -> - group.entries.stream().map { - object: Map.Entry { - override val key: String get() = it.key - override val value: EnvVar get() = EnvVar.fromDotenv(file, it.key, it.value) + ProjectInfo.ProjectEnvironment.wrapping( + maps.stream().flatMap { (file, group) -> + group.entries.stream().map { + object : Map.Entry { + override val key: String get() = it.key + override val value: EnvVar get() = EnvVar.fromDotenv(file, it.key, it.value) + } } - } - }.collect(Collectors.toMap( - { it.key }, - { it.value }, - { _, right -> right }, - ::ConcurrentSkipListMap, - ))) + }.collect( + Collectors.toMap( + { it.key }, + { it.value }, + { _, right -> right }, + ::ConcurrentSkipListMap, + ) + ) + ) } else { null // no environment available } @@ -139,22 +104,12 @@ import elide.tool.project.struct.nodepkg.NodePackage // Read files from the root project directory. @JvmStatic fun readProjectInfo(dir: File): ProjectInfo? { val rootPath = dir.absolutePath - val mainConfig = resolveMainConfig(dir) val env = readDotEnv(dir) - return when (mainConfig) { - null -> ProjectInfo.of( - root = rootPath, - env = env, - ) - - else -> ProjectInfo.of( - name = mainConfig.name, - root = rootPath, - env = env, - config = mainConfig, - ) - } + return ProjectInfo.of( + root = rootPath, + env = env, + ) } } diff --git a/packages/cli/src/main/resources/META-INF/native-image/dev/elide/elide-cli/native-image.properties b/packages/cli/src/main/resources/META-INF/native-image/dev/elide/elide-cli/native-image.properties deleted file mode 100644 index f5035b2c73..0000000000 --- a/packages/cli/src/main/resources/META-INF/native-image/dev/elide/elide-cli/native-image.properties +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (c) 2024 Elide Technologies, Inc. -# -# Licensed under the MIT license (the "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# https://opensource.org/license/mit/ -# -# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on -# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under the License. -# - -Args = \ - --no-fallback --features=elide.runtime.feature.python.PythonFeature --features=elide.runtime.feature.engine.\ - NativeConsoleFeature --features=elide.runtime.feature.engine.NativeTransportFeature --features=elide.runtime.feature.\ - jvm.JvmFeature --features=elide.runtime.feature.ruby.RubyFeature diff --git a/packages/cli/src/main/resources/META-INF/native-image/dev/elide/elide-cli/reachability-metadata.json b/packages/cli/src/main/resources/META-INF/native-image/dev/elide/elide-cli/reachability-metadata.json index cb08cbb191..cde66060e3 100644 --- a/packages/cli/src/main/resources/META-INF/native-image/dev/elide/elide-cli/reachability-metadata.json +++ b/packages/cli/src/main/resources/META-INF/native-image/dev/elide/elide-cli/reachability-metadata.json @@ -1,320 +1,233 @@ { "reflection": [ { - "type": "elide.runtime.gvm.internals.sqlite.SqliteDatabaseProxy" - }, - { - "type": "elide.runtime.gvm.internals.sqlite.SqliteDatabaseProxy$SQLiteStatementImpl" - }, - { - "type": "java.io.Closeable" - }, - { - "type": "elide.runtime.intrinsics.sqlite.SQLiteStatement" + "type": "ch.qos.logback.classic.encoder.PatternLayoutEncoder", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "elide.runtime.intrinsics.js.node.NodeAPI" + "type": "ch.qos.logback.classic.joran.SerializedModelConfigurator", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.util.Optional", + "type": "ch.qos.logback.classic.jul.LevelChangePropagator", "methods": [ { - "name": "get" - }, - { - "name": "isPresent" + "name": "", + "parameterTypes": [] } ] }, { - "type": "jdk.internal.net.http.HttpResponseImpl", + "type": "ch.qos.logback.classic.sift.MDCBasedDiscriminator", "methods": [ { - "name": "statusCode" + "name": "", + "parameterTypes": [] }, { - "name": "headers" + "name": "setDefaultValue", + "parameterTypes": [ + "java.lang.String" + ] }, { - "name": "body" + "name": "setKey", + "parameterTypes": [ + "java.lang.String" + ] } ] }, { - "type": "java.net.http.HttpHeaders", + "type": "ch.qos.logback.classic.sift.SiftingAppender", "methods": [ { - "name": "firstValue" - }, - { - "name": "allValues" + "name": "", + "parameterTypes": [] }, { - "name": "map" + "name": "setDiscriminator", + "parameterTypes": [ + "ch.qos.logback.core.sift.Discriminator" + ] } ] }, { - "type": "jdk.internal.net.http.HttpClientFacade", + "type": "ch.qos.logback.classic.spi.LogbackServiceProvider" + }, + { + "type": "ch.qos.logback.core.ConsoleAppender", "methods": [ { - "name": "send" + "name": "", + "parameterTypes": [] + }, + { + "name": "setTarget", + "parameterTypes": [ + "java.lang.String" + ] } ] }, { - "type": "java.net.http.HttpClient", + "type": "ch.qos.logback.core.OutputStreamAppender", "methods": [ { - "name": "send" + "name": "setEncoder", + "parameterTypes": [ + "ch.qos.logback.core.encoder.Encoder" + ] } ] }, { - "type": "jdk.internal.net.http.HttpClientBuilderImpl" - }, - { - "type": "jdk.internal.net.http.HttpRequestBuilderImpl" - }, - { - "type": "java.lang.constant.Constable" + "type": "ch.qos.logback.core.encoder.Encoder" }, { - "type": "java.lang.Throwable", + "type": "ch.qos.logback.core.encoder.LayoutWrappingEncoder", "methods": [ { - "name": "toString" + "name": "setParent", + "parameterTypes": [ + "ch.qos.logback.core.spi.ContextAware" + ] } ] }, { - "type": "java.lang.AutoCloseable" - }, - { - "type": "java.net.URI", + "type": "ch.qos.logback.core.pattern.PatternLayoutEncoderBase", "methods": [ { - "name": "", + "name": "setPattern", "parameterTypes": [ "java.lang.String" ] - }, - { - "name": "isAbsolute" - }, - { - "name": "resolve" - }, - { - "name": "getUserInfo" - }, - { - "name": "getScheme" - }, - { - "name": "getFragment" - }, - { - "name": "getSchemeSpecificPart" - }, - { - "name": "toString" - }, - { - "name": "getHost" } ] }, { - "type": "org.graalvm.nativeimage.MissingReflectionRegistrationError" - }, - { - "type": "java.io.Serializable" + "type": "ch.qos.logback.core.sift.Discriminator" }, { - "type": "java.lang.Comparable" + "type": "ch.qos.logback.core.spi.ContextAware" }, { - "type": "java.net.http.HttpClient", + "type": "ch.qos.logback.core.status.NopStatusListener", "methods": [ { - "name": "newBuilder" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.net.http.HttpClient$Builder", - "methods": [ - { - "name": "followRedirects" - }, - { - "name": "build" - } - ] + "type": "com.github.ajalt.clikt.core.BaseCliktCommand", + "allDeclaredFields": true + }, + { + "type": "com.google.common.jimfs.SystemJimfsFileSystemProvider" + }, + { + "type": "com.oracle.svm.core.jdk.resources.NativeImageResourceFileSystemProvider" }, { - "type": "java.net.http.HttpClient.Redirect" + "type": "com.oracle.truffle.object.DynamicObjectLibraryImplGen$DynamicObjectLibraryProvider" }, { - "type": "java.net.http.HttpClient$Redirect" + "type": "com.oracle.truffle.polyglot.PolyglotImpl" }, { - "type": "java.net.http.HttpRequest", + "type": "com.oracle.truffle.runtime.DefaultLoopNodeFactory" + }, + { + "type": "com.oracle.truffle.runtime.hotspot.HotSpotTruffleRuntimeAccess" + }, + { + "type": "elide.runtime.exec.$GuestExecutorFactory$Definition", "methods": [ { - "name": "newBuilder" - }, - { - "name": "uri" - }, - { - "name": "method" - }, - { - "name": "bodyPublisher" - }, - { - "name": "headers" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.net.http.HttpRequest.Builder", + "type": "elide.runtime.exec.$GuestExecutorFactory$Executor0$Definition", "methods": [ { - "name": "setHeader" - }, - { - "name": "header" - }, - { - "name": "headers" - }, - { - "name": "method" - }, - { - "name": "build" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.net.http.HttpRequest$Builder", + "type": "elide.runtime.gvm.cfg.$GuestIOConfiguration$Intercepted$Definition", "methods": [ { - "name": "setHeader" - }, - { - "name": "header" - }, - { - "name": "headers" - }, - { - "name": "method" - }, - { - "name": "build" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.net.http.HttpRequest.BodyPublishers", + "type": "elide.runtime.gvm.cfg.$GuestVMConfiguration$Intercepted$Definition", "methods": [ { - "name": "ofString" - }, - { - "name": "ofByteArray" - }, - { - "name": "ofInputStream" - }, - { - "name": "ofFile" - }, - { - "name": "ofNone" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.net.http.HttpRequest$BodyPublishers", + "type": "elide.runtime.gvm.cfg.$GuestVMEEConfig$Intercepted$Definition", "methods": [ { - "name": "ofString" - }, - { - "name": "ofByteArray" - }, - { - "name": "ofInputStream" - }, - { - "name": "ofFile" - }, - { - "name": "noBody" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.net.http.HttpResponse", + "type": "elide.runtime.gvm.cfg.$GuestVMEESandboxConfig$Intercepted$Definition", "methods": [ { - "name": "statusCode" - }, - { - "name": "headers" - }, - { - "name": "body" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.net.http.HttpResponse.BodyHandlers", + "type": "elide.runtime.gvm.cfg.$GuestVMInspectConfig$Intercepted$Definition", "methods": [ { - "name": "ofString" - }, - { - "name": "ofByteArray" - }, - { - "name": "ofInputStream" - }, - { - "name": "ofFile" - }, - { - "name": "ofDiscard" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.net.http.HttpResponse$BodyHandlers", + "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$Intercepted$Definition", "methods": [ { - "name": "ofString" - }, - { - "name": "ofByteArray" - }, - { - "name": "ofInputStream" - }, - { - "name": "ofFile" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.util.Base64" - }, - { - "type": "sun.util.logging.resources.logging", + "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$JsEsmConfig$Intercepted$Definition", "methods": [ { "name": "", @@ -323,7 +236,7 @@ ] }, { - "type": "sun.util.logging.resources.logging_en", + "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$JsNpmConfig$Intercepted$Definition", "methods": [ { "name": "", @@ -332,19 +245,7 @@ ] }, { - "type": "sun.util.logging.resources.spi.loggingProvider" - }, - { - "type": "elide.runtime.intrinsics.GuestIntrinsic" - }, - { - "type": "elide.runtime.gvm.internals.intrinsics.js.console.ConsoleIntrinsic" - }, - { - "type": "[B" - }, - { - "type": "ch.qos.logback.classic.encoder.PatternLayoutEncoder", + "type": "elide.runtime.gvm.internals.$IntrinsicsManager$Definition", "methods": [ { "name": "", @@ -353,7 +254,7 @@ ] }, { - "type": "ch.qos.logback.classic.joran.SerializedModelConfigurator", + "type": "elide.runtime.gvm.internals.intrinsics.$ElideIntrinsic$Definition", "methods": [ { "name": "", @@ -362,7 +263,7 @@ ] }, { - "type": "ch.qos.logback.classic.jul.LevelChangePropagator", + "type": "elide.runtime.gvm.internals.intrinsics.$ElideIntrinsic$Introspection", "methods": [ { "name": "", @@ -371,103 +272,61 @@ ] }, { - "type": "ch.qos.logback.classic.sift.MDCBasedDiscriminator", + "type": "elide.runtime.gvm.internals.intrinsics.js.abort.$AbortControllerIntrinsic$Definition", "methods": [ { "name": "", "parameterTypes": [] - }, - { - "name": "setDefaultValue", - "parameterTypes": [ - "java.lang.String" - ] - }, - { - "name": "setKey", - "parameterTypes": [ - "java.lang.String" - ] } ] }, { - "type": "ch.qos.logback.classic.sift.SiftingAppender", + "type": "elide.runtime.gvm.internals.intrinsics.js.abort.$AbortControllerIntrinsic$Introspection", "methods": [ { "name": "", "parameterTypes": [] - }, - { - "name": "setDiscriminator", - "parameterTypes": [ - "ch.qos.logback.core.sift.Discriminator" - ] } ] }, { - "type": "ch.qos.logback.classic.spi.LogbackServiceProvider" - }, - { - "type": "ch.qos.logback.core.ConsoleAppender", + "type": "elide.runtime.gvm.internals.intrinsics.js.abort.$AbortSignalIntrinsic$Definition", "methods": [ { "name": "", "parameterTypes": [] - }, - { - "name": "setTarget", - "parameterTypes": [ - "java.lang.String" - ] } ] }, { - "type": "ch.qos.logback.core.OutputStreamAppender", + "type": "elide.runtime.gvm.internals.intrinsics.js.abort.$AbortSignalIntrinsic$Introspection", "methods": [ { - "name": "setEncoder", - "parameterTypes": [ - "ch.qos.logback.core.encoder.Encoder" - ] + "name": "", + "parameterTypes": [] } ] }, { - "type": "ch.qos.logback.core.encoder.Encoder" - }, - { - "type": "ch.qos.logback.core.encoder.LayoutWrappingEncoder", + "type": "elide.runtime.gvm.internals.intrinsics.js.base64.$Base64Intrinsic$Definition", "methods": [ { - "name": "setParent", - "parameterTypes": [ - "ch.qos.logback.core.spi.ContextAware" - ] + "name": "", + "parameterTypes": [] } ] }, { - "type": "ch.qos.logback.core.pattern.PatternLayoutEncoderBase", + "type": "elide.runtime.gvm.internals.intrinsics.js.base64.$Base64Intrinsic$Introspection", "methods": [ { - "name": "setPattern", - "parameterTypes": [ - "java.lang.String" - ] + "name": "", + "parameterTypes": [] } ] }, { - "type": "ch.qos.logback.core.sift.Discriminator" - }, - { - "type": "ch.qos.logback.core.spi.ContextAware" - }, - { - "type": "ch.qos.logback.core.status.NopStatusListener", + "type": "elide.runtime.gvm.internals.intrinsics.js.codec.$JsEncodingIntrinsics$Definition", "methods": [ { "name": "", @@ -476,67 +335,34 @@ ] }, { - "type": "com.github.ajalt.clikt.core.BaseCliktCommand", - "allDeclaredFields": true - }, - { - "type": "com.google.common.jimfs.SystemJimfsFileSystemProvider", + "type": "elide.runtime.gvm.internals.intrinsics.js.codec.$JsEncodingIntrinsics$Introspection", "methods": [ { - "name": "removeFileSystemRunnable", - "parameterTypes": [ - "java.net.URI" - ] + "name": "", + "parameterTypes": [] } ] }, { - "type": "com.google.protobuf.DescriptorMessageInfoFactory", + "type": "elide.runtime.gvm.internals.intrinsics.js.console.$ConsoleIntrinsic$Definition", "methods": [ { - "name": "getInstance", + "name": "", "parameterTypes": [] } ] }, { - "type": "com.google.protobuf.DescriptorProtos$FeatureSet" - }, - { - "type": "com.google.protobuf.DescriptorProtos$FeatureSet$Builder" - }, - { - "type": "com.google.protobuf.DescriptorProtos$FeatureSet$EnumType" - }, - { - "type": "com.google.protobuf.DescriptorProtos$FeatureSet$FieldPresence" - }, - { - "type": "com.google.protobuf.DescriptorProtos$FeatureSet$JsonFormat" - }, - { - "type": "com.google.protobuf.DescriptorProtos$FeatureSet$MessageEncoding" - }, - { - "type": "com.google.protobuf.DescriptorProtos$FeatureSet$RepeatedFieldEncoding" - }, - { - "type": "com.google.protobuf.DescriptorProtos$FeatureSet$Utf8Validation" - }, - { - "type": "com.google.protobuf.ExtensionRegistry", + "type": "elide.runtime.gvm.internals.intrinsics.js.console.$ConsoleIntrinsic$Introspection", "methods": [ { - "name": "getEmptyRegistry", + "name": "", "parameterTypes": [] } ] }, { - "type": "com.google.protobuf.Timestamp" - }, - { - "type": "elide.runtime.exec.$GuestExecutorFactory$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.crypto.$WebCryptoIntrinsic$Definition", "methods": [ { "name": "", @@ -545,7 +371,7 @@ ] }, { - "type": "elide.runtime.exec.$GuestExecutorFactory$Executor0$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.crypto.$WebCryptoIntrinsic$Introspection", "methods": [ { "name": "", @@ -554,7 +380,7 @@ ] }, { - "type": "elide.runtime.gvm.cfg.$GuestIOConfiguration$Intercepted$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.crypto.$WebCryptoKey$Definition", "methods": [ { "name": "", @@ -563,7 +389,7 @@ ] }, { - "type": "elide.runtime.gvm.cfg.$GuestVMConfiguration$Intercepted$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.crypto.$WebCryptoKey$Introspection", "methods": [ { "name": "", @@ -572,7 +398,7 @@ ] }, { - "type": "elide.runtime.gvm.cfg.$GuestVMEEConfig$Intercepted$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.fetch.$FetchIntrinsic$Definition", "methods": [ { "name": "", @@ -581,7 +407,7 @@ ] }, { - "type": "elide.runtime.gvm.cfg.$GuestVMEESandboxConfig$Intercepted$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.fetch.$FetchIntrinsic$Introspection", "methods": [ { "name": "", @@ -590,7 +416,7 @@ ] }, { - "type": "elide.runtime.gvm.cfg.$GuestVMInspectConfig$Intercepted$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.stream.$CoreStreamsIntrinsic$Definition", "methods": [ { "name": "", @@ -599,7 +425,7 @@ ] }, { - "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$Intercepted$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.stream.$CoreStreamsIntrinsic$Introspection", "methods": [ { "name": "", @@ -608,7 +434,7 @@ ] }, { - "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$JsEsmConfig$Intercepted$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.url.$URLIntrinsic$Definition", "methods": [ { "name": "", @@ -617,7 +443,7 @@ ] }, { - "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$JsNpmConfig$Intercepted$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.url.$URLIntrinsic$Introspection", "methods": [ { "name": "", @@ -626,7 +452,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.$IntrinsicsManager$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.url.$URLSearchParamsIntrinsic$Definition", "methods": [ { "name": "", @@ -635,7 +461,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.$ElideIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.url.$URLSearchParamsIntrinsic$Introspection", "methods": [ { "name": "", @@ -644,7 +470,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.abort.$AbortControllerIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.webstreams.$ReadableStreamIntrinsic$Definition", "methods": [ { "name": "", @@ -653,7 +479,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.abort.$AbortSignalIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.intrinsics.js.webstreams.$ReadableStreamIntrinsic$Introspection", "methods": [ { "name": "", @@ -662,7 +488,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.base64.$Base64Intrinsic$Definition", + "type": "elide.runtime.gvm.internals.js.$JsTimerExecutorProviderImpl$Definition", "methods": [ { "name": "", @@ -671,7 +497,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.codec.$JsEncodingIntrinsics$Definition", + "type": "elide.runtime.gvm.internals.js.$JsTimerExecutorProviderImpl$Provide0$Definition", "methods": [ { "name": "", @@ -680,7 +506,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.console.$ConsoleIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.js.$JsTimersIntrinsic$Definition", "methods": [ { "name": "", @@ -689,7 +515,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.crypto.$WebCryptoIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.js.$JsTimersIntrinsic$Introspection", "methods": [ { "name": "", @@ -698,7 +524,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.crypto.$WebCryptoKey$Definition", + "type": "elide.runtime.gvm.internals.js.$JsTimersIntrinsic$Provide0$Definition", "methods": [ { "name": "", @@ -707,7 +533,15 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.fetch.$FetchIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.js.JsTimersIntrinsic", + "fields": [ + { + "name": "execProvider" + } + ] + }, + { + "type": "elide.runtime.gvm.internals.sqlite.$ElideSqliteModule$Definition", "methods": [ { "name": "", @@ -716,7 +550,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.stream.$CoreStreamsIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.sqlite.$ElideSqliteModule$Introspection", "methods": [ { "name": "", @@ -725,7 +559,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.url.$URLIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.sqlite.$ElideSqliteModule$Provide0$Definition", "methods": [ { "name": "", @@ -734,7 +568,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.url.$URLSearchParamsIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.testing.$ElideTestingModule$Definition", "methods": [ { "name": "", @@ -743,7 +577,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.intrinsics.js.webstreams.$ReadableStreamIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.testing.$ElideTestingModule$Introspection", "methods": [ { "name": "", @@ -752,7 +586,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.js.$JsTimerExecutorProviderImpl$Definition", + "type": "elide.runtime.gvm.internals.testing.$ElideTestingModule$Provide0$Definition", "methods": [ { "name": "", @@ -761,7 +595,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.js.$JsTimerExecutorProviderImpl$Provide0$Definition", + "type": "elide.runtime.gvm.internals.vfs.$EmbeddedGuestVFSImpl$EmbeddedVFSConfigurationFactory$Definition", "methods": [ { "name": "", @@ -770,7 +604,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.js.$JsTimersIntrinsic$Definition", + "type": "elide.runtime.gvm.internals.vfs.$EmbeddedGuestVFSImpl$EmbeddedVFSConfigurationFactory$Spawn$graalvm0$Definition", "methods": [ { "name": "", @@ -779,7 +613,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.js.$JsTimersIntrinsic$Provide0$Definition", + "type": "elide.runtime.gvm.internals.vfs.$GuestVFSPolicy$Intercepted$Definition", "methods": [ { "name": "", @@ -788,15 +622,16 @@ ] }, { - "type": "elide.runtime.gvm.internals.js.JsTimersIntrinsic", - "fields": [ + "type": "elide.runtime.gvm.internals.vfs.$HostVFSImpl$HostVFSConfigurationFactory$Definition", + "methods": [ { - "name": "execProvider" + "name": "", + "parameterTypes": [] } ] }, { - "type": "elide.runtime.gvm.internals.sqlite.$ElideSqliteModule$Definition", + "type": "elide.runtime.gvm.intrinsics.$BuiltinIntrinsicsResolver$Definition", "methods": [ { "name": "", @@ -805,7 +640,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.sqlite.$ElideSqliteModule$Provide0$Definition", + "type": "elide.runtime.gvm.intrinsics.$ServiceIntrinsicsResolver$Definition", "methods": [ { "name": "", @@ -814,7 +649,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.testing.$ElideTestingModule$Definition", + "type": "elide.runtime.intrinsics.js.err.$ValueErrorIntrinsic$Definition", "methods": [ { "name": "", @@ -823,7 +658,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.testing.$ElideTestingModule$Provide0$Definition", + "type": "elide.runtime.intrinsics.js.err.$ValueErrorIntrinsic$Introspection", "methods": [ { "name": "", @@ -832,7 +667,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.vfs.$EmbeddedGuestVFSImpl$EmbeddedVFSConfigurationFactory$Definition", + "type": "elide.runtime.javascript.$NavigatorBuiltin$Definition", "methods": [ { "name": "", @@ -841,7 +676,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.vfs.$EmbeddedGuestVFSImpl$EmbeddedVFSConfigurationFactory$Spawn$graalvm0$Definition", + "type": "elide.runtime.javascript.$NavigatorBuiltin$Introspection", "methods": [ { "name": "", @@ -850,7 +685,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.vfs.$GuestVFSPolicy$Intercepted$Definition", + "type": "elide.runtime.javascript.$QueueMicrotaskCallable$Definition", "methods": [ { "name": "", @@ -859,7 +694,7 @@ ] }, { - "type": "elide.runtime.gvm.internals.vfs.$HostVFSImpl$HostVFSConfigurationFactory$Definition", + "type": "elide.runtime.javascript.$QueueMicrotaskCallable$Introspection", "methods": [ { "name": "", @@ -868,7 +703,7 @@ ] }, { - "type": "elide.runtime.gvm.intrinsics.$BuiltinIntrinsicsResolver$Definition", + "type": "elide.runtime.javascript.$StructuredCloneBuiltin$Definition", "methods": [ { "name": "", @@ -877,7 +712,7 @@ ] }, { - "type": "elide.runtime.gvm.intrinsics.$ServiceIntrinsicsResolver$Definition", + "type": "elide.runtime.javascript.$StructuredCloneBuiltin$Introspection", "methods": [ { "name": "", @@ -886,7 +721,7 @@ ] }, { - "type": "elide.runtime.intrinsics.js.err.$ValueErrorIntrinsic$Definition", + "type": "elide.runtime.node.asserts.$NodeAssertModule$Definition", "methods": [ { "name": "", @@ -895,10 +730,7 @@ ] }, { - "type": "elide.runtime.lang.typescript.TypeScriptLanguageProvider" - }, - { - "type": "elide.runtime.node.asserts.$NodeAssertModule$Definition", + "type": "elide.runtime.node.asserts.$NodeAssertModule$Introspection", "methods": [ { "name": "", @@ -916,7 +748,7 @@ ] }, { - "type": "elide.runtime.node.buffer.$NodeBufferModule$Definition", + "type": "elide.runtime.node.asserts.$NodeAssertStrictModule$Introspection", "methods": [ { "name": "", @@ -925,7 +757,7 @@ ] }, { - "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$Definition", + "type": "elide.runtime.node.buffer.$NodeBufferModule$Definition", "methods": [ { "name": "", @@ -934,7 +766,7 @@ ] }, { - "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$IpcServer$graalvm1$Definition", + "type": "elide.runtime.node.buffer.$NodeBufferModule$Introspection", "methods": [ { "name": "", @@ -943,7 +775,7 @@ ] }, { - "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$Provide0$Definition", + "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$Definition", "methods": [ { "name": "", @@ -952,7 +784,7 @@ ] }, { - "type": "elide.runtime.node.cluster.$NodeClusterModule$Definition", + "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$Introspection", "methods": [ { "name": "", @@ -961,7 +793,7 @@ ] }, { - "type": "elide.runtime.node.console.$NodeConsoleModule$Definition", + "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$IpcServer$graalvm1$Definition", "methods": [ { "name": "", @@ -970,7 +802,7 @@ ] }, { - "type": "elide.runtime.node.crypto.$NodeCryptoModule$Definition", + "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$Provide0$Definition", "methods": [ { "name": "", @@ -979,7 +811,7 @@ ] }, { - "type": "elide.runtime.node.dgram.$NodeDatagramModule$Definition", + "type": "elide.runtime.node.cluster.$NodeClusterModule$Definition", "methods": [ { "name": "", @@ -988,7 +820,7 @@ ] }, { - "type": "elide.runtime.node.diagnostics.$NodeDiagnosticsChannelModule$Definition", + "type": "elide.runtime.node.cluster.$NodeClusterModule$Introspection", "methods": [ { "name": "", @@ -997,7 +829,7 @@ ] }, { - "type": "elide.runtime.node.dns.$NodeDNSModule$Definition", + "type": "elide.runtime.node.console.$NodeConsoleModule$Definition", "methods": [ { "name": "", @@ -1006,7 +838,7 @@ ] }, { - "type": "elide.runtime.node.dns.$NodeDNSPromisesModule$Definition", + "type": "elide.runtime.node.console.$NodeConsoleModule$Introspection", "methods": [ { "name": "", @@ -1015,7 +847,7 @@ ] }, { - "type": "elide.runtime.node.domain.$NodeDomainModule$Definition", + "type": "elide.runtime.node.crypto.$NodeCryptoModule$Definition", "methods": [ { "name": "", @@ -1024,7 +856,7 @@ ] }, { - "type": "elide.runtime.node.events.$NodeEventsModule$Definition", + "type": "elide.runtime.node.crypto.$NodeCryptoModule$Introspection", "methods": [ { "name": "", @@ -1033,7 +865,7 @@ ] }, { - "type": "elide.runtime.node.events.$NodeEventsModule$Provide0$Definition", + "type": "elide.runtime.node.dgram.$NodeDatagramModule$Definition", "methods": [ { "name": "", @@ -1042,7 +874,7 @@ ] }, { - "type": "elide.runtime.node.events.$NodeEventsModuleFacade$Definition", + "type": "elide.runtime.node.dgram.$NodeDatagramModule$Introspection", "methods": [ { "name": "", @@ -1051,7 +883,7 @@ ] }, { - "type": "elide.runtime.node.fs.$NodeFilesystemModule$Definition", + "type": "elide.runtime.node.diagnostics.$NodeDiagnosticsChannelModule$Definition", "methods": [ { "name": "", @@ -1060,7 +892,7 @@ ] }, { - "type": "elide.runtime.node.fs.$NodeFilesystemModule$ProvidePromises1$Definition", + "type": "elide.runtime.node.diagnostics.$NodeDiagnosticsChannelModule$Introspection", "methods": [ { "name": "", @@ -1069,7 +901,7 @@ ] }, { - "type": "elide.runtime.node.fs.$NodeFilesystemModule$ProvideStd0$Definition", + "type": "elide.runtime.node.dns.$NodeDNSModule$Definition", "methods": [ { "name": "", @@ -1078,7 +910,7 @@ ] }, { - "type": "elide.runtime.node.fs.$VfsInitializerListener$Definition", + "type": "elide.runtime.node.dns.$NodeDNSModule$Introspection", "methods": [ { "name": "", @@ -1087,7 +919,7 @@ ] }, { - "type": "elide.runtime.node.http.$NodeHttpModule$Definition", + "type": "elide.runtime.node.dns.$NodeDNSPromisesModule$Definition", "methods": [ { "name": "", @@ -1096,7 +928,7 @@ ] }, { - "type": "elide.runtime.node.http2.$NodeHttp2Module$Definition", + "type": "elide.runtime.node.dns.$NodeDNSPromisesModule$Introspection", "methods": [ { "name": "", @@ -1105,7 +937,7 @@ ] }, { - "type": "elide.runtime.node.https.$NodeHttpsModule$Definition", + "type": "elide.runtime.node.domain.$NodeDomainModule$Definition", "methods": [ { "name": "", @@ -1114,7 +946,7 @@ ] }, { - "type": "elide.runtime.node.inspector.$NodeInspectorModule$Definition", + "type": "elide.runtime.node.domain.$NodeDomainModule$Introspection", "methods": [ { "name": "", @@ -1123,7 +955,7 @@ ] }, { - "type": "elide.runtime.node.inspector.$NodeInspectorPromisesModule$Definition", + "type": "elide.runtime.node.events.$NodeEventsModule$Definition", "methods": [ { "name": "", @@ -1132,7 +964,7 @@ ] }, { - "type": "elide.runtime.node.module.$NodeModulesModule$Definition", + "type": "elide.runtime.node.events.$NodeEventsModule$Introspection", "methods": [ { "name": "", @@ -1141,7 +973,7 @@ ] }, { - "type": "elide.runtime.node.net.$NodeNetworkModule$Definition", + "type": "elide.runtime.node.events.$NodeEventsModule$Provide0$Definition", "methods": [ { "name": "", @@ -1150,7 +982,7 @@ ] }, { - "type": "elide.runtime.node.os.$CPUInfoData$Introspection", + "type": "elide.runtime.node.events.$NodeEventsModuleFacade$Definition", "methods": [ { "name": "", @@ -1159,7 +991,7 @@ ] }, { - "type": "elide.runtime.node.os.$CPUTimingsData$Introspection", + "type": "elide.runtime.node.fs.$NodeFilesystemModule$Definition", "methods": [ { "name": "", @@ -1168,7 +1000,7 @@ ] }, { - "type": "elide.runtime.node.os.$NetworkInterfaceInfoData$Introspection", + "type": "elide.runtime.node.fs.$NodeFilesystemModule$Introspection", "methods": [ { "name": "", @@ -1177,7 +1009,7 @@ ] }, { - "type": "elide.runtime.node.os.$NodeOperatingSystem$BaseOS$Introspection", + "type": "elide.runtime.node.fs.$NodeFilesystemModule$ProvidePromises1$Definition", "methods": [ { "name": "", @@ -1186,7 +1018,7 @@ ] }, { - "type": "elide.runtime.node.os.$NodeOperatingSystem$Posix$Introspection", + "type": "elide.runtime.node.fs.$NodeFilesystemModule$ProvideStd0$Definition", "methods": [ { "name": "", @@ -1195,7 +1027,7 @@ ] }, { - "type": "elide.runtime.node.os.$NodeOperatingSystem$Win32$Introspection", + "type": "elide.runtime.node.fs.$VfsInitializerListener$Definition", "methods": [ { "name": "", @@ -1204,7 +1036,7 @@ ] }, { - "type": "elide.runtime.node.os.$NodeOperatingSystemModule$Definition", + "type": "elide.runtime.node.http.$NodeHttpModule$Definition", "methods": [ { "name": "", @@ -1213,7 +1045,7 @@ ] }, { - "type": "elide.runtime.node.os.$NodeOperatingSystemModule$Provide0$Definition", + "type": "elide.runtime.node.http.$NodeHttpModule$Introspection", "methods": [ { "name": "", @@ -1222,7 +1054,7 @@ ] }, { - "type": "elide.runtime.node.path.$NodePathsModule$Definition", + "type": "elide.runtime.node.http2.$NodeHttp2Module$Definition", "methods": [ { "name": "", @@ -1231,7 +1063,7 @@ ] }, { - "type": "elide.runtime.node.perfHooks.$NodePerformanceHooksModule$Definition", + "type": "elide.runtime.node.http2.$NodeHttp2Module$Introspection", "methods": [ { "name": "", @@ -1240,7 +1072,7 @@ ] }, { - "type": "elide.runtime.node.process.$NodeProcessModule$Definition", + "type": "elide.runtime.node.https.$NodeHttpsModule$Definition", "methods": [ { "name": "", @@ -1249,7 +1081,7 @@ ] }, { - "type": "elide.runtime.node.querystring.$NodeQuerystringModule$Definition", + "type": "elide.runtime.node.https.$NodeHttpsModule$Introspection", "methods": [ { "name": "", @@ -1258,7 +1090,7 @@ ] }, { - "type": "elide.runtime.node.readline.$NodeReadlineModule$Definition", + "type": "elide.runtime.node.inspector.$NodeInspectorModule$Definition", "methods": [ { "name": "", @@ -1267,7 +1099,7 @@ ] }, { - "type": "elide.runtime.node.readline.$NodeReadlinePromisesModule$Definition", + "type": "elide.runtime.node.inspector.$NodeInspectorModule$Introspection", "methods": [ { "name": "", @@ -1276,7 +1108,7 @@ ] }, { - "type": "elide.runtime.node.stream.$NodeStreamConsumersModule$Definition", + "type": "elide.runtime.node.inspector.$NodeInspectorPromisesModule$Definition", "methods": [ { "name": "", @@ -1285,7 +1117,7 @@ ] }, { - "type": "elide.runtime.node.stream.$NodeStreamConsumersModule$Provide$graalvm0$Definition", + "type": "elide.runtime.node.inspector.$NodeInspectorPromisesModule$Introspection", "methods": [ { "name": "", @@ -1294,7 +1126,7 @@ ] }, { - "type": "elide.runtime.node.stream.$NodeStreamModule$Definition", + "type": "elide.runtime.node.module.$NodeModulesModule$Definition", "methods": [ { "name": "", @@ -1303,7 +1135,7 @@ ] }, { - "type": "elide.runtime.node.stream.$NodeStreamPromisesModule$Definition", + "type": "elide.runtime.node.module.$NodeModulesModule$Introspection", "methods": [ { "name": "", @@ -1312,7 +1144,7 @@ ] }, { - "type": "elide.runtime.node.stream.$NodeStreamPromisesModule$Provide$graalvm0$Definition", + "type": "elide.runtime.node.net.$NodeNetworkModule$Definition", "methods": [ { "name": "", @@ -1321,7 +1153,7 @@ ] }, { - "type": "elide.runtime.node.stream.$NodeStreamWebModule$Definition", + "type": "elide.runtime.node.net.$NodeNetworkModule$Introspection", "methods": [ { "name": "", @@ -1330,7 +1162,7 @@ ] }, { - "type": "elide.runtime.node.stream.$NodeStreamWebModule$Provide$graalvm0$Definition", + "type": "elide.runtime.node.os.$CPUInfoData$Introspection", "methods": [ { "name": "", @@ -1339,7 +1171,7 @@ ] }, { - "type": "elide.runtime.node.stringDecoder.$NodeStringDecoderModule$Definition", + "type": "elide.runtime.node.os.$CPUTimingsData$Introspection", "methods": [ { "name": "", @@ -1348,7 +1180,7 @@ ] }, { - "type": "elide.runtime.node.stringDecoder.$NodeStringDecoderModule$Provide$graalvm0$Definition", + "type": "elide.runtime.node.os.$NetworkInterfaceInfoData$Introspection", "methods": [ { "name": "", @@ -1357,7 +1189,7 @@ ] }, { - "type": "elide.runtime.node.test.$NodeTestModule$Definition", + "type": "elide.runtime.node.os.$NodeOperatingSystem$BaseOS$Introspection", "methods": [ { "name": "", @@ -1366,7 +1198,7 @@ ] }, { - "type": "elide.runtime.node.url.$NodeURLModule$Definition", + "type": "elide.runtime.node.os.$NodeOperatingSystem$Posix$Introspection", "methods": [ { "name": "", @@ -1375,7 +1207,7 @@ ] }, { - "type": "elide.runtime.node.url.$NodeURLModule$Provide$graalvm0$Definition", + "type": "elide.runtime.node.os.$NodeOperatingSystem$Win32$Introspection", "methods": [ { "name": "", @@ -1384,7 +1216,7 @@ ] }, { - "type": "elide.runtime.node.worker.$NodeWorkerModule$Definition", + "type": "elide.runtime.node.os.$NodeOperatingSystemModule$Definition", "methods": [ { "name": "", @@ -1393,7 +1225,7 @@ ] }, { - "type": "elide.runtime.node.zlib.$NodeZlibModule$Definition", + "type": "elide.runtime.node.os.$NodeOperatingSystemModule$Introspection", "methods": [ { "name": "", @@ -1402,7 +1234,7 @@ ] }, { - "type": "elide.tool.cli.$Elide$Definition", + "type": "elide.runtime.node.os.$NodeOperatingSystemModule$Provide0$Definition", "methods": [ { "name": "", @@ -1411,7 +1243,7 @@ ] }, { - "type": "elide.tool.cli.AOTApplicationContextConfigurer", + "type": "elide.runtime.node.path.$NodePathsModule$Definition", "methods": [ { "name": "", @@ -1420,22 +1252,7 @@ ] }, { - "type": "elide.tool.cli.AbstractSubcommand", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.AbstractToolCommand", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.AotConstantPropertySources" - }, - { - "type": "elide.tool.cli.CliCommandInvocation", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.DeducedEnvironmentConfigurer", + "type": "elide.runtime.node.path.$NodePathsModule$Introspection", "methods": [ { "name": "", @@ -1444,17 +1261,16 @@ ] }, { - "type": "elide.tool.cli.Elide", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.EnvironmentPropertiesOptimizationLoader" - }, - { - "type": "elide.tool.cli.KnownMissingTypesOptimizationLoader" + "type": "elide.runtime.node.perfHooks.$NodePerformanceHooksModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "elide.tool.cli.NettyPropertiesAOTContextConfigurer", + "type": "elide.runtime.node.perfHooks.$NodePerformanceHooksModule$Introspection", "methods": [ { "name": "", @@ -1463,17 +1279,7 @@ ] }, { - "type": "elide.tool.cli.PublishersOptimizationsLoader" - }, - { - "type": "elide.tool.cli.StaticServicesLoader" - }, - { - "type": "elide.tool.cli.ToolCommandBase", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.cmd.discord.$ToolDiscordCommand$Definition", + "type": "elide.runtime.node.process.$NodeProcessModule$Definition", "methods": [ { "name": "", @@ -1482,7 +1288,7 @@ ] }, { - "type": "elide.tool.cli.cmd.discord.$ToolDiscordCommand$Introspection", + "type": "elide.runtime.node.process.$NodeProcessModule$Introspection", "methods": [ { "name": "", @@ -1491,7 +1297,7 @@ ] }, { - "type": "elide.tool.cli.cmd.help.$HelpCommand$Definition", + "type": "elide.runtime.node.querystring.$NodeQuerystringModule$Definition", "methods": [ { "name": "", @@ -1500,11 +1306,7 @@ ] }, { - "type": "elide.tool.cli.cmd.help.HelpCommand", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.cmd.info.$ToolInfoCommand$Definition", + "type": "elide.runtime.node.querystring.$NodeQuerystringModule$Introspection", "methods": [ { "name": "", @@ -1513,7 +1315,7 @@ ] }, { - "type": "elide.tool.cli.cmd.info.$ToolInfoCommand$Introspection", + "type": "elide.runtime.node.readline.$NodeReadlineModule$Definition", "methods": [ { "name": "", @@ -1522,11 +1324,7 @@ ] }, { - "type": "elide.tool.cli.cmd.info.ToolInfoCommand", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.cmd.pkl.$ToolPklCommand$Introspection", + "type": "elide.runtime.node.readline.$NodeReadlineModule$Introspection", "methods": [ { "name": "", @@ -1535,11 +1333,7 @@ ] }, { - "type": "elide.tool.cli.cmd.pkl.ToolPklCommand", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.cmd.repl.$DebugConfig$Introspection", + "type": "elide.runtime.node.readline.$NodeReadlinePromisesModule$Definition", "methods": [ { "name": "", @@ -1548,7 +1342,7 @@ ] }, { - "type": "elide.tool.cli.cmd.repl.$EnvironmentConfig$Introspection", + "type": "elide.runtime.node.readline.$NodeReadlinePromisesModule$Introspection", "methods": [ { "name": "", @@ -1557,7 +1351,7 @@ ] }, { - "type": "elide.tool.cli.cmd.repl.$InspectorConfig$Introspection", + "type": "elide.runtime.node.stream.$NodeStreamConsumersModule$Definition", "methods": [ { "name": "", @@ -1566,7 +1360,7 @@ ] }, { - "type": "elide.tool.cli.cmd.repl.$LanguageSelector$Introspection", + "type": "elide.runtime.node.stream.$NodeStreamConsumersModule$Introspection", "methods": [ { "name": "", @@ -1575,7 +1369,7 @@ ] }, { - "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$Definition", + "type": "elide.runtime.node.stream.$NodeStreamConsumersModule$Provide$graalvm0$Definition", "methods": [ { "name": "", @@ -1584,7 +1378,7 @@ ] }, { - "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$Introspection", + "type": "elide.runtime.node.stream.$NodeStreamModule$Definition", "methods": [ { "name": "", @@ -1593,27 +1387,7 @@ ] }, { - "type": "elide.tool.cli.cmd.repl.DebugConfig", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.cmd.repl.EnvironmentConfig", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.cmd.repl.InspectorConfig", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.cmd.repl.LanguageSelector", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.cmd.repl.ToolShellCommand", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.cmd.tool.$ToolInvokeCommand$Definition", + "type": "elide.runtime.node.stream.$NodeStreamModule$Introspection", "methods": [ { "name": "", @@ -1622,7 +1396,7 @@ ] }, { - "type": "elide.tool.cli.cmd.tool.$ToolInvokeCommand$Introspection", + "type": "elide.runtime.node.stream.$NodeStreamPromisesModule$Definition", "methods": [ { "name": "", @@ -1631,11 +1405,7 @@ ] }, { - "type": "elide.tool.cli.cmd.tool.ToolInvokeCommand", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.options.$AbstractEngineOptions$Introspection", + "type": "elide.runtime.node.stream.$NodeStreamPromisesModule$Introspection", "methods": [ { "name": "", @@ -1644,7 +1414,7 @@ ] }, { - "type": "elide.tool.cli.options.$AccessControlOptions$Introspection", + "type": "elide.runtime.node.stream.$NodeStreamPromisesModule$Provide$graalvm0$Definition", "methods": [ { "name": "", @@ -1653,7 +1423,7 @@ ] }, { - "type": "elide.tool.cli.options.$CommonOptions$Introspection", + "type": "elide.runtime.node.stream.$NodeStreamWebModule$Definition", "methods": [ { "name": "", @@ -1662,7 +1432,7 @@ ] }, { - "type": "elide.tool.cli.options.$EngineJavaScriptOptions$Introspection", + "type": "elide.runtime.node.stream.$NodeStreamWebModule$Introspection", "methods": [ { "name": "", @@ -1671,7 +1441,7 @@ ] }, { - "type": "elide.tool.cli.options.$LanguagePositionals$Introspection", + "type": "elide.runtime.node.stream.$NodeStreamWebModule$Provide$graalvm0$Definition", "methods": [ { "name": "", @@ -1680,43 +1450,16 @@ ] }, { - "type": "elide.tool.cli.options.AbstractEngineOptions", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.options.AccessControlOptions", - "allDeclaredFields": true - }, - { - "type": "elide.tool.cli.options.CommonOptions", - "allDeclaredFields": true, + "type": "elide.runtime.node.stringDecoder.$NodeStringDecoderModule$Definition", "methods": [ { - "name": "setDebug", - "parameterTypes": [ - "boolean" - ] - }, - { - "name": "setQuiet", - "parameterTypes": [ - "boolean" - ] - }, - { - "name": "setVerbose", - "parameterTypes": [ - "boolean" - ] + "name": "", + "parameterTypes": [] } ] }, { - "type": "elide.tool.cli.options.EngineJavaScriptOptions", - "allDeclaredFields": true - }, - { - "type": "elide.tool.err.$DefaultStructuredErrorRecorder$DefaultMarkdownErrorRecorderProvider$Definition", + "type": "elide.runtime.node.stringDecoder.$NodeStringDecoderModule$Introspection", "methods": [ { "name": "", @@ -1725,7 +1468,7 @@ ] }, { - "type": "elide.tool.err.$DefaultStructuredErrorRecorder$DefaultMarkdownErrorRecorderProvider$Get0$Definition", + "type": "elide.runtime.node.stringDecoder.$NodeStringDecoderModule$Provide$graalvm0$Definition", "methods": [ { "name": "", @@ -1734,7 +1477,7 @@ ] }, { - "type": "elide.tool.err.$ErrorHandlerAcquireTest$Definition", + "type": "elide.runtime.node.test.$NodeTestModule$Definition", "methods": [ { "name": "", @@ -1743,7 +1486,7 @@ ] }, { - "type": "elide.tool.err.$ErrorRecorderAcquireTest$Definition", + "type": "elide.runtime.node.test.$NodeTestModule$Introspection", "methods": [ { "name": "", @@ -1752,7 +1495,7 @@ ] }, { - "type": "elide.tool.err.$ErrorRecorderWriteTest$Definition", + "type": "elide.runtime.node.url.$NodeURLModule$Definition", "methods": [ { "name": "", @@ -1761,7 +1504,7 @@ ] }, { - "type": "elide.tool.io.$RuntimeWorkdirManager$DefaultRuntimeWorkdirManagerProvider$Definition", + "type": "elide.runtime.node.url.$NodeURLModule$Introspection", "methods": [ { "name": "", @@ -1770,7 +1513,7 @@ ] }, { - "type": "elide.tool.io.$RuntimeWorkdirManager$DefaultRuntimeWorkdirManagerProvider$Get0$Definition", + "type": "elide.runtime.node.url.$NodeURLModule$Provide$graalvm0$Definition", "methods": [ { "name": "", @@ -1779,7 +1522,7 @@ ] }, { - "type": "elide.tool.project.$DefaultProjectManager$Definition", + "type": "elide.runtime.node.worker.$NodeWorkerModule$Definition", "methods": [ { "name": "", @@ -1788,7 +1531,7 @@ ] }, { - "type": "elide.tool.testing.$SanitySelfTest$Definition", + "type": "elide.runtime.node.worker.$NodeWorkerModule$Introspection", "methods": [ { "name": "", @@ -1797,7 +1540,7 @@ ] }, { - "type": "elide.tool.transport.$EpollTest$Definition", + "type": "elide.runtime.node.zlib.$NodeZlibModule$Definition", "methods": [ { "name": "", @@ -1806,7 +1549,7 @@ ] }, { - "type": "elide.tool.transport.$NativeCryptoTest$Definition", + "type": "elide.runtime.node.zlib.$NodeZlibModule$Introspection", "methods": [ { "name": "", @@ -1815,7 +1558,7 @@ ] }, { - "type": "elide.tool.transport.$NativeTransportTest$Definition", + "type": "elide.tool.cli.$Elide$Definition", "methods": [ { "name": "", @@ -1824,10 +1567,7 @@ ] }, { - "type": "groovy.lang.Closure" - }, - { - "type": "io.micronaut.aop.internal.InterceptorRegistryBean", + "type": "elide.tool.cli.AOTApplicationContextConfigurer", "methods": [ { "name": "", @@ -1836,27 +1576,22 @@ ] }, { - "type": "io.micronaut.context.DefaultBeanContext$BeanDefinitionProducer", - "fields": [ - { - "name": "definition" - } - ] - }, - { - "type": "io.micronaut.context.annotation.Prototype" + "type": "elide.tool.cli.AbstractSubcommand", + "allDeclaredFields": true }, { - "type": "io.micronaut.context.env.PropertiesPropertySourceLoader" + "type": "elide.tool.cli.AbstractToolCommand", + "allDeclaredFields": true }, { - "type": "io.micronaut.context.env.exp.RandomPropertyExpressionResolver" + "type": "elide.tool.cli.AotConstantPropertySources" }, { - "type": "io.micronaut.context.env.yaml.YamlPropertySourceLoader" + "type": "elide.tool.cli.CliCommandInvocation", + "allDeclaredFields": true }, { - "type": "io.micronaut.context.event.ApplicationEventPublisherFactory", + "type": "elide.tool.cli.DeducedEnvironmentConfigurer", "methods": [ { "name": "", @@ -1865,7 +1600,17 @@ ] }, { - "type": "io.micronaut.context.propagation.instrument.execution.$ExecutorServiceInstrumenter$Definition", + "type": "elide.tool.cli.Elide", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.EnvironmentPropertiesOptimizationLoader" + }, + { + "type": "elide.tool.cli.KnownMissingTypesOptimizationLoader" + }, + { + "type": "elide.tool.cli.NettyPropertiesAOTContextConfigurer", "methods": [ { "name": "", @@ -1874,7 +1619,17 @@ ] }, { - "type": "io.micronaut.core.async.converters.ReactiveTypeConverterRegistrar", + "type": "elide.tool.cli.PublishersOptimizationsLoader" + }, + { + "type": "elide.tool.cli.StaticServicesLoader" + }, + { + "type": "elide.tool.cli.ToolCommandBase", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.discord.$ToolDiscordCommand$Definition", "methods": [ { "name": "", @@ -1883,7 +1638,7 @@ ] }, { - "type": "io.micronaut.discovery.$DefaultCompositeDiscoveryClient$Definition", + "type": "elide.tool.cli.cmd.discord.$ToolDiscordCommand$Introspection", "methods": [ { "name": "", @@ -1892,7 +1647,11 @@ ] }, { - "type": "io.micronaut.discovery.$DefaultServiceInstanceIdGenerator$Definition", + "type": "elide.tool.cli.cmd.discord.ToolDiscordCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.help.$HelpCommand$Definition", "methods": [ { "name": "", @@ -1901,7 +1660,11 @@ ] }, { - "type": "io.micronaut.discovery.cloud.digitalocean.$DigitalOceanInstanceMetadata$Introspection", + "type": "elide.tool.cli.cmd.help.HelpCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.info.$ToolInfoCommand$Definition", "methods": [ { "name": "", @@ -1910,7 +1673,7 @@ ] }, { - "type": "io.micronaut.discovery.config.$DefaultCompositeConfigurationClient$Definition", + "type": "elide.tool.cli.cmd.info.$ToolInfoCommand$Introspection", "methods": [ { "name": "", @@ -1919,7 +1682,11 @@ ] }, { - "type": "io.micronaut.health.$DefaultCurrentHealthStatus$Definition", + "type": "elide.tool.cli.cmd.info.ToolInfoCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.pkl.$ToolPklCommand$Introspection", "methods": [ { "name": "", @@ -1928,7 +1695,11 @@ ] }, { - "type": "io.micronaut.health.$HealthStatus$Introspection", + "type": "elide.tool.cli.cmd.pkl.ToolPklCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.$DebugConfig$Introspection", "methods": [ { "name": "", @@ -1937,7 +1708,7 @@ ] }, { - "type": "io.micronaut.health.$HeartbeatConfiguration$Definition", + "type": "elide.tool.cli.cmd.repl.$EnvironmentConfig$Introspection", "methods": [ { "name": "", @@ -1946,7 +1717,7 @@ ] }, { - "type": "io.micronaut.health.$HeartbeatDiscoveryClientCondition$Introspection", + "type": "elide.tool.cli.cmd.repl.$InspectorConfig$Introspection", "methods": [ { "name": "", @@ -1955,7 +1726,7 @@ ] }, { - "type": "io.micronaut.http.HttpTypeConverterRegistrar", + "type": "elide.tool.cli.cmd.repl.$LanguageSelector$Introspection", "methods": [ { "name": "", @@ -1964,7 +1735,7 @@ ] }, { - "type": "io.micronaut.http.bind.$DefaultRequestBinderRegistry$Definition", + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$Definition", "methods": [ { "name": "", @@ -1973,7 +1744,7 @@ ] }, { - "type": "io.micronaut.http.bind.binders.$DefaultBodyAnnotationBinder$Definition", + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$Introspection", "methods": [ { "name": "", @@ -1982,7 +1753,27 @@ ] }, { - "type": "io.micronaut.http.body.$ByteArrayBodyHandler$Definition", + "type": "elide.tool.cli.cmd.repl.DebugConfig", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.EnvironmentConfig", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.InspectorConfig", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.LanguageSelector", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.tool.$ToolInvokeCommand$Definition", "methods": [ { "name": "", @@ -1991,7 +1782,7 @@ ] }, { - "type": "io.micronaut.http.body.$CharSequenceBodyWriter$Definition", + "type": "elide.tool.cli.cmd.tool.$ToolInvokeCommand$Introspection", "methods": [ { "name": "", @@ -2000,7 +1791,11 @@ ] }, { - "type": "io.micronaut.http.body.$DefaultMessageBodyHandlerRegistry$Definition", + "type": "elide.tool.cli.cmd.tool.ToolInvokeCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.options.$AbstractEngineOptions$Introspection", "methods": [ { "name": "", @@ -2009,7 +1804,7 @@ ] }, { - "type": "io.micronaut.http.body.$StringBodyReader$Definition", + "type": "elide.tool.cli.options.$AccessControlOptions$Introspection", "methods": [ { "name": "", @@ -2018,7 +1813,7 @@ ] }, { - "type": "io.micronaut.http.body.$TextPlainObjectBodyReader$Definition", + "type": "elide.tool.cli.options.$CommonOptions$Introspection", "methods": [ { "name": "", @@ -2027,7 +1822,7 @@ ] }, { - "type": "io.micronaut.http.body.$TextPlainObjectBodyWriter$Definition", + "type": "elide.tool.cli.options.$EngineJavaScriptOptions$Introspection", "methods": [ { "name": "", @@ -2036,7 +1831,7 @@ ] }, { - "type": "io.micronaut.http.body.$TextStreamBodyWriter$Definition", + "type": "elide.tool.cli.options.$LanguagePositionals$Introspection", "methods": [ { "name": "", @@ -2045,16 +1840,43 @@ ] }, { - "type": "io.micronaut.http.body.$WritableBodyWriter$Definition", - "methods": [ - { - "name": "", - "parameterTypes": [] + "type": "elide.tool.cli.options.AbstractEngineOptions", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.options.AccessControlOptions", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.options.CommonOptions", + "allDeclaredFields": true, + "methods": [ + { + "name": "setDebug", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "setQuiet", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "setVerbose", + "parameterTypes": [ + "boolean" + ] } ] }, { - "type": "io.micronaut.http.codec.$CodecConfiguration$Definition", + "type": "elide.tool.cli.options.EngineJavaScriptOptions", + "allDeclaredFields": true + }, + { + "type": "elide.tool.err.$DefaultStructuredErrorRecorder$DefaultMarkdownErrorRecorderProvider$Definition", "methods": [ { "name": "", @@ -2063,7 +1885,7 @@ ] }, { - "type": "io.micronaut.http.converters.$HttpConverterRegistrar$Definition", + "type": "elide.tool.err.$DefaultStructuredErrorRecorder$DefaultMarkdownErrorRecorderProvider$Get0$Definition", "methods": [ { "name": "", @@ -2072,7 +1894,7 @@ ] }, { - "type": "io.micronaut.http.converters.SharedHttpConvertersRegistrar", + "type": "elide.tool.err.$ErrorHandlerAcquireTest$Definition", "methods": [ { "name": "", @@ -2081,7 +1903,7 @@ ] }, { - "type": "io.micronaut.http.expression.$RequestConditionContext$Definition", + "type": "elide.tool.err.$ErrorRecorderAcquireTest$Definition", "methods": [ { "name": "", @@ -2090,7 +1912,7 @@ ] }, { - "type": "io.micronaut.http.form.$FormConfigurationProperties$Definition", + "type": "elide.tool.err.$ErrorRecorderWriteTest$Definition", "methods": [ { "name": "", @@ -2099,7 +1921,7 @@ ] }, { - "type": "io.micronaut.http.hateoas.$AbstractResource$Introspection", + "type": "elide.tool.io.$RuntimeWorkdirManager$DefaultRuntimeWorkdirManagerProvider$Definition", "methods": [ { "name": "", @@ -2108,7 +1930,7 @@ ] }, { - "type": "io.micronaut.http.hateoas.$DefaultLink$Introspection", + "type": "elide.tool.io.$RuntimeWorkdirManager$DefaultRuntimeWorkdirManagerProvider$Get0$Definition", "methods": [ { "name": "", @@ -2117,7 +1939,7 @@ ] }, { - "type": "io.micronaut.http.hateoas.$GenericResource$Introspection", + "type": "elide.tool.project.$DefaultProjectManager$Definition", "methods": [ { "name": "", @@ -2126,7 +1948,7 @@ ] }, { - "type": "io.micronaut.http.hateoas.$JsonError$Introspection", + "type": "elide.tool.testing.$SanitySelfTest$Definition", "methods": [ { "name": "", @@ -2135,7 +1957,7 @@ ] }, { - "type": "io.micronaut.http.hateoas.$Resource$Introspection", + "type": "elide.tool.transport.$EpollTest$Definition", "methods": [ { "name": "", @@ -2144,7 +1966,7 @@ ] }, { - "type": "io.micronaut.http.hateoas.$VndError$Introspection", + "type": "elide.tool.transport.$NativeCryptoTest$Definition", "methods": [ { "name": "", @@ -2153,7 +1975,7 @@ ] }, { - "type": "io.micronaut.http.resource.$ResourceLoaderFactory$Definition", + "type": "elide.tool.transport.$NativeTransportTest$Definition", "methods": [ { "name": "", @@ -2162,7 +1984,10 @@ ] }, { - "type": "io.micronaut.http.resource.$ResourceLoaderFactory$FileSystemResourceLoader1$Definition", + "type": "groovy.lang.Closure" + }, + { + "type": "io.micronaut.aop.internal.InterceptorRegistryBean", "methods": [ { "name": "", @@ -2171,7 +1996,27 @@ ] }, { - "type": "io.micronaut.http.resource.$ResourceLoaderFactory$GetClassPathResourceLoader0$Definition", + "type": "io.micronaut.context.DefaultBeanContext$BeanDefinitionProducer", + "fields": [ + { + "name": "definition" + } + ] + }, + { + "type": "io.micronaut.context.annotation.Prototype" + }, + { + "type": "io.micronaut.context.env.PropertiesPropertySourceLoader" + }, + { + "type": "io.micronaut.context.env.exp.RandomPropertyExpressionResolver" + }, + { + "type": "io.micronaut.context.env.yaml.YamlPropertySourceLoader" + }, + { + "type": "io.micronaut.context.event.ApplicationEventPublisherFactory", "methods": [ { "name": "", @@ -2180,7 +2025,7 @@ ] }, { - "type": "io.micronaut.http.resource.$ResourceLoaderFactory$ResourceResolver2$Definition", + "type": "io.micronaut.context.propagation.instrument.execution.$ExecutorServiceInstrumenter$Definition", "methods": [ { "name": "", @@ -2189,7 +2034,7 @@ ] }, { - "type": "io.micronaut.http.ssl.$ClientSslConfiguration$Definition", + "type": "io.micronaut.core.async.converters.ReactiveTypeConverterRegistrar", "methods": [ { "name": "", @@ -2198,7 +2043,7 @@ ] }, { - "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$DefaultKeyConfiguration$Definition", + "type": "io.micronaut.discovery.$DefaultCompositeDiscoveryClient$Definition", "methods": [ { "name": "", @@ -2207,7 +2052,7 @@ ] }, { - "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$DefaultKeyStoreConfiguration$Definition", + "type": "io.micronaut.discovery.$DefaultServiceInstanceIdGenerator$Definition", "methods": [ { "name": "", @@ -2216,7 +2061,7 @@ ] }, { - "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$DefaultTrustStoreConfiguration$Definition", + "type": "io.micronaut.discovery.cloud.digitalocean.$DigitalOceanInstanceMetadata$Introspection", "methods": [ { "name": "", @@ -2225,7 +2070,7 @@ ] }, { - "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$Definition", + "type": "io.micronaut.discovery.config.$DefaultCompositeConfigurationClient$Definition", "methods": [ { "name": "", @@ -2234,7 +2079,7 @@ ] }, { - "type": "io.micronaut.http.ssl.$ServerSslConfiguration$Definition", + "type": "io.micronaut.health.$DefaultCurrentHealthStatus$Definition", "methods": [ { "name": "", @@ -2243,7 +2088,7 @@ ] }, { - "type": "io.micronaut.http.uri.$DefaultFormUrlEncodedDecoder$Definition", + "type": "io.micronaut.health.$HealthStatus$Introspection", "methods": [ { "name": "", @@ -2252,7 +2097,7 @@ ] }, { - "type": "io.micronaut.http.util.$HtmlEntityEncodingHtmlSanitizer$Definition", + "type": "io.micronaut.health.$HeartbeatConfiguration$Definition", "methods": [ { "name": "", @@ -2261,7 +2106,7 @@ ] }, { - "type": "io.micronaut.http.util.$OutgoingHttpRequestProcessorImpl$Definition", + "type": "io.micronaut.health.$HeartbeatDiscoveryClientCondition$Introspection", "methods": [ { "name": "", @@ -2270,7 +2115,7 @@ ] }, { - "type": "io.micronaut.inject.annotation.AnnotationConvertersRegistrar", + "type": "io.micronaut.http.HttpTypeConverterRegistrar", "methods": [ { "name": "", @@ -2279,7 +2124,7 @@ ] }, { - "type": "io.micronaut.inject.provider.BeanProviderDefinition", + "type": "io.micronaut.http.bind.$DefaultRequestBinderRegistry$Definition", "methods": [ { "name": "", @@ -2288,7 +2133,7 @@ ] }, { - "type": "io.micronaut.inject.provider.JakartaProviderBeanDefinition", + "type": "io.micronaut.http.bind.binders.$DefaultBodyAnnotationBinder$Definition", "methods": [ { "name": "", @@ -2297,7 +2142,7 @@ ] }, { - "type": "io.micronaut.logging.$LogLevel$Introspection", + "type": "io.micronaut.http.body.$ByteArrayBodyHandler$Definition", "methods": [ { "name": "", @@ -2306,7 +2151,7 @@ ] }, { - "type": "io.micronaut.logging.LoggingConverterRegistrar", + "type": "io.micronaut.http.body.$CharSequenceBodyWriter$Definition", "methods": [ { "name": "", @@ -2315,7 +2160,7 @@ ] }, { - "type": "io.micronaut.logging.impl.$LogbackLoggingSystem$Definition", + "type": "io.micronaut.http.body.$DefaultMessageBodyHandlerRegistry$Definition", "methods": [ { "name": "", @@ -2324,7 +2169,7 @@ ] }, { - "type": "io.micronaut.retry.annotation.$DefaultRetryPredicate$Introspection", + "type": "io.micronaut.http.body.$StringBodyReader$Definition", "methods": [ { "name": "", @@ -2333,7 +2178,7 @@ ] }, { - "type": "io.micronaut.retry.annotation.$RetryPredicate$Introspection", + "type": "io.micronaut.http.body.$TextPlainObjectBodyReader$Definition", "methods": [ { "name": "", @@ -2342,7 +2187,7 @@ ] }, { - "type": "io.micronaut.retry.intercept.$DefaultRetryInterceptor$Definition", + "type": "io.micronaut.http.body.$TextPlainObjectBodyWriter$Definition", "methods": [ { "name": "", @@ -2351,7 +2196,7 @@ ] }, { - "type": "io.micronaut.retry.intercept.$RecoveryInterceptor$Definition", + "type": "io.micronaut.http.body.$TextStreamBodyWriter$Definition", "methods": [ { "name": "", @@ -2360,7 +2205,7 @@ ] }, { - "type": "io.micronaut.runtime.$ApplicationConfiguration$Definition", + "type": "io.micronaut.http.body.$WritableBodyWriter$Definition", "methods": [ { "name": "", @@ -2369,7 +2214,7 @@ ] }, { - "type": "io.micronaut.runtime.$ApplicationConfiguration$InstanceConfiguration$Definition", + "type": "io.micronaut.http.codec.$CodecConfiguration$Definition", "methods": [ { "name": "", @@ -2378,7 +2223,7 @@ ] }, { - "type": "io.micronaut.runtime.beans.$MapperIntroduction$Definition", + "type": "io.micronaut.http.converters.$HttpConverterRegistrar$Definition", "methods": [ { "name": "", @@ -2387,7 +2232,7 @@ ] }, { - "type": "io.micronaut.runtime.beans.$MapperMethodProcessor$Definition", + "type": "io.micronaut.http.converters.SharedHttpConvertersRegistrar", "methods": [ { "name": "", @@ -2396,7 +2241,7 @@ ] }, { - "type": "io.micronaut.runtime.context.$CompositeMessageSource$Definition", + "type": "io.micronaut.http.expression.$RequestConditionContext$Definition", "methods": [ { "name": "", @@ -2405,7 +2250,7 @@ ] }, { - "type": "io.micronaut.runtime.context.env.$ConfigurationIntroductionAdvice$Definition", + "type": "io.micronaut.http.form.$FormConfigurationProperties$Definition", "methods": [ { "name": "", @@ -2414,7 +2259,7 @@ ] }, { - "type": "io.micronaut.runtime.context.scope.$ThreadLocalCustomScope$Definition", + "type": "io.micronaut.http.hateoas.$AbstractResource$Introspection", "methods": [ { "name": "", @@ -2423,7 +2268,7 @@ ] }, { - "type": "io.micronaut.runtime.context.scope.refresh.$RefreshInterceptor$Definition", + "type": "io.micronaut.http.hateoas.$DefaultLink$Introspection", "methods": [ { "name": "", @@ -2432,7 +2277,7 @@ ] }, { - "type": "io.micronaut.runtime.context.scope.refresh.$RefreshScope$Definition", + "type": "io.micronaut.http.hateoas.$GenericResource$Introspection", "methods": [ { "name": "", @@ -2441,7 +2286,7 @@ ] }, { - "type": "io.micronaut.runtime.context.scope.refresh.$RefreshScopeCondition$Introspection", + "type": "io.micronaut.http.hateoas.$JsonError$Introspection", "methods": [ { "name": "", @@ -2450,7 +2295,7 @@ ] }, { - "type": "io.micronaut.runtime.converters.time.TimeConverterRegistrar", + "type": "io.micronaut.http.hateoas.$Resource$Introspection", "methods": [ { "name": "", @@ -2459,7 +2304,7 @@ ] }, { - "type": "io.micronaut.runtime.http.codec.$MediaTypeCodecRegistryFactory$Definition", + "type": "io.micronaut.http.hateoas.$VndError$Introspection", "methods": [ { "name": "", @@ -2468,7 +2313,7 @@ ] }, { - "type": "io.micronaut.runtime.http.codec.$MediaTypeCodecRegistryFactory$MediaTypeCodecRegistry0$Definition", + "type": "io.micronaut.http.resource.$ResourceLoaderFactory$Definition", "methods": [ { "name": "", @@ -2477,7 +2322,7 @@ ] }, { - "type": "io.micronaut.runtime.http.codec.$TextPlainCodec$Definition", + "type": "io.micronaut.http.resource.$ResourceLoaderFactory$FileSystemResourceLoader1$Definition", "methods": [ { "name": "", @@ -2486,7 +2331,7 @@ ] }, { - "type": "io.micronaut.runtime.http.scope.$RequestCustomScope$Definition", + "type": "io.micronaut.http.resource.$ResourceLoaderFactory$GetClassPathResourceLoader0$Definition", "methods": [ { "name": "", @@ -2495,7 +2340,7 @@ ] }, { - "type": "io.micronaut.scheduling.$DefaultTaskExceptionHandler$Definition", + "type": "io.micronaut.http.resource.$ResourceLoaderFactory$ResourceResolver2$Definition", "methods": [ { "name": "", @@ -2504,7 +2349,7 @@ ] }, { - "type": "io.micronaut.scheduling.$LoomSupport$LoomCondition$Introspection", + "type": "io.micronaut.http.ssl.$ClientSslConfiguration$Definition", "methods": [ { "name": "", @@ -2513,7 +2358,7 @@ ] }, { - "type": "io.micronaut.scheduling.$ScheduledExecutorTaskScheduler$Definition", + "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$DefaultKeyConfiguration$Definition", "methods": [ { "name": "", @@ -2522,7 +2367,7 @@ ] }, { - "type": "io.micronaut.scheduling.async.$AsyncInterceptor$Definition", + "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$DefaultKeyStoreConfiguration$Definition", "methods": [ { "name": "", @@ -2531,7 +2376,7 @@ ] }, { - "type": "io.micronaut.scheduling.executor.$DefaultExecutorSelector$Definition", + "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$DefaultTrustStoreConfiguration$Definition", "methods": [ { "name": "", @@ -2540,7 +2385,7 @@ ] }, { - "type": "io.micronaut.scheduling.executor.$DefaultThreadFactory$Definition", + "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$Definition", "methods": [ { "name": "", @@ -2549,7 +2394,7 @@ ] }, { - "type": "io.micronaut.scheduling.executor.$DefaultThreadFactory$ThreadFactory0$Definition", + "type": "io.micronaut.http.ssl.$ServerSslConfiguration$Definition", "methods": [ { "name": "", @@ -2558,7 +2403,7 @@ ] }, { - "type": "io.micronaut.scheduling.executor.$ExecutorFactory$Definition", + "type": "io.micronaut.http.uri.$DefaultFormUrlEncodedDecoder$Definition", "methods": [ { "name": "", @@ -2567,7 +2412,7 @@ ] }, { - "type": "io.micronaut.scheduling.executor.$ExecutorFactory$EventLoopGroupThreadFactory0$Definition", + "type": "io.micronaut.http.util.$HtmlEntityEncodingHtmlSanitizer$Definition", "methods": [ { "name": "", @@ -2576,7 +2421,7 @@ ] }, { - "type": "io.micronaut.scheduling.executor.$ExecutorFactory$ExecutorService1$Definition", + "type": "io.micronaut.http.util.$OutgoingHttpRequestProcessorImpl$Definition", "methods": [ { "name": "", @@ -2585,7 +2430,7 @@ ] }, { - "type": "io.micronaut.scheduling.executor.$IOExecutorServiceConfig$Blocking2$Definition", + "type": "io.micronaut.inject.annotation.AnnotationConvertersRegistrar", "methods": [ { "name": "", @@ -2594,7 +2439,7 @@ ] }, { - "type": "io.micronaut.scheduling.executor.$IOExecutorServiceConfig$Definition", + "type": "io.micronaut.inject.provider.BeanProviderDefinition", "methods": [ { "name": "", @@ -2603,7 +2448,7 @@ ] }, { - "type": "io.micronaut.scheduling.executor.$IOExecutorServiceConfig$Virtual1$Definition", + "type": "io.micronaut.inject.provider.JakartaProviderBeanDefinition", "methods": [ { "name": "", @@ -2612,7 +2457,7 @@ ] }, { - "type": "io.micronaut.scheduling.executor.$UserExecutorConfiguration$Definition", + "type": "io.micronaut.logging.$LogLevel$Introspection", "methods": [ { "name": "", @@ -2621,7 +2466,7 @@ ] }, { - "type": "io.micronaut.scheduling.io.watch.$FileWatchCondition$Introspection", + "type": "io.micronaut.logging.LoggingConverterRegistrar", "methods": [ { "name": "", @@ -2630,7 +2475,7 @@ ] }, { - "type": "io.micronaut.scheduling.processor.$ScheduledMethodProcessor$ApplicationEventListener$scheduleTasks1$Intercepted$Definition", + "type": "io.micronaut.logging.impl.$LogbackLoggingSystem$Definition", "methods": [ { "name": "", @@ -2639,7 +2484,7 @@ ] }, { - "type": "io.micronaut.scheduling.processor.$ScheduledMethodProcessor$Definition", + "type": "io.micronaut.retry.annotation.$DefaultRetryPredicate$Introspection", "methods": [ { "name": "", @@ -2648,183 +2493,366 @@ ] }, { - "type": "io.netty.channel.DefaultFileRegion" - }, - { - "type": "io.netty.channel.epoll.NativeDatagramPacketArray$NativeDatagramPacket" - }, - { - "type": "io.netty.channel.unix.DatagramSocketAddress" - }, - { - "type": "io.netty.channel.unix.DomainDatagramSocketAddress" - }, - { - "type": "io.netty.channel.unix.FileDescriptor", - "fields": [ + "type": "io.micronaut.retry.annotation.$RetryPredicate$Introspection", + "methods": [ { - "name": "state" + "name": "", + "parameterTypes": [] } ] }, { - "type": "io.netty.channel.unix.PeerCredentials" - }, - { - "type": "io.netty.internal.tcnative.CertificateCallback" - }, - { - "type": "io.netty.internal.tcnative.CertificateCallbackTask" - }, - { - "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodDecryptTask" - }, - { - "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodSignTask" - }, - { - "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodTask" - }, - { - "type": "io.netty.internal.tcnative.SSLTask" - }, - { - "type": "io.netty.util.AbstractReferenceCounted", - "fields": [ + "type": "io.micronaut.retry.intercept.$DefaultRetryInterceptor$Definition", + "methods": [ { - "name": "refCnt" + "name": "", + "parameterTypes": [] } ] }, { - "type": "io.netty.util.internal.NativeLibraryUtil", + "type": "io.micronaut.retry.intercept.$RecoveryInterceptor$Definition", "methods": [ { - "name": "loadLibrary", - "parameterTypes": [ - "java.lang.String", - "boolean" - ] + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.io.FileDescriptor" + "type": "io.micronaut.runtime.$ApplicationConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.io.FilePermission" + "type": "io.micronaut.runtime.$ApplicationConfiguration$InstanceConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.io.IOException" + "type": "io.micronaut.runtime.beans.$MapperIntroduction$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.lang.ClassLoader", - "fields": [ + "type": "io.micronaut.runtime.beans.$MapperMethodProcessor$Definition", + "methods": [ { - "name": "classLoaderValueMap" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.lang.ClassValue" + "type": "io.micronaut.runtime.context.$CompositeMessageSource$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.lang.Exception" + "type": "io.micronaut.runtime.context.env.$ConfigurationIntroductionAdvice$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.lang.IllegalArgumentException" + "type": "io.micronaut.runtime.context.scope.$ThreadLocalCustomScope$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.lang.NullPointerException" + "type": "io.micronaut.runtime.context.scope.refresh.$RefreshInterceptor$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.lang.Object", - "allDeclaredFields": true + "type": "io.micronaut.runtime.context.scope.refresh.$RefreshScope$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.context.scope.refresh.$RefreshScopeCondition$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.lang.OutOfMemoryError" + "type": "io.micronaut.runtime.converters.time.TimeConverterRegistrar", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.lang.RuntimeException" + "type": "io.micronaut.runtime.http.codec.$MediaTypeCodecRegistryFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.lang.RuntimePermission" + "type": "io.micronaut.runtime.http.codec.$MediaTypeCodecRegistryFactory$MediaTypeCodecRegistry0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.lang.String" + "type": "io.micronaut.runtime.http.codec.$TextPlainCodec$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.lang.Thread", - "fields": [ + "type": "io.micronaut.runtime.http.scope.$RequestCustomScope$Definition", + "methods": [ { - "name": "threadLocalRandomProbe" + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.lang.management.ManagementFactory", + "type": "io.micronaut.scheduling.$DefaultTaskExceptionHandler$Definition", "methods": [ { - "name": "getRuntimeMXBean", + "name": "", "parameterTypes": [] } ] }, { - "type": "java.lang.management.RuntimeMXBean", + "type": "io.micronaut.scheduling.$LoomSupport$LoomCondition$Introspection", "methods": [ { - "name": "getInputArguments", + "name": "", "parameterTypes": [] } ] }, { - "type": "java.net.InetSocketAddress" + "type": "io.micronaut.scheduling.$ScheduledExecutorTaskScheduler$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.net.NetPermission" + "type": "io.micronaut.scheduling.async.$AsyncInterceptor$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.net.PortUnreachableException" + "type": "io.micronaut.scheduling.executor.$DefaultExecutorSelector$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.net.SocketPermission" + "type": "io.micronaut.scheduling.executor.$DefaultThreadFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] }, { - "type": "java.net.URLPermission", + "type": "io.micronaut.scheduling.executor.$DefaultThreadFactory$ThreadFactory0$Definition", "methods": [ { "name": "", - "parameterTypes": [ - "java.lang.String", - "java.lang.String" - ] + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$ExecutorFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$ExecutorFactory$EventLoopGroupThreadFactory0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$ExecutorFactory$ExecutorService1$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$IOExecutorServiceConfig$Blocking2$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$IOExecutorServiceConfig$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$IOExecutorServiceConfig$Virtual1$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$UserExecutorConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.io.watch.$FileWatchCondition$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.processor.$ScheduledMethodProcessor$ApplicationEventListener$scheduleTasks1$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.processor.$ScheduledMethodProcessor$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] } ] }, { - "type": "java.nio.Bits" + "type": "java.io.FilePermission" }, { - "type": "java.nio.Buffer", + "type": "java.lang.ClassLoader", "fields": [ { - "name": "address" + "name": "classLoaderValueMap" } ] }, { - "type": "java.nio.ByteBuffer" + "type": "java.lang.ClassValue" + }, + { + "type": "java.lang.Object", + "allDeclaredFields": true + }, + { + "type": "java.lang.RuntimePermission" + }, + { + "type": "java.lang.Thread", + "fields": [ + { + "name": "threadLocalRandomProbe" + } + ] }, { - "type": "java.nio.DirectByteBuffer" + "type": "java.net.NetPermission" }, { - "type": "java.nio.channels.ClosedChannelException" + "type": "java.net.SocketPermission" }, { - "type": "java.nio.channels.FileChannel" + "type": "java.net.URLPermission", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ] + } + ] }, { "type": "java.nio.file.Path" @@ -2947,20 +2975,7 @@ "type": "jdk.internal.jrtfs.JrtFileSystemProvider" }, { - "type": "jdk.internal.misc.Unsafe", - "methods": [ - { - "name": "allocateUninitializedArray", - "parameterTypes": [ - "java.lang.Class", - "int" - ] - }, - { - "name": "getUnsafe", - "parameterTypes": [] - } - ] + "type": "jdk.internal.misc.Unsafe" }, { "type": "kotlin.SafePublicationLazyImpl", @@ -2983,18 +2998,18 @@ ] }, { - "type": "kotlinx.atomicfu.AtomicBoolean", + "type": "kotlinx.atomicfu.AtomicRef", "fields": [ { - "name": "_value" + "name": "value" } ] }, { - "type": "kotlinx.atomicfu.AtomicRef", + "type": "kotlinx.coroutines.DispatchedCoroutine", "fields": [ { - "name": "value" + "name": "_decision$volatile" } ] }, @@ -3023,20 +3038,6 @@ } ] }, - { - "type": "kotlinx.coroutines.JobSupport$Finishing", - "fields": [ - { - "name": "_exceptionsHolder$volatile" - }, - { - "name": "_isCompleting$volatile" - }, - { - "name": "_rootCause$volatile" - } - ] - }, { "type": "kotlinx.coroutines.internal.DispatchedContinuation", "fields": [ @@ -3093,895 +3094,1037 @@ ] }, { - "type": "libcore.io.Memory" - }, - { - "type": "org.pkl.core.runtime.VmFileDetector" - }, - { - "type": "org.pkl.core.runtime.VmLanguageProvider" - }, - { - "type": "org.sqlite.JDBC" - }, - { - "type": "picocli.CommandLine$AutoHelpMixin", - "allDeclaredFields": true - }, - { - "type": "sun.misc.Unsafe", - "allDeclaredFields": true, - "methods": [ - { - "name": "invokeCleaner", - "parameterTypes": [ - "java.nio.ByteBuffer" - ] - } - ] - }, - { - "type": "sun.security.provider.NativePRNG", - "methods": [ - { - "name": "", - "parameterTypes": [ - "java.security.SecureRandomParameters" - ] - } - ] - }, - { - "type": "tools.elide.data.Encoding" - }, - { - "type": "tools.elide.vfs.Directory", - "methods": [ - { - "name": "getChildrenList", - "parameterTypes": [] - }, + "type": "kotlinx.coroutines.scheduling.CoroutineScheduler$Worker", + "fields": [ { - "name": "getName", - "parameterTypes": [] + "name": "workerCtl$volatile" } ] }, { - "type": "tools.elide.vfs.Directory$Builder" - }, - { - "type": "tools.elide.vfs.File", - "methods": [ - { - "name": "getCompressed", - "parameterTypes": [] - }, - { - "name": "getDefaultInstance", - "parameterTypes": [] - }, - { - "name": "getEncodingValue", - "parameterTypes": [] - }, - { - "name": "getFileTypeCase", - "parameterTypes": [] - }, - { - "name": "getName", - "parameterTypes": [] - }, + "type": "kotlinx.coroutines.scheduling.WorkQueue", + "fields": [ { - "name": "getOffset", - "parameterTypes": [] + "name": "blockingTasksInBuffer$volatile" }, { - "name": "getSize", - "parameterTypes": [] + "name": "consumerIndex$volatile" }, { - "name": "getTail", - "parameterTypes": [] - }, - { - "name": "hasFingerprint", - "parameterTypes": [] + "name": "lastScheduledTask$volatile" }, { - "name": "hasModified", - "parameterTypes": [] + "name": "producerIndex$volatile" } ] }, { - "type": "tools.elide.vfs.File$Builder" + "type": "org.graalvm.polyglot.io.IOHelper", + "fields": [ + { + "name": "ACCESS" + } + ] }, { - "type": "tools.elide.vfs.File$FileFingerprint" + "type": "org.graalvm.polyglot.management.Management", + "fields": [ + { + "name": "ACCESS" + } + ] }, { - "type": "tools.elide.vfs.KnownMimeType" + "type": "picocli.CommandLine$AutoHelpMixin", + "allDeclaredFields": true }, { - "type": "tools.elide.vfs.TreeEntry", + "type": "sun.java2d.marlin.DMarlinRenderingEngine", "methods": [ { - "name": "getDirectory", - "parameterTypes": [] - }, - { - "name": "getEntryCase", - "parameterTypes": [] - }, - { - "name": "getFile", - "parameterTypes": [] - }, - { - "name": "hasParent", + "name": "", "parameterTypes": [] } ] - }, - { - "type": "tools.elide.vfs.TreeEntry$Builder" } ], "resources": [ { - "glob": "META-INF/services/java.net.spi.InetAddressResolverProvider" - }, - { - "glob": "org/jline/utils/*.caps" + "glob": "ElideTool.properties" }, { - "glob": "sun/util/logging/resources/logging_en.properties", - "module": "java.logging" + "glob": "ElideTool_en.properties" }, { - "glob": "sun/util/logging/resources/logging_en_US.properties", - "module": "java.logging" + "glob": "ElideTool_en_US.properties" }, { - "glob": "META-INF/maven/org.jline/jline-native/pom.properties" - }, - { - "glob": "META-INF/elide/embedded/runtime/js/js.vfs.tar" + "glob": "META-INF/graalvm/org.graalvm.polyglot/version" }, { - "glob": "META-INF/elide/embedded/runtime/js/polyfills.js" + "glob": "META-INF/graalvm/org.graalvm.truffle/version" }, { - "glob": "META-INF/elide/embedded/runtime/js/runtime.json.gz" + "glob": "META-INF/micronaut/" }, { - "glob": "META-INF/elide/embedded/runtime/ts/runtime.json.gz" + "glob": "META-INF/resources/engine/libtruffleattach/linux/amd64/sha256" }, { - "glob": "META-INF/graalvm/org.graalvm.polyglot/version" + "glob": "META-INF/services/ch.qos.logback.classic.spi.Configurator" }, { - "glob": "META-INF/graalvm/org.graalvm.truffle/version" + "glob": "META-INF/services/com.oracle.truffle.api.TruffleRuntimeAccess" }, { - "glob": "META-INF/maven/org.xerial/sqlite-jdbc/VERSION" + "glob": "META-INF/services/com.oracle.truffle.api.impl.TruffleLocator" }, { - "glob": "META-INF/maven/org.xerial/sqlite-jdbc/pom.properties" + "glob": "META-INF/services/com.oracle.truffle.api.library.DefaultExportProvider" }, { - "glob": "META-INF/micronaut/" + "glob": "META-INF/services/com.oracle.truffle.api.library.provider.DefaultExportProvider" }, { - "glob": "META-INF/native/libnetty_transport_native_epoll_x86_64.so" + "glob": "META-INF/services/com.oracle.truffle.runtime.EngineCacheSupport" }, { - "glob": "META-INF/native/libnetty_transport_native_io_uring_x86_64.so" + "glob": "META-INF/services/com.oracle.truffle.runtime.FloodControlHandler" }, { - "glob": "META-INF/resources/engine/libtruffleattach/linux/amd64/sha256" + "glob": "META-INF/services/com.oracle.truffle.runtime.LoopNodeFactory" }, { - "glob": "META-INF/services/ch.qos.logback.classic.spi.Configurator" + "glob": "META-INF/services/com.oracle.truffle.runtime.TruffleTypes" }, { - "glob": "META-INF/services/com.oracle.truffle.api.TruffleLanguage$Provider" + "glob": "META-INF/services/io.micronaut.context.ApplicationContextConfigurer" }, { - "glob": "META-INF/services/com.oracle.truffle.api.TruffleRuntimeAccess" + "glob": "META-INF/services/io.micronaut.core.optim.StaticOptimizations$Loader" }, { - "glob": "META-INF/services/com.oracle.truffle.api.impl.TruffleLocator" + "glob": "META-INF/services/java.lang.System$LoggerFinder" }, { - "glob": "META-INF/services/com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider" + "glob": "META-INF/services/java.nio.file.spi.FileSystemProvider" }, { - "glob": "META-INF/services/com.oracle.truffle.api.instrumentation.provider.TruffleInstrumentProvider" + "glob": "META-INF/services/java.time.zone.ZoneRulesProvider" }, { - "glob": "META-INF/services/com.oracle.truffle.api.library.DefaultExportProvider" + "glob": "META-INF/services/java.util.spi.ResourceBundleControlProvider" }, { - "glob": "META-INF/services/com.oracle.truffle.api.library.provider.DefaultExportProvider" + "glob": "META-INF/services/org.graalvm.polyglot.impl.AbstractPolyglotImpl" }, { - "glob": "META-INF/services/com.oracle.truffle.api.object.LayoutFactory" + "glob": "META-INF/services/org.slf4j.spi.SLF4JServiceProvider" }, { - "glob": "META-INF/services/com.oracle.truffle.api.provider.InternalResourceProvider" + "glob": "logback-test.scmo" }, { - "glob": "META-INF/services/com.oracle.truffle.api.provider.TruffleLanguageProvider" + "glob": "logback.scmo" }, { - "glob": "META-INF/services/com.oracle.truffle.js.runtime.Evaluator" + "glob": "org/fusesource/jansi/internal/native/Linux/x86_64/libjansi.so" }, { - "glob": "META-INF/services/com.oracle.truffle.runtime.EngineCacheSupport" + "glob": "org/fusesource/jansi/jansi.properties" }, { - "glob": "META-INF/services/com.oracle.truffle.runtime.FloodControlHandler" + "module": "java.desktop", + "glob": "sun/awt/resources/awt_en.properties" }, { - "glob": "META-INF/services/com.oracle.truffle.runtime.LoopNodeFactory" - }, + "module": "java.desktop", + "glob": "sun/awt/resources/awt_en_US.properties" + } + ], + "bundles": [ { - "glob": "META-INF/services/com.oracle.truffle.runtime.TruffleTypes" + "name": "ElideTool", + "locales": [ + "en-US" + ] }, { - "glob": "META-INF/services/com.oracle.truffle.runtime.jfr.EventFactory$Provider" - }, + "name": "sun.awt.resources.awt", + "locales": [ + "en-US" + ] + } + ], + "serialization": [ { - "glob": "META-INF/services/elide.runtime.intrinsics.GuestIntrinsic" + "type": "ch.qos.logback.classic.model.ConfigurationModel" }, { - "glob": "META-INF/services/io.micronaut.context.ApplicationContextConfigurer" + "type": "ch.qos.logback.classic.model.ContextNameModel" }, { - "glob": "META-INF/services/io.micronaut.core.optim.StaticOptimizations$Loader" + "type": "ch.qos.logback.classic.model.LoggerContextListenerModel" }, { - "glob": "META-INF/services/java.lang.System$LoggerFinder" + "type": "ch.qos.logback.classic.model.LoggerModel" }, { - "glob": "META-INF/services/java.nio.channels.spi.SelectorProvider" + "type": "ch.qos.logback.classic.model.RootLoggerModel" }, { - "glob": "META-INF/services/java.nio.file.spi.FileSystemProvider" + "type": "ch.qos.logback.core.model.AppenderModel" }, { - "glob": "META-INF/services/java.nio.file.spi.FileTypeDetector" + "type": "ch.qos.logback.core.model.AppenderRefModel" }, { - "glob": "META-INF/services/java.sql.Driver" + "type": "ch.qos.logback.core.model.ComponentModel" }, { - "glob": "META-INF/services/java.time.zone.ZoneRulesProvider" + "type": "ch.qos.logback.core.model.ImplicitModel" }, { - "glob": "META-INF/services/java.util.spi.ResourceBundleControlProvider" + "type": "ch.qos.logback.core.model.Model" }, { - "glob": "META-INF/services/org.graalvm.home.HomeFinder" + "type": "ch.qos.logback.core.model.NamedComponentModel" }, { - "glob": "META-INF/services/org.graalvm.polyglot.impl.AbstractPolyglotImpl" + "type": "ch.qos.logback.core.model.NamedModel" }, { - "glob": "META-INF/services/org.slf4j.spi.SLF4JServiceProvider" + "type": "ch.qos.logback.core.model.PropertyModel" }, { - "glob": "logback-test.scmo" + "type": "ch.qos.logback.core.model.SerializeModelModel" }, { - "glob": "logback.scmo" + "type": "ch.qos.logback.core.model.SiftModel" }, { - "module": "java.base", - "glob": "sun/net/www/content-types.properties" + "type": "ch.qos.logback.core.model.StatusListenerModel" }, { - "module": "jdk.jfr", - "glob": "jdk/jfr/internal/types/metadata.bin" + "type": "java.util.ArrayList" } ], - "bundles": [ - { - "name":"ElideTool", - "locales":["en-US"] - }, - { - "name":"org.pkl.core.errorMessages", - "locales":["en"] - }, + "jni": [ { - "name":"sun.text.resources.BreakIteratorInfo", - "locales":["und"] + "type": "[Lsun.java2d.loops.GraphicsPrimitive;" }, { - "name":"sun.text.resources.BreakIteratorResources", - "locales":["en", "en-US", "und"] + "type": "java.awt.AlphaComposite", + "fields": [ + { + "name": "extraAlpha" + }, + { + "name": "rule" + } + ] }, { - "name":"sun.text.resources.cldr.FormatData", - "locales":["en", "en-US", "und"] + "type": "java.awt.Color", + "methods": [ + { + "name": "getRGB", + "parameterTypes": [] + } + ] }, { - "name":"sun.util.resources.cldr.CalendarData", - "locales":["und"] + "type": "java.awt.Desktop$Action", + "fields": [ + { + "name": "BROWSE" + }, + { + "name": "MAIL" + }, + { + "name": "OPEN" + } + ] }, { - "name":"sun.util.resources.cldr.TimeZoneNames", - "locales":["en", "en-US", "und"] + "type": "java.awt.GraphicsEnvironment", + "methods": [ + { + "name": "isHeadless", + "parameterTypes": [] + } + ] }, { - "name": "com.sun.tools.javac.resources.compiler", - "locales": ["en"] + "type": "java.awt.Rectangle", + "methods": [ + { + "name": "", + "parameterTypes": [ + "int", + "int", + "int", + "int" + ] + } + ] }, { - "name": "sun.util.logging.resources.logging", - "locales": ["en", "en-US"] + "type": "java.awt.geom.AffineTransform", + "fields": [ + { + "name": "m00" + }, + { + "name": "m01" + }, + { + "name": "m02" + }, + { + "name": "m10" + }, + { + "name": "m11" + }, + { + "name": "m12" + } + ] }, { - "name": "sun.tools.jar.resources.jar", - "locales": ["en"] + "type": "java.awt.geom.Path2D", + "fields": [ + { + "name": "numTypes" + }, + { + "name": "pointTypes" + }, + { + "name": "windingRule" + } + ] }, { - "name": "com.sun.tools.javac.resources.javac", - "locales": ["en"] - } - ], - "serialization": [ - { - "type": "ch.qos.logback.classic.model.ConfigurationModel" + "type": "java.awt.geom.Path2D$Float", + "fields": [ + { + "name": "floatCoords" + } + ] }, { - "type": "ch.qos.logback.classic.model.ContextNameModel" + "type": "java.awt.image.ColorModel", + "fields": [ + { + "name": "colorSpace" + }, + { + "name": "colorSpaceType" + }, + { + "name": "isAlphaPremultiplied" + }, + { + "name": "is_sRGB" + }, + { + "name": "nBits" + }, + { + "name": "numComponents" + }, + { + "name": "supportsAlpha" + }, + { + "name": "transparency" + } + ], + "methods": [ + { + "name": "getRGBdefault", + "parameterTypes": [] + } + ] }, { - "type": "ch.qos.logback.classic.model.LoggerContextListenerModel" + "type": "java.awt.image.IndexColorModel", + "fields": [ + { + "name": "allgrayopaque" + }, + { + "name": "map_size" + }, + { + "name": "rgb" + }, + { + "name": "transparent_index" + } + ] }, { - "type": "ch.qos.logback.classic.model.LoggerModel" + "type": "java.lang.Boolean", + "methods": [ + { + "name": "getBoolean", + "parameterTypes": [ + "java.lang.String" + ] + } + ] }, { - "type": "ch.qos.logback.classic.model.RootLoggerModel" + "type": "java.lang.Class", + "methods": [ + { + "name": "getClassLoader", + "parameterTypes": [] + } + ] }, { - "type": "ch.qos.logback.core.model.AppenderModel" + "type": "java.lang.ClassLoader", + "methods": [ + { + "name": "loadClass", + "parameterTypes": [ + "java.lang.String" + ] + } + ] }, { - "type": "ch.qos.logback.core.model.AppenderRefModel" + "type": "java.lang.System", + "methods": [ + { + "name": "load", + "parameterTypes": [ + "java.lang.String" + ] + } + ] }, { - "type": "ch.qos.logback.core.model.ComponentModel" + "type": "java.util.ArrayList", + "methods": [ + { + "name": "add", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "clear", + "parameterTypes": [] + } + ] }, { - "type": "ch.qos.logback.core.model.ImplicitModel" + "type": "jdk.internal.loader.ClassLoaders$AppClassLoader" }, { - "type": "ch.qos.logback.core.model.Model" + "type": "org.fusesource.jansi.internal.CLibrary", + "fields": [ + { + "name": "HAVE_ISATTY" + }, + { + "name": "HAVE_TTYNAME" + }, + { + "name": "TCSADRAIN" + }, + { + "name": "TCSAFLUSH" + }, + { + "name": "TCSANOW" + }, + { + "name": "TIOCGETD" + }, + { + "name": "TIOCGWINSZ" + }, + { + "name": "TIOCSETD" + }, + { + "name": "TIOCSWINSZ" + } + ] }, { - "type": "ch.qos.logback.core.model.NamedComponentModel" + "type": "sun.awt.SunHints", + "fields": [ + { + "name": "INTVAL_STROKE_PURE" + } + ] }, { - "type": "ch.qos.logback.core.model.NamedModel" + "type": "sun.awt.SunToolkit", + "methods": [ + { + "name": "awtLock", + "parameterTypes": [] + }, + { + "name": "awtLockNotify", + "parameterTypes": [] + }, + { + "name": "awtLockNotifyAll", + "parameterTypes": [] + }, + { + "name": "awtLockWait", + "parameterTypes": [ + "long" + ] + }, + { + "name": "awtUnlock", + "parameterTypes": [] + } + ] }, { - "type": "ch.qos.logback.core.model.PropertyModel" + "type": "sun.awt.X11.XDesktopPeer", + "fields": [ + { + "name": "supportedActions" + } + ] }, { - "type": "ch.qos.logback.core.model.SerializeModelModel" + "type": "sun.awt.X11.XErrorHandlerUtil", + "methods": [ + { + "name": "init", + "parameterTypes": [ + "long" + ] + } + ] }, { - "type": "ch.qos.logback.core.model.SiftModel" + "type": "sun.awt.X11.XToolkit", + "fields": [ + { + "name": "modLockIsShiftLock" + }, + { + "name": "numLockMask" + } + ] }, { - "type": "ch.qos.logback.core.model.StatusListenerModel" + "type": "sun.java2d.Disposer", + "methods": [ + { + "name": "addRecord", + "parameterTypes": [ + "java.lang.Object", + "long", + "long" + ] + } + ] }, { - "type": "java.util.ArrayList" - } - ], - "jni": [ - { - "type": "[B" + "type": "sun.java2d.InvalidPipeException" }, { - "type": "[J" + "type": "sun.java2d.NullSurfaceData" }, { - "type": "[Z" + "type": "sun.java2d.SunGraphics2D", + "fields": [ + { + "name": "clipRegion" + }, + { + "name": "composite" + }, + { + "name": "eargb" + }, + { + "name": "lcdTextContrast" + }, + { + "name": "pixel" + }, + { + "name": "strokeHint" + } + ] }, { - "type": "[[J" + "type": "sun.java2d.SurfaceData", + "fields": [ + { + "name": "pData" + }, + { + "name": "valid" + } + ] }, { - "type": "io.netty.channel.ChannelException" + "type": "sun.java2d.loops.Blit", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] }, { - "type": "io.netty.channel.DefaultFileRegion", - "fields": [ - { - "name": "file" - }, + "type": "sun.java2d.loops.BlitBg", + "methods": [ { - "name": "transferred" + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] } ] }, { - "type": "io.netty.channel.epoll.LinuxSocket" - }, - { - "type": "io.netty.channel.epoll.Native" - }, - { - "type": "io.netty.channel.epoll.NativeDatagramPacketArray$NativeDatagramPacket", + "type": "sun.java2d.loops.CompositeType", "fields": [ { - "name": "count" - }, - { - "name": "memoryAddress" - }, - { - "name": "recipientAddr" - }, - { - "name": "recipientAddrLen" - }, - { - "name": "recipientPort" - }, - { - "name": "recipientScopeId" + "name": "AnyAlpha" }, { - "name": "segmentSize" + "name": "Src" }, { - "name": "senderAddr" + "name": "SrcNoEa" }, { - "name": "senderAddrLen" + "name": "SrcOver" }, { - "name": "senderPort" + "name": "SrcOverNoEa" }, { - "name": "senderScopeId" + "name": "Xor" } ] }, { - "type": "io.netty.channel.epoll.NativeStaticallyReferencedJniMethods" - }, - { - "type": "io.netty.channel.unix.Buffer" - }, - { - "type": "io.netty.channel.unix.DatagramSocketAddress", + "type": "sun.java2d.loops.DrawGlyphList", "methods": [ { "name": "", "parameterTypes": [ - "byte[]", - "int", - "int", - "int", - "io.netty.channel.unix.DatagramSocketAddress" + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] } ] }, { - "type": "io.netty.channel.unix.DomainDatagramSocketAddress", + "type": "sun.java2d.loops.DrawGlyphListAA", "methods": [ { "name": "", "parameterTypes": [ - "byte[]", - "int", - "io.netty.channel.unix.DomainDatagramSocketAddress" + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] } ] }, { - "type": "io.netty.channel.unix.ErrorsStaticallyReferencedJniMethods" - }, - { - "type": "io.netty.channel.unix.FileDescriptor" - }, - { - "type": "io.netty.channel.unix.LimitsStaticallyReferencedJniMethods" - }, - { - "type": "io.netty.channel.unix.PeerCredentials", + "type": "sun.java2d.loops.DrawGlyphListLCD", "methods": [ { "name": "", "parameterTypes": [ - "int", - "int", - "int[]" + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] } ] }, { - "type": "io.netty.channel.unix.Socket" - }, - { - "type": "io.netty.incubator.channel.uring.LinuxSocket" - }, - { - "type": "io.netty.incubator.channel.uring.Native" - }, - { - "type": "io.netty.incubator.channel.uring.NativeStaticallyReferencedJniMethods" - }, - { - "type": "io.netty.internal.tcnative.Buffer" - }, - { - "type": "io.netty.internal.tcnative.CertificateCallbackTask", + "type": "sun.java2d.loops.DrawLine", "methods": [ { "name": "", "parameterTypes": [ "long", - "byte[]", - "byte[][]", - "io.netty.internal.tcnative.CertificateCallback" + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] } ] }, { - "type": "io.netty.internal.tcnative.CertificateVerifierTask", + "type": "sun.java2d.loops.DrawParallelogram", "methods": [ { "name": "", "parameterTypes": [ "long", - "byte[][]", - "java.lang.String", - "io.netty.internal.tcnative.CertificateVerifier" + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] } ] }, { - "type": "io.netty.internal.tcnative.Library" - }, - { - "type": "io.netty.internal.tcnative.NativeStaticallyReferencedJniMethods" - }, - { - "type": "io.netty.internal.tcnative.SSL" - }, - { - "type": "io.netty.internal.tcnative.SSLContext" - }, - { - "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodDecryptTask", + "type": "sun.java2d.loops.DrawPath", "methods": [ { "name": "", "parameterTypes": [ "long", - "byte[]", - "io.netty.internal.tcnative.AsyncSSLPrivateKeyMethod" + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] } ] }, { - "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodSignTask", + "type": "sun.java2d.loops.DrawPolygons", "methods": [ { "name": "", "parameterTypes": [ "long", - "int", - "byte[]", - "io.netty.internal.tcnative.AsyncSSLPrivateKeyMethod" + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] } ] }, { - "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodTask", - "fields": [ + "type": "sun.java2d.loops.DrawRect", + "methods": [ { - "name": "resultBytes" + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] } ] }, { - "type": "io.netty.internal.tcnative.SSLSession" - }, - { - "type": "io.netty.internal.tcnative.SSLTask", - "fields": [ - { - "name": "complete" - }, + "type": "sun.java2d.loops.FillParallelogram", + "methods": [ { - "name": "returnValue" + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] } ] }, { - "type": "java.io.FileDescriptor", - "fields": [ + "type": "sun.java2d.loops.FillPath", + "methods": [ { - "name": "fd" + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] } ] }, { - "type": "java.io.IOException" + "type": "sun.java2d.loops.FillRect", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] + } + ] }, { - "type": "java.lang.Boolean", + "type": "sun.java2d.loops.FillSpans", "methods": [ { - "name": "getBoolean", + "name": "", "parameterTypes": [ - "java.lang.String" + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] } ] }, { - "type": "java.lang.Class", - "methods": [ + "type": "sun.java2d.loops.GraphicsPrimitive", + "fields": [ { - "name": "getClassLoader", - "parameterTypes": [] + "name": "pNativePrim" } ] }, { - "type": "java.lang.ClassLoader", + "type": "sun.java2d.loops.GraphicsPrimitiveMgr", "methods": [ { - "name": "loadClass", + "name": "register", "parameterTypes": [ - "java.lang.String" + "sun.java2d.loops.GraphicsPrimitive[]" ] } ] }, { - "type": "java.lang.Exception" - }, - { - "type": "java.lang.IllegalArgumentException" - }, - { - "type": "java.lang.NullPointerException" - }, - { - "type": "java.lang.OutOfMemoryError" - }, - { - "type": "java.lang.RuntimeException" - }, - { - "type": "java.lang.String", + "type": "sun.java2d.loops.MaskBlit", "methods": [ { "name": "", "parameterTypes": [ - "byte[]" + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] - }, - { - "name": "getBytes", - "parameterTypes": [] } ] }, { - "type": "java.lang.Throwable", + "type": "sun.java2d.loops.MaskFill", "methods": [ { - "name": "toString", - "parameterTypes": [] + "name": "", + "parameterTypes": [ + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" + ] } ] }, { - "type": "java.net.InetSocketAddress", + "type": "sun.java2d.loops.ScaledBlit", "methods": [ { "name": "", "parameterTypes": [ - "java.lang.String", - "int" + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] } ] }, { - "type": "java.net.PortUnreachableException" - }, - { - "type": "java.nio.Buffer", + "type": "sun.java2d.loops.SurfaceType", "fields": [ { - "name": "limit" + "name": "Any3Byte" }, { - "name": "position" - } - ], - "methods": [ + "name": "Any4Byte" + }, { - "name": "limit", - "parameterTypes": [] + "name": "AnyByte" }, { - "name": "position", - "parameterTypes": [] - } - ] - }, - { - "type": "java.nio.DirectByteBuffer" - }, - { - "type": "org.sqlite.Collation", - "methods": [ + "name": "AnyColor" + }, { - "name": "xCompare", - "parameterTypes": [ - "java.lang.String", - "java.lang.String" - ] - } - ] - }, - { - "type": "org.sqlite.Function", - "fields": [ + "name": "AnyInt" + }, { - "name": "args" + "name": "AnyShort" }, { - "name": "context" + "name": "ByteBinary1Bit" }, { - "name": "value" - } - ], - "methods": [ + "name": "ByteBinary2Bit" + }, { - "name": "xFunc", - "parameterTypes": [] - } - ] - }, - { - "type": "org.sqlite.Function$Aggregate", - "methods": [ + "name": "ByteBinary4Bit" + }, { - "name": "clone", - "parameterTypes": [] + "name": "ByteGray" }, { - "name": "xFinal", - "parameterTypes": [] + "name": "ByteIndexed" }, { - "name": "xStep", - "parameterTypes": [] - } - ] - }, - { - "type": "org.sqlite.Function$Window", - "methods": [ + "name": "ByteIndexedBm" + }, { - "name": "xInverse", - "parameterTypes": [] + "name": "FourByteAbgr" }, { - "name": "xValue", - "parameterTypes": [] - } - ] - }, - { - "type": "org.sqlite.ProgressHandler", - "methods": [ + "name": "FourByteAbgrPre" + }, { - "name": "progress", - "parameterTypes": [] - } - ] - }, - { - "type": "org.sqlite.core.DB", - "methods": [ + "name": "Index12Gray" + }, { - "name": "onCommit", - "parameterTypes": [ - "boolean" - ] + "name": "Index8Gray" }, { - "name": "onUpdate", - "parameterTypes": [ - "int", - "java.lang.String", - "java.lang.String", - "long" - ] + "name": "IntArgb" }, { - "name": "throwex", - "parameterTypes": [] + "name": "IntArgbBm" }, { - "name": "throwex", - "parameterTypes": [ - "int" - ] + "name": "IntArgbPre" + }, + { + "name": "IntBgr" + }, + { + "name": "IntRgb" + }, + { + "name": "IntRgbx" + }, + { + "name": "OpaqueColor" + }, + { + "name": "ThreeByteBgr" + }, + { + "name": "Ushort4444Argb" + }, + { + "name": "Ushort555Rgb" + }, + { + "name": "Ushort555Rgbx" + }, + { + "name": "Ushort565Rgb" + }, + { + "name": "UshortGray" + }, + { + "name": "UshortIndexed" } ] }, { - "type": "org.sqlite.core.DB$ProgressObserver", + "type": "sun.java2d.loops.TransformHelper", "methods": [ { - "name": "progress", + "name": "", "parameterTypes": [ - "int", - "int" + "long", + "sun.java2d.loops.SurfaceType", + "sun.java2d.loops.CompositeType", + "sun.java2d.loops.SurfaceType" ] } ] }, { - "type": "org.sqlite.core.NativeDB", + "type": "sun.java2d.loops.XORComposite", + "fields": [ + { + "name": "alphaMask" + }, + { + "name": "xorColor" + }, + { + "name": "xorPixel" + } + ] + }, + { + "type": "sun.java2d.pipe.Region", "fields": [ { - "name": "busyHandler" + "name": "bands" }, { - "name": "commitListener" + "name": "endIndex" }, { - "name": "pointer" + "name": "hix" }, { - "name": "progressHandler" + "name": "hiy" }, { - "name": "updateListener" + "name": "lox" + }, + { + "name": "loy" } - ], - "methods": [ + ] + }, + { + "type": "sun.java2d.pipe.RegionIterator", + "fields": [ { - "name": "stringToUtf8ByteArray", - "parameterTypes": [ - "java.lang.String" - ] + "name": "curIndex" }, { - "name": "throwex", - "parameterTypes": [ - "java.lang.String" - ] + "name": "numXbands" + }, + { + "name": "region" + } + ] + }, + { + "type": "sun.java2d.xr.XRSurfaceData", + "fields": [ + { + "name": "picture" + }, + { + "name": "xid" } ] } diff --git a/packages/cli/src/test/kotlin/elide/tool/cli/AbstractEntryTest.kt b/packages/cli/src/test/kotlin/elide/tool/cli/AbstractEntryTest.kt index eadb1fa4bc..53a23fd9d1 100644 --- a/packages/cli/src/test/kotlin/elide/tool/cli/AbstractEntryTest.kt +++ b/packages/cli/src/test/kotlin/elide/tool/cli/AbstractEntryTest.kt @@ -11,11 +11,13 @@ import jakarta.inject.Inject abstract class AbstractEntryTest { val testRuby = false val testPython = false + val testJava = false + val testKotlin = false + val testSwift = false + val testWasm = false companion object { - @JvmStatic protected val rootProjectPath: Path = Paths.get(System.getProperty("user.dir")) - .parent - .parent + @JvmStatic protected val rootProjectPath: Path = Paths.get(System.getProperty("elide.rootDir")) @JvmStatic protected val testScriptsPath: Path = rootProjectPath .resolve("tools") diff --git a/packages/cli/src/test/kotlin/elide/tool/cli/ElideSmokeTests.kt b/packages/cli/src/test/kotlin/elide/tool/cli/ElideSmokeTests.kt index 233e358b67..6d97b33d0a 100644 --- a/packages/cli/src/test/kotlin/elide/tool/cli/ElideSmokeTests.kt +++ b/packages/cli/src/test/kotlin/elide/tool/cli/ElideSmokeTests.kt @@ -33,7 +33,7 @@ import elide.testing.annotations.TestCase "run", "--verbose", "--host:allow-env", - "--env:dotenv" + "--env:dotenv", ) + extraArgs + listOf( file.absolutePathString(), ) @@ -46,31 +46,43 @@ import elide.testing.annotations.TestCase // All tests to run. private val allTests = listOf( + testFile("args.py"), + testFile("brotli.mjs"), + testFile("cpu.js"), + testFile("env.js"), + testFile("env.py"), + testFile("env.rb"), + testFile("fetch.mjs"), + testFile("fs.mjs"), + testFile("fs-async.mjs"), + testFile("fs-promises.mjs"), + testFile("Hello.java"), + testFile("Hello.kts"), + testFile("hello.py"), + testFile("hello.rb"), testFile("hello.js"), + testFile("hello.swift"), + testFile("hello.swift.wasm"), testFile("hello.ts"), - testFile("hello.py"), + testFile("hello-fn.mts"), + testFile("hello-import.mts"), + testFile("hello-import-js.mts"), testFile("paths.cjs"), testFile("paths.mjs"), - testFile("cpu.js"), - testFile("fs.mjs"), - testFile("brotli.mjs"), + testFile("paths-default.mjs"), + testFile("say_hello.mts"), + testFile("say_hello_raw.mts"), + testFile("simple.js"), + testFile("sqlite.mts"), testFile("sqlite.cjs"), testFile("sqlite.mjs"), testFile("sqlite.ts"), - testFile("sqlite.mts"), testFile("stdlib.cjs"), testFile("stdlib.mjs"), - testFile("simple.js"), - testFile("args.py"), - testFile("env.py"), - testFile("env.js"), - testFile("fetch.mjs"), ) - private val knownBroken = sortedSetOf( - "brotli", - "fs", - "stdlib", + private val knownBroken = sortedSetOf( + "say_hello.mts", ) } @@ -79,11 +91,22 @@ import elide.testing.annotations.TestCase yield(DynamicTest.dynamicTest(it.file.name) { val isPython = it.file.name.endsWith(".py") val isRuby = it.file.name.endsWith(".rb") + val isJava = it.file.name.endsWith(".java") + val isKotlin = it.file.name.endsWith(".kts") || it.file.name.endsWith(".kt") + val isSwift = it.file.name.endsWith(".swift") + val isWasm = it.file.name.endsWith(".wasm") + Assumptions.assumeTrue( - (testPython && isPython) || (testRuby && isRuby) || (!isPython && !isRuby) + (testPython && isPython) || + (testRuby && isRuby) || + (testJava && isJava) || + (testKotlin && isKotlin) || + (testSwift && isSwift) || + (testWasm && isWasm) || + (!isPython && !isRuby && !isJava && !isKotlin && !isSwift && !isWasm) ) Assumptions.assumeTrue( - it.file.nameWithoutExtension !in knownBroken + it.file.nameWithoutExtension !in knownBroken && it.file.name !in knownBroken ) assertToolExitsWithCode(0, *it.args().toTypedArray()) diff --git a/packages/cli/src/test/kotlin/elide/tool/cli/ElideToolTest.kt b/packages/cli/src/test/kotlin/elide/tool/cli/ElideToolTest.kt index 9f30adef20..fad83d1311 100644 --- a/packages/cli/src/test/kotlin/elide/tool/cli/ElideToolTest.kt +++ b/packages/cli/src/test/kotlin/elide/tool/cli/ElideToolTest.kt @@ -200,6 +200,7 @@ import elide.testing.annotations.TestCase } @Test fun testRootEntrypointExecutePyFileAlias() { + Assumptions.assumeTrue(testPython) Assumptions.assumeTrue(Files.exists(testScriptsPath)) val scriptPath = testScriptsPath.resolve("hello.py").toAbsolutePath() Assumptions.assumeTrue(Files.exists(scriptPath)) @@ -214,6 +215,7 @@ import elide.testing.annotations.TestCase } @Test fun testRootEntrypointExecuteRbFileAlias() { + Assumptions.assumeTrue(testRuby) Assumptions.assumeTrue(Files.exists(testScriptsPath)) val scriptPath = testScriptsPath.resolve("hello.rb").toAbsolutePath() Assumptions.assumeTrue(Files.exists(scriptPath)) diff --git a/packages/engine/api/engine.api b/packages/engine/api/engine.api index 9e94d1434b..d281721bde 100644 --- a/packages/engine/api/engine.api +++ b/packages/engine/api/engine.api @@ -52,6 +52,7 @@ public abstract interface class elide/runtime/core/EnginePlugin { } public abstract interface class elide/runtime/core/EnginePlugin$InstallationScope { + public abstract fun deferred (Lkotlin/jvm/functions/Function0;)V public abstract fun getConfiguration ()Lelide/runtime/core/PolyglotEngineConfiguration; public abstract fun getLifecycle ()Lelide/runtime/core/EngineLifecycle; public abstract fun registerBundle (Ljava/net/URL;)V @@ -153,6 +154,8 @@ public final class elide/runtime/core/HostRuntimeKt { } public abstract interface class elide/runtime/core/PluginRegistry { + public abstract fun configure (Lelide/runtime/core/EnginePlugin;Lkotlin/jvm/functions/Function1;)V + public static synthetic fun configure$default (Lelide/runtime/core/PluginRegistry;Lelide/runtime/core/EnginePlugin;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V public abstract fun install (Lelide/runtime/core/EnginePlugin;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; public static synthetic fun install$default (Lelide/runtime/core/PluginRegistry;Lelide/runtime/core/EnginePlugin;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/Object; public abstract fun plugin-LqGrbaI (Ljava/lang/String;)Ljava/lang/Object; @@ -231,6 +234,7 @@ public abstract interface class elide/runtime/core/PolyglotEngine { public abstract class elide/runtime/core/PolyglotEngineConfiguration : elide/runtime/core/PluginRegistry { public fun ()V public abstract fun args ([Ljava/lang/String;)V + public abstract fun blockUntilReady ()V public abstract fun enableLanguage (Lelide/runtime/core/GuestLanguage;)V public final fun getHostAccess ()Lelide/runtime/core/PolyglotEngineConfiguration$HostAccess; public final fun getHostPlatform ()Lelide/runtime/core/HostPlatform; @@ -1003,11 +1007,11 @@ public abstract class elide/runtime/plugins/AbstractLanguagePlugin : elide/runti public fun ()V protected final fun configureLanguageSupport (Lelide/runtime/core/EnginePlugin$InstallationScope;)V protected final fun configureSharedBindings (Lelide/runtime/core/EnginePlugin$InstallationScope;Lelide/runtime/plugins/AbstractLanguageConfig;)V - protected final fun executePreambleScripts (Lelide/runtime/core/PolyglotContext;Lelide/runtime/plugins/AbstractLanguagePlugin$LanguagePluginManifest;Ljava/util/List;)V - public static synthetic fun executePreambleScripts$default (Lelide/runtime/plugins/AbstractLanguagePlugin;Lelide/runtime/core/PolyglotContext;Lelide/runtime/plugins/AbstractLanguagePlugin$LanguagePluginManifest;Ljava/util/List;ILjava/lang/Object;)V + protected final fun executePreambleScripts (Lelide/runtime/core/PolyglotContext;Ljava/util/List;)V + public static synthetic fun executePreambleScripts$default (Lelide/runtime/plugins/AbstractLanguagePlugin;Lelide/runtime/core/PolyglotContext;Ljava/util/List;ILjava/lang/Object;)V protected fun getManifestKey ()Ljava/lang/String; protected final fun initializeEmbeddedScripts (Lelide/runtime/core/PolyglotContext;Lelide/runtime/plugins/AbstractLanguagePlugin$LanguagePluginManifest;)V - protected static final fun initializePreambleScripts (Ljava/lang/String;[Ljava/lang/String;)Ljava/util/List; + protected static final fun initializePreambleScripts (Ljava/lang/String;[Ljava/lang/String;Z)Ljava/util/List; protected final fun installEmbeddedBundles (Lelide/runtime/core/EnginePlugin$InstallationScope;Lelide/runtime/plugins/AbstractLanguagePlugin$LanguagePluginManifest;)V protected final fun resolveEmbeddedManifest (Lelide/runtime/core/EnginePlugin$InstallationScope;Z)Lelide/runtime/plugins/AbstractLanguagePlugin$LanguagePluginManifest; protected final fun resolveEmbeddedManifest (Lelide/runtime/core/HostPlatform;Z)Lelide/runtime/plugins/AbstractLanguagePlugin$LanguagePluginManifest; @@ -1016,6 +1020,7 @@ public abstract class elide/runtime/plugins/AbstractLanguagePlugin : elide/runti } protected final class elide/runtime/plugins/AbstractLanguagePlugin$Companion { + public static synthetic fun initializePreambleScripts$default (Lelide/runtime/plugins/AbstractLanguagePlugin$Companion;Ljava/lang/String;[Ljava/lang/String;ZILjava/lang/Object;)Ljava/util/List; } public final class elide/runtime/plugins/AbstractLanguagePlugin$LanguagePluginManifest { diff --git a/packages/engine/gradle.lockfile b/packages/engine/gradle.lockfile index 434dabe62a..fa395a9960 100644 --- a/packages/engine/gradle.lockfile +++ b/packages/engine/gradle.lockfile @@ -33,7 +33,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -48,7 +48,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -64,9 +64,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -76,7 +76,7 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath @@ -84,17 +84,17 @@ io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeCla io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compileClasspath,runtimeClasspath @@ -112,15 +112,21 @@ org.apache.groovy:groovy-bom:4.0.18=compileClasspath,runtimeClasspath org.apache.logging.log4j:log4j-bom:2.24.3=compileClasspath,runtimeClasspath org.checkerframework:checker-qual:3.43.0=compileClasspath,runtimeClasspath org.eclipse.jetty:jetty-bom:11.0.24=compileClasspath,runtimeClasspath +org.graalvm.compiler:compiler:24.1.2=compileClasspath +org.graalvm.nativeimage:native-image-base:24.1.2=compileClasspath +org.graalvm.nativeimage:objectfile:24.1.2=compileClasspath +org.graalvm.nativeimage:pointsto:24.1.2=compileClasspath +org.graalvm.nativeimage:svm:24.1.2=compileClasspath org.graalvm.polyglot:polyglot:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:collections:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:nativeimage:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:word:24.1.2=compileClasspath,runtimeClasspath +org.graalvm.truffle:truffle-compiler:24.1.2=compileClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -131,12 +137,6 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=compileClasspath,runtimeCla org.jetbrains.kotlinx:kotlinx-coroutines-jdk9:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -148,6 +148,6 @@ org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/engine/src/main/java/elide/runtime/gvm/JNIHeaderDirectives.java b/packages/engine/src/main/java/elide/runtime/gvm/JNIHeaderDirectives.java index 660c7d2057..3a4a8f7159 100644 --- a/packages/engine/src/main/java/elide/runtime/gvm/JNIHeaderDirectives.java +++ b/packages/engine/src/main/java/elide/runtime/gvm/JNIHeaderDirectives.java @@ -48,8 +48,12 @@ public static List getHeaderOptions() { private static File[] findJNIHeaders() throws IllegalStateException { final File jreHome = new File(System.getProperty("java.home")); final File include = new File(jreHome, "include"); + var operatingSystemTag = "linux"; + if ("Mac OS X".equals(System.getProperty("os.name"))) { + operatingSystemTag = "darwin"; + } return new File[] { - new File(include, "jni.h"), new File(new File(include, "linux"), "jni_md.h"), + new File(include, "jni.h"), new File(new File(include, operatingSystemTag), "jni_md.h"), }; } } diff --git a/packages/engine/src/main/kotlin/elide/runtime/core/EnginePlugin.kt b/packages/engine/src/main/kotlin/elide/runtime/core/EnginePlugin.kt index 99b1deeb16..c72a0c4fb1 100644 --- a/packages/engine/src/main/kotlin/elide/runtime/core/EnginePlugin.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/core/EnginePlugin.kt @@ -125,6 +125,11 @@ public interface EnginePlugin { */ public val configuration: PolyglotEngineConfiguration + /** + * Register a deferred block which runs after all other plugin init tasks. + */ + public fun deferred(block: () -> Unit) + /** * Register a VFS bundle which should be made available when this plug-in is operational. * diff --git a/packages/engine/src/main/kotlin/elide/runtime/core/PluginRegistry.kt b/packages/engine/src/main/kotlin/elide/runtime/core/PluginRegistry.kt index 31dcf6459d..1dec69c092 100644 --- a/packages/engine/src/main/kotlin/elide/runtime/core/PluginRegistry.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/core/PluginRegistry.kt @@ -24,8 +24,18 @@ package elide.runtime.core * @param configure A configuration DSL block to be applied to the plugin on installation. * @return A plugin instance added to the registry after installation. */ + @Deprecated("Use installLazy instead", ReplaceWith("installLazy(plugin, configure)")) public fun install(plugin: EnginePlugin, configure: C.() -> Unit = { }): I + /** + * Lazily configure a [plugin] for use. + * + * @param plugin A plugin identifier representing the plugin to be installed. + * @param configure A configuration DSL block to be applied to the plugin on installation. + * @return A plugin instance added to the registry after installation. + */ + public fun configure(plugin: EnginePlugin, configure: C.() -> Unit = { }) + /** * Retrieve a plugin instance identified by the provided [key] from this registry. If no * instance is registered for that key, `null` will be returned. @@ -63,6 +73,8 @@ package elide.runtime.core * Returns the installed [plugin] instance from the registry, or throws [IllegalStateException] of no plugin instance * is found. */ +@Suppress("DEPRECATION") +@Deprecated("Use getOrConfigure instead", ReplaceWith("getOrConfigure(plugin, configure)")) @DelicateElideApi public fun PluginRegistry.getOrInstall( plugin: EnginePlugin, configure: C.() -> Unit = { }, diff --git a/packages/engine/src/main/kotlin/elide/runtime/core/PolyglotEngineConfiguration.kt b/packages/engine/src/main/kotlin/elide/runtime/core/PolyglotEngineConfiguration.kt index b488cff0dc..14df8dcef2 100644 --- a/packages/engine/src/main/kotlin/elide/runtime/core/PolyglotEngineConfiguration.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/core/PolyglotEngineConfiguration.kt @@ -67,4 +67,10 @@ public abstract class PolyglotEngineConfiguration : PluginRegistry { * @return List of registered bundles */ public abstract fun registeredBundles(): List + + /** + * Block until this configuration has finished bootstrapping the GraalVM guest context; this will wait until all init + * tasks for all plugins have completed. + */ + public abstract fun blockUntilReady() } diff --git a/packages/engine/src/main/kotlin/elide/runtime/plugins/AbstractLanguagePlugin.kt b/packages/engine/src/main/kotlin/elide/runtime/plugins/AbstractLanguagePlugin.kt index 32da96f543..24e318843b 100644 --- a/packages/engine/src/main/kotlin/elide/runtime/plugins/AbstractLanguagePlugin.kt +++ b/packages/engine/src/main/kotlin/elide/runtime/plugins/AbstractLanguagePlugin.kt @@ -214,21 +214,12 @@ private val defaultContext = Context.newBuilder() * [ContextInitialized][elide.runtime.core.EngineLifecycleEvent.ContextInitialized] event. * * @param context A [PolyglotContext] used to execute the initialization scripts. - * @param resources The embedded resources for this plugin, providing the script sources. + * @param sources Sources prepared by [initializePreambleScripts]. */ @Suppress("TooGenericExceptionCaught") - protected fun executePreambleScripts( - context: PolyglotContext, - resources: LanguagePluginManifest, - sources: List = emptyList(), - ) { - try { - context.enter() - sources.forEach { script -> - context.evaluate(script.source) - } - } finally { - context.leave() + protected fun executePreambleScripts(context: PolyglotContext, sources: List = emptyList(),) { + sources.forEach { script -> + context.evaluate(script.source) } } @@ -286,18 +277,23 @@ private val defaultContext = Context.newBuilder() } /** - * Run the setup scripts specified in this plugin's [resources] in the provided [context]. + * Run the setup scripts specified in this plugin's [resources]. * * This function will typically be called by plugins in response to the * [ContextInitialized][elide.runtime.core.EngineLifecycleEvent.ContextInitialized] event. * * @param langId ID of the owning language. + * @param prewarm Whether to activate pre-warming for these scripts. * @param resources The embedded resources for this plugin, providing the script sources. */ @Suppress("TooGenericExceptionCaught") - @JvmStatic protected fun initializePreambleScripts(langId: String, vararg scripts: String): List { + @JvmStatic protected fun initializePreambleScripts( + langId: String, + vararg scripts: String, + prewarm: Boolean = true, + ): List { val path = "META-INF/elide/embedded/runtime/$langId" - defaultContext.enter() + if (prewarm) defaultContext.enter() try { return scripts.map { script -> @@ -316,11 +312,11 @@ private val defaultContext = Context.newBuilder() PreinitScript( name = script, source = src, - entry = defaultContext.parse(src), + entry = if (prewarm) defaultContext.parse(src) else null, ) } } finally { - defaultContext.leave() + if (prewarm) defaultContext.leave() } } } diff --git a/packages/graalvm-java/detekt-baseline.xml b/packages/graalvm-java/detekt-baseline.xml index 65a62c5daa..849d55fc03 100644 --- a/packages/graalvm-java/detekt-baseline.xml +++ b/packages/graalvm-java/detekt-baseline.xml @@ -2,7 +2,6 @@ - ThrowingExceptionsWithoutMessageOrCause:GuestJavaEvaluator.kt$GuestJavaEvaluator$exception() UnusedPrivateMember:GuestExecutionProvider.kt$GuestExecutionProvider.Companion$private fun PolyglotContext.spiClass(name: String): ReadOnlyProperty<Any, PolyglotValue> diff --git a/packages/graalvm-java/gradle.lockfile b/packages/graalvm-java/gradle.lockfile index c54f19c956..d748078410 100644 --- a/packages/graalvm-java/gradle.lockfile +++ b/packages/graalvm-java/gradle.lockfile @@ -33,7 +33,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -48,7 +48,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -64,9 +64,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -76,7 +76,7 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath @@ -84,17 +84,17 @@ io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeCla io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compileClasspath,runtimeClasspath @@ -138,9 +138,9 @@ org.graalvm.truffle:truffle-nfi:24.1.2=runtimeClasspath org.graalvm.truffle:truffle-runtime:24.1.2=runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -151,12 +151,6 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=compileClasspath,runtimeCla org.jetbrains.kotlinx:kotlinx-coroutines-jdk9:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -168,6 +162,6 @@ org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/graalvm-js/api/graalvm-js.api b/packages/graalvm-js/api/graalvm-js.api index 6f997bd761..55eb39b712 100644 --- a/packages/graalvm-js/api/graalvm-js.api +++ b/packages/graalvm-js/api/graalvm-js.api @@ -10,6 +10,7 @@ public final class elide/runtime/lang/javascript/DelegatedModuleLoaderRegistry : public static final field INSTANCE Lelide/runtime/lang/javascript/DelegatedModuleLoaderRegistry; public static final fun register (Lelide/runtime/lang/javascript/DelegatedModuleLoaderRegistry$DelegateFactory;)V public static final fun resolve (Lelide/runtime/lang/javascript/DelegatedModuleLoaderRegistry$DelegatedModuleRequest;Lcom/oracle/truffle/js/runtime/JSRealm;)Lcom/oracle/truffle/js/runtime/objects/JSModuleLoader; + public static final fun resolveSafe (Lelide/runtime/lang/javascript/DelegatedModuleLoaderRegistry$DelegatedModuleRequest;Lcom/oracle/truffle/js/runtime/JSRealm;)Lcom/oracle/truffle/js/runtime/objects/JSModuleLoader; public fun test (Lelide/runtime/lang/javascript/DelegatedModuleLoaderRegistry$DelegatedModuleRequest;)Z public synthetic fun test (Ljava/lang/Object;)Z } @@ -67,7 +68,8 @@ public final class elide/runtime/lang/javascript/JavaScriptCompilerConfig$Compan public final class elide/runtime/lang/javascript/JavaScriptLang { public static final field INSTANCE Lelide/runtime/lang/javascript/JavaScriptLang; - public final fun initialize ()V + public final fun initialize (Z)V + public static synthetic fun initialize$default (Lelide/runtime/lang/javascript/JavaScriptLang;ZILjava/lang/Object;)V public final fun precompiler ()Lelide/runtime/lang/javascript/JavaScriptPrecompiler; } @@ -83,7 +85,7 @@ public final class elide/runtime/lang/javascript/JavaScriptPrecompiler$Provider public synthetic fun get ()Ljava/lang/Object; } -public final class elide/runtime/lang/javascript/NodeModuleName { +public final class elide/runtime/lang/javascript/NodeModuleName : java/util/function/Predicate { public static final field ASSERT Ljava/lang/String; public static final field ASSERT_STRICT Ljava/lang/String; public static final field ASYNC_HOOKS Ljava/lang/String; @@ -132,6 +134,8 @@ public final class elide/runtime/lang/javascript/NodeModuleName { public static final field WORKER Ljava/lang/String; public static final field WORKER_THREADS Ljava/lang/String; public static final field ZLIB Ljava/lang/String; + public synthetic fun test (Ljava/lang/Object;)Z + public fun test (Ljava/lang/String;)Z } public final class elide/runtime/lang/javascript/OxcParserFeature : elide/runtime/feature/engine/AbstractStaticNativeLibraryFeature { diff --git a/packages/graalvm-js/build.gradle.kts b/packages/graalvm-js/build.gradle.kts index b772d6a882..67a40564cd 100644 --- a/packages/graalvm-js/build.gradle.kts +++ b/packages/graalvm-js/build.gradle.kts @@ -72,6 +72,8 @@ dependencies { api(patchedLibs) api(libs.graalvm.truffle.api) implementation(libs.kotlinx.atomicfu) + implementation(projects.packages.graalvmPy) + implementation(projects.packages.graalvmWasm) patchedDependencies(patchedLibs) } diff --git a/packages/graalvm-js/detekt-baseline.xml b/packages/graalvm-js/detekt-baseline.xml new file mode 100644 index 0000000000..64029d9943 --- /dev/null +++ b/packages/graalvm-js/detekt-baseline.xml @@ -0,0 +1,8 @@ + + + + + UnusedParameter:ElideInteropModuleLoader.kt$ElideInteropModuleLoader$moduleRequest: Module.ModuleRequest + UnusedParameter:ElideInteropModuleLoader.kt$ElideInteropModuleLoader$referencingModule: ScriptOrModule + + diff --git a/packages/graalvm-js/gradle.lockfile b/packages/graalvm-js/gradle.lockfile index efb85e8a8b..cd35d620f7 100644 --- a/packages/graalvm-js/gradle.lockfile +++ b/packages/graalvm-js/gradle.lockfile @@ -33,7 +33,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -48,7 +48,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -64,9 +64,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -76,7 +76,7 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath @@ -84,17 +84,17 @@ io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeCla io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compileClasspath,runtimeClasspath @@ -116,12 +116,11 @@ org.graalvm.polyglot:polyglot:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:collections:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:nativeimage:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:word:24.1.2=compileClasspath,runtimeClasspath -org.graalvm.truffle:truffle-api:24.1.2=compileClasspath,runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -132,12 +131,6 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=compileClasspath,runtimeCla org.jetbrains.kotlinx:kotlinx-coroutines-jdk9:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -149,6 +142,6 @@ org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/DelegatedModuleLoaderRegistry.kt b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/DelegatedModuleLoaderRegistry.kt index 1aecb0e409..8e644c92a4 100644 --- a/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/DelegatedModuleLoaderRegistry.kt +++ b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/DelegatedModuleLoaderRegistry.kt @@ -62,7 +62,9 @@ public object DelegatedModuleLoaderRegistry : Predicate @JvmStatic private val registry: MutableList = mutableListOf() // Ask delegate factories if they accept this. - override fun test(t: DelegatedModuleRequest): Boolean = registry.any { it.test(t) } + override fun test(t: DelegatedModuleRequest): Boolean = registry.any { + it.test(t) + } /** * Register a new delegate factory. @@ -80,8 +82,18 @@ public object DelegatedModuleLoaderRegistry : Predicate * @return The module loader, if any. */ @JvmStatic public fun resolve(request: DelegatedModuleRequest, realm: JSRealm): JSModuleLoader { - return requireNotNull(registry.firstOrNull { it.test(request) }?.invoke(realm)) { + return requireNotNull(resolveSafe(request, realm)) { "Expected a module loader to resolve the request, but none was found." } } + + /** + * Resolve a module request to a module loader or return `null` if none matches. + * + * @param request The request to resolve. + * @return The module loader, if any. + */ + @JvmStatic public fun resolveSafe(request: DelegatedModuleRequest, realm: JSRealm): JSModuleLoader? { + return registry.firstOrNull { it.test(request) }?.invoke(realm) + } } diff --git a/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/ElideInteropModuleLoader.kt b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/ElideInteropModuleLoader.kt new file mode 100644 index 0000000000..91f01cf0b0 --- /dev/null +++ b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/ElideInteropModuleLoader.kt @@ -0,0 +1,301 @@ +/* + * Copyright (c) 2024-2025 Elide Technologies, Inc. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + +package elide.runtime.lang.javascript + +import com.oracle.graal.python.PythonLanguage +import com.oracle.graal.python.pegparser.FutureFeature +import com.oracle.graal.python.pegparser.InputType +import com.oracle.graal.python.runtime.PythonContext +import com.oracle.js.parser.ir.Module +import com.oracle.js.parser.ir.Module.ExportEntry +import com.oracle.truffle.api.CallTarget +import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary +import com.oracle.truffle.api.TruffleFile +import com.oracle.truffle.api.TruffleLanguage.InlineParsingRequest +import com.oracle.truffle.api.frame.VirtualFrame +import com.oracle.truffle.api.source.Source +import com.oracle.truffle.js.lang.JavaScriptLanguage +import com.oracle.truffle.js.nodes.JSFrameDescriptor +import com.oracle.truffle.js.runtime.JSArguments +import com.oracle.truffle.js.runtime.JSRealm +import com.oracle.truffle.js.runtime.JavaScriptRootNode +import com.oracle.truffle.js.runtime.Strings +import com.oracle.truffle.js.runtime.builtins.JSFunctionData +import com.oracle.truffle.js.runtime.objects.JSModuleData +import com.oracle.truffle.js.runtime.objects.JSModuleLoader +import com.oracle.truffle.js.runtime.objects.JSModuleRecord +import com.oracle.truffle.js.runtime.objects.JSModuleRecord.Status +import com.oracle.truffle.js.runtime.objects.ScriptOrModule +import com.oracle.truffle.js.runtime.objects.Undefined +import org.graalvm.polyglot.Context +import org.graalvm.polyglot.Engine +import java.util.EnumSet +import java.util.TreeSet +import java.util.concurrent.ConcurrentSkipListMap +import kotlinx.atomicfu.atomic + +// Constants for use by the interop loader. +private const val LANGUAGE_ID_PYTHON = "python" +private const val PYTHON_FILE_EXTENSION = "py" +private const val PYTHON_BYTECODE_FILE_EXTENSION = "pyc" + +/** + * ## Interop Module Loader + * + * This loader acts as a delegate loader in cooperation with [ElideUniversalJsModuleLoader] in order to facilitate + * cross-language import sugar; such imports effectively result in a call to evaluate the target file (after resolution) + * and then return a synthesized object built from polyglot binding accessors. + * + * Foreign code is expected to be made available in the polyglot bindings via its own mechanisms. For example, Python + * guests have access to the `elide` built-in module, which offers the `bind` and `poly` decorators. These decorators + * expose Python symbols or values within the polyglot context, making them eligible for loading via imports (and for + * destructuring). + */ +internal object ElideInteropModuleLoader : DelegatedModuleLoaderRegistry.DelegateFactory, JSModuleLoader { + private val supportedExtensions = ConcurrentSkipListMap>() + private val supportedMimes = ConcurrentSkipListMap() + + /** + * ### Foreign Module Facade + * + * Represents an aggregate type of [JSModuleRecord] for foreign (non-JavaScript) module imports; all foreign modules + * ultimately extend this class, which is sealed for easy behavioral type checking. + */ + sealed class ElideForeignModuleFacade( + moduleData: JSModuleData, + moduleLoader: JSModuleLoader, + hostDefined: Any? = null, + ) : JSModuleRecord(moduleData, moduleLoader, hostDefined) { + /** Abstract language ID for this module. */ + internal abstract val lang: String + } + + /** + * ### Foreign Module Facade: Python + * + * Implements a [ElideForeignModuleFacade] for Python sources imported from JavaScript. + */ + class PythonForeignModuleFacade( + moduleData: JSModuleData, + moduleLoader: JSModuleLoader, + hostDefined: Any? = null, + ) : ElideForeignModuleFacade(moduleData, moduleLoader, hostDefined) { + override val lang: String get() = LANGUAGE_ID_PYTHON + } + + init { + val supportedLangs = Engine.newBuilder().build().languages + + if (LANGUAGE_ID_PYTHON in supportedLangs.keys) { + supportedExtensions[LANGUAGE_ID_PYTHON] = sortedSetOf( + PYTHON_FILE_EXTENSION, + PYTHON_BYTECODE_FILE_EXTENSION, + ) + supportedMimes["text/x-python"] = LANGUAGE_ID_PYTHON + supportedMimes["application/x-python"] = LANGUAGE_ID_PYTHON + } + } + + + // Determine whether the file is foreign based on the filename. + private fun supportedFilename(name: String): Boolean { + val ext = name.substringAfterLast('.') + return supportedExtensions.values.any { it.contains(ext) } + } + + // Resolve a foreign lang by source lang ID. + private fun resolveLang(source: Source): String? { + return when (source.mimeType) { + null -> source.name?.let { resolveLang(it) } + else -> supportedMimes[source.mimeType] + } + } + + // Resolve a foreign lang by filename. + private fun resolveLang(name: String): String? { + val ext = name.substringAfterLast('.') + return supportedExtensions.entries.firstOrNull { it.value.contains(ext) }?.key + } + + // Determine whether the file is foreign based on parsed sources. + private fun isForeignInteropSource(source: Source): Boolean { + return when (source.mimeType) { + null -> source.name?.let { supportedFilename(it) } == true + else -> source.mimeType in supportedMimes + } + } + + private fun spawnInteropModule( + referencingModule: ScriptOrModule, + moduleRequest: Module.ModuleRequest, + file: TruffleFile, + realm: JSRealm, + ): ElideForeignModuleFacade { + val targetLang = resolveLang(file.name) ?: error("Could not resolve language for file: '${file.name}'") + val defaultExportName = Strings.DEFAULT + val defaultExport = ExportEntry.exportSpecifier(defaultExportName) + val frameDescBuilder = JSFrameDescriptor(Undefined.instance) + val defaultExportSlot = frameDescBuilder.addFrameSlot(defaultExportName) + val frameDescriptor = frameDescBuilder.toFrameDescriptor() + val localExportEntries = buildList { + add(defaultExport) + } + + val modRecord = Module( + /* requestedModules = */ + emptyList(), + /* importEntries = */ + emptyList(), + /* localExportEntries = */ + localExportEntries, + /* indirectExportEntries = */ + emptyList(), + /* starExportEntries = */ + emptyList(), + /* imports = */ + null, + /* exports = */ + null, + ) + val source = Source.newBuilder(targetLang, "", file.name) + .internal(true) + .cached(false) + .build() + + val facade = atomic(null) + val rootNode: JavaScriptRootNode = object : JavaScriptRootNode( + realm.context.language, + source.createUnavailableSection(), + frameDescriptor, + ) { + @TruffleBoundary + override fun execute(frame: VirtualFrame): Any { + val module = JSArguments.getUserArgument(frame.arguments, 0) as JSModuleRecord + module.environment?.let { + assert(module.status == Status.Evaluating) + setInteropModuleDefaultExport(frame, module) + } ?: run { + assert(module.status == Status.Linking) + module.environment = frame.materialize() + } + return Undefined.instance + } + + private fun setInteropModuleDefaultExport(frame: VirtualFrame, module: JSModuleRecord) { + val surface = facade.value ?: error("Foreign module facade not initialized") + val currentEnv = realm.env + val langInfo = currentEnv.internalLanguages[surface.lang] + ?: error("Language not initialized: '${surface.lang}'") + + // @TODO don't hard-code python here + // make sure the language has initialized in the current context + currentEnv.initializeLanguage(langInfo) + val py = PythonLanguage.get(null) + val pyCtx = PythonContext(py, currentEnv) + val src = Source.newBuilder(surface.lang, file) + .cached(true) + .build() + + val rootCallTarget = py.parse( + pyCtx, + src, + InputType.FILE, + true, + 1, + false, + emptyList(), + EnumSet.noneOf(FutureFeature::class.java), + ) + + val exec = rootCallTarget.rootNode.execute(frame) + module.environment.setObject(defaultExportSlot.index, realm.env.asGuestValue(exec)) + } + } + + val callTarget: CallTarget = rootNode.callTarget + val functionData = JSFunctionData.create( + realm.context, + callTarget, + callTarget, + 0, + Strings.EMPTY_STRING, + false, + false, + true, + true, + ) + val data = JSModuleData( + modRecord, + source, + functionData, + frameDescriptor, + ) + when (targetLang) { + LANGUAGE_ID_PYTHON -> facade.value = PythonForeignModuleFacade( + data, + this, + ) + + else -> error("Unsupported language for foreign imports: '$targetLang'") + } + return facade.value!! + } + + override fun test(t: DelegatedModuleLoaderRegistry.DelegatedModuleRequest): Boolean { + return when (val source = t.source) { + // if we have no source to work with, hint based on the filename + null -> supportedFilename(t.label) + + // prefer sources + else -> isForeignInteropSource(source) + } + } + + override fun invoke(realm: JSRealm): JSModuleLoader = this + + override fun loadModule(moduleSource: Source, moduleData: JSModuleData): JSModuleRecord { + TODO("Not yet implemented: Evaluation of foreign modules") + } + + override fun resolveImportedModule( + referencingModule: ScriptOrModule, + moduleRequest: Module.ModuleRequest, + ): JSModuleRecord { + val basePath = referencingModule.source?.path + val baseUri = referencingModule.source?.uri + val env = JavaScriptLanguage.getCurrentEnv() + val realm = JavaScriptLanguage.getCurrentJSRealm() + val spec = moduleRequest.specifier.toString() + + val parentFile = when { + basePath != null -> env.getPublicTruffleFile(basePath).parent + + baseUri != null -> if (baseUri.scheme == "truffle") null else { + env.getPublicTruffleFile(baseUri).parent + } + + // fall-back to the default cwd root if we don't have a proper parent to resolve from + else -> null + } ?: env.getPublicTruffleFile(realm.contextOptions.requireCwd) + + // resolve a file path for the module if possible + val resolvedFile = parentFile.resolve(spec) + if (resolvedFile != null && resolvedFile.exists()) { + // spawn a resolved module record which can be evaluated eventually + return spawnInteropModule(referencingModule, moduleRequest, resolvedFile, realm) + } + + error("Cannot import: '$spec'") + } +} diff --git a/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/ElideJsModuleRouter.kt b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/ElideJsModuleRouter.kt index 6afcbb7843..c7bb0959b3 100644 --- a/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/ElideJsModuleRouter.kt +++ b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/ElideJsModuleRouter.kt @@ -66,10 +66,13 @@ internal object ElideJsModuleRouter : JSModuleLoaderFactory, CommonJSResolverHoo * * This method is idempotent; repeated calls to this method are ignored. */ - @JvmStatic fun install() { + @JvmStatic fun install(interop: Boolean) { if (!initialized.getAndSet(true)) { JSEngine.setModuleLoaderFactory(this) JSEngine.setCjsResolverHook(this) + if (interop) { + DelegatedModuleLoaderRegistry.register(ElideInteropModuleLoader) + } } } diff --git a/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptLang.kt b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptLang.kt index bc369d37d8..995814b85f 100644 --- a/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptLang.kt +++ b/packages/graalvm-js/src/main/kotlin/elide/runtime/lang/javascript/JavaScriptLang.kt @@ -33,9 +33,9 @@ public object JavaScriptLang { public fun precompiler(): JavaScriptPrecompiler = JavaScriptPrecompiler /** Initialize the JavaScript language layer. */ - public fun initialize() { + public fun initialize(interop: Boolean = true) { if (initialized.compareAndSet(expect = false, update = true)) { - ElideJsModuleRouter.install() + ElideJsModuleRouter.install(interop) } } } diff --git a/packages/graalvm-js/src/main/kotlin24x/elide/runtime/lang/javascript/ElideUniversalJsModuleLoader.kt b/packages/graalvm-js/src/main/kotlin24x/elide/runtime/lang/javascript/ElideUniversalJsModuleLoader.kt index a27f095f98..8a87d00993 100644 --- a/packages/graalvm-js/src/main/kotlin24x/elide/runtime/lang/javascript/ElideUniversalJsModuleLoader.kt +++ b/packages/graalvm-js/src/main/kotlin24x/elide/runtime/lang/javascript/ElideUniversalJsModuleLoader.kt @@ -39,8 +39,10 @@ import com.oracle.truffle.js.runtime.objects.* import com.oracle.truffle.js.runtime.objects.JSModuleRecord.Status import org.graalvm.polyglot.proxy.ProxyObject import java.io.File +import java.nio.file.Paths import java.util.* import java.util.concurrent.ConcurrentSkipListMap +import java.util.function.Predicate import elide.core.api.Symbolic import elide.runtime.Logging import elide.runtime.gvm.loader.ModuleInfo @@ -65,6 +67,14 @@ private val allElideModules = sortedSetOf( "sqlite", ) +// All TypeScript extensions. +private val tsExtensions = sortedSetOf( + "ts", + "tsx", + "cts", + "mts" +) + // Module prefixes which trigger some kind of behavior. private val specialModulePrefixes = sortedSetOf( DENO_MODULE_PREFIX, @@ -122,7 +132,7 @@ private val allNodeModules = sortedSetOf( ) // All built-in Node modules. -@Suppress("VARIABLE_NAME_INCORRECT") public object NodeModuleName { +@Suppress("VARIABLE_NAME_INCORRECT") public object NodeModuleName : Predicate { public const val ASSERT: String = "assert" public const val ASSERT_STRICT: String = "assert_strict" public const val ASYNC_HOOKS: String = "async_hooks" @@ -170,6 +180,22 @@ private val allNodeModules = sortedSetOf( public const val WORKER: String = "worker" public const val WORKER_THREADS: String = "worker_threads" public const val ZLIB: String = "zlib" + + // named modules do not contain periods or slashes + private val namedModuleRegex = Regex("^[^./]+$") + + override fun test(t: String): Boolean { + return if (namedModuleRegex.matches(t)) { + // does it start with any of the prefixes? + if (':' in t) { + val prefix = t.substringBefore(':') + return prefix in specialModulePrefixes + } + t in allNodeModules + } else { + false + } + } } // Implements Elide's internal ECMA-compliant module loader. @@ -177,6 +203,9 @@ internal class ElideUniversalJsModuleLoader private constructor(realm: JSRealm) // Cache of injected modules. private val injectedModuleCache: MutableMap = ConcurrentSkipListMap() + // Cache of delegated modules. + private val delegatedModuleCache: MutableMap = ConcurrentSkipListMap() + // Synthesize an injected module. private fun synthesizeInjected( referencingModule: ScriptOrModule, @@ -274,7 +303,18 @@ internal class ElideUniversalJsModuleLoader private constructor(realm: JSRealm) } private fun setSyntheticModuleExport(module: JSModuleRecord) { - module.environment.setObject(defaultExportSlot.index, surface) + when (surface) { + is ProxyObject -> module.environment.setObject(defaultExportSlot.index, realm.env.asGuestValue(surface)) + is SyntheticJSModule<*> -> { + val exp = surface.provide() + if (exp is ProxyObject) { + module.environment.setObject(defaultExportSlot.index, realm.env.asGuestValue(defaultExport)) + } else error( + "Provided synthetic module from `SyntheticJSModule.provide` is not a `ProxyObject`: $defaultExport" + ) + } + } + val mountPropsFromProxy = { it: ProxyObject -> for ((slotName, slot) in mappedSlots) { // module.namespace.X @@ -364,29 +404,30 @@ internal class ElideUniversalJsModuleLoader private constructor(realm: JSRealm) // Load a module which needs pre-compilation (or some other special load step). private fun loadDelegatedSourceModule(moduleSource: Source, moduleData: JSModuleData): JSModuleRecord { val req = DelegatedModuleRequest.of(moduleSource) - return when (DelegatedModuleLoaderRegistry.test(req)) { + return when (val delegate = DelegatedModuleLoaderRegistry.resolveSafe(req, realm)) { + // the delegated registry has indicated there is no matching loader for this + null -> super.loadModule(moduleSource, moduleData) + // allow the delegated registry to load the module - true -> DelegatedModuleLoaderRegistry.resolve(req, realm).loadModule(moduleSource, moduleData).let { - when (it) { - // the loader returned `null`, opting out of resolution; continue with defaults - null -> super.loadModule(moduleSource, moduleData) + else -> when (val mod = delegate.loadModule(moduleSource, moduleData)) { + // the loader returned `null`, opting out of resolution; continue with defaults + null -> super.loadModule(moduleSource, moduleData) - // we're good to return from here - else -> it - } + // we're good to return from here + else -> mod } - - // the delegated registry has indicated there is no matching loader for this - false -> super.loadModule(moduleSource, moduleData) } } // Load a module which needs pre-compilation (or some other special load step). private fun resolveDelegatedImportedModule(ref: ScriptOrModule, req: ModuleRequest, name: String): JSModuleRecord { val delegatedReq = DelegatedModuleRequest.of(name) - return when (DelegatedModuleLoaderRegistry.test(delegatedReq)) { - // allow the delegated registry to load the module - true -> DelegatedModuleLoaderRegistry.resolve(delegatedReq, realm).resolveImportedModule(ref, req).let { + return when (val delegate = DelegatedModuleLoaderRegistry.resolveSafe(delegatedReq, realm)) { + // the delegated registry has indicated there is no matching loader for this + null -> super.resolveImportedModule(ref, req) + + // allow the delegated registry to load the module @TODO collapse + else -> delegate.resolveImportedModule(ref, req).let { when (it) { // the loader returned `null`, opting out of resolution; continue with defaults null -> super.resolveImportedModule(ref, req) @@ -395,9 +436,6 @@ internal class ElideUniversalJsModuleLoader private constructor(realm: JSRealm) else -> it } } - - // the delegated registry has indicated there is no matching loader for this - false -> super.resolveImportedModule(ref, req) } } @@ -405,9 +443,11 @@ internal class ElideUniversalJsModuleLoader private constructor(realm: JSRealm) val requested = moduleRequest.specifier.toString() val (prefix, unprefixed) = parsePrefixedMaybe(requested) - return when (determineModuleStrategy(requested)) { + return when (determineModuleStrategy(requested, referencingModule)) { FALLBACK -> super.resolveImportedModule(referencingModule, moduleRequest) - DELEGATED -> resolveDelegatedImportedModule(referencingModule, moduleRequest, unprefixed) + DELEGATED -> delegatedModuleCache.computeIfAbsent(unprefixed) { + resolveDelegatedImportedModule(referencingModule, moduleRequest, unprefixed) + } SYNTHETIC -> injectedModuleCache.computeIfAbsent(unprefixed) { synthesizeInjected(referencingModule, moduleRequest, prefix, unprefixed) } @@ -490,9 +530,21 @@ internal class ElideUniversalJsModuleLoader private constructor(realm: JSRealm) if (ALWAYS_FALLBACK) { return FALLBACK } - return when (source.language) { + val sourceNameOrFileName = when { + source.name != null -> source.name + source.path != null -> Paths.get(source.path).fileName.toString() + source.uri != null -> Paths.get(source.uri).fileName.toString() + source.url != null -> Paths.get(source.url.toURI()).fileName.toString() + else -> null + } + val filenameExtension = sourceNameOrFileName?.substringAfterLast('.', "") + + return when { // typescript/tsx/etc. is delegated, always - ELIDE_TS_LANGUAGE_ID -> DELEGATED + source.language == ELIDE_TS_LANGUAGE_ID -> DELEGATED + + // filenames ending in `.ts`, `.tsx`, `.cts`, and `.mts` are delegated + filenameExtension != null && filenameExtension in tsExtensions -> DELEGATED // otherwise, fall back to regular module loader behavior else -> FALLBACK @@ -500,24 +552,26 @@ internal class ElideUniversalJsModuleLoader private constructor(realm: JSRealm) } // Determine the loading strategy to use for a given module request. - private fun determineModuleStrategy(requested: String): ModuleStrategy { + @Suppress("UNUSED_PARAMETER") + private fun determineModuleStrategy(requested: String, referrer: ScriptOrModule? = null): ModuleStrategy { if (ALWAYS_FALLBACK) { return FALLBACK } - if (requested.contains(File.separatorChar) || requested.contains('.')) { - return FALLBACK // we are not a filesystem loader - } - val (prefix, unprefixed) = parsePrefixedMaybe(requested) - return when (prefix) { + return when { // un-prefixed modules may still be built-in (for example, `fs`). - null -> resolveUnprefixed(unprefixed) + prefix == null -> if (!requested.contains(File.separatorChar) && !requested.contains('.')) { + resolveUnprefixed(unprefixed) + } else when { + // otherwise, fallback to delegates, which will opt-out if needed + else -> DELEGATED + } // special prefixes are always synthetic - in specialModulePrefixes -> SYNTHETIC - - // otherwise we try delegation - else -> FALLBACK + else -> when (prefix in specialModulePrefixes) { + true -> SYNTHETIC + else -> DELEGATED + } } } diff --git a/packages/graalvm-jvm/build.gradle.kts b/packages/graalvm-jvm/build.gradle.kts index 71a36efd6f..d160b9ae4e 100644 --- a/packages/graalvm-jvm/build.gradle.kts +++ b/packages/graalvm-jvm/build.gradle.kts @@ -47,8 +47,8 @@ elide { } } -val enablePackagedJvm = true -val enableGraalEmbedded = true +val enablePackagedJvm = false +val enableGraalEmbedded = false val packagedModules = listOf( "java.base", @@ -204,7 +204,6 @@ val binsToRemove = listOf( val resourcesToRemove = listOf( jlinkConfRoot.resolve("sound.properties"), - ) val trimPackagedJvm by tasks.registering(Exec::class) { diff --git a/packages/graalvm-jvm/gradle.lockfile b/packages/graalvm-jvm/gradle.lockfile index 325d7b20c0..3f3ff325ee 100644 --- a/packages/graalvm-jvm/gradle.lockfile +++ b/packages/graalvm-jvm/gradle.lockfile @@ -33,7 +33,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -48,7 +48,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -64,9 +64,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -76,7 +76,7 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath @@ -84,17 +84,17 @@ io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeCla io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compileClasspath,runtimeClasspath @@ -138,9 +138,9 @@ org.graalvm.truffle:truffle-nfi:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-runtime:24.1.2=runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -151,12 +151,6 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=compileClasspath,runtimeCla org.jetbrains.kotlinx:kotlinx-coroutines-jdk9:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -168,6 +162,6 @@ org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/graalvm-kt/gradle.lockfile b/packages/graalvm-kt/gradle.lockfile index 3633c60ef9..b40e20b046 100644 --- a/packages/graalvm-kt/gradle.lockfile +++ b/packages/graalvm-kt/gradle.lockfile @@ -33,7 +33,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -48,7 +48,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -64,9 +64,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -76,7 +76,7 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath @@ -84,17 +84,17 @@ io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeCla io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compileClasspath,runtimeClasspath @@ -139,20 +139,20 @@ org.graalvm.truffle:truffle-runtime:24.1.2=runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-compiler-embeddable:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-daemon-embeddable:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-reflect:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-script-runtime:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-common:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-compiler:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-jvm-host:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-scripting-jvm:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-compiler-embeddable:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-daemon-embeddable:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-reflect:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-script-runtime:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-scripting-common:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-scripting-compiler-impl:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-scripting-compiler:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-scripting-jvm-host:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-scripting-jvm:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -163,12 +163,6 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=compileClasspath,runtimeCla org.jetbrains.kotlinx:kotlinx-coroutines-jdk9:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -181,6 +175,6 @@ org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/graalvm-kt/src/main/kotlin/elide/runtime/gvm/kotlin/KotlinLanguage.kt b/packages/graalvm-kt/src/main/kotlin/elide/runtime/gvm/kotlin/KotlinLanguage.kt index a8d4db262e..6852d0950f 100644 --- a/packages/graalvm-kt/src/main/kotlin/elide/runtime/gvm/kotlin/KotlinLanguage.kt +++ b/packages/graalvm-kt/src/main/kotlin/elide/runtime/gvm/kotlin/KotlinLanguage.kt @@ -28,7 +28,7 @@ import elide.runtime.gvm.kotlin.feature.KotlinResource private const val KOTLIN_ID = "kotlin" private const val KOTLIN_NAME = "Kotlin" private const val KOTLIN_IMPL = "Kotlin/JVM (Espresso)" -private const val KOTLIN_IMPL_VERSION = "2.1.20-RC-r1" +private const val KOTLIN_IMPL_VERSION = "2.1.20-RC2-r1" private const val KOTLIN_MIME_TYPE = "application/x-kotlin" /** diff --git a/packages/graalvm-kt/src/main/kotlin/elide/runtime/gvm/kotlin/KotlinPrecompiler.kt b/packages/graalvm-kt/src/main/kotlin/elide/runtime/gvm/kotlin/KotlinPrecompiler.kt index 0850276da2..3c96287ff7 100644 --- a/packages/graalvm-kt/src/main/kotlin/elide/runtime/gvm/kotlin/KotlinPrecompiler.kt +++ b/packages/graalvm-kt/src/main/kotlin/elide/runtime/gvm/kotlin/KotlinPrecompiler.kt @@ -41,7 +41,7 @@ import elide.runtime.precompiler.PrecompilerNoticeWithOutput // Implements a precompiler which compiles Kotlin to Java bytecode. internal object KotlinPrecompiler : BundlePrecompiler { // Embedded Kotlin version. - private const val KOTLIN_VERSION = "2.1.20-RC" + private const val KOTLIN_VERSION = "2.1.20-RC2" private val kotlinVerbose by lazy { System.getProperty("elide.kotlin.verbose") == "true" } diff --git a/packages/graalvm-kt/src/test/kotlin/elide/runtime/gvm/kotlin/KotlinPrecompilerTest.kt b/packages/graalvm-kt/src/test/kotlin/elide/runtime/gvm/kotlin/KotlinPrecompilerTest.kt index 8e51f68d3e..1362c23163 100644 --- a/packages/graalvm-kt/src/test/kotlin/elide/runtime/gvm/kotlin/KotlinPrecompilerTest.kt +++ b/packages/graalvm-kt/src/test/kotlin/elide/runtime/gvm/kotlin/KotlinPrecompilerTest.kt @@ -17,6 +17,7 @@ import org.junit.jupiter.api.assertDoesNotThrow import java.util.* import kotlinx.coroutines.test.runTest import kotlin.io.path.exists +import kotlin.test.Ignore import kotlin.test.Test import kotlin.test.assertContains import kotlin.test.assertNotNull @@ -46,6 +47,7 @@ class KotlinPrecompilerTest { assertNotNull(svc) } + @Ignore @Test fun `precompile kotlin`() = runTest { // language=kotlin val src = """ diff --git a/packages/graalvm-llvm/gradle.lockfile b/packages/graalvm-llvm/gradle.lockfile index 7beb7bbedc..600f560547 100644 --- a/packages/graalvm-llvm/gradle.lockfile +++ b/packages/graalvm-llvm/gradle.lockfile @@ -33,7 +33,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -48,7 +48,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -64,9 +64,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -76,7 +76,7 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath @@ -84,17 +84,17 @@ io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeCla io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compileClasspath,runtimeClasspath @@ -133,9 +133,9 @@ org.graalvm.truffle:truffle-nfi-libffi:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-nfi:24.1.2=compileClasspath,runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -146,12 +146,6 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=compileClasspath,runtimeCla org.jetbrains.kotlinx:kotlinx-coroutines-jdk9:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -163,6 +157,6 @@ org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/graalvm-llvm/src/main/kotlin/elide/runtime/plugins/llvm/LLVM.kt b/packages/graalvm-llvm/src/main/kotlin/elide/runtime/plugins/llvm/LLVM.kt index 0f4af89255..2ef894518e 100644 --- a/packages/graalvm-llvm/src/main/kotlin/elide/runtime/plugins/llvm/LLVM.kt +++ b/packages/graalvm-llvm/src/main/kotlin/elide/runtime/plugins/llvm/LLVM.kt @@ -29,9 +29,6 @@ import elide.runtime.plugins.AbstractLanguagePlugin.LanguagePluginManifest private fun initializeContext(context: PolyglotContext) { // apply init-time settings config.applyTo(context) - - // run embedded initialization code - initializeEmbeddedScripts(context, resources) } private fun configureContext(builder: PolyglotContextBuilder) { @@ -39,11 +36,11 @@ import elide.runtime.plugins.AbstractLanguagePlugin.LanguagePluginManifest val libpath = requireNotNull(System.getProperty("java.library.path")) { "Failed to resolve native libpath" } builder.option("llvm.libraryPath", libpath) -// llvm.C++Interop -// llvm.libraries -// llvm.AOTCacheStore -// llvm.AOTCacheLoad -// llvm.loadC++Libraries + // llvm.C++Interop + // llvm.libraries + // llvm.AOTCacheStore + // llvm.AOTCacheLoad + // llvm.loadC++Libraries } public companion object Plugin : AbstractLanguagePlugin() { @@ -64,10 +61,6 @@ import elide.runtime.plugins.AbstractLanguagePlugin.LanguagePluginManifest // subscribe to lifecycle events scope.lifecycle.on(ContextCreated, instance::configureContext) - - // register resources with the VFS - installEmbeddedBundles(scope, resources) - return instance } } diff --git a/packages/graalvm-py/gradle.lockfile b/packages/graalvm-py/gradle.lockfile index 7ce7e40ff2..0d247dbef3 100644 --- a/packages/graalvm-py/gradle.lockfile +++ b/packages/graalvm-py/gradle.lockfile @@ -33,7 +33,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -48,7 +48,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -64,9 +64,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -76,7 +76,7 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath @@ -84,17 +84,17 @@ io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeCla io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compileClasspath,runtimeClasspath @@ -131,6 +131,7 @@ org.graalvm.python:python-resources:24.1.2=compileClasspath,runtimeClasspath org.graalvm.regex:regex:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:collections:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:jniutils:24.1.2=compileClasspath,runtimeClasspath +org.graalvm.sdk:nativebridge:24.1.2=compileClasspath org.graalvm.sdk:nativeimage:24.1.2=compileClasspath,runtimeClasspath org.graalvm.sdk:word:24.1.2=compileClasspath,runtimeClasspath org.graalvm.shadowed:icu4j:24.1.2=compileClasspath,runtimeClasspath @@ -139,14 +140,15 @@ org.graalvm.shadowed:xz:24.1.2=compileClasspath,runtimeClasspath org.graalvm.tools:profiler-tool:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-api:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-compiler:24.1.2=compileClasspath,runtimeClasspath +org.graalvm.truffle:truffle-enterprise:24.1.2=compileClasspath org.graalvm.truffle:truffle-nfi-libffi:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-nfi:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-runtime:24.1.2=compileClasspath,runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -157,12 +159,6 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=compileClasspath,runtimeCla org.jetbrains.kotlinx:kotlinx-coroutines-jdk9:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -174,6 +170,6 @@ org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/graalvm-py/src/main/kotlin/elide/runtime/plugins/python/Python.kt b/packages/graalvm-py/src/main/kotlin/elide/runtime/plugins/python/Python.kt index 5b75eecf64..fe52f13abb 100644 --- a/packages/graalvm-py/src/main/kotlin/elide/runtime/plugins/python/Python.kt +++ b/packages/graalvm-py/src/main/kotlin/elide/runtime/plugins/python/Python.kt @@ -39,14 +39,11 @@ private val BUILTIN_PYTHON_PATHS = listOf( @DelicateElideApi public class Python( private val config: PythonConfig, - private val resources: LanguagePluginManifest? = null, + @Suppress("unused") private val resources: LanguagePluginManifest? = null, ) { private fun initializeContext(context: PolyglotContext) { // apply init-time settings config.applyTo(context) - - // run embedded initialization code - if (resources != null) initializeEmbeddedScripts(context, resources) } private fun resolveGraalPythonVersions(): Pair { @@ -67,12 +64,16 @@ private val BUILTIN_PYTHON_PATHS = listOf( private fun configureContext(builder: PolyglotContextBuilder) { builder.disableOptions( "python.EmulateJython", + "python.DontWriteBytecodeFlag", ) builder.enableOptions( "python.NativeModules", "python.LazyStrings", "python.WithTRegex", + "python.NoSiteFlag", // @TODO + "python.NoUserSiteFlag", // @TODO + "python.PythonOptimizeFlag", // @TODO ) if (ENABLE_EXPERIMENTAL) { @@ -119,7 +120,7 @@ private val BUILTIN_PYTHON_PATHS = listOf( private const val PYTHON_LANGUAGE_ID = "python" private const val PYTHON_PLUGIN_ID = "Python" private const val ENABLE_EXPERIMENTAL = true - private const val ENABLE_PANAMA = false + private const val ENABLE_PANAMA = true private const val GPY_LIST_SEPARATOR = "🏆" override val languageId: String = PYTHON_LANGUAGE_ID override val key: Key = Key(PYTHON_PLUGIN_ID) @@ -132,10 +133,9 @@ private val BUILTIN_PYTHON_PATHS = listOf( } override val fsProvider: () -> FileSystem get() = { - TODO("fixup") -// org.graalvm.python.embedding.utils.VirtualFileSystem -// .newBuilder() -// .build() + org.graalvm.python.embedding.utils.VirtualFileSystem + .newBuilder() + .build() } } } diff --git a/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/environment.py b/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/environment.py index df0a19c689..0f18e917ac 100644 --- a/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/environment.py +++ b/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/environment.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Elide Technologies, Inc. +# Copyright (c) 2022-2025 Elide Technologies, Inc. # # Licensed under the MIT license (the "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at @@ -8,91 +8,82 @@ # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under the License. -# -# Licensed under the MIT license (the "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# https://opensource.org/license/mit/ -# -# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on -# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under the License. - -import polyglot - - -# noinspection PyPep8Naming -class _Elide_ApplicationEnvironment(object): - """Handler for resolving application-level environment, and withholding system environment, as needed.""" - - __app_environ = {} - __virtual_env = {} - - def __init__(self): - data = polyglot.import_value("__Elide_app_env__") - if data is not None: - self.__app_environ = {x: data[x] for x in data} - - def contains_key(self, item): - return item in self.__app_environ or item in self.__virtual_env - - def all_keys(self): - merged = set([x for x in self.__app_environ]) - for x in self.__virtual_env: - merged.add(x) - return merged - - def __contains__(self, item): - return self.contains_key(item) - - def __getitem__(self, item): - return self.__virtual_env.get(item) or self.__app_environ.__getitem__(item) - - def __setitem__(self, item, value): - self.__virtual_env[item] = value - - def __repr__(self): - return "Environ(%s)" % ", ".join(self.all_keys()) - - def __dir__(self): - return [ - "get", - "contains_key", - "all_keys", - "__getitem__", - "__setitem__", - "__repr__", - "__contains__", - "__dir__", - ] - - def get(self, item, default=None): - if item in self: - return self[item] - return default - - @classmethod - def __patch(cls, singleton): - """Patch the OS environment component, if it has not been patched yet.""" - import os - - if not getattr(cls, "_patched", False): - os.environ = singleton - setattr(cls, "_patched", True) - - @classmethod - def __singleton(cls): - """Resolve or create the application environment singleton.""" - if getattr(cls, "_singleton", None) is None: - singleton = _Elide_ApplicationEnvironment() - setattr(cls, "_singleton", singleton) - return getattr(cls, "_singleton") - - @classmethod - def install(cls): - """Install the monkey-patched environment handler.""" - cls.__patch(cls.__singleton()) - -# Install unconditionally. -_Elide_ApplicationEnvironment.install() +def __init_elide_env(): + # noinspection PyPep8Naming + class _Elide_ApplicationEnvironment(object): + """Handler for resolving application-level environment, and withholding system environment, as needed.""" + + __app_environ = {} + __virtual_env = {} + + def __init__(self): + import polyglot + data = polyglot.import_value("__Elide_app_env__") + if data is not None: + self.__app_environ = {x: data[x] for x in data} + + def contains_key(self, item): + return item in self.__app_environ or item in self.__virtual_env + + def all_keys(self): + merged = set([x for x in self.__app_environ]) + for x in self.__virtual_env: + merged.add(x) + return merged + + def __contains__(self, item): + return self.contains_key(item) + + def __getitem__(self, item): + return self.__virtual_env.get(item) or self.__app_environ.__getitem__(item) + + def __setitem__(self, item, value): + self.__virtual_env[item] = value + + def __repr__(self): + return "Environ(%s)" % ", ".join(self.all_keys()) + + def __dir__(self): + return [ + "get", + "contains_key", + "all_keys", + "__getitem__", + "__setitem__", + "__repr__", + "__contains__", + "__dir__", + ] + + def get(self, item, default=None): + if item in self: + return self[item] + return default + + @classmethod + def __patch(cls, singleton): + """Patch the OS environment component, if it has not been patched yet.""" + import os + + if not getattr(cls, "_patched", False): + os.environ = singleton + setattr(cls, "_patched", True) + + @classmethod + def __singleton(cls): + """Resolve or create the application environment singleton.""" + if getattr(cls, "_singleton", None) is None: + singleton = _Elide_ApplicationEnvironment() + setattr(cls, "_singleton", singleton) + return getattr(cls, "_singleton") + + @classmethod + def install(cls): + """Install the monkey-patched environment handler.""" + cls.__patch(cls.__singleton()) + + # Install unconditionally. + _Elide_ApplicationEnvironment.install() + +__init_elide_env() diff --git a/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/init.py b/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/init.py new file mode 100644 index 0000000000..f3a280139d --- /dev/null +++ b/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/init.py @@ -0,0 +1,160 @@ +# Copyright (c) 2022-2025 Elide Technologies, Inc. +# +# Licensed under the MIT license (the "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://opensource.org/license/mit/ +# +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under the License. + +def __init__interop(): + # import sys, types, polyglot + # importlib + # importlib.util, importlib.abc + + # registered_py_symbols = {} + # def bind_factory(name = None): + # def binder(obj): + # symbol = name or obj.__name__ + # if symbol in registered_py_symbols: + # raise ValueError(f"Symbol '{symbol}' already bound for polyglot access.") + # + # # register the symbol + # polyglot.export_value( + # symbol, + # obj + # ) + # return obj + # return binder + # + # def bind_decorator(obj): + # return bind_factory()(obj) + # + # def polyglot_decorator(name = None): + # return bind_factory(name) + # + # POLYGLOT_MODULE = "polyglot" + # POLYGLOT_DECORATOR = "poly" + # BIND_DECORATOR = "bind" + # MODULE_NAME = "elide" + # + # class ElideModule(types.ModuleType): + # """Module for Elide integration with Python.""" + # + # def __init__(self): + # super(ElideModule, self).__init__(MODULE_NAME) + # + # self.__dict__.update({ + # "__package__": MODULE_NAME, + # "__path__": [], + # "__doc__": "Elide Python interoperability module", + # BIND_DECORATOR: bind_decorator, + # POLYGLOT_MODULE: polyglot, + # }) + # + # def __getattr__(self, name): + # if name == BIND_DECORATOR: + # return bind_decorator + # if name == POLYGLOT_MODULE: + # return polyglot + # if name == POLYGLOT_DECORATOR: + # return polyglot_decorator + # raise AttributeError(f"module '{MODULE_NAME}' has no attribute '{name}'") + # + # def __dir__(self): + # return [BIND_DECORATOR, POLYGLOT_MODULE, POLYGLOT_DECORATOR] + # + # class ElideModuleFinder(importlib.abc.MetaPathFinder): + # def find_spec(self, fullname, _path, _target = None): + # if fullname == MODULE_NAME: + # loader = ElideModuleLoader() + # return importlib.util.spec_from_loader(fullname, loader) + # return None + # + # class ElideModuleLoader(importlib.abc.Loader): + # def create_module(self, _spec): + # return elide_module + # + # def exec_module(self, module): + # pass + + # noinspection PyPep8Naming + class _Elide_ApplicationEnvironment(object): + """Handler for resolving application-level environment, and withholding system environment, as needed.""" + + __app_environ = {} + __virtual_env = {} + + def __init__(self): + data = polyglot.import_value("__Elide_app_env__") + if data is not None: + self.__app_environ = {x: data[x] for x in data} + + def contains_key(self, item): + return item in self.__app_environ or item in self.__virtual_env + + def all_keys(self): + merged = set([x for x in self.__app_environ]) + for x in self.__virtual_env: + merged.add(x) + return merged + + def __contains__(self, item): + return self.contains_key(item) + + def __getitem__(self, item): + return self.__virtual_env.get(item) or self.__app_environ.__getitem__(item) + + def __setitem__(self, item, value): + self.__virtual_env[item] = value + + def __repr__(self): + return "Environ(%s)" % ", ".join(self.all_keys()) + + def __dir__(self): + return [ + "get", + "contains_key", + "all_keys", + "__getitem__", + "__setitem__", + "__repr__", + "__contains__", + "__dir__", + ] + + def get(self, item, default=None): + if item in self: + return self[item] + return default + + @classmethod + def __patch(cls, singleton): + """Patch the OS environment component, if it has not been patched yet.""" + import os + + if not getattr(cls, "_patched", False): + os.environ = singleton + setattr(cls, "_patched", True) + + @classmethod + def __singleton(cls): + """Resolve or create the application environment singleton.""" + if getattr(cls, "_singleton", None) is None: + singleton = _Elide_ApplicationEnvironment() + setattr(cls, "_singleton", singleton) + return getattr(cls, "_singleton") + + @classmethod + def install(cls): + """Install the monkey-patched environment handler.""" + cls.__patch(cls.__singleton()) + + #elide_module = ElideModule() + #sys.meta_path.insert(0, ElideModuleFinder()) + #sys.modules[MODULE_NAME] = elide_module + _Elide_ApplicationEnvironment.install() + +__init__interop() diff --git a/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/preamble.py b/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/preamble.py index b33bbb245e..d859b6e0f4 100644 --- a/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/preamble.py +++ b/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/preamble.py @@ -1,13 +1,4 @@ -# Copyright (c) 2024 Elide Technologies, Inc. -# -# Licensed under the MIT license (the "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# https://opensource.org/license/mit/ -# -# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on -# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under the License. +# Copyright (c) 2022-2025 Elide Technologies, Inc. # # Licensed under the MIT license (the "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at @@ -18,4 +9,81 @@ # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under the License. -# Nothing at this time. +def __init__interop(): + import sys + import polyglot + import importlib.abc + import importlib.util + from types import ModuleType + + registered_py_symbols = {} + def bind_factory(name = None): + def binder(obj): + symbol = name or obj.__name__ + if symbol in registered_py_symbols: + raise ValueError(f"Symbol '{symbol}' already bound for polyglot access.") + + # register the symbol + polyglot.export_value( + symbol, + obj + ) + return obj + return binder + + def bind_decorator(obj): + return bind_factory()(obj) + + def polyglot_decorator(name = None): + return bind_factory(name) + + POLYGLOT_MODULE = "polyglot" + POLYGLOT_DECORATOR = "poly" + BIND_DECORATOR = "bind" + MODULE_NAME = "elide" + + class ElideModule(ModuleType): + """Module for Elide integration with Python.""" + + def __init__(self): + super(ElideModule, self).__init__(MODULE_NAME) + + self.__dict__.update({ + "__package__": MODULE_NAME, + "__path__": [], + "__doc__": "Elide Python interoperability module", + BIND_DECORATOR: bind_decorator, + POLYGLOT_MODULE: polyglot, + }) + + def __getattr__(self, name): + if name == BIND_DECORATOR: + return bind_decorator + if name == POLYGLOT_MODULE: + return polyglot + if name == POLYGLOT_DECORATOR: + return polyglot_decorator + raise AttributeError(f"module '{MODULE_NAME}' has no attribute '{name}'") + + def __dir__(self): + return [BIND_DECORATOR, POLYGLOT_MODULE, POLYGLOT_DECORATOR] + + class ElideModuleFinder(importlib.abc.MetaPathFinder): + def find_spec(self, fullname, _path, _target = None): + if fullname == MODULE_NAME: + loader = ElideModuleLoader() + return importlib.util.spec_from_loader(fullname, loader) + return None + + class ElideModuleLoader(importlib.abc.Loader): + def create_module(self, _spec): + return elide_module + + def exec_module(self, module): + pass + + elide_module = ElideModule() + sys.meta_path.insert(0, ElideModuleFinder()) + sys.modules[MODULE_NAME] = elide_module + +__init__interop() diff --git a/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/py.modules.tar b/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/py.modules.tar new file mode 100755 index 0000000000..49ca8aa263 Binary files /dev/null and b/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/py.modules.tar differ diff --git a/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/runtime.json.gz b/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/runtime.json.gz index d365943455..0ea6bb9b8f 100644 Binary files a/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/runtime.json.gz and b/packages/graalvm-py/src/main/resources/META-INF/elide/embedded/runtime/python/runtime.json.gz differ diff --git a/packages/graalvm-rb/build.gradle.kts b/packages/graalvm-rb/build.gradle.kts index fe5c80da88..45e2fbad25 100644 --- a/packages/graalvm-rb/build.gradle.kts +++ b/packages/graalvm-rb/build.gradle.kts @@ -19,7 +19,6 @@ plugins { kotlin("jvm") alias(libs.plugins.micronaut.minimal.library) alias(libs.plugins.micronaut.graalvm) - id(libs.plugins.shadow.get().pluginId) alias(libs.plugins.elide.conventions) } diff --git a/packages/graalvm-rb/gradle.lockfile b/packages/graalvm-rb/gradle.lockfile index 6c37f47e17..4d11b853fd 100644 --- a/packages/graalvm-rb/gradle.lockfile +++ b/packages/graalvm-rb/gradle.lockfile @@ -33,7 +33,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -48,7 +48,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -64,9 +64,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -76,7 +76,7 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath @@ -84,17 +84,17 @@ io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeCla io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compileClasspath,runtimeClasspath @@ -147,9 +147,9 @@ org.graalvm.truffle:truffle-nfi:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-runtime:24.1.2=runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -160,12 +160,6 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=compileClasspath,runtimeCla org.jetbrains.kotlinx:kotlinx-coroutines-jdk9:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -177,6 +171,6 @@ org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/graalvm-rb/src/main/kotlin/elide/runtime/plugins/ruby/Ruby.kt b/packages/graalvm-rb/src/main/kotlin/elide/runtime/plugins/ruby/Ruby.kt index dddfd08b9c..12cd2a8aa7 100644 --- a/packages/graalvm-rb/src/main/kotlin/elide/runtime/plugins/ruby/Ruby.kt +++ b/packages/graalvm-rb/src/main/kotlin/elide/runtime/plugins/ruby/Ruby.kt @@ -26,16 +26,14 @@ import elide.runtime.plugins.AbstractLanguagePlugin.LanguagePluginManifest @DelicateElideApi public class Ruby( private val config: RubyConfig, - private val resources: LanguagePluginManifest? = null, + @Suppress("unused") private val resources: LanguagePluginManifest? = null, ) { private fun initializeContext(context: PolyglotContext) { // apply init-time settings config.applyTo(context) // run embedded initialization code - resources?.let { - initializeEmbeddedScripts(context, resources) - } + executePreambleScripts(context, rubyPreamble) } private fun configureContext(builder: PolyglotContextBuilder) { @@ -63,9 +61,9 @@ import elide.runtime.plugins.AbstractLanguagePlugin.LanguagePluginManifest "ruby.warn-locale", ) -// builder.setOptions( -// "log.level" to "OFF", -// ) + // builder.setOptions( + // "log.level" to "OFF", + // ) } public companion object Plugin : AbstractLanguagePlugin() { @@ -73,6 +71,10 @@ import elide.runtime.plugins.AbstractLanguagePlugin.LanguagePluginManifest private const val RUBY_PLUGIN_ID = "Ruby" override val languageId: String = RUBY_LANGUAGE_ID override val key: Key = Key(RUBY_PLUGIN_ID) + @JvmStatic private val rubyPreamble = initializePreambleScripts( + RUBY_LANGUAGE_ID, + "environment.rb", + ) override fun install(scope: InstallationScope, configuration: RubyConfig.() -> Unit): Ruby { configureLanguageSupport(scope) @@ -89,7 +91,6 @@ import elide.runtime.plugins.AbstractLanguagePlugin.LanguagePluginManifest scope.lifecycle.on(ContextInitialized, instance::initializeContext) // register resources with the VFS - // if (resources != null) installEmbeddedBundles(scope, resources) return instance } } diff --git a/packages/graalvm-ts/build.gradle.kts b/packages/graalvm-ts/build.gradle.kts index 9b8da5963c..8611f7f175 100644 --- a/packages/graalvm-ts/build.gradle.kts +++ b/packages/graalvm-ts/build.gradle.kts @@ -66,8 +66,7 @@ dependencies { // Testing testImplementation(projects.packages.test) - testImplementation(projects.packages.graalvm) - testImplementation(project(":packages:graalvm", configuration = "testBase")) + testImplementation(projects.packages.engine) } val elideTarget = TargetInfo.current(project) @@ -117,6 +116,7 @@ tasks { environment("ELIDE_TEST", "true") systemProperty("elide.test", "true") systemProperty("java.library.path", javaLibPath.get()) + dependsOn(":packages:graalvm:buildRustNativesForHost") } } diff --git a/packages/graalvm-ts/gradle.lockfile b/packages/graalvm-ts/gradle.lockfile index 1f79007efb..fb9c68351e 100644 --- a/packages/graalvm-ts/gradle.lockfile +++ b/packages/graalvm-ts/gradle.lockfile @@ -33,7 +33,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -48,7 +48,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -64,9 +64,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -76,7 +76,7 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath @@ -84,17 +84,17 @@ io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeCla io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compileClasspath,runtimeClasspath @@ -121,9 +121,9 @@ org.graalvm.shadowed:icu4j:24.1.2=compileClasspath,runtimeClasspath org.graalvm.truffle:truffle-api:24.1.2=compileClasspath,runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -134,12 +134,6 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=compileClasspath,runtimeCla org.jetbrains.kotlinx:kotlinx-coroutines-jdk9:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -151,6 +145,6 @@ org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptLanguage.java b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptLanguage.java index 063d4086c3..135ff82907 100644 --- a/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptLanguage.java +++ b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptLanguage.java @@ -26,6 +26,8 @@ import elide.runtime.typescript.TypeScriptPrecompiler; import java.io.IOException; import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; import java.util.concurrent.atomic.AtomicBoolean; import org.graalvm.polyglot.SandboxPolicy; import org.jetbrains.annotations.NotNull; @@ -65,6 +67,14 @@ public class TypeScriptLanguage extends TruffleLanguage { public static final String IMPLEMENTATION_NAME = "TypeScript"; public static final String ID = "ts"; public static final String TYPESCRIPT_VERSION = "5.8.2"; + private static final SortedSet tsExtensions = new TreeSet<>(); + + static { + tsExtensions.add("ts"); + tsExtensions.add("tsx"); + tsExtensions.add("cts"); + tsExtensions.add("mts"); + } private static final TypeScriptPrecompiler tsPrecompiler = TypeScriptPrecompiler.obtain(); private static final TypeScriptPrecompiledLoaderFactory tsLoaderFactory = @@ -85,7 +95,12 @@ public static class TypeScriptPrecompiledLoaderFactory public boolean test( DelegatedModuleLoaderRegistry.DelegatedModuleRequest delegatedModuleRequest) { var src = delegatedModuleRequest.source(); - return ((src != null && src.hasCharacters() && ID.equals(src.getLanguage()))); + if (src != null) { + return ID.equals(src.getLanguage()); + } + var name = delegatedModuleRequest.label(); + var fileExt = name.contains(".") ? name.substring(name.lastIndexOf('.') + 1) : ""; + return tsExtensions.contains(fileExt); } } @@ -124,7 +139,9 @@ private CallTarget parseWithNativeEngine(ParsingRequest parsingRequest) throws I List argumentNames = parsingRequest.getArgumentNames(); Source tsSource = parsingRequest.getSource(); var env = JavaScriptLanguage.getCurrentEnv(); - Source jsSource = tsLoader.transpileSource(tsSource); + var path = tsSource.getPath(); + var truffleFile = path != null ? env.getPublicTruffleFile(path) : null; + Source jsSource = tsLoader.transpileSource(tsSource, truffleFile); var parsed = (RootCallTarget) env.parseInternal(jsSource, argumentNames.toArray(new String[0])); return parsed.getRootNode().getCallTarget(); } diff --git a/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptPrecompiledLoader.java b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptPrecompiledLoader.java index 31dd707c66..20ef409b4d 100644 --- a/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptPrecompiledLoader.java +++ b/packages/graalvm-ts/src/main/java/elide/runtime/lang/typescript/TypeScriptPrecompiledLoader.java @@ -15,7 +15,10 @@ import com.oracle.js.parser.ir.Module; import com.oracle.truffle.api.TruffleFile; import com.oracle.truffle.api.source.Source; +import com.oracle.truffle.js.lang.JavaScriptLanguage; import com.oracle.truffle.js.runtime.JSRealm; +import com.oracle.truffle.js.runtime.objects.JSModuleData; +import com.oracle.truffle.js.runtime.objects.JSModuleRecord; import com.oracle.truffle.js.runtime.objects.ScriptOrModule; import elide.runtime.lang.javascript.JavaScriptCompilerConfig; import elide.runtime.precompiler.Precompiler; @@ -50,31 +53,79 @@ public TypeScriptPrecompiledLoader(JSRealm realm, TypeScriptPrecompiler precompi return lang; } + @Override + public @NotNull JSModuleRecord resolveImportedModule( + ScriptOrModule referrer, Module.ModuleRequest moduleRequest) { + // @TODO support for typescript imports + // fallback to regular module loading behavior + return super.resolveImportedModule(referrer, moduleRequest); + } + + @Override + public @NotNull JSModuleRecord loadModule(Source source, JSModuleData moduleData) { + // @TODO hooks to support typescript imports + return super.loadModule(source, moduleData); + } + @Override @NotNull Source transpileModule( ScriptOrModule referrer, Module.ModuleRequest request, TruffleFile maybeFile, String name) throws IOException { var path = Paths.get(maybeFile.getPath()); + var uri = path.toUri(); var content = new String(maybeFile.readAllBytes(), StandardCharsets.UTF_8); String transpiled = transpileSource(name, content, path); var lang = resolveTsType(maybeFile, name, path); - return Source.newBuilder("js", transpiled, name).mimeType(lang).build(); + return Source.newBuilder("js", transpiled, name) + .content(transpiled) + .mimeType(lang) + .uri(uri) + .build(); } @Override - @NotNull Source transpileSource(@NotNull Source sourceFile) throws IOException { + @NotNull Source transpileSource(@NotNull Source sourceFile, @Nullable TruffleFile file) + throws IOException { var name = sourceFile.getName(); - var path = sourceFile.getPath() != null ? Paths.get(sourceFile.getPath()) : null; + Path path = null; + if (file != null) { + path = Paths.get(file.getPath()); + } else { + var srcpath = sourceFile.getPath(); + if (srcpath != null) { + var env = JavaScriptLanguage.getCurrentEnv(); + file = env.getPublicTruffleFile(sourceFile.getPath()); + path = Paths.get(file.getPath()); + } + } + var uri = sourceFile.getURI(); + assert path != null || uri != null; + var chars = sourceFile.getCharacters(); - if (chars == null) { - if (path == null) { - throw new IllegalStateException("Source file has no path or characters"); + if (chars == null && path != null) { + try (var reader = Files.newBufferedReader(path)) { + var builder = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + builder.append(line).append('\n'); + } + chars = builder.toString(); } - chars = Files.readString(path); + } else if (file != null) { + chars = new String(file.readAllBytes(), StandardCharsets.UTF_8); } + + assert chars != null; var transpiled = transpileSource(name, chars, path); var lang = resolveTsType(null, name, path); - return Source.newBuilder("js", transpiled, name).mimeType(lang).build(); + Source.SourceBuilder builder = + file != null ? Source.newBuilder("js", file) : Source.newBuilder("js", transpiled, name); + return builder + .mimeType(lang) + .cached(sourceFile.isCached()) + .uri(uri) + .content(transpiled) + .build(); } private @NotNull String transpileSource( diff --git a/packages/graalvm-ts/src/main/java24x/elide/runtime/lang/typescript/AbstractTypeScriptLoader.java b/packages/graalvm-ts/src/main/java24x/elide/runtime/lang/typescript/AbstractTypeScriptLoader.java index 39f78beb84..516ed51c82 100644 --- a/packages/graalvm-ts/src/main/java24x/elide/runtime/lang/typescript/AbstractTypeScriptLoader.java +++ b/packages/graalvm-ts/src/main/java24x/elide/runtime/lang/typescript/AbstractTypeScriptLoader.java @@ -17,12 +17,14 @@ import com.oracle.truffle.api.source.Source; import com.oracle.truffle.api.strings.TruffleString; import com.oracle.truffle.js.builtins.commonjs.NpmCompatibleESModuleLoader; +import com.oracle.truffle.js.lang.JavaScriptLanguage; import com.oracle.truffle.js.runtime.JSException; import com.oracle.truffle.js.runtime.JSRealm; import com.oracle.truffle.js.runtime.objects.JSModuleData; import com.oracle.truffle.js.runtime.objects.JSModuleRecord; import com.oracle.truffle.js.runtime.objects.ScriptOrModule; import java.io.IOException; +import javax.annotation.Nullable; import org.jetbrains.annotations.NotNull; abstract class AbstractTypeScriptLoader extends NpmCompatibleESModuleLoader { @@ -30,28 +32,100 @@ protected AbstractTypeScriptLoader(JSRealm realm) { super(realm); } + @SuppressWarnings("SameParameterValue") + @NotNull private JSModuleRecord tryLoadTypeScriptExt( + @NotNull ScriptOrModule referrer, + @NotNull String originalSpecifier, + @NotNull Module.ModuleRequest moduleRequest, + @NotNull String ext) { + var specifier = originalSpecifier + "." + ext; + var specifierTS = TruffleString.fromJavaStringUncached(specifier, TruffleString.Encoding.UTF_8); + var tsModuleRequest = + com.oracle.js.parser.ir.Module.ModuleRequest.create( + specifierTS, moduleRequest.getAttributes()); + + return super.resolveImportedModule(referrer, tsModuleRequest); + } + + @SuppressWarnings("SameParameterValue") + @NotNull private JSModuleRecord tryLoadTypeScriptDir( + @NotNull ScriptOrModule referrer, + @NotNull String originalSpecifier, + @NotNull Module.ModuleRequest moduleRequest, + @NotNull String file) { + var specifier = originalSpecifier + "/" + file; + var specifierTS = TruffleString.fromJavaStringUncached(specifier, TruffleString.Encoding.UTF_8); + var tsModuleRequest = Module.ModuleRequest.create(specifierTS, moduleRequest.getAttributes()); + return super.resolveImportedModule(referrer, tsModuleRequest); + } + + @Nullable private JSModuleRecord loadAsTypeScriptFallback( + @NotNull ScriptOrModule referrer, + @NotNull Module.ModuleRequest request, + @Nullable JSException e1) { + var originalSpecifier = request.getSpecifier().toJavaStringUncached(); + + try { + // maybe it's a naked import, and we can find it by appending `.ts`? + if (!originalSpecifier.contains(".")) { + return tryLoadTypeScriptExt(referrer, originalSpecifier, request, "ts"); + } + } catch (JSException e2) { + // failed; proceed to dir attempt? + } + + try { + // is it a directory? + if (!originalSpecifier.contains(".")) { + return tryLoadTypeScriptDir(referrer, originalSpecifier, request, "index.ts"); + } + } catch (JSException e2) { + // failed to load as dir + } + + // if we get this far, the module failed to load, despite best efforts. we should throw the + // original exception. + if (e1 != null) { + throw e1; + } + return null; + } + @Override @NotNull public JSModuleRecord resolveImportedModule( - ScriptOrModule referrer, com.oracle.js.parser.ir.Module.ModuleRequest moduleRequest) { + ScriptOrModule referrer, Module.ModuleRequest moduleRequest) { try { + var env = JavaScriptLanguage.getCurrentEnv(); + var specifier = moduleRequest.getSpecifier().toJavaStringUncached(); + var parentSrc = referrer.getSource(); + var maybeParentPath = parentSrc.getPath(); + var maybeParentUri = parentSrc.getURI(); + TruffleFile maybeFile = null; + if (maybeParentUri != null) { + maybeParentPath = maybeParentUri.getPath(); + } + if (maybeParentPath != null) { + TruffleFile parentFile = env.getPublicTruffleFile(maybeParentPath).getParent(); + maybeFile = parentFile.resolve(specifier); + } + + // did we find the import? + if (maybeFile != null) { + try { + return loadModuleFromUrl(referrer, moduleRequest, maybeFile, null); + } catch (IOException e) { + // failed to load; fallback to normal behavior + } + } + + // we don't know what to do; fallback to default behavior return super.resolveImportedModule(referrer, moduleRequest); } catch (JSException e1) { - var originalSpecifier = moduleRequest.getSpecifier().toJavaStringUncached(); - var specifier = originalSpecifier + ".ts"; - var specifierTS = - TruffleString.fromJavaStringUncached(specifier, TruffleString.Encoding.UTF_8); - var tsModuleRequest = - com.oracle.js.parser.ir.Module.ModuleRequest.create( - specifierTS, moduleRequest.getAttributes()); - - try { - return super.resolveImportedModule(referrer, tsModuleRequest); - } catch (JSException e2) { - specifier = originalSpecifier + "/index.ts"; - specifierTS = TruffleString.fromJavaStringUncached(specifier, TruffleString.Encoding.UTF_8); - tsModuleRequest = Module.ModuleRequest.create(specifierTS, moduleRequest.getAttributes()); - return super.resolveImportedModule(referrer, tsModuleRequest); - } + // maybe the module is nakedly imported and is actually typescript? or maybe it's a directory + // with `index.ts`? + var mod = loadAsTypeScriptFallback(referrer, moduleRequest, e1); + assert mod != null; + return mod; } } @@ -65,13 +139,9 @@ protected AbstractTypeScriptLoader(JSRealm realm) { ScriptOrModule referrer, Module.ModuleRequest moduleRequest, TruffleFile maybeModuleFile, - String maybeCanonicalPath) + @Nullable String maybeCanonicalPath) throws IOException { - var maybeModuleFilePath = maybeModuleFile.getPath(); - //noinspection ConstantValue - if (maybeModuleFile != null - && maybeModuleFile.exists() - && maybeModuleFilePath.endsWith(".ts")) { + if (maybeModuleFile != null && maybeModuleFile.exists()) { var canonicalPath = maybeModuleFile.getCanonicalFile().getPath(); var maybeModuleMapEntry = moduleMap.get(canonicalPath); if (maybeModuleMapEntry != null) { @@ -91,5 +161,6 @@ protected AbstractTypeScriptLoader(JSRealm realm) { ScriptOrModule referrer, Module.ModuleRequest request, TruffleFile maybeFile, String name) throws IOException; - @NotNull abstract Source transpileSource(@NotNull Source sourceFile) throws IOException; + @NotNull abstract Source transpileSource(@NotNull Source sourceFile, @Nullable TruffleFile file) + throws IOException; } diff --git a/packages/graalvm-wasm/build.gradle.kts b/packages/graalvm-wasm/build.gradle.kts index 43bc3893a0..797b292890 100644 --- a/packages/graalvm-wasm/build.gradle.kts +++ b/packages/graalvm-wasm/build.gradle.kts @@ -54,6 +54,5 @@ dependencies { // Testing testImplementation(projects.packages.test) - testImplementation(projects.packages.graalvm) - testImplementation(project(":packages:graalvm", configuration = "testBase")) + testImplementation(projects.packages.engine) } diff --git a/packages/graalvm-wasm/gradle.lockfile b/packages/graalvm-wasm/gradle.lockfile index f8e65c4895..dfe7a4e30d 100644 --- a/packages/graalvm-wasm/gradle.lockfile +++ b/packages/graalvm-wasm/gradle.lockfile @@ -33,7 +33,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -48,7 +48,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -64,9 +64,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -76,7 +76,7 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath @@ -84,17 +84,17 @@ io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeCla io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:1.33.5-alpha=compileClasspath,runtimeClasspath io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compileClasspath,runtimeClasspath @@ -125,9 +125,9 @@ org.graalvm.wasm:wasm-community:24.1.2=runtimeClasspath org.graalvm.wasm:wasm-language:24.1.2=runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -138,12 +138,6 @@ org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1=compileClasspath,runtimeCla org.jetbrains.kotlinx:kotlinx-coroutines-jdk9:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -155,6 +149,6 @@ org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/graalvm-wasm/src/main/kotlin/elide/runtime/plugins/wasm/Wasm.kt b/packages/graalvm-wasm/src/main/kotlin/elide/runtime/plugins/wasm/Wasm.kt index d9e3db3774..ad32d8e191 100644 --- a/packages/graalvm-wasm/src/main/kotlin/elide/runtime/plugins/wasm/Wasm.kt +++ b/packages/graalvm-wasm/src/main/kotlin/elide/runtime/plugins/wasm/Wasm.kt @@ -14,11 +14,9 @@ package elide.runtime.plugins.wasm import elide.runtime.core.DelicateElideApi -import elide.runtime.core.EngineLifecycleEvent.ContextCreated import elide.runtime.core.EnginePlugin.InstallationScope import elide.runtime.core.EnginePlugin.Key import elide.runtime.core.PolyglotContext -import elide.runtime.core.PolyglotContextBuilder import elide.runtime.plugins.AbstractLanguagePlugin import elide.runtime.plugins.AbstractLanguagePlugin.LanguagePluginManifest @@ -29,13 +27,6 @@ import elide.runtime.plugins.AbstractLanguagePlugin.LanguagePluginManifest private fun initializeContext(context: PolyglotContext) { // apply init-time settings config.applyTo(context) - - // run embedded initialization code - initializeEmbeddedScripts(context, resources) - } - - private fun configureContext(builder: PolyglotContextBuilder) { - // nothing to configure } public companion object Plugin : AbstractLanguagePlugin() { @@ -49,13 +40,6 @@ import elide.runtime.plugins.AbstractLanguagePlugin.LanguagePluginManifest val config = WasmConfig().apply(configuration) val resources = resolveEmbeddedManifest(scope, lenient = true) val instance = Wasm(config, resources) - - // subscribe to lifecycle events - scope.lifecycle.on(ContextCreated, instance::configureContext) - - // register resources with the VFS - installEmbeddedBundles(scope, resources) - return instance } } diff --git a/packages/graalvm/api/graalvm.api b/packages/graalvm/api/graalvm.api index d4c6a46c91..fc71274a0a 100644 --- a/packages/graalvm/api/graalvm.api +++ b/packages/graalvm/api/graalvm.api @@ -16,6 +16,8 @@ public final class elide/runtime/core/internals/MutableEngineLifecycle : elide/r public final class elide/runtime/core/internals/graalvm/GraalVMConfiguration : elide/runtime/core/PolyglotEngineConfiguration { public fun (Lelide/runtime/core/internals/MutableEngineLifecycle;)V public fun args ([Ljava/lang/String;)V + public fun blockUntilReady ()V + public fun configure (Lelide/runtime/core/EnginePlugin;Lkotlin/jvm/functions/Function1;)V public fun enableLanguage (Lelide/runtime/core/GuestLanguage;)V public final fun getArguments ()[Ljava/lang/String; public fun getHostRuntime ()Lelide/runtime/core/HostRuntime; @@ -615,6 +617,9 @@ public final class elide/runtime/gvm/internals/intrinsics/js/abort/AbortSignal$F public fun abort ()Lelide/runtime/intrinsics/js/AbortSignal; public fun any (Ljava/lang/Iterable;)Lelide/runtime/intrinsics/js/AbortSignal; public static final fun bound (Lelide/runtime/exec/GuestExecutor;)Lelide/runtime/gvm/internals/intrinsics/js/abort/AbortSignal$Factory; + public fun getMember (Ljava/lang/String;)Ljava/lang/Object; + public synthetic fun getMemberKeys ()Ljava/lang/Object; + public fun getMemberKeys ()[Ljava/lang/String; public fun timeout (I)Lelide/runtime/intrinsics/js/AbortSignal; } @@ -1981,7 +1986,7 @@ public abstract interface class elide/runtime/intrinsics/js/AbortSignal : elide/ public abstract fun throwIfAborted ()V } -public abstract interface class elide/runtime/intrinsics/js/AbortSignal$Factory { +public abstract interface class elide/runtime/intrinsics/js/AbortSignal$Factory : elide/runtime/interop/ReadOnlyProxyObject { public abstract fun abort ()Lelide/runtime/intrinsics/js/AbortSignal; public abstract fun any (Ljava/lang/Iterable;)Lelide/runtime/intrinsics/js/AbortSignal; public abstract fun timeout (I)Lelide/runtime/intrinsics/js/AbortSignal; @@ -2218,6 +2223,7 @@ public abstract interface class elide/runtime/intrinsics/js/JsPromise : com/goog public static synthetic fun then$default (Lelide/runtime/intrinsics/js/JsPromise;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lelide/runtime/intrinsics/js/JsPromise; public static synthetic fun then$default (Lelide/runtime/intrinsics/js/JsPromise;Lorg/graalvm/polyglot/Value;Lorg/graalvm/polyglot/Value;ILjava/lang/Object;)Lelide/runtime/intrinsics/js/JsPromise; public static fun wrap (Lcom/google/common/util/concurrent/ListenableFuture;)Lelide/runtime/intrinsics/js/JsPromise; + public static fun wrapping (Lcom/google/common/util/concurrent/ListenableFuture;)Lelide/runtime/intrinsics/js/JsPromise; } public final class elide/runtime/intrinsics/js/JsPromise$Companion { @@ -2227,6 +2233,7 @@ public final class elide/runtime/intrinsics/js/JsPromise$Companion { public final fun rejected (Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/JsPromise; public final fun resolved (Ljava/lang/Object;)Lelide/runtime/intrinsics/js/JsPromise; public final fun wrap (Lcom/google/common/util/concurrent/ListenableFuture;)Lelide/runtime/intrinsics/js/JsPromise; + public final fun wrapping (Lcom/google/common/util/concurrent/ListenableFuture;)Lelide/runtime/intrinsics/js/JsPromise; } public abstract interface class elide/runtime/intrinsics/js/JsSymbol { @@ -2568,11 +2575,13 @@ public abstract interface class elide/runtime/intrinsics/js/err/Stacktrace { } public class elide/runtime/intrinsics/js/err/TypeError : elide/runtime/intrinsics/js/err/Error, elide/runtime/intrinsics/js/err/AbstractJsException, org/graalvm/polyglot/proxy/ProxyObject { - public static final field Factory Lelide/runtime/intrinsics/js/err/TypeError$Factory; + public static final field Companion Lelide/runtime/intrinsics/js/err/TypeError$Companion; public fun ()V public fun (Ljava/lang/String;)V protected fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/err/Error;)V public fun (Lorg/graalvm/polyglot/Value;)V + public static final fun create (Ljava/lang/String;Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/TypeError; + public static final fun create (Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/TypeError; public fun getCause ()Lelide/runtime/intrinsics/js/err/Error; public synthetic fun getCause ()Ljava/lang/Throwable; public fun getMember (Ljava/lang/String;)Ljava/lang/Object; @@ -2585,20 +2594,35 @@ public class elide/runtime/intrinsics/js/err/TypeError : elide/runtime/intrinsic public fun removeMember (Ljava/lang/String;)Z } +public final class elide/runtime/intrinsics/js/err/TypeError$Companion { + public final fun create (Ljava/lang/String;Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/TypeError; + public final fun create (Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/TypeError; + public static synthetic fun create$default (Lelide/runtime/intrinsics/js/err/TypeError$Companion;Ljava/lang/String;Ljava/lang/Throwable;ILjava/lang/Object;)Lelide/runtime/intrinsics/js/err/TypeError; +} + public final class elide/runtime/intrinsics/js/err/TypeError$Factory : elide/runtime/intrinsics/js/err/AbstractJsException$ErrorFactory, org/graalvm/polyglot/proxy/ProxyInstantiable { + public static final field Companion Lelide/runtime/intrinsics/js/err/TypeError$Factory$Companion; + public fun ()V public synthetic fun create (Ljava/lang/String;Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/AbstractJsException; public fun create (Ljava/lang/String;Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/TypeError; public synthetic fun create (Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/AbstractJsException; public fun create (Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/TypeError; + public static final fun getINSTANCE ()Lelide/runtime/intrinsics/js/err/TypeError$Factory; public fun newInstance ([Lorg/graalvm/polyglot/Value;)Ljava/lang/Object; } +public final class elide/runtime/intrinsics/js/err/TypeError$Factory$Companion { + public final fun getINSTANCE ()Lelide/runtime/intrinsics/js/err/TypeError$Factory; +} + public class elide/runtime/intrinsics/js/err/ValueError : elide/runtime/intrinsics/js/err/Error, elide/runtime/intrinsics/js/err/AbstractJsException, org/graalvm/polyglot/proxy/ProxyObject { - public static final field Factory Lelide/runtime/intrinsics/js/err/ValueError$Factory; + public static final field Companion Lelide/runtime/intrinsics/js/err/ValueError$Companion; public fun ()V protected fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/err/Error;)V public synthetic fun (Ljava/lang/String;Lelide/runtime/intrinsics/js/err/Error;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun (Lorg/graalvm/polyglot/Value;)V + public static final fun create (Ljava/lang/String;Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/ValueError; + public static final fun create (Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/ValueError; public fun getCause ()Lelide/runtime/intrinsics/js/err/Error; public synthetic fun getCause ()Ljava/lang/Throwable; public fun getMember (Ljava/lang/String;)Ljava/lang/Object; @@ -2611,14 +2635,27 @@ public class elide/runtime/intrinsics/js/err/ValueError : elide/runtime/intrinsi public fun removeMember (Ljava/lang/String;)Z } +public final class elide/runtime/intrinsics/js/err/ValueError$Companion { + public final fun create (Ljava/lang/String;Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/ValueError; + public final fun create (Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/ValueError; + public static synthetic fun create$default (Lelide/runtime/intrinsics/js/err/ValueError$Companion;Ljava/lang/String;Ljava/lang/Throwable;ILjava/lang/Object;)Lelide/runtime/intrinsics/js/err/ValueError; +} + public final class elide/runtime/intrinsics/js/err/ValueError$Factory : elide/runtime/intrinsics/js/err/AbstractJsException$ErrorFactory, org/graalvm/polyglot/proxy/ProxyInstantiable { + public static final field Companion Lelide/runtime/intrinsics/js/err/ValueError$Factory$Companion; + public fun ()V public synthetic fun create (Ljava/lang/String;Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/AbstractJsException; public fun create (Ljava/lang/String;Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/ValueError; public synthetic fun create (Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/AbstractJsException; public fun create (Ljava/lang/Throwable;)Lelide/runtime/intrinsics/js/err/ValueError; + public static final fun getINSTANCE ()Lelide/runtime/intrinsics/js/err/ValueError$Factory; public fun newInstance ([Lorg/graalvm/polyglot/Value;)Ljava/lang/Object; } +public final class elide/runtime/intrinsics/js/err/ValueError$Factory$Companion { + public final fun getINSTANCE ()Lelide/runtime/intrinsics/js/err/ValueError$Factory; +} + public abstract interface class elide/runtime/intrinsics/js/express/Express : elide/runtime/intrinsics/js/ServerAgent { } @@ -6597,6 +6634,18 @@ public synthetic class elide/runtime/node/fs/$NodeFilesystemModule$ProvideStd0$D public fun load ()Lio/micronaut/inject/BeanDefinition; } +public synthetic class elide/runtime/node/fs/$NodeFilesystemPromiseProxy$ReflectConfig : io/micronaut/core/graal/GraalReflectionConfigurer { + public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; + public fun ()V + public fun getAnnotationMetadata ()Lio/micronaut/core/annotation/AnnotationMetadata; +} + +public synthetic class elide/runtime/node/fs/$NodeFilesystemProxy$ReflectConfig : io/micronaut/core/graal/GraalReflectionConfigurer { + public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; + public fun ()V + public fun getAnnotationMetadata ()Lio/micronaut/core/annotation/AnnotationMetadata; +} + public synthetic class elide/runtime/node/fs/$VfsInitializerListener$Definition : io/micronaut/context/AbstractInitializableBeanDefinitionAndReference { public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; public fun ()V @@ -7883,6 +7932,7 @@ public final class elide/runtime/plugins/js/JavaScriptConfig : elide/runtime/plu public final fun getDefaultLocale ()Ljava/util/Locale; public final fun getEsm ()Z public final fun getInteractive ()Z + public final fun getInterop ()Z public final fun getLanguage ()Lelide/runtime/plugins/js/JavaScriptVersion; public final fun getLocale ()Ljava/util/Locale; public final fun getSourceMaps ()Z @@ -7895,6 +7945,7 @@ public final class elide/runtime/plugins/js/JavaScriptConfig : elide/runtime/plu public final fun setDefaultLocale (Ljava/util/Locale;)V public final fun setEsm (Z)V public final fun setInteractive (Z)V + public final fun setInterop (Z)V public final fun setLanguage (Lelide/runtime/plugins/js/JavaScriptVersion;)V public final fun setLocale (Ljava/util/Locale;)V public final fun setSourceMaps (Z)V diff --git a/packages/graalvm/build.gradle.kts b/packages/graalvm/build.gradle.kts index 0dc996bf28..ce49064851 100644 --- a/packages/graalvm/build.gradle.kts +++ b/packages/graalvm/build.gradle.kts @@ -185,7 +185,7 @@ sourceSets { layout.buildDirectory.dir("generated/proto/main/kotlin"), ) proto { - srcDir("${rootProject.projectDir}/proto") + srcDir("${rootProject.projectDir}/packages/proto") } } if (enableBenchmarks) { @@ -283,7 +283,6 @@ val initializeAtRunTime = listOfNotNull( "com.sun.jna.platform.mac.IOKit", "com.sun.jna.platform.mac.IOKitUtil", "com.sun.jna.platform.mac.SystemB", - "oshi.hardware.platform.linux", "oshi.hardware.platform.mac", "oshi.hardware.platform.mac.MacFirmware", "oshi.hardware.platform.unix", @@ -295,9 +294,6 @@ val initializeAtRunTime = listOfNotNull( "oshi.jna.platform.mac.IOKit", "oshi.jna.platform.mac.SystemB", "oshi.jna.platform.mac.SystemConfiguration", - "oshi.software.os", - "oshi.software.os.linux", - "oshi.software.os.linux.LinuxOperatingSystem", "oshi.software.os.mac", "oshi.software.os.mac.MacOperatingSystem", "oshi.software.os.unix.aix", @@ -310,9 +306,6 @@ val initializeAtRunTime = listOfNotNull( "oshi.software.os.unix.solaris.SolarisOperatingSystem", "oshi.software.os.windows", "oshi.software.os.windows.WindowsOperatingSystem", - "oshi.util.platform.linux.DevPath", - "oshi.util.platform.linux.ProcPath", - "oshi.util.platform.linux.SysPath", "oshi.util.platform.mac.CFUtil", "oshi.util.platform.mac.SmcUtil", "oshi.util.platform.mac.SysctlUtil", @@ -321,9 +314,39 @@ val initializeAtRunTime = listOfNotNull( "oshi.util.platform.unix.openbsd.FstatUtil", "oshi.util.platform.unix.openbsd.OpenBsdSysctlUtil", "oshi.util.platform.unix.solaris.KstatUtil", + "com.sun.jna.NativeLibrary", + "com.sun.jna.NativeLibrary\$1", + "com.sun.jna.internal.Cleaner\$CleanerRef", ) -val initializeAtRunTimeTest = listOfNotNull() +val initializeAtRunTimeTest = initializeAtRunTime.plus(listOfNotNull()) + +val initializeAtBuildTime = listOf( + "kotlinx.atomicfu", + "io.micronaut.context.DefaultApplicationContextBuilder", + "elide.runtime.core.internals.graalvm.GraalVMEngine\$Companion", + "org.fusesource.jansi.io.AnsiOutputStream", + "com.google.common.jimfs.SystemJimfsFileSystemProvider", + "com.google.common.collect.MapMakerInternalMap\$1", + "com.google.common.base.Equivalence\$Equals", + "kotlin", + "com.google.common.collect.MapMakerInternalMap", + "com.google.common.collect.MapMakerInternalMap\$StrongKeyWeakValueSegment", + "com.google.common.collect.MapMakerInternalMap\$StrongKeyWeakValueEntry\$Helper", + "ch.qos.logback", + "elide.runtime.gvm.internals.sqlite", + "elide.runtime.gvm.internals.sqlite.SqliteModule", + "elide.runtime.lang.javascript.JavaScriptPrecompiler", + "java.sql", + "org.slf4j", + "org.sqlite", + "org.pkl.core.runtime.VmLanguageProvider", + "elide.runtime.lang.typescript", + "elide.runtime.typescript", + "org.xml.sax.helpers.LocatorImpl", + "org.xml.sax.helpers.AttributesImpl", + "oshi.software.os.linux.LinuxOperatingSystem", +) val nativeEnabledModules = listOf( "org.graalvm.truffle", @@ -367,9 +390,22 @@ val sharedLibArgs = listOfNotNull( }, ).plus( "--initialize-at-run-time=${initializeAtRunTimeTest.joinToString(",")}", +).plus( + "--initialize-at-build-time=${initializeAtBuildTime.joinToString(",")}" ) -val testLibArgs = sharedLibArgs +val testLibArgs = sharedLibArgs.plus(listOf( + "--gc=G1", + "-R:MaxHeapSize=4g", + "-H:+AddAllCharsets", + "-H:NativeLinkerOption=-lm", + "-H:NativeLinkerOption=$nativesPath/libdiag.so", + "-H:NativeLinkerOption=$nativesPath/libsqlitejdbc.so", + "-H:NativeLinkerOption=$nativesPath/libumbrella.so", + "-H:NativeLinkerOption=$nativesPath/libjs.so", + "-H:NativeLinkerOption=$nativesPath/libposix.so", + "-H:NativeLinkerOption=$nativesPath/libterminal.so", +)) val layerOut = layout.buildDirectory.file("native/nativeLayerCompile/elide-graalvm.nil") val baseLayer = project(":packages:engine").layout.buildDirectory.file("native/nativeLayerCompile/elide-base.nil") @@ -498,6 +534,7 @@ if (enableBenchmarks) { dependencies { // KSP ksp(mn.micronaut.inject.kotlin) + ksp(projects.packages.engine) kspTest(mn.micronaut.inject.kotlin) annotationProcessor(libs.graalvm.truffle.processor) @@ -651,6 +688,8 @@ val testBase: Configuration by configurations.creating tasks { test { + // must be root project so that test scripts can be resolved during smoke tests + workingDir = rootProject.layout.projectDirectory.asFile maxHeapSize = "2G" environment("ELIDE_TEST", "true") systemProperty("elide.test", "true") @@ -817,6 +856,16 @@ afterEvaluate { ) } +tasks.nativeTest.configure { + runtimeArgs.add(javaLibPath.get().toString().let { + "-Djava.library.path=$it" + }) + runtimeArgs.addAll(listOf( + "-Delide.test=true", + "-Delide.nativeTest=true", + )) +} + val baseCargoFlags = listOfNotNull( "--color=always", "build", diff --git a/packages/graalvm/detekt-baseline.xml b/packages/graalvm/detekt-baseline.xml index bb27663ce8..0c7b61ed69 100644 --- a/packages/graalvm/detekt-baseline.xml +++ b/packages/graalvm/detekt-baseline.xml @@ -3,6 +3,7 @@ ComplexCondition:NodeAssertTest.kt$NodeAssertTest$(left is Value && left.isNull) || (right is Value && right.isNull) + CyclomaticComplexMethod:NodeFilesystem.kt$NodeFilesystemProxy$override fun getMember(key: String?): Any? ExplicitGarbageCollectionCall:EmbeddedGuestVFSImpl.kt$EmbeddedGuestVFSImpl$gc() ForbiddenComment:HostVFS.kt$HostVFS$// @TODO: OS-specific? configurable? ForbiddenComment:IntrinsicsResolver.kt$IntrinsicsResolver$// @TODO: disablement @@ -62,7 +63,6 @@ SpreadOperator:NativeTransportFeature.kt$NativeTransportFeature$("epoll", "x86-64", *epollImpls) SpreadOperator:NativeTransportFeature.kt$NativeTransportFeature$("kqueue", "aarch64", *kqueueImpls) SpreadOperator:NativeTransportFeature.kt$NativeTransportFeature$("kqueue", "x86-64", *kqueueImpls) - SpreadOperator:NodeFilesystem.kt$(src.toJavaPath(), dest.toJavaPath(), *copyOpts(mode)) SpreadOperator:SQLiteTransactor.kt$SQLiteTransactor$(*args) SpreadOperator:SqliteModule.kt$SqliteDatabaseProxy$(*args) SpreadOperator:SqliteModule.kt$SqliteDatabaseProxy$(query.asHostObject<Statement>(), *it.drop(1).toTypedArray()) @@ -71,8 +71,6 @@ SwallowedException:FetchHeadersIntrinsic.kt$FetchHeadersIntrinsic$err: ClassCastException SwallowedException:NettyTransport.kt$NettyTransport$unsatisfied: UnsatisfiedLinkError SwallowedException:NodeEvents.kt$EventAwareRelay$e: Throwable - SwallowedException:NodeProcess.kt$NodeProcess.NodeProcessModuleImpl$uoe: UnsupportedOperationException - SwallowedException:NodeStream.kt$AbstractReadable$ese: EndStreamException SwallowedException:URLIntrinsic.kt$URLIntrinsic.ParsedURL$e: java.net.URISyntaxException SwallowedException:URLIntrinsic.kt$URLIntrinsic.ParsedURL$syntaxErr: java.net.URISyntaxException SwallowedException:WebCryptoIntrinsicTest.kt$WebCryptoIntrinsicTest$err: Throwable @@ -84,14 +82,8 @@ TooGenericExceptionCaught:AbstractGVMScript.kt$AbstractGVMScript$exc: Exception TooGenericExceptionCaught:JsIterator.kt$JsIterator.JsIteratorImpl$err: Throwable TooGenericExceptionCaught:NodeEvents.kt$EventAwareRelay$e: Throwable - TooGenericExceptionCaught:NodeStream.kt$AbstractReadable$e: Throwable TooGenericExceptionCaught:SqliteModule.kt$SqliteDatabaseProxy$err: Throwable TooGenericExceptionCaught:SqliteModule.kt$SqliteDatabaseProxy.SQLiteTransactionImpl$err: Throwable - UnusedParameter:GraalVMContext.kt$GraalVMContext$options: EvaluationOptions - UnusedParameter:SqliteQueryRenderer.kt$SqliteQueryRenderer$ctx: QueryTemplateContext? = null - UnusedParameter:SqliteQueryRenderer.kt$SqliteQueryRenderer$position: Int = -1 - UnusedParameter:SqliteQueryRenderer.kt$SqliteQueryRenderer$soFar: Int = -1 - UnusedParameter:SqliteQueryRenderer.kt$SqliteQueryRenderer$subject: String UnusedParameter:VfsPlugin.kt$Vfs$@Suppress("unused_parameter") builder: PolyglotEngineBuilder UnusedPrivateMember:HttpServerAgent.kt$HttpServerAgent.Companion$private fun resolveLanguage(source: Source): GuestLanguage UnusedPrivateProperty:AbstractJsIntrinsicTest.kt$AbstractJsIntrinsicTest$private val testInject: Boolean = true diff --git a/packages/graalvm/gradle.lockfile b/packages/graalvm/gradle.lockfile index 4aad653527..093deea1a5 100644 --- a/packages/graalvm/gradle.lockfile +++ b/packages/graalvm/gradle.lockfile @@ -10,16 +10,12 @@ com.aayushatharva.brotli4j:native-windows-x86_64:1.18.0=compileClasspath,runtime com.aayushatharva.brotli4j:service:1.18.0=compileClasspath,runtimeClasspath com.amazonaws:aws-java-sdk-bom:1.12.777=compileClasspath,runtimeClasspath com.azure:azure-sdk-bom:1.2.29=compileClasspath,runtimeClasspath -com.fasterxml.jackson.core:jackson-annotations:2.18.2=compileClasspath,runtimeClasspath -com.fasterxml.jackson.core:jackson-core:2.18.2=compileClasspath,runtimeClasspath -com.fasterxml.jackson.core:jackson-databind:2.18.2=compileClasspath,runtimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.18.2=compileClasspath,runtimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=compileClasspath,runtimeClasspath -com.fasterxml.jackson.module:jackson-module-kotlin:2.18.2=compileClasspath,runtimeClasspath -com.fasterxml.jackson:jackson-bom:2.18.2=compileClasspath,runtimeClasspath +com.fasterxml.jackson:jackson-bom:2.17.2=compileClasspath,runtimeClasspath +com.github.elide-tools.jimfs:jimfs:66161ebdf9=compileClasspath,runtimeClasspath +com.github.elide-tools:jimfs:66161ebdf9=compileClasspath,runtimeClasspath com.github.javaparser:javaparser-core:3.26.3=runtimeClasspath com.github.javaparser:javaparser-symbol-solver-core:3.26.3=runtimeClasspath -com.github.oshi:oshi-core-java11:6.6.6=compileClasspath,runtimeClasspath +com.github.oshi:oshi-core-java11:6.7.0=compileClasspath,runtimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath com.google.common.html.types:proto:1.0.8=compileClasspath,runtimeClasspath com.google.common.html.types:types:1.0.8=compileClasspath,runtimeClasspath @@ -28,11 +24,10 @@ com.google.guava:failureaccess:1.0.2=compileClasspath,runtimeClasspath com.google.guava:guava:33.3.1-jre=compileClasspath,runtimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=compileClasspath,runtimeClasspath com.google.j2objc:j2objc-annotations:3.0.0=compileClasspath,runtimeClasspath -com.google.jimfs:jimfs:1.3.0=compileClasspath,runtimeClasspath com.google.jsinterop:jsinterop-annotations:1.0.1=compileClasspath,runtimeClasspath com.google.protobuf:protobuf-bom:3.25.5=compileClasspath,runtimeClasspath -com.google.protobuf:protobuf-java:3.25.2=compileClasspath,runtimeClasspath -com.google.protobuf:protobuf-kotlin:3.25.2=compileClasspath,runtimeClasspath +com.google.protobuf:protobuf-java:4.28.2=compileClasspath,runtimeClasspath +com.google.protobuf:protobuf-kotlin:4.28.2=compileClasspath,runtimeClasspath com.oracle.coherence.ce:coherence-bom:23.03=compileClasspath,runtimeClasspath commons-codec:commons-codec:1.18.0=compileClasspath,runtimeClasspath commons-io:commons-io:2.16.1=compileClasspath @@ -56,7 +51,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -71,7 +66,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -87,9 +82,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -99,33 +94,32 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeClasspath +io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer:1.6.2=runtimeClasspath +io.micronaut.sourcegen:micronaut-sourcegen-model:1.6.2=runtimeClasspath io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context-propagation:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-processor:4.7.11=runtimeClasspath -io.micronaut:micronaut-core-reactive:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-graal:4.7.11=runtimeClasspath -io.micronaut:micronaut-http:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-jackson-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-jackson-databind:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-json-core:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context-propagation:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-processor:4.8.5=runtimeClasspath +io.micronaut:micronaut-core-reactive:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-graal:4.8.5=runtimeClasspath +io.micronaut:micronaut-http:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath io.netty.incubator:netty-incubator-transport-classes-io_uring:0.0.26.Final=compileClasspath,runtimeClasspath io.netty.incubator:netty-incubator-transport-native-io_uring:0.0.26.Final=compileClasspath,runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath @@ -153,7 +147,7 @@ io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compil io.opentelemetry:opentelemetry-bom-alpha:1.40.0-alpha=compileClasspath,runtimeClasspath io.opentelemetry:opentelemetry-bom:1.32.0=compileClasspath,runtimeClasspath io.projectreactor:reactor-bom:2023.0.10=compileClasspath,runtimeClasspath -io.projectreactor:reactor-core:3.6.10=runtimeClasspath +io.projectreactor:reactor-core:3.7.2=runtimeClasspath io.rest-assured:rest-assured-bom:5.5.0=compileClasspath,runtimeClasspath io.zipkin.brave:brave-bom:6.0.3=compileClasspath,runtimeClasspath io.zipkin.reporter2:zipkin-reporter-bom:3.4.2=compileClasspath,runtimeClasspath @@ -190,10 +184,10 @@ org.graalvm.wasm:wasm-community:24.1.2=runtimeClasspath org.graalvm.wasm:wasm-language:24.1.2=runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-reflect:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-reflect:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -208,10 +202,10 @@ org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-core:0.7.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -221,13 +215,15 @@ org.jetbrains.kotlinx:kotlinx-serialization-protobuf-jvm:1.8.0=runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-protobuf:1.8.0=runtimeClasspath org.jetbrains:annotations:26.0.2=compileClasspath,runtimeClasspath org.junit:junit-bom:5.11.3=compileClasspath,runtimeClasspath +org.ow2.asm:asm-analysis:9.7.1=runtimeClasspath org.ow2.asm:asm-commons:9.7.1=runtimeClasspath org.ow2.asm:asm-tree:9.7.1=runtimeClasspath +org.ow2.asm:asm-util:9.7.1=runtimeClasspath org.ow2.asm:asm:9.7.1=runtimeClasspath org.reactivestreams:reactive-streams:1.0.4=compileClasspath,runtimeClasspath -org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath +org.slf4j:slf4j-api:2.0.17=compileClasspath,runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMConfiguration.kt b/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMConfiguration.kt index 6d5d920fbd..f7b535a257 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMConfiguration.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMConfiguration.kt @@ -12,9 +12,20 @@ */ package elide.runtime.core.internals.graalvm +import com.google.common.util.concurrent.Futures +import com.google.common.util.concurrent.ListenableFuture +import com.google.common.util.concurrent.ListeningExecutorService +import com.google.common.util.concurrent.MoreExecutors import java.net.URL import java.util.LinkedList -import java.util.concurrent.atomic.AtomicReference +import java.util.SortedSet +import java.util.TreeSet +import java.util.concurrent.Callable +import java.util.concurrent.ConcurrentSkipListMap +import java.util.concurrent.CountDownLatch +import java.util.concurrent.Executors +import java.util.concurrent.TimeUnit +import kotlinx.atomicfu.atomic import kotlinx.collections.immutable.toImmutableList import elide.runtime.core.* import elide.runtime.core.EnginePlugin.InstallationScope @@ -28,14 +39,45 @@ import elide.runtime.core.internals.MutableEngineLifecycle /** A [MutableEngineLifecycle] instance that can be used to emit events to registered plugins. */ private val lifecycle: MutableEngineLifecycle ) : PolyglotEngineConfiguration() { + private companion object { + private const val EXPERIMENTAL_INIT_EXECUTOR = false + private const val EXPERIMENTAL_MULTITHREAD_INIT = false + private const val INIT_CORE_POOL_SIZE = 2 + } + + // Initialization executor. + private lateinit var initExecutor: ListeningExecutorService + + init { + if (EXPERIMENTAL_INIT_EXECUTOR) { + initExecutor = MoreExecutors.listeningDecorator( + when (EXPERIMENTAL_MULTITHREAD_INIT) { + true -> Executors.newScheduledThreadPool(INIT_CORE_POOL_SIZE) + false -> Executors.newSingleThreadExecutor() + } + ) + } + } + // Registered VFS bundles from plugins. private val registeredBundles = LinkedList() + // Whether plugins have finished their async initialization phase; after this is set to `true`, the engine's readiness + // latch is assigned and will eventually signal readiness. + private val initialized = atomic(false) + + // A latch used to signal readiness of the VM. This value is only initialized after all plugins have enqueued their + // asynchronous setup tasks. + private val readinessLatch: CountDownLatch = CountDownLatch(1) + /** * Represents an [InstallationScope] used by plugins, binding to this configuration's lifecycle and other required * properties. */ - private inner class GraalVMInstallationScope(val config: GraalVMConfiguration) : InstallationScope { + private inner class GraalVMInstallationScope( + val config: GraalVMConfiguration, + val exec: () -> ListeningExecutorService, + ) : InstallationScope { override val configuration: PolyglotEngineConfiguration get() = config override val lifecycle: EngineLifecycle get() = config.lifecycle @@ -45,8 +87,18 @@ import elide.runtime.core.internals.MutableEngineLifecycle override fun registeredBundles(): List = registeredBundles.toImmutableList() + + override fun deferred(block: () -> Unit) { + inFlight.computeIfAbsent("", { LinkedList() }).add(exec.invoke().submit { block.invoke() }) + } } + /** Suite of seen plugin IDs. */ + private val seenPlugins: SortedSet = TreeSet() + + /** Suite of in-flight initialization tasks. */ + private val inFlight: ConcurrentSkipListMap>> = ConcurrentSkipListMap() + /** Internal map holding plugin instances that can be retrieved during engine configuration. */ private val plugins: MutableMap = mutableMapOf() @@ -54,7 +106,7 @@ import elide.runtime.core.internals.MutableEngineLifecycle private val langs: MutableSet = mutableSetOf() /** All main entrypoint arguments. */ - private val entrypointArgs: AtomicReference> = AtomicReference(null) + private val entrypointArgs = atomic?>(null) /** A set of languages enabled for use in the engine. */ internal val languages: Set get() = langs @@ -62,18 +114,44 @@ import elide.runtime.core.internals.MutableEngineLifecycle /** Runtime info, resolved from GraalVM static properties. */ override val hostRuntime: HostRuntime = GraalVMRuntime() + /** Installation scope for plugins. */ + private val cachedScope by lazy { GraalVMInstallationScope(this, { initExecutor }) } + /** Arguments to provide to guest code. */ - public val arguments: Array get() = entrypointArgs.get() ?: emptyArray() + public val arguments: Array get() = entrypointArgs.value ?: emptyArray() + @Deprecated("Use installLazy instead", replaceWith = ReplaceWith("installLazy(plugin, configure)")) override fun install(plugin: EnginePlugin, configure: C.() -> Unit): I { - require(plugin.key.id !in plugins) { "A plugin with the provided key is already registered" } - - val instance = plugin.install(GraalVMInstallationScope(this), configure) + assert(plugin.key.id !in plugins) { "A plugin with the provided key is already registered" } + val instance = plugin.install(GraalVMInstallationScope(this, { initExecutor }), configure) plugins[plugin.key.id] = instance - return instance } + @Suppress("DEPRECATION") + override fun configure(plugin: EnginePlugin, configure: C.() -> Unit) { + assert(!initialized.value) { "Cannot configure engine plugins after initialization is complete" } + assert(plugin.key.id !in seenPlugins) { "A plugin with the provided key is already registered" } + seenPlugins.add(plugin.key.id) + + if (EXPERIMENTAL_INIT_EXECUTOR) { + val (assign, futSet) = if (plugin.key.id in inFlight) { + false to inFlight[plugin.key.id]!! + } else { + true to LinkedList() + } + futSet.add(initExecutor.submit { + val instance = plugin.install(cachedScope, configure) + plugins[plugin.key.id] = instance + }) + if (assign) { + inFlight[plugin.key.id] = futSet + } + } else { + install(plugin, configure) + } + } + override fun plugin(key: EnginePlugin.Key): T? { @Suppress("unchecked_cast") return plugins[key.id] as? T @@ -84,9 +162,27 @@ import elide.runtime.core.internals.MutableEngineLifecycle } override fun args(args: Array) { - entrypointArgs.set(args) + assert(args.isNotEmpty()) { "Entrypoint arguments must not be empty" } + entrypointArgs.value = args } - override fun registeredBundles(): List = - registeredBundles.toImmutableList() + override fun registeredBundles(): List = registeredBundles.toImmutableList() + + override fun blockUntilReady() { + if (EXPERIMENTAL_INIT_EXECUTOR) { + if (initialized.value) { + return // already initialized; no-op + } + initialized.compareAndSet(expect = false, update = true) + Futures.whenAllComplete(inFlight.values.flatten()).call( + Callable { + readinessLatch.countDown() + }, + initExecutor, + ) + readinessLatch.await(1, TimeUnit.SECONDS) + } else { + initialized.value = true + } + } } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMContext.kt b/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMContext.kt index b376e2c2e7..9c7d9fcfa4 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMContext.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMContext.kt @@ -27,6 +27,7 @@ import elide.runtime.core.PolyglotContext.EvaluationOptions /** Thread-safe mutable map holding this context's elements. */ private val elements: MutableMap, Any?> = ConcurrentHashMap() + @Suppress("UNUSED_PARAMETER") private fun resolveCustomEvaluator(source: Source, options: EvaluationOptions): GuestLanguageEvaluator? { return get(GuestLanguageEvaluator.contextElementFor(source.language))?.takeIf { it.accepts(source) } } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMEngine.kt b/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMEngine.kt index 9825a7a339..6b27ca88e2 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMEngine.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/core/internals/graalvm/GraalVMEngine.kt @@ -418,7 +418,6 @@ import org.graalvm.polyglot.HostAccess as PolyglotHostAccess // one more event for initialization plugins lifecycle.emit(EngineInitialized, engine) - return engine } } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeConsoleFeature.kt b/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeConsoleFeature.kt index f3cb0e4a12..64a221645c 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeConsoleFeature.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/feature/engine/NativeConsoleFeature.kt @@ -21,6 +21,7 @@ import elide.annotations.engine.VMFeature @VMFeature internal class NativeConsoleFeature : AbstractStaticNativeLibraryFeature() { companion object { private val staticJni: Boolean = System.getProperty("elide.staticJni") == "true" + private val mountNativeConsole: Boolean = "darwin" !in (System.getProperty("os.name")?.trim()?.lowercase() ?: "") } override fun getDescription(): String = "Registers native console libraries" @@ -31,7 +32,7 @@ import elide.annotations.engine.VMFeature ) } - override fun nativeLibs(access: BeforeAnalysisAccess) = listOf( + override fun nativeLibs(access: BeforeAnalysisAccess) = if (mountNativeConsole) listOf( libraryNamed( "umbrella", "org.fusesource.jansi.internal.CLibrary", @@ -40,7 +41,7 @@ import elide.annotations.engine.VMFeature "org.jline.nativ.CLibrary", builtin = staticJni, ), - ) + ) else emptyList() override fun unpackNatives(access: BeforeAnalysisAccess) = if (staticJni) emptyList() else when { /* Dynamic JNI */ diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/api/Intrinsic.kt b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/api/Intrinsic.kt index fbbc14118c..4451ed1755 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/api/Intrinsic.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/api/Intrinsic.kt @@ -14,6 +14,7 @@ package elide.runtime.gvm.api import io.micronaut.context.annotation.DefaultScope import io.micronaut.core.annotation.Introspected +import io.micronaut.core.annotation.ReflectiveAccess import elide.annotations.Context import elide.runtime.gvm.GraalVMGuest @@ -31,6 +32,7 @@ import elide.runtime.gvm.GraalVMGuest */ @MustBeDocumented @Introspected +@ReflectiveAccess @DefaultScope(Context::class) @Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) @Retention(AnnotationRetention.SOURCE) diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/intrinsics/js/JsPromiseImpl.kt b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/intrinsics/js/JsPromiseImpl.kt index 7af5bdace4..4c3252be0e 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/intrinsics/js/JsPromiseImpl.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/intrinsics/js/JsPromiseImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -18,6 +18,7 @@ import com.google.common.util.concurrent.Futures import com.google.common.util.concurrent.ListenableFuture import org.graalvm.polyglot.Value import java.util.concurrent.CountDownLatch +import java.util.concurrent.Future import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicReference import kotlinx.coroutines.runBlocking @@ -112,6 +113,12 @@ internal class JsPromiseImpl private constructor ( }, ) + @JvmStatic fun wrapping(value: ListenableFuture): JsPromise = JsPromiseImpl( + ready = AtomicBoolean(true), + producer = { value.get() }, + future = value, + ) + @JvmStatic fun resolved(value: T): JsPromise = JsPromiseImpl( ready = AtomicBoolean(true), value = AtomicReference(value), diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/intrinsics/js/abort/AbortSignal.kt b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/intrinsics/js/abort/AbortSignal.kt index f863106f42..aecdc2e600 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/intrinsics/js/abort/AbortSignal.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/intrinsics/js/abort/AbortSignal.kt @@ -197,5 +197,23 @@ public class AbortSignal private constructor ( // Return an abort signal which aborts after a timeout. @Polyglot override fun timeout(time: Int): AbortSignalAPI = timeout(time.toLong(), MILLISECONDS, guestExecutor) + + override fun getMemberKeys(): Array = arrayOf( + "abort", + "any", + "timeout", + ) + + override fun getMember(key: String?): Any? = when(key) { + "abort" -> ProxyExecutable { abort() } + "any" -> ProxyExecutable { + any(it.map { it.`as`(AbortSignalAPI::class.java) }) + } + "timeout" -> ProxyExecutable { + val first = it.firstOrNull() ?: throw JsError.typeError("First argument must be a number") + timeout(first.asInt()) + } + else -> null + } } } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/sqlite/SqliteQueryRenderer.kt b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/sqlite/SqliteQueryRenderer.kt index 84ece507d0..b52f653c40 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/sqlite/SqliteQueryRenderer.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/internals/sqlite/SqliteQueryRenderer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -79,6 +79,7 @@ internal class SqliteQueryRenderer private constructor ( // Render a nice query rendering error, which mentions the query itself, the position where the error happened, and // any helpful advice to fix the error. + @Suppress("UNUSED_PARAMETER") private fun queryRenderError( subject: String, ctx: QueryTemplateContext? = null, diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/js/JsError.kt b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/js/JsError.kt index b38ad3f379..7f68b2633e 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/gvm/js/JsError.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/gvm/js/JsError.kt @@ -16,7 +16,6 @@ package elide.runtime.gvm.js import org.graalvm.polyglot.Value import kotlin.reflect.KClass -import kotlin.reflect.full.companionObjectInstance import elide.runtime.intrinsics.js.err.* import elide.runtime.intrinsics.js.err.JsError @@ -25,13 +24,21 @@ import elide.runtime.intrinsics.js.err.JsError // Wrap a caught `Throwable` in the provided JS error `type`. @Suppress("UNCHECKED_CAST") private fun wrapped(error: Throwable, type: KClass): E { - return (type.companionObjectInstance as AbstractJsException.ErrorFactory).create(error) + return when (type) { + TypeError::class -> TypeError.Factory.INSTANCE.create(error) as E + ValueError::class -> ValueError.Factory.INSTANCE.create(error) as E + else -> error("Unknown JS error type: $type") + } } // Wrap a string `message` and optional `Throwable` `cause` in the provided JS error `type`. @Suppress("UNCHECKED_CAST") private fun wrapped(message: String, cause: Throwable? = null, type: KClass): E { - return (type.companionObjectInstance as AbstractJsException.ErrorFactory).create(message, cause) + return when (type) { + TypeError::class -> TypeError.Factory.INSTANCE.create(message, cause) as E + ValueError::class -> ValueError.Factory.INSTANCE.create(message, cause) as E + else -> error("Unknown JS error type: $type") + } } /** diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/IntrinsicsResolver.kt b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/IntrinsicsResolver.kt index 5f8776b4d6..b731967fbe 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/IntrinsicsResolver.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/IntrinsicsResolver.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -70,7 +70,7 @@ import elide.runtime.gvm.GuestLanguage * @param allowInternal Whether internal symbols should be included. * @return Criteria to apply when resolving intrinsics; `false` should exclude a given symbol. */ - public fun criteria(allowInternal: Boolean): IntrinsicCriteria = IntrinsicCriteria { symbol -> + public fun criteria(allowInternal: Boolean): IntrinsicCriteria = IntrinsicCriteria { _ -> true // no-op by default } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/AbortSignal.kt b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/AbortSignal.kt index 68144ed012..03d5e8e456 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/AbortSignal.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/AbortSignal.kt @@ -14,6 +14,7 @@ package elide.runtime.intrinsics.js import org.graalvm.polyglot.HostAccess import elide.annotations.API +import elide.runtime.interop.ReadOnlyProxyObject import elide.runtime.intrinsics.js.node.events.EventTarget import elide.vm.annotations.Polyglot @@ -76,7 +77,7 @@ import elide.vm.annotations.Polyglot * * [`AbortSignal` static methods on MDN](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal#static_methods) */ - @API public interface Factory { + @API public interface Factory : ReadOnlyProxyObject { /** * Returns an [AbortSignal] instance that is already set as aborted. * diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/JsPromise.kt b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/JsPromise.kt index 185a0d3941..9cac774583 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/JsPromise.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/JsPromise.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ import org.graalvm.polyglot.Value import org.graalvm.polyglot.proxy.ProxyExecutable import org.graalvm.polyglot.proxy.ProxyObject import java.util.concurrent.CountDownLatch +import java.util.concurrent.Future import java.util.function.Supplier import kotlinx.coroutines.Deferred import kotlinx.coroutines.guava.asDeferred @@ -84,6 +85,8 @@ public interface JsPromise : ListenableFuture, ProxyObject { @JvmStatic public fun GuestExecutor.of(latch: CountDownLatch, producer: Supplier): JsPromise = latched(latch) { producer.get() } + @JvmStatic public fun wrapping(op: ListenableFuture): JsPromise = JsPromiseImpl.wrapping(op) + @JvmStatic public fun resolved(value: T): JsPromise = JsPromiseImpl.resolved(value) @JvmStatic public fun rejected(err: Throwable): JsPromise = JsPromiseImpl.rejected(err) diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/err/TypeError.kt b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/err/TypeError.kt index b6cb5cb0cb..d655ee8b9c 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/err/TypeError.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/err/TypeError.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -12,7 +12,6 @@ */ package elide.runtime.intrinsics.js.err -import org.graalvm.polyglot.HostAccess.Implementable import org.graalvm.polyglot.Value import org.graalvm.polyglot.proxy.ProxyInstantiable import org.graalvm.polyglot.proxy.ProxyObject @@ -93,7 +92,11 @@ public open class TypeError protected constructor ( * Public factory for [TypeError] types. Java-style exceptions can be wrapped using the [create] method, or a string * message and cause can be provided, a-la Java exceptions. */ - public companion object Factory: AbstractJsException.ErrorFactory, ProxyInstantiable { + public class Factory: AbstractJsException.ErrorFactory, ProxyInstantiable { + public companion object { + @JvmStatic public val INSTANCE: Factory = Factory() + } + override fun newInstance(vararg arguments: Value?): Any { return create( arguments.getOrNull(0)?.asString() ?: "" @@ -111,4 +114,12 @@ public open class TypeError protected constructor ( }) } } + + public companion object { + @JvmStatic public fun create(error: Throwable): TypeError = + Factory.INSTANCE.create(error) + + @JvmStatic public fun create(message: String, cause: Throwable? = null): TypeError = + Factory.INSTANCE.create(message, cause) + } } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/err/ValueError.kt b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/err/ValueError.kt index 235a38730f..914702e5ac 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/err/ValueError.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/intrinsics/js/err/ValueError.kt @@ -103,7 +103,11 @@ public open class ValueError protected constructor( * Public factory for [ValueError] types. Java-style exceptions can be wrapped using the [create] method, or a string * message and cause can be provided, a-la Java exceptions. */ - public companion object Factory: AbstractJsException.ErrorFactory, ProxyInstantiable { + public class Factory: AbstractJsException.ErrorFactory, ProxyInstantiable { + public companion object { + @JvmStatic public val INSTANCE: Factory = Factory() + } + override fun newInstance(vararg arguments: Value?): Any { return create(arguments[0]?.asString() ?: "An error occurred") } @@ -122,4 +126,12 @@ public open class ValueError protected constructor( }) } } + + public companion object { + @JvmStatic public fun create(error: Throwable): ValueError = + Factory.INSTANCE.create(error) + + @JvmStatic public fun create(message: String, cause: Throwable? = null): ValueError = + Factory.INSTANCE.create(message, cause) + } } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/javascript/StructuredCloneBuiltin.kt b/packages/graalvm/src/main/kotlin/elide/runtime/javascript/StructuredCloneBuiltin.kt index 7d94c7cd1e..3f10411b43 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/javascript/StructuredCloneBuiltin.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/javascript/StructuredCloneBuiltin.kt @@ -54,7 +54,7 @@ private val CLONE_FN_SYMBOL = CLONE_FN_NAME.asPublicJsSymbol() doStructuredClone; """.trimIndent() - private val cloner = Source.newBuilder("js", structuredCloner, "structuredCloner.js") + private val cloner get() = Source.newBuilder("js", structuredCloner, "structuredCloner.js") .internal(true) .cached(true) .build() diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/node/asserts/NodeAssert.kt b/packages/graalvm/src/main/kotlin/elide/runtime/node/asserts/NodeAssert.kt index 534b0d3835..2cd2250d64 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/node/asserts/NodeAssert.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/node/asserts/NodeAssert.kt @@ -807,12 +807,12 @@ internal class NodeAssert private constructor () : AssertAPI { } // `out` should be a promise - when { - out is JsPromise<*> -> { + when (out) { + is JsPromise<*> -> { out.then({}, { didReject.set(true) }) } - out is Value -> { + is Value -> { if (!out.hasMember("then")) { throw assertionError("Expected a Promise, but got: $out") } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/node/childProcess/ChildProcessNative.kt b/packages/graalvm/src/main/kotlin/elide/runtime/node/childProcess/ChildProcessNative.kt index b6ddc2ca2c..c1851c5e54 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/node/childProcess/ChildProcessNative.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/node/childProcess/ChildProcessNative.kt @@ -12,6 +12,8 @@ */ package elide.runtime.node.childProcess +import org.graalvm.nativeimage.ImageInfo + // Library name for POSIX natives. private const val LIB_POSIX = "posix" @@ -25,7 +27,7 @@ internal object ChildProcessNative { @Volatile private var libLoaded = false @JvmStatic fun initialize() { - if (!libLoaded) { + if (!libLoaded && (!ImageInfo.inImageCode() || System.getProperty("elide.nativeTest") == "true")) { System.loadLibrary(LIB_POSIX) libLoaded = true } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/node/fs/NodeFilesystem.kt b/packages/graalvm/src/main/kotlin/elide/runtime/node/fs/NodeFilesystem.kt index d2c5ecb96f..e4e3865482 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/node/fs/NodeFilesystem.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/node/fs/NodeFilesystem.kt @@ -14,6 +14,7 @@ package elide.runtime.node.fs +import io.micronaut.core.annotation.ReflectiveAccess import org.graalvm.polyglot.Value import org.graalvm.polyglot.io.ByteSequence import org.graalvm.polyglot.proxy.ProxyExecutable @@ -44,6 +45,7 @@ import elide.runtime.gvm.js.JsError import elide.runtime.gvm.js.JsSymbol.JsSymbols.asJsSymbol import elide.runtime.gvm.loader.ModuleInfo import elide.runtime.gvm.loader.ModuleRegistry +import elide.runtime.interop.ReadOnlyProxyObject import elide.runtime.intrinsics.GuestIntrinsic.MutableIntrinsicBindings import elide.runtime.intrinsics.js.JsPromise import elide.runtime.intrinsics.js.err.AbstractJsException @@ -54,7 +56,6 @@ import elide.runtime.intrinsics.js.node.buffer.BufferInstance import elide.runtime.intrinsics.js.node.fs.* import elide.runtime.intrinsics.js.node.path.Path import elide.runtime.lang.javascript.NodeModuleName -import elide.runtime.lang.javascript.SyntheticJSModule import elide.runtime.node.path.NodePathsModule import elide.runtime.plugins.vfs.VfsListener import elide.runtime.vfs.GuestVFS @@ -64,7 +65,41 @@ import elide.vm.annotations.Polyglot private const val DEFAULT_COPY_MODE: Int = 0 // Whether to enable synthesized modules. -private const val ENABLE_SYNTHESIZED: Boolean = false +private const val ENABLE_SYNTHESIZED: Boolean = true + +// Names of `fs` methods, properties, and constants. + +internal const val FS_F_ACCESS = "access" +private const val FS_F_ACCESS_SYNC = "accessSync" +internal const val FS_F_EXISTS = "exists" +private const val FS_F_EXISTS_SYNC = "existsSync" +internal const val FS_F_READ_FILE = "readFile" +private const val FS_F_READ_FILE_SYNC = "readFileSync" +internal const val FS_F_WRITE_FILE = "writeFile" +private const val FS_F_WRITE_FILE_SYNC = "writeFileSync" +internal const val FS_F_MKDIR = "mkdir" +private const val FS_F_MKDIR_SYNC = "mkdirSync" +internal const val FS_F_COPY_FILE = "copyFile" +private const val FS_F_COPY_FILE_SYNC = "copyFileSync" +private const val FS_P_CONSTANTS = "constants" +private const val FS_ENCODING_UTF8 = "utf8" +private const val FS_ENCODING_UTF8_ALT = "utf-8" +private const val FS_ENCODING_UTF16 = "utf16" +private const val FS_ENCODING_UTF16_ALT = "utf-16" +private const val FS_ENCODING_UTF32 = "utf32" +private const val FS_ENCODING_UTF32_ALT = "utf-32" +private const val FS_ENCODING_ASCII = "ascii" +private const val FS_ENCODING_US_ASCII = "us-ascii" +private const val FS_ENCODING_US_ASCII_ALT = "usascii" +private const val FS_ENCODING_LATIN1 = "latin1" +private const val FS_ENCODING_BINARY = "binary" +private const val FS_C_F_OK = "F_OK" +private const val FS_C_R_OK = "R_OK" +private const val FS_C_W_OK = "W_OK" +private const val FS_C_X_OK = "X_OK" +private const val FS_C_COPYFILE_EXCL = "COPYFILE_EXCL" +private const val FS_C_COPYFILE_FICLONE = "COPYFILE_FICLONE" +private const val FS_C_COPYFILE_FICLONE_FORCE = "COPYFILE_FICLONE_FORCE" // Listener bean for VFS init. @Singleton @Eager public class VfsInitializerListener : VfsListener, Supplier { @@ -100,20 +135,10 @@ private const val ENABLE_SYNTHESIZED: Boolean = false bindings[NodeFilesystem.SYMBOL_PROMISES.asJsSymbol()] = ProxyExecutable { providePromises() } } - inner class FilesystemApiShim: SyntheticJSModule { - override fun provide(): FilesystemAPI = std - } - - inner class FilesystemPromisesApiShim : SyntheticJSModule { - override fun provide(): FilesystemPromiseAPI = promises - } - init { if (ENABLE_SYNTHESIZED) { - val apiShim = FilesystemApiShim() - val promisesShim = FilesystemPromisesApiShim() - ModuleRegistry.deferred(ModuleInfo.of(NodeModuleName.FS)) { apiShim } - ModuleRegistry.deferred(ModuleInfo.of(NodeModuleName.FS_PROMISES)) { promisesShim } + ModuleRegistry.deferred(ModuleInfo.of(NodeModuleName.FS)) { std } + ModuleRegistry.deferred(ModuleInfo.of("fs_promises")) { promises } } } } @@ -125,17 +150,17 @@ private const val ENABLE_SYNTHESIZED: Boolean = false * @return The resolved charset. */ internal fun resolveEncodingString(encoding: String): Charset = when (encoding.trim().lowercase()) { - "utf8", "utf-8" -> Charsets.UTF_8 - "utf16", "utf-16" -> Charsets.UTF_16 - "utf32", "utf-32" -> Charsets.UTF_32 - "ascii", "us-ascii", "usascii" -> Charsets.US_ASCII - "latin1", "binary" -> Charsets.ISO_8859_1 + FS_ENCODING_UTF8, FS_ENCODING_UTF8_ALT -> Charsets.UTF_8 + FS_ENCODING_UTF16, FS_ENCODING_UTF16_ALT -> Charsets.UTF_16 + FS_ENCODING_UTF32, FS_ENCODING_UTF32_ALT -> Charsets.UTF_32 + FS_ENCODING_ASCII, FS_ENCODING_US_ASCII, FS_ENCODING_US_ASCII_ALT -> Charsets.US_ASCII + FS_ENCODING_LATIN1, FS_ENCODING_BINARY -> Charsets.ISO_8859_1 else -> throw JsError.valueError("Unknown encoding passed to `fs` readFile: $encoding") } // Implements the Node built-in filesystem modules. internal object NodeFilesystem { - internal const val SYMBOL_STD: String = "node_fs" + internal const val SYMBOL_STD: String = "node_${NodeModuleName.FS}" internal const val SYMBOL_PROMISES: String = "node_fs_promises" /** @return Instance of the `fs` module. */ @@ -162,7 +187,7 @@ internal object NodeFilesystem { } // Filesystem constant values used by Node. -internal object FilesystemConstants { +internal object FilesystemConstants : ReadOnlyProxyObject { const val F_OK: Int = 0 const val R_OK: Int = 4 const val W_OK: Int = 2 @@ -170,6 +195,27 @@ internal object FilesystemConstants { const val COPYFILE_EXCL: Int = 1 const val COPYFILE_FICLONE: Int = 2 const val COPYFILE_FICLONE_FORCE: Int = 4 + + override fun getMemberKeys(): Array = arrayOf( + FS_C_F_OK, + FS_C_R_OK, + FS_C_W_OK, + FS_C_X_OK, + FS_C_COPYFILE_EXCL, + FS_C_COPYFILE_FICLONE, + FS_C_COPYFILE_FICLONE_FORCE, + ) + + override fun getMember(key: String?): Any? = when (key) { + FS_C_F_OK -> F_OK + FS_C_R_OK -> R_OK + FS_C_W_OK -> W_OK + FS_C_X_OK -> X_OK + FS_C_COPYFILE_EXCL -> COPYFILE_EXCL + FS_C_COPYFILE_FICLONE -> COPYFILE_FICLONE + FS_C_COPYFILE_FICLONE_FORCE -> COPYFILE_FICLONE_FORCE + else -> null + } } // Context for a file write operation with managed state. @@ -263,6 +309,7 @@ private fun copyOpts(mode: Value?): Int = when (mode) { } // Perform a file copy operation. +@Suppress("SpreadOperator") private fun doCopyFile(src: Path, dest: Path, mode: Int = 0, callback: ((Throwable?) -> Unit)? = null): Throwable? { var exc: Throwable? = null try { @@ -298,10 +345,8 @@ internal abstract class FilesystemBase( // Obtain current context, if any, and then execute in the background; once execution completes, the context is again // entered, and execution continues. - // - // @TODO make this actually async once the event loop is ready. protected inline fun withExec(noinline op: () -> T): JsPromise = try { - JsPromise.resolved(exec.spawn { op() }.get()) + exec.spawn { op() } } catch (err: Throwable) { JsPromise.rejected(err) } @@ -387,7 +432,7 @@ internal abstract class FilesystemBase( "EPERM: operation not permitted, access '$path'", errno = -1, "code" to "EPERM", - "syscall" to "access", + "syscall" to FS_F_ACCESS, "path" to path.toString(), ) } @@ -490,9 +535,129 @@ internal abstract class FilesystemBase( } // Implements the Node `fs` module. -internal class NodeFilesystemProxy(path: PathAPI, exec: GuestExecutor, fs: GuestVFS) : +@ReflectiveAccess internal class NodeFilesystemProxy(path: PathAPI, exec: GuestExecutor, fs: GuestVFS) : NodeFilesystemAPI, + ReadOnlyProxyObject, FilesystemBase(path, exec, fs) { + override fun getMemberKeys(): Array = arrayOf( + FS_F_ACCESS, + FS_F_ACCESS_SYNC, + FS_F_EXISTS, + FS_F_EXISTS_SYNC, + FS_F_READ_FILE, + FS_F_READ_FILE_SYNC, + FS_F_WRITE_FILE, + FS_F_WRITE_FILE_SYNC, + FS_F_MKDIR, + FS_F_MKDIR_SYNC, + FS_F_COPY_FILE, + FS_F_COPY_FILE_SYNC, + FS_P_CONSTANTS, + ) + + override fun getMember(key: String?): Any? = when (key) { + FS_F_ACCESS -> ProxyExecutable { + when (it.size) { + 2 -> access(it.first(), it[1]) + 3 -> access(it.first(), it[1], it[2]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.access`") + } + } + + FS_F_ACCESS_SYNC -> ProxyExecutable { + when (it.size) { + 1 -> accessSync(it.first()) + 2 -> accessSync(it.first(), it[1]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.access`") + } + } + + FS_F_EXISTS -> ProxyExecutable { + when (it.size) { + 2 -> exists(it.first(), it[1]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.exists`") + } + } + + FS_F_EXISTS_SYNC -> ProxyExecutable { + when (it.size) { + 1 -> existsSync(it.first()) + else -> throw JsError.typeError("Invalid number of arguments to `fs.existsSync`") + } + } + + FS_F_READ_FILE -> ProxyExecutable { + when (it.size) { + 2 -> readFile(it.first(), it[1]) + 3 -> readFile(it.first(), it[1]) { err, data -> + val cbk = it.getOrNull(2) + if (cbk != null && cbk.canExecute()) cbk.executeVoid(err, data) + } + else -> throw JsError.typeError("Invalid number of arguments to `fs.readFile` (got ${it.size})") + } + } + + FS_F_READ_FILE_SYNC -> ProxyExecutable { + when (it.size) { + 1 -> readFileSync(it.first()) + 2 -> readFileSync(it.first(), it[1]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.readFileSync`") + } + } + + FS_F_WRITE_FILE -> ProxyExecutable { + when (it.size) { + 3 -> writeFile(it.first(), it[1], it[2]) + 4 -> writeFile(it.first(), it[1], it[2], it[3]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.writeFile`") + } + } + + FS_F_WRITE_FILE_SYNC -> ProxyExecutable { + when (it.size) { + 2 -> writeFileSync(it.first(), it[1]) + 3 -> writeFileSync(it.first(), it[1], it[2]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.writeFileSync`") + } + } + + FS_F_MKDIR -> ProxyExecutable { + when (it.size) { + 2 -> mkdir(it.first(), it[1]) + 3 -> mkdir(it.first(), it[1], it[2]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.mkdir`") + } + } + + FS_F_MKDIR_SYNC -> ProxyExecutable { + when (it.size) { + 1 -> mkdirSync(it.first()) + 2 -> mkdirSync(it.first(), it[1]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.mkdirSync`") + } + } + + FS_F_COPY_FILE -> ProxyExecutable { + when (it.size) { + 3 -> copyFile(it.first(), it[1], it[2]) + 4 -> copyFile(it.first(), it[1], it[2], it[3]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.copyFile` (got ${it.size})") + } + } + + FS_F_COPY_FILE_SYNC -> ProxyExecutable { + when (it.size) { + 2 -> copyFileSync(it.first(), it[1]) + 3 -> copyFileSync(it.first(), it[1], it[2]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.copyFileSync`") + } + } + + FS_P_CONSTANTS -> FilesystemConstants + + else -> null + } + @Polyglot override fun access(path: Value, callback: Value) { if ( !callback.canExecute() && @@ -791,9 +956,65 @@ internal class NodeFilesystemProxy(path: PathAPI, exec: GuestExecutor, fs: Guest } // Implements the Node `fs/promises` module. -private class NodeFilesystemPromiseProxy(path: PathAPI, executor: GuestExecutor, fs: GuestVFS) : +@ReflectiveAccess private class NodeFilesystemPromiseProxy(path: PathAPI, executor: GuestExecutor, fs: GuestVFS) : NodeFilesystemPromiseAPI, + ReadOnlyProxyObject, FilesystemBase(path, executor, fs) { + override fun getMemberKeys(): Array = arrayOf( + FS_F_ACCESS, + FS_F_READ_FILE, + FS_F_WRITE_FILE, + FS_F_MKDIR, + FS_F_COPY_FILE, + FS_P_CONSTANTS, + ) + + override fun getMember(key: String?): Any? = when (key) { + FS_F_ACCESS -> ProxyExecutable { + when (it.size) { + 1 -> access(it.first()) + 2 -> access(it.first(), it[1]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.access`") + } + } + + FS_F_READ_FILE -> ProxyExecutable { + when (it.size) { + 1 -> readFile(it.first()) + 2 -> readFile(it.first(), it[1]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.readFile`") + } + } + + FS_F_WRITE_FILE -> ProxyExecutable { + when (it.size) { + 2 -> writeFile(it.first(), it[1]) + 3 -> writeFile(it.first(), it[1], it[2]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.writeFile`") + } + } + + FS_F_MKDIR -> ProxyExecutable { + when (it.size) { + 1 -> mkdir(it.first()) + 2 -> mkdir(it.first(), it[1]) + else -> throw JsError.typeError("Invalid number of arguments to `fs.mkdir`") + } + } + + FS_F_COPY_FILE -> ProxyExecutable { + when (it.size) { + 2 -> copyFile(it.first(), it[1]) + 3 -> copyFile(it.first(), it[1], it[2].asInt()) + else -> throw JsError.typeError("Invalid number of arguments to `fs.copyFile`") + } + } + + FS_P_CONSTANTS -> FilesystemConstants + + else -> null + } + @Polyglot override fun readFile(path: Value): JsPromise = readFile(resolvePath("readFile", path), ReadFileOptions.DEFAULTS) diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/node/os/NodeOperatingSystem.kt b/packages/graalvm/src/main/kotlin/elide/runtime/node/os/NodeOperatingSystem.kt index 0bc7d69593..3c63e9bb13 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/node/os/NodeOperatingSystem.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/node/os/NodeOperatingSystem.kt @@ -370,8 +370,7 @@ internal object NodeOperatingSystem { } private fun decimalMaskFromSubnetMask(cidrMask: Short): String { - var bits: Long = 0 - bits = (-0x1 xor (1 shl 32 - cidrMask) - 1).toLong() + val bits: Long = (-0x1 xor (1 shl 32 - cidrMask) - 1).toLong() return String.format( "%d.%d.%d.%d", (bits and 0x0000000000ff000000L) shr 24, diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/node/stream/NodeStream.kt b/packages/graalvm/src/main/kotlin/elide/runtime/node/stream/NodeStream.kt index 60010d2bba..32afe5c6f9 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/node/stream/NodeStream.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/node/stream/NodeStream.kt @@ -549,9 +549,7 @@ internal abstract class AbstractReadable(charset: Charset?) : AbstractStream< TODO("Not yet implemented") } - override fun getMember(key: String): Any? = when (key) { - else -> null - } + override fun getMember(key: String): Any? = null /** * Implementation entrypoint for a stream read operation. diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/node/zlib/NodeZlib.kt b/packages/graalvm/src/main/kotlin/elide/runtime/node/zlib/NodeZlib.kt index 4494208a62..4b8299915f 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/node/zlib/NodeZlib.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/node/zlib/NodeZlib.kt @@ -19,6 +19,7 @@ import com.aayushatharva.brotli4j.decoder.BrotliInputStream import com.aayushatharva.brotli4j.encoder.BrotliOutputStream import com.aayushatharva.brotli4j.encoder.Encoder import org.apache.commons.compress.compressors.CompressorStreamFactory +import org.graalvm.nativeimage.ImageInfo import org.graalvm.polyglot.PolyglotException import org.graalvm.polyglot.Value import org.graalvm.polyglot.proxy.ProxyExecutable @@ -491,6 +492,12 @@ public data object ModernNodeZlibConstants : NodeZlibConstants { private val singleton by lazy { NodeZlib.create() } override fun provide(): NodeZlib = singleton + init { + if (!ImageInfo.inImageCode()) { + Brotli4jLoader.ensureAvailability() + } + } + override fun install(bindings: MutableIntrinsicBindings) { bindings[ZLIB_MODULE_SYMBOL.asJsSymbol()] = ProxyExecutable { singleton } ModuleRegistry.deferred(ModuleInfo.of(NodeModuleName.ZLIB)) { singleton } diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScript.kt b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScript.kt index 4f1f0d1e3a..fac9318e1d 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScript.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScript.kt @@ -32,7 +32,7 @@ import elide.runtime.plugins.js.JavaScriptVersion.* /** Engine plugin adding support for JavaScript. */ @DelicateElideApi public class JavaScript private constructor( private val config: JavaScriptConfig, - private val resources: LanguagePluginManifest, + @Suppress("unused") private val resources: LanguagePluginManifest, private val environment: Environment? = null, ) { private fun initializeContext(context: PolyglotContext) { @@ -44,7 +44,7 @@ import elide.runtime.plugins.js.JavaScriptVersion.* // run embedded initialization code if (!config.labsConfig.disablePolyfills) { - executePreambleScripts(context, resources, javascriptPreamble) + executePreambleScripts(context, javascriptPreamble) } } @@ -166,9 +166,6 @@ import elide.runtime.plugins.js.JavaScriptVersion.* ) override fun install(scope: InstallationScope, configuration: JavaScriptConfig.() -> Unit): JavaScript { - JavaScriptLang.initialize() - configureLanguageSupport(scope) - // resolve the env plugin (if present, otherwise ignore silently) val env = scope.configuration.plugin(Environment) @@ -176,6 +173,11 @@ import elide.runtime.plugins.js.JavaScriptVersion.* val config = JavaScriptConfig().apply(configuration) configureSharedBindings(scope, config) + JavaScriptLang.initialize( + interop = config.interop, + ) + configureLanguageSupport(scope) + val embedded = resolveEmbeddedManifest(scope) val instance = JavaScript(config, embedded, env) diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScriptConfig.kt b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScriptConfig.kt index 79a177c298..2067f710e3 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScriptConfig.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/js/JavaScriptConfig.kt @@ -169,6 +169,9 @@ import elide.runtime.plugins.js.JavaScriptVersion.ES2022 /** Whether to enable ESM support. */ public var esm: Boolean = true + /** Whether to enable interop features (imports, etc). */ + public var interop: Boolean = true + /** Configure NPM support. */ public fun npm(config: NpmConfig.() -> Unit) { npmConfig.apply(config) diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/vfs/VfsConfig.kt b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/vfs/VfsConfig.kt index f885d4141f..aa1af22b0c 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/vfs/VfsConfig.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/vfs/VfsConfig.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -23,7 +23,10 @@ import elide.runtime.core.PolyglotEngineConfiguration.HostAccess.ALLOW_IO import elide.runtime.gvm.internals.vfs.EmbeddedGuestVFSImpl /** Configuration DSL for the [Vfs] plugin. */ -@DelicateElideApi public class VfsConfig internal constructor(configuration: PolyglotEngineConfiguration) { +@DelicateElideApi public class VfsConfig internal constructor( + configuration: PolyglotEngineConfiguration, + private val bundlesProducer: () -> List, +) { /** Private mutable list of registered bundles. */ private val bundles: MutableList = mutableListOf() @@ -32,7 +35,7 @@ import elide.runtime.gvm.internals.vfs.EmbeddedGuestVFSImpl internal val listeners: MutableList = mutableListOf() /** Internal list of bundles registered for use in the VFS. */ - internal val registeredBundles: List get() = bundles + internal val registeredBundles: List get() = bundlesProducer.invoke().map { it.toURI() }.plus(bundles) /** Whether the file system is writable. If false, write operations will throw an exception. */ public var writable: Boolean = false diff --git a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/vfs/VfsPlugin.kt b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/vfs/VfsPlugin.kt index d6e30fcd38..1183fef819 100644 --- a/packages/graalvm/src/main/kotlin/elide/runtime/plugins/vfs/VfsPlugin.kt +++ b/packages/graalvm/src/main/kotlin/elide/runtime/plugins/vfs/VfsPlugin.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -93,9 +93,8 @@ import elide.runtime.vfs.languageVfsRegistry override fun install(scope: InstallationScope, configuration: VfsConfig.() -> Unit): Vfs { // apply the configuration and create the plugin instance - val allRegistered = scope.registeredBundles() - val config = VfsConfig(scope.configuration) - if (allRegistered.isNotEmpty()) allRegistered.forEach { config.include(it) } + val allRegisteredProducer = { scope.registeredBundles() } + val config = VfsConfig(scope.configuration, allRegisteredProducer) config.apply(configuration) val instance = Vfs(config) diff --git a/packages/graalvm/src/main/resources/META-INF/native-image/dev.elide/graalvm/agent-extracted-predefined-classes/gFztcU2kcJ6ldjyYSDynm8.classdata b/packages/graalvm/src/main/resources/META-INF/native-image/dev.elide/graalvm/agent-extracted-predefined-classes/gFztcU2kcJ6ldjyYSDynm8.classdata new file mode 100644 index 0000000000..63697132d1 Binary files /dev/null and b/packages/graalvm/src/main/resources/META-INF/native-image/dev.elide/graalvm/agent-extracted-predefined-classes/gFztcU2kcJ6ldjyYSDynm8.classdata differ diff --git a/packages/graalvm/src/main/resources/META-INF/native-image/dev.elide/graalvm/predefined-classes-config.json b/packages/graalvm/src/main/resources/META-INF/native-image/dev.elide/graalvm/predefined-classes-config.json new file mode 100644 index 0000000000..7caee3820c --- /dev/null +++ b/packages/graalvm/src/main/resources/META-INF/native-image/dev.elide/graalvm/predefined-classes-config.json @@ -0,0 +1,9 @@ +[ + { + "type":"agent-extracted", + "classes":[ + { "nameInfo":"com/oracle/truffle/runtime/generated/GeneratedModules", "hash":"gFztcU2kcJ6ldjyYSDynm8" } + ] + } +] + diff --git a/packages/graalvm/src/main/resources/META-INF/native-image/dev.elide/graalvm/reachability-metadata.json b/packages/graalvm/src/main/resources/META-INF/native-image/dev.elide/graalvm/reachability-metadata.json new file mode 100644 index 0000000000..cee9ddade7 --- /dev/null +++ b/packages/graalvm/src/main/resources/META-INF/native-image/dev.elide/graalvm/reachability-metadata.json @@ -0,0 +1,4677 @@ +{ + "reflection": [ + { + "type": "com.google.protobuf.Timestamp$Builder", + "methods": [ + { + "name": "" + }, + { + "name": "setSeconds" + }, + { + "name": "setNanos" + }, + { + "name": "build" + } + ] + }, + { + "type": "com.google.protobuf.Timestamp", + "methods": [ + { + "name": "getSeconds" + }, + { + "name": "getNanos" + }, + { + "name": "toBuilder" + } + ] + }, + { + "type": "elide.runtime.intrinsics.server.http.HttpRouter" + }, + { + "type": "elide.runtime.intrinsics.server.http.internal.ThreadLocalHandlerRegistry" + }, + { + "type": "com.oracle.truffle.api.strings.TruffleString" + }, + { + "type": "com.oracle.truffle.api.strings.AbstractTruffleString", + "methods": [ + { + "name": "toString" + } + ] + }, + { + "type": "elide.runtime.intrinsics.server.http.internal.HandlerRegistry", + "methods": [ + { + "name": "handle", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "org.graalvm.polyglot.Value" + ] + } + ] + }, + { + "type": "elide.runtime.intrinsics.server.http.internal.PipelineRouter", + "methods": [ + { + "name": "handle", + "parameterTypes": [ + "java.lang.String", + "java.lang.String", + "org.graalvm.polyglot.Value" + ] + } + ] + }, + { + "type": "elide.runtime.intrinsics.server.http.netty.NettyRequestHandler", + "methods": [ + { + "name": "channelRead", + "parameterTypes": [ + "io.netty.channel.ChannelHandlerContext", + "java.lang.Object" + ] + } + ] + }, + { + "type": "elide.tool.cli.cmd.discord.$ToolDiscordCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.discord.$ToolDiscordCommand$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.discord.ToolDiscordCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.help.$HelpCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.help.HelpCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.info.$ToolInfoCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.info.$ToolInfoCommand$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.info.ToolInfoCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.pkl.$ToolPklCommand$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "java.net.NetworkInterface" + }, + { + "type": "java.net.InetAddress" + }, + { + "type": "com.sun.jna.Native" + }, + { + "type": "com.sun.jna.platform.linux.LibC" + }, + { + "type": "com.sun.jna.platform.linux.Udev" + }, + { + "type": "java.lang.Object" + }, + { + "type": "elide.runtime.node.buffer.NodeBlob", + "methods": [ + { + "name": "" + } + ] + }, + { + "type": "org.sqlite.BusyHandler" + }, + { + "type": "oshi.software.os.OperatingSystem" + }, + { + "type": "oshi.software.common.AbstractOperatingSystem", + "methods": [ + { + "name": "" + } + ] + }, + { + "type": "oshi.software.os.linux.LinuxOperatingSystem", + "methods": [ + { + "name": "" + } + ] + }, + { + "type": "elide.runtime.core.internals.graalvm.GraalVMEngine" + }, + { + "type": "elide.runtime.intrinsics.js.err.AbstractJsException$ErrorFactory" + }, + { + "type": "elide.runtime.intrinsics.js.err.AbstractJsException" + }, + { + "type": "elide.runtime.intrinsics.js.err.TypeError", + "allPublicConstructors": true, + "allDeclaredFields": true, + "allPublicFields": true + }, + { + "type": "elide.runtime.intrinsics.js.err.TypeError$Companion" + }, + { + "type": "elide.runtime.intrinsics.js.err.TypeError$Factory", + "allDeclaredFields": true, + "allPublicFields": true + }, + { + "type": "elide.runtime.intrinsics.js.err.ValueError", + "allPublicConstructors": true, + "allDeclaredFields": true, + "allPublicFields": true + }, + { + "type": "elide.runtime.intrinsics.js.err.ValueError$Companion" + }, + { + "type": "elide.runtime.intrinsics.js.err.ValueError$Factory", + "allDeclaredFields": true, + "allPublicFields": true + }, + { + "type": "elide.runtime.intrinsics.js.node.childProcess.SpawnSyncOptions" + }, + { + "type": "elide.runtime.intrinsics.js.node.childProcess.SpawnOptions" + }, + { + "type": "elide.runtime.intrinsics.js.node.childProcess.ExecOptions" + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.abort.AbortSignal" + }, + { + "type": "tools.elide.vfs.Filesystem", + "methods": [ + { + "name": "getMetadata" + }, + { + "name": "hasMetadata" + }, + { + "name": "hasRoot" + }, + { + "name": "getRoot" + } + ] + }, + { + "type": "tools.elide.vfs.Filesystem$Builder", + "methods": [ + { + "name": "getMetadata" + } + ] + }, + { + "type": "tools.elide.vfs.Filesystem$Metadata", + "methods": [ + { + "name": "newBuilder" + } + ] + }, + { + "type": "tools.elide.vfs.Filesystem$Metadata$Builder", + "methods": [ + { + "name": "build" + } + ] + }, + { + "type": { + "proxy": ["kotlin.jvm.functions.Function0"] + } + }, + { + "type": "kotlinx.collections.immutable.PersistentCollection" + }, + { + "type": "kotlinx.collections.immutable.ImmutableCollection" + }, + { + "type": "kotlinx.collections.immutable.ImmutableList" + }, + { + "type": "kotlinx.collections.immutable.PersistentList" + }, + { + "type": "kotlin.jvm.internal.markers.KMappedMarker" + }, + { + "type": "kotlinx.collections.immutable.implementations.immutableList.SmallPersistentVector" + }, + { + "type": "java.lang.CharSequence" + }, + { + "type": "elide.runtime.intrinsics.js.StringLike" + }, + { + "type": "elide.runtime.intrinsics.js.typed.UUID" + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.typed.UUIDValue", + "methods": [ + { + "name": "toString" + } + ] + }, + { + "type": "kotlin.Any" + }, + { + "type": "org.graalvm.polyglot.proxy.Proxy" + }, + { + "type": "org.graalvm.polyglot.proxy.ProxyObject" + }, + { + "type": "java.lang.Cloneable" + }, + { + "type": "java.util.RandomAccess" + }, + { + "type": "java.util.SequencedCollection" + }, + { + "type": "java.util.List" + }, + { + "type": "java.lang.Iterable" + }, + { + "type": "java.util.Collection" + }, + { + "type": "java.util.ArrayList" + }, + { + "condition": { + "typeReached": "com.sun.jna.platform.linux.Udev" + }, + "type": "com.sun.jna.platform.linux.Udev" + }, + { + "condition": { + "typeReached": "com.sun.jna.platform.linux.Udev" + }, + "type": { + "proxy": ["com.sun.jna.platform.linux.Udev"] + } + }, + { + "condition": { + "typeReached": "com.sun.jna.platform.linux.Udev" + }, + "type": { + "proxy": ["oshi.jna.platform.linux.LinuxLibc"] + } + }, + { + "condition": { + "typeReached": "com.sun.jna.platform.linux.Udev" + }, + "type": "com.sun.jna.platform.linux.Udev$UdevContext", + "methods": [ + { + "name": "" + } + ] + }, + { + "condition": { + "typeReached": "com.sun.jna.platform.linux.Udev" + }, + "type": "com.sun.jna.platform.linux.Udev$UdevEnumerate", + "methods": [ + { + "name": "" + } + ] + }, + { + "condition": { + "typeReached": "com.sun.jna.platform.linux.Udev" + }, + "type": "com.sun.jna.platform.linux.Udev$UdevListEntry", + "methods": [ + { + "name": "" + } + ] + }, + { + "condition": { + "typeReached": "com.sun.jna.platform.linux.Udev" + }, + "type": "com.sun.jna.platform.linux.Udev$UdevDevice", + "methods": [ + { + "name": "" + } + ] + }, + { + "type": "elide.runtime.intrinsics.js.node.NodeFilesystemAPI" + }, + { + "type": "elide.runtime.intrinsics.js.node.WritableFilesystemAPI" + }, + { + "type": "elide.runtime.node.fs.NodeFilesystemProxy" + }, + { + "type": "elide.runtime.node.asserts.NodeAssert", + "methods": [ + { + "name": "ok" + }, + { + "name": "notOk" + }, + { + "name": "fail", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "fail", + "parameterTypes": [ + "java.lang.Object", + "java.lang.Object", + "java.lang.String", + "java.lang.String", + "java.lang.Object" + ] + }, + { + "name": "ifError" + }, + { + "name": "assert" + }, + { + "name": "equal", + "parameterTypes": [ + "java.lang.Object", + "java.lang.Object", + "java.lang.String" + ] + }, + { + "name": "strict", + "parameterTypes": [ + "java.lang.Object", + "java.lang.Object", + "java.lang.String" + ] + }, + { + "name": "notEqual" + }, + { + "name": "deepEqual" + }, + { + "name": "notDeepEqual" + }, + { + "name": "deepStrictEqual" + }, + { + "name": "notDeepStrictEqual" + }, + { + "name": "match" + }, + { + "name": "doesNotMatch" + }, + { + "name": "doesNotThrow" + }, + { + "name": "throws" + } + ] + }, + { + "type": "elide.runtime.gvm.internals.sqlite.SqliteDatabaseProxy" + }, + { + "type": "elide.runtime.gvm.internals.sqlite.SqliteDatabaseProxy$SQLiteStatementImpl" + }, + { + "type": "java.io.Closeable" + }, + { + "type": "elide.runtime.intrinsics.sqlite.SQLiteStatement" + }, + { + "type": "elide.runtime.intrinsics.js.node.NodeAPI" + }, + { + "type": "java.util.Optional", + "methods": [ + { + "name": "get" + }, + { + "name": "isPresent" + } + ] + }, + { + "type": "jdk.internal.net.http.HttpResponseImpl", + "methods": [ + { + "name": "statusCode" + }, + { + "name": "headers" + }, + { + "name": "body" + } + ] + }, + { + "type": "java.net.http.HttpHeaders", + "methods": [ + { + "name": "firstValue" + }, + { + "name": "allValues" + }, + { + "name": "map" + } + ] + }, + { + "type": "jdk.internal.net.http.HttpClientFacade", + "methods": [ + { + "name": "send" + } + ] + }, + { + "type": "java.net.http.HttpClient", + "methods": [ + { + "name": "send" + } + ] + }, + { + "type": "jdk.internal.net.http.HttpClientBuilderImpl" + }, + { + "type": "jdk.internal.net.http.HttpRequestBuilderImpl" + }, + { + "type": "java.lang.constant.Constable" + }, + { + "type": "java.lang.Throwable", + "methods": [ + { + "name": "toString" + } + ] + }, + { + "type": "java.lang.AutoCloseable" + }, + { + "type": "java.net.URI", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "isAbsolute" + }, + { + "name": "resolve" + }, + { + "name": "getUserInfo" + }, + { + "name": "getScheme" + }, + { + "name": "getFragment" + }, + { + "name": "getSchemeSpecificPart" + }, + { + "name": "toString" + }, + { + "name": "getHost" + } + ] + }, + { + "type": "org.graalvm.nativeimage.MissingReflectionRegistrationError" + }, + { + "type": "java.io.Serializable" + }, + { + "type": "java.lang.Comparable" + }, + { + "type": "java.net.http.HttpClient", + "methods": [ + { + "name": "newBuilder" + } + ] + }, + { + "type": "java.net.http.HttpClient$Builder", + "methods": [ + { + "name": "followRedirects" + }, + { + "name": "build" + } + ] + }, + { + "type": "java.net.http.HttpClient.Redirect" + }, + { + "type": "java.net.http.HttpClient$Redirect" + }, + { + "type": "java.net.http.HttpRequest", + "methods": [ + { + "name": "newBuilder" + }, + { + "name": "uri" + }, + { + "name": "method" + }, + { + "name": "bodyPublisher" + }, + { + "name": "headers" + } + ] + }, + { + "type": "java.net.http.HttpRequest.Builder", + "methods": [ + { + "name": "setHeader" + }, + { + "name": "header" + }, + { + "name": "headers" + }, + { + "name": "method" + }, + { + "name": "build" + } + ] + }, + { + "type": "java.net.http.HttpRequest$Builder", + "methods": [ + { + "name": "setHeader" + }, + { + "name": "header" + }, + { + "name": "headers" + }, + { + "name": "method" + }, + { + "name": "build" + } + ] + }, + { + "type": "java.net.http.HttpRequest.BodyPublishers", + "methods": [ + { + "name": "ofString" + }, + { + "name": "ofByteArray" + }, + { + "name": "ofInputStream" + }, + { + "name": "ofFile" + }, + { + "name": "ofNone" + } + ] + }, + { + "type": "java.net.http.HttpRequest$BodyPublishers", + "methods": [ + { + "name": "ofString" + }, + { + "name": "ofByteArray" + }, + { + "name": "ofInputStream" + }, + { + "name": "ofFile" + }, + { + "name": "noBody" + } + ] + }, + { + "type": "java.net.http.HttpResponse", + "methods": [ + { + "name": "statusCode" + }, + { + "name": "headers" + }, + { + "name": "body" + } + ] + }, + { + "type": "java.net.http.HttpResponse.BodyHandlers", + "methods": [ + { + "name": "ofString" + }, + { + "name": "ofByteArray" + }, + { + "name": "ofInputStream" + }, + { + "name": "ofFile" + }, + { + "name": "ofDiscard" + } + ] + }, + { + "type": "java.net.http.HttpResponse$BodyHandlers", + "methods": [ + { + "name": "ofString" + }, + { + "name": "ofByteArray" + }, + { + "name": "ofInputStream" + }, + { + "name": "ofFile" + } + ] + }, + { + "type": "java.util.Base64" + }, + { + "type": "sun.util.logging.resources.logging", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "sun.util.logging.resources.logging_en", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "sun.util.logging.resources.spi.loggingProvider" + }, + { + "type": "elide.runtime.intrinsics.GuestIntrinsic" + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.console.ConsoleIntrinsic" + }, + { + "type": "[B" + }, + { + "type": "ch.qos.logback.classic.encoder.PatternLayoutEncoder", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.joran.SerializedModelConfigurator", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.jul.LevelChangePropagator", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.sift.MDCBasedDiscriminator", + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "setDefaultValue", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "setKey", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "ch.qos.logback.classic.sift.SiftingAppender", + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "setDiscriminator", + "parameterTypes": [ + "ch.qos.logback.core.sift.Discriminator" + ] + } + ] + }, + { + "type": "ch.qos.logback.classic.spi.LogbackServiceProvider" + }, + { + "type": "ch.qos.logback.core.ConsoleAppender", + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "setTarget", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "ch.qos.logback.core.OutputStreamAppender", + "methods": [ + { + "name": "setEncoder", + "parameterTypes": [ + "ch.qos.logback.core.encoder.Encoder" + ] + } + ] + }, + { + "type": "ch.qos.logback.core.encoder.Encoder" + }, + { + "type": "ch.qos.logback.core.encoder.LayoutWrappingEncoder", + "methods": [ + { + "name": "setParent", + "parameterTypes": [ + "ch.qos.logback.core.spi.ContextAware" + ] + } + ] + }, + { + "type": "ch.qos.logback.core.pattern.PatternLayoutEncoderBase", + "methods": [ + { + "name": "setPattern", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "ch.qos.logback.core.sift.Discriminator" + }, + { + "type": "ch.qos.logback.core.spi.ContextAware" + }, + { + "type": "ch.qos.logback.core.status.NopStatusListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "com.github.ajalt.clikt.core.BaseCliktCommand", + "allDeclaredFields": true + }, + { + "type": "com.google.common.jimfs.SystemJimfsFileSystemProvider", + "methods": [ + { + "name": "removeFileSystemRunnable", + "parameterTypes": [ + "java.net.URI" + ] + } + ] + }, + { + "type": "com.google.protobuf.DescriptorMessageInfoFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ] + }, + { + "type": "com.google.protobuf.DescriptorProtos$FeatureSet" + }, + { + "type": "com.google.protobuf.DescriptorProtos$FeatureSet$Builder" + }, + { + "type": "com.google.protobuf.DescriptorProtos$FeatureSet$EnumType" + }, + { + "type": "com.google.protobuf.DescriptorProtos$FeatureSet$FieldPresence" + }, + { + "type": "com.google.protobuf.DescriptorProtos$FeatureSet$JsonFormat" + }, + { + "type": "com.google.protobuf.DescriptorProtos$FeatureSet$MessageEncoding" + }, + { + "type": "com.google.protobuf.DescriptorProtos$FeatureSet$RepeatedFieldEncoding" + }, + { + "type": "com.google.protobuf.DescriptorProtos$FeatureSet$Utf8Validation" + }, + { + "type": "com.google.protobuf.ExtensionRegistry", + "methods": [ + { + "name": "getEmptyRegistry", + "parameterTypes": [] + } + ] + }, + { + "type": "com.google.protobuf.Timestamp" + }, + { + "type": "elide.runtime.exec.$GuestExecutorFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.exec.$GuestExecutorFactory$Executor0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$GuestIOConfiguration$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$GuestVMConfiguration$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$GuestVMEEConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$GuestVMEESandboxConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$GuestVMInspectConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$JsEsmConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.cfg.$JsRuntimeConfig$JsNpmConfig$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.$IntrinsicsManager$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.$ElideIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.abort.$AbortControllerIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.abort.$AbortSignalIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.base64.$Base64Intrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.codec.$JsEncodingIntrinsics$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.console.$ConsoleIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.crypto.$WebCryptoIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.crypto.$WebCryptoKey$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.fetch.$FetchIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.stream.$CoreStreamsIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.url.$URLIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.url.$URLSearchParamsIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.intrinsics.js.webstreams.$ReadableStreamIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.js.$JsTimerExecutorProviderImpl$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.js.$JsTimerExecutorProviderImpl$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.js.$JsTimersIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.js.$JsTimersIntrinsic$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.js.JsTimersIntrinsic", + "fields": [ + { + "name": "execProvider" + } + ] + }, + { + "type": "elide.runtime.gvm.internals.sqlite.$ElideSqliteModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.sqlite.$ElideSqliteModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.testing.$ElideTestingModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.testing.$ElideTestingModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.vfs.$EmbeddedGuestVFSImpl$EmbeddedVFSConfigurationFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.vfs.$EmbeddedGuestVFSImpl$EmbeddedVFSConfigurationFactory$Spawn$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.vfs.$GuestVFSPolicy$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.vfs.$HostVFSImpl$HostVFSConfigurationFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.intrinsics.$BuiltinIntrinsicsResolver$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.gvm.intrinsics.$ServiceIntrinsicsResolver$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.intrinsics.js.err.$ValueErrorIntrinsic$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.lang.typescript.TypeScriptLanguageProvider" + }, + { + "type": "elide.runtime.node.asserts.$NodeAssertModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.asserts.$NodeAssertStrictModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.buffer.$NodeBufferModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.childProcess.NodeChildProcess", + "methods": [ + { + "name": "execSync" + }, + { + "name": "execFile" + }, + { + "name": "execFileSync" + }, + { + "name": "spawnSync" + } + ] + }, + { + "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$IpcServer$graalvm1$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.childProcess.$NodeChildProcessModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.cluster.$NodeClusterModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.console.$NodeConsoleModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.crypto.$NodeCryptoModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.dgram.$NodeDatagramModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.diagnostics.$NodeDiagnosticsChannelModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.dns.$NodeDNSModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.dns.$NodeDNSPromisesModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.domain.$NodeDomainModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.events.$NodeEventsModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.events.$NodeEventsModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.events.$NodeEventsModuleFacade$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.fs.$NodeFilesystemModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.fs.$NodeFilesystemModule$ProvidePromises1$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.fs.$NodeFilesystemModule$ProvideStd0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.fs.$VfsInitializerListener$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.http.$NodeHttpModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.http2.$NodeHttp2Module$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.https.$NodeHttpsModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.inspector.$NodeInspectorModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.inspector.$NodeInspectorPromisesModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.module.$NodeModulesModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.net.$NodeNetworkModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$CPUInfoData$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$CPUTimingsData$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NetworkInterfaceInfoData$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NodeOperatingSystem$BaseOS$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NodeOperatingSystem$Posix$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NodeOperatingSystem$Win32$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NodeOperatingSystemModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.os.$NodeOperatingSystemModule$Provide0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.path.$NodePathsModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.perfHooks.$NodePerformanceHooksModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.process.$NodeProcessModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.querystring.$NodeQuerystringModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.readline.$NodeReadlineModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.readline.$NodeReadlinePromisesModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamConsumersModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamConsumersModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamPromisesModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamPromisesModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamWebModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stream.$NodeStreamWebModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stringDecoder.$NodeStringDecoderModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.stringDecoder.$NodeStringDecoderModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.test.$NodeTestModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.url.$NodeURLModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.url.$NodeURLModule$Provide$graalvm0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.worker.$NodeWorkerModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.runtime.node.zlib.$NodeZlibModule$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.$Elide$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.AOTApplicationContextConfigurer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.AbstractSubcommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.AbstractToolCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.AotConstantPropertySources" + }, + { + "type": "elide.tool.cli.CliCommandInvocation", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.DeducedEnvironmentConfigurer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.Elide", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.EnvironmentPropertiesOptimizationLoader" + }, + { + "type": "elide.tool.cli.KnownMissingTypesOptimizationLoader" + }, + { + "type": "elide.tool.cli.NettyPropertiesAOTContextConfigurer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.PublishersOptimizationsLoader" + }, + { + "type": "elide.tool.cli.StaticServicesLoader" + }, + { + "type": "elide.tool.cli.ToolCommandBase", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.discord.$ToolDiscordCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.discord.$ToolDiscordCommand$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.help.$HelpCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.help.HelpCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.info.$ToolInfoCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.info.$ToolInfoCommand$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.info.ToolInfoCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.pkl.$ToolPklCommand$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.pkl.ToolPklCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.$DebugConfig$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$EnvironmentConfig$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$InspectorConfig$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$LanguageSelector$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.$ToolShellCommand$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.repl.DebugConfig", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.EnvironmentConfig", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.InspectorConfig", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.LanguageSelector", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.repl.ToolShellCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.cmd.tool.$ToolInvokeCommand$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.tool.$ToolInvokeCommand$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.cmd.tool.ToolInvokeCommand", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.options.$AbstractEngineOptions$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.options.$AccessControlOptions$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.options.$CommonOptions$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.options.$EngineJavaScriptOptions$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.options.$LanguagePositionals$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.cli.options.AbstractEngineOptions", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.options.AccessControlOptions", + "allDeclaredFields": true + }, + { + "type": "elide.tool.cli.options.CommonOptions", + "allDeclaredFields": true, + "methods": [ + { + "name": "setDebug", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "setQuiet", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "setVerbose", + "parameterTypes": [ + "boolean" + ] + } + ] + }, + { + "type": "elide.tool.cli.options.EngineJavaScriptOptions", + "allDeclaredFields": true + }, + { + "type": "elide.tool.err.$DefaultStructuredErrorRecorder$DefaultMarkdownErrorRecorderProvider$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.err.$DefaultStructuredErrorRecorder$DefaultMarkdownErrorRecorderProvider$Get0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.err.$ErrorHandlerAcquireTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.err.$ErrorRecorderAcquireTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.err.$ErrorRecorderWriteTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.io.$RuntimeWorkdirManager$DefaultRuntimeWorkdirManagerProvider$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.io.$RuntimeWorkdirManager$DefaultRuntimeWorkdirManagerProvider$Get0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.project.$DefaultProjectManager$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.testing.$SanitySelfTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.transport.$EpollTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.transport.$NativeCryptoTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "elide.tool.transport.$NativeTransportTest$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "groovy.lang.Closure" + }, + { + "type": "io.micronaut.aop.internal.InterceptorRegistryBean", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.context.DefaultBeanContext$BeanDefinitionProducer", + "fields": [ + { + "name": "definition" + } + ] + }, + { + "type": "io.micronaut.context.annotation.Prototype" + }, + { + "type": "io.micronaut.context.env.PropertiesPropertySourceLoader" + }, + { + "type": "io.micronaut.context.env.exp.RandomPropertyExpressionResolver" + }, + { + "type": "io.micronaut.context.env.yaml.YamlPropertySourceLoader" + }, + { + "type": "io.micronaut.context.event.ApplicationEventPublisherFactory", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.context.propagation.instrument.execution.$ExecutorServiceInstrumenter$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.core.async.converters.ReactiveTypeConverterRegistrar", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.discovery.$DefaultCompositeDiscoveryClient$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.discovery.$DefaultServiceInstanceIdGenerator$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.discovery.cloud.digitalocean.$DigitalOceanInstanceMetadata$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.discovery.config.$DefaultCompositeConfigurationClient$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.health.$DefaultCurrentHealthStatus$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.health.$HealthStatus$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.health.$HeartbeatConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.health.$HeartbeatDiscoveryClientCondition$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.HttpTypeConverterRegistrar", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.bind.$DefaultRequestBinderRegistry$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.bind.binders.$DefaultBodyAnnotationBinder$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.body.$ByteArrayBodyHandler$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.body.$CharSequenceBodyWriter$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.body.$DefaultMessageBodyHandlerRegistry$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.body.$StringBodyReader$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.body.$TextPlainObjectBodyReader$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.body.$TextPlainObjectBodyWriter$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.body.$TextStreamBodyWriter$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.body.$WritableBodyWriter$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.codec.$CodecConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.converters.$HttpConverterRegistrar$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.converters.SharedHttpConvertersRegistrar", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.expression.$RequestConditionContext$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.form.$FormConfigurationProperties$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.hateoas.$AbstractResource$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.hateoas.$DefaultLink$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.hateoas.$GenericResource$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.hateoas.$JsonError$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.hateoas.$Resource$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.hateoas.$VndError$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.resource.$ResourceLoaderFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.resource.$ResourceLoaderFactory$FileSystemResourceLoader1$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.resource.$ResourceLoaderFactory$GetClassPathResourceLoader0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.resource.$ResourceLoaderFactory$ResourceResolver2$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.ssl.$ClientSslConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$DefaultKeyConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$DefaultKeyStoreConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$DefaultTrustStoreConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.ssl.$DefaultSslConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.ssl.$ServerSslConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.uri.$DefaultFormUrlEncodedDecoder$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.util.$HtmlEntityEncodingHtmlSanitizer$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.http.util.$OutgoingHttpRequestProcessorImpl$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.inject.annotation.AnnotationConvertersRegistrar", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.inject.provider.BeanProviderDefinition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.inject.provider.JakartaProviderBeanDefinition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.logging.$LogLevel$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.logging.LoggingConverterRegistrar", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.logging.impl.$LogbackLoggingSystem$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.retry.annotation.$DefaultRetryPredicate$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.retry.annotation.$RetryPredicate$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.retry.intercept.$DefaultRetryInterceptor$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.retry.intercept.$RecoveryInterceptor$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.$ApplicationConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.$ApplicationConfiguration$InstanceConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.beans.$MapperIntroduction$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.beans.$MapperMethodProcessor$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.context.$CompositeMessageSource$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.context.env.$ConfigurationIntroductionAdvice$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.context.scope.$ThreadLocalCustomScope$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.context.scope.refresh.$RefreshInterceptor$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.context.scope.refresh.$RefreshScope$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.context.scope.refresh.$RefreshScopeCondition$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.converters.time.TimeConverterRegistrar", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.http.codec.$MediaTypeCodecRegistryFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.http.codec.$MediaTypeCodecRegistryFactory$MediaTypeCodecRegistry0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.http.codec.$TextPlainCodec$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.runtime.http.scope.$RequestCustomScope$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.$DefaultTaskExceptionHandler$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.$LoomSupport$LoomCondition$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.$ScheduledExecutorTaskScheduler$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.async.$AsyncInterceptor$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$DefaultExecutorSelector$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$DefaultThreadFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$DefaultThreadFactory$ThreadFactory0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$ExecutorFactory$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$ExecutorFactory$EventLoopGroupThreadFactory0$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$ExecutorFactory$ExecutorService1$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$IOExecutorServiceConfig$Blocking2$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$IOExecutorServiceConfig$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$IOExecutorServiceConfig$Virtual1$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.executor.$UserExecutorConfiguration$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.io.watch.$FileWatchCondition$Introspection", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.processor.$ScheduledMethodProcessor$ApplicationEventListener$scheduleTasks1$Intercepted$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.micronaut.scheduling.processor.$ScheduledMethodProcessor$Definition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "io.netty.channel.DefaultFileRegion" + }, + { + "type": "io.netty.channel.epoll.NativeDatagramPacketArray$NativeDatagramPacket" + }, + { + "type": "io.netty.channel.unix.DatagramSocketAddress" + }, + { + "type": "io.netty.channel.unix.DomainDatagramSocketAddress" + }, + { + "type": "io.netty.channel.unix.FileDescriptor", + "fields": [ + { + "name": "state" + } + ] + }, + { + "type": "io.netty.channel.unix.PeerCredentials" + }, + { + "type": "io.netty.internal.tcnative.CertificateCallback" + }, + { + "type": "io.netty.internal.tcnative.CertificateCallbackTask" + }, + { + "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodDecryptTask" + }, + { + "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodSignTask" + }, + { + "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodTask" + }, + { + "type": "io.netty.internal.tcnative.SSLTask" + }, + { + "type": "io.netty.util.AbstractReferenceCounted", + "fields": [ + { + "name": "refCnt" + } + ] + }, + { + "type": "io.netty.util.internal.NativeLibraryUtil", + "methods": [ + { + "name": "loadLibrary", + "parameterTypes": [ + "java.lang.String", + "boolean" + ] + } + ] + }, + { + "type": "java.io.FileDescriptor" + }, + { + "type": "java.io.FilePermission" + }, + { + "type": "java.io.IOException" + }, + { + "type": "java.lang.ClassLoader", + "fields": [ + { + "name": "classLoaderValueMap" + } + ] + }, + { + "type": "java.lang.ClassValue" + }, + { + "type": "java.lang.Exception" + }, + { + "type": "java.lang.IllegalArgumentException" + }, + { + "type": "java.lang.NullPointerException" + }, + { + "type": "java.lang.Object", + "allDeclaredFields": true + }, + { + "type": "java.lang.OutOfMemoryError" + }, + { + "type": "java.lang.RuntimeException" + }, + { + "type": "java.lang.RuntimePermission" + }, + { + "type": "java.lang.String" + }, + { + "type": "java.lang.Thread", + "fields": [ + { + "name": "threadLocalRandomProbe" + } + ] + }, + { + "type": "java.lang.management.ManagementFactory", + "methods": [ + { + "name": "getRuntimeMXBean", + "parameterTypes": [] + } + ] + }, + { + "type": "java.lang.management.RuntimeMXBean", + "methods": [ + { + "name": "getInputArguments", + "parameterTypes": [] + } + ] + }, + { + "type": "java.net.InetSocketAddress" + }, + { + "type": "java.net.NetPermission" + }, + { + "type": "java.net.PortUnreachableException" + }, + { + "type": "java.net.SocketPermission" + }, + { + "type": "java.net.URLPermission", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ] + } + ] + }, + { + "type": "java.nio.Bits" + }, + { + "type": "java.nio.Buffer", + "fields": [ + { + "name": "address" + } + ] + }, + { + "type": "java.nio.ByteBuffer" + }, + { + "type": "java.nio.DirectByteBuffer" + }, + { + "type": "java.nio.channels.ClosedChannelException" + }, + { + "type": "java.nio.channels.FileChannel" + }, + { + "type": "java.nio.file.Path" + }, + { + "type": "java.nio.file.Paths" + }, + { + "type": "java.security.AllPermission" + }, + { + "type": "java.security.SecurityPermission" + }, + { + "type": "java.sql.Connection" + }, + { + "type": "java.sql.Driver" + }, + { + "type": "java.sql.DriverManager" + }, + { + "type": "java.sql.Time" + }, + { + "type": "java.sql.Timestamp" + }, + { + "type": "java.time.Duration" + }, + { + "type": "java.time.Instant" + }, + { + "type": "java.time.LocalDate" + }, + { + "type": "java.time.LocalDateTime" + }, + { + "type": "java.time.LocalTime" + }, + { + "type": "java.time.MonthDay" + }, + { + "type": "java.time.OffsetDateTime" + }, + { + "type": "java.time.OffsetTime" + }, + { + "type": "java.time.Period" + }, + { + "type": "java.time.Year" + }, + { + "type": "java.time.YearMonth" + }, + { + "type": "java.time.ZoneId" + }, + { + "type": "java.time.ZoneOffset" + }, + { + "type": "java.time.ZonedDateTime" + }, + { + "type": "java.util.PropertyPermission" + }, + { + "type": "java.util.ResourceBundle", + "methods": [ + { + "name": "getBaseBundleName", + "parameterTypes": [] + } + ] + }, + { + "type": "java.util.concurrent.ForkJoinTask", + "fields": [ + { + "name": "aux" + }, + { + "name": "status" + } + ] + }, + { + "type": "java.util.concurrent.atomic.AtomicBoolean", + "fields": [ + { + "name": "value" + } + ] + }, + { + "type": "java.util.concurrent.atomic.Striped64", + "fields": [ + { + "name": "base" + }, + { + "name": "cellsBusy" + } + ] + }, + { + "type": "javax.smartcardio.CardPermission" + }, + { + "type": "jdk.graal.compiler.hotspot.HotSpotGraalJVMCIServiceLocator" + }, + { + "type": "jdk.internal.jrtfs.JrtFileSystemProvider" + }, + { + "type": "jdk.internal.misc.Unsafe", + "methods": [ + { + "name": "allocateUninitializedArray", + "parameterTypes": [ + "java.lang.Class", + "int" + ] + }, + { + "name": "getUnsafe", + "parameterTypes": [] + } + ] + }, + { + "type": "kotlin.SafePublicationLazyImpl", + "fields": [ + { + "name": "_value" + } + ] + }, + { + "type": "kotlin.jvm.internal.DefaultConstructorMarker" + }, + { + "type": "kotlin.reflect.jvm.internal.ReflectionFactoryImpl", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "kotlinx.atomicfu.AtomicBoolean", + "fields": [ + { + "name": "_value" + } + ] + }, + { + "type": "kotlinx.atomicfu.AtomicRef", + "fields": [ + { + "name": "value" + } + ] + }, + { + "type": "kotlinx.coroutines.EventLoopImplBase", + "fields": [ + { + "name": "_delayed$volatile" + }, + { + "name": "_isCompleted$volatile" + }, + { + "name": "_queue$volatile" + } + ] + }, + { + "type": "kotlinx.coroutines.JobSupport", + "fields": [ + { + "name": "_parentHandle$volatile" + }, + { + "name": "_state$volatile" + } + ] + }, + { + "type": "kotlinx.coroutines.JobSupport$Finishing", + "fields": [ + { + "name": "_exceptionsHolder$volatile" + }, + { + "name": "_isCompleting$volatile" + }, + { + "name": "_rootCause$volatile" + } + ] + }, + { + "type": "kotlinx.coroutines.internal.DispatchedContinuation", + "fields": [ + { + "name": "_reusableCancellableContinuation$volatile" + } + ] + }, + { + "type": "kotlinx.coroutines.internal.LockFreeLinkedListNode", + "fields": [ + { + "name": "_next$volatile" + }, + { + "name": "_prev$volatile" + }, + { + "name": "_removedRef$volatile" + } + ] + }, + { + "type": "kotlinx.coroutines.internal.LockFreeTaskQueue", + "fields": [ + { + "name": "_cur$volatile" + } + ] + }, + { + "type": "kotlinx.coroutines.internal.LockFreeTaskQueueCore", + "fields": [ + { + "name": "_next$volatile" + }, + { + "name": "_state$volatile" + } + ] + }, + { + "type": "kotlinx.coroutines.scheduling.CoroutineScheduler", + "fields": [ + { + "name": "_isTerminated$volatile" + }, + { + "name": "controlState$volatile" + }, + { + "name": "parkedWorkersStack$volatile" + } + ] + }, + { + "type": "libcore.io.Memory" + }, + { + "type": "org.pkl.core.runtime.VmFileDetector" + }, + { + "type": "org.pkl.core.runtime.VmLanguageProvider" + }, + { + "type": "org.sqlite.JDBC" + }, + { + "type": "picocli.CommandLine$AutoHelpMixin", + "allDeclaredFields": true + }, + { + "type": "sun.misc.Unsafe", + "allDeclaredFields": true, + "methods": [ + { + "name": "invokeCleaner", + "parameterTypes": [ + "java.nio.ByteBuffer" + ] + } + ] + }, + { + "type": "sun.security.provider.NativePRNG", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.security.SecureRandomParameters" + ] + } + ] + }, + { + "type": "tools.elide.data.Encoding" + }, + { + "type": "tools.elide.vfs.Directory", + "methods": [ + { + "name": "getChildrenList", + "parameterTypes": [] + }, + { + "name": "getName", + "parameterTypes": [] + } + ] + }, + { + "type": "tools.elide.vfs.Directory$Builder" + }, + { + "type": "tools.elide.vfs.File", + "methods": [ + { + "name": "getCompressed", + "parameterTypes": [] + }, + { + "name": "getDefaultInstance", + "parameterTypes": [] + }, + { + "name": "getEncodingValue", + "parameterTypes": [] + }, + { + "name": "getFileTypeCase", + "parameterTypes": [] + }, + { + "name": "getName", + "parameterTypes": [] + }, + { + "name": "getOffset", + "parameterTypes": [] + }, + { + "name": "getSize", + "parameterTypes": [] + }, + { + "name": "getTail", + "parameterTypes": [] + }, + { + "name": "hasFingerprint", + "parameterTypes": [] + }, + { + "name": "hasModified", + "parameterTypes": [] + }, + { + "name": "getModified" + }, + { + "name": "getFingerprint" + } + ] + }, + { + "type": "tools.elide.vfs.File$Builder" + }, + { + "type": "tools.elide.vfs.File$Fingerprint", + "methods": [ + { + "name": "newBuilder" + }, + { + "name": "getFingerprintCase" + }, + { + "name": "getHash" + }, + { + "name": "getCrc32" + }, + { + "name": "getAlgorithmValue" + } + ] + }, + { + "type": "tools.elide.vfs.File$Fingerprint$Builder", + "methods": [ + { + "name": "getCrc32" + }, + { + "name": "setCrc32", + "parameterTypes": [ + "long" + ] + }, + { + "name": "build" + } + ] + }, + { + "type": "tools.elide.vfs.File$FileFingerprint", + "methods": [ + { + "name": "getCompressed" + }, + { + "name": "getUncompressed" + }, + { + "name": "hasCompressed" + }, + { + "name": "hasUncompressed" + } + ] + }, + { + "type": "tools.elide.vfs.File$FileFingerprint$Builder", + "methods": [ + { + "name": "getCompressed" + }, + { + "name": "setCompressed", + "parameterTypes": [ + "long" + ] + }, + { + "name": "hasCompressed" + }, + { + "name": "hasUncompressed" + }, + { + "name": "getUncompressed" + }, + { + "name": "setUncompressed", + "parameterTypes": [ + "long" + ] + }, + { + "name": "build" + } + ] + }, + { + "type": "tools.elide.vfs.KnownMimeType" + }, + { + "type": "tools.elide.vfs.TreeEntry", + "methods": [ + { + "name": "getDirectory", + "parameterTypes": [] + }, + { + "name": "getEntryCase", + "parameterTypes": [] + }, + { + "name": "getFile", + "parameterTypes": [] + }, + { + "name": "hasParent", + "parameterTypes": [] + } + ] + }, + { + "type": "tools.elide.vfs.TreeEntry$Builder" + } + ], + "resources": [ + { + "glob": "META-INF/services/com.oracle.graal.python.builtins.PythonBuiltins" + }, + { + "glob": "org/graalvm/shadowed/com/ibm/icu/ICUConfig.properties" + }, + { + "glob": "org/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/uprops.icu" + }, + { + "glob": "org/graalvm/shadowed/com/ibm/icu/impl/data/icudt74b/ulayout.icu" + }, + { + "module": "jdk.jfr", + "glob": "jdk/jfr/internal/query/view.ini" + }, + { + "glob": "kotlin/kotlin.kotlin_builtins" + }, + { + "condition": { + "typeReached": "com.sun.jna.platform.linux.Udev" + }, + "glob": "lib/linux-x86_64/libbrotli.so" + }, + { + "condition": { + "typeReached": "com.sun.jna.platform.linux.Udev" + }, + "glob": "com/sun/jna/linux-x86-64/libjnidispatch.so" + }, + { + "condition": { + "typeReached": "com.sun.jna.platform.mac.IOKit" + }, + "glob": "com/sun/jna/darwin-aarch64/libjnidispatch.jnilib" + }, + { + "glob": "oshi.properties" + }, + { + "glob": "org/pkl/commons/cli/PklCARoots.pem" + }, + { + "glob": "org/pkl/core/stdlib/*.pkl" + }, + { + "glob": "org/pkl/core/stdlib/**/*.*" + }, + { + "glob": "META-INF/services/java.net.spi.InetAddressResolverProvider" + }, + { + "glob": "org/jline/utils/*.caps" + }, + { + "glob": "sun/util/logging/resources/logging_en.properties", + "module": "java.logging" + }, + { + "glob": "sun/util/logging/resources/logging_en_US.properties", + "module": "java.logging" + }, + { + "glob": "META-INF/maven/org.jline/jline-native/pom.properties" + }, + { + "glob": "META-INF/elide/embedded/runtime/js/js.vfs.tar" + }, + { + "glob": "META-INF/elide/embedded/runtime/js/polyfills.js" + }, + { + "glob": "META-INF/elide/embedded/runtime/js/runtime.json.gz" + }, + { + "glob": "META-INF/elide/embedded/runtime/ts/runtime.json.gz" + }, + { + "glob": "META-INF/graalvm/org.graalvm.polyglot/version" + }, + { + "glob": "META-INF/graalvm/org.graalvm.truffle/version" + }, + { + "glob": "META-INF/maven/org.xerial/sqlite-jdbc/VERSION" + }, + { + "glob": "META-INF/maven/org.xerial/sqlite-jdbc/pom.properties" + }, + { + "glob": "META-INF/micronaut/" + }, + { + "glob": "META-INF/native/libnetty_transport_native_epoll_x86_64.so" + }, + { + "glob": "META-INF/native/libnetty_transport_native_io_uring_x86_64.so" + }, + { + "glob": "META-INF/resources/engine/libtruffleattach/linux/amd64/sha256" + }, + { + "glob": "META-INF/services/ch.qos.logback.classic.spi.Configurator" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.TruffleLanguage$Provider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.TruffleRuntimeAccess" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.impl.TruffleLocator" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.instrumentation.TruffleInstrument$Provider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.instrumentation.provider.TruffleInstrumentProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.library.DefaultExportProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.library.provider.DefaultExportProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.object.LayoutFactory" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.provider.InternalResourceProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.api.provider.TruffleLanguageProvider" + }, + { + "glob": "META-INF/services/com.oracle.truffle.js.runtime.Evaluator" + }, + { + "glob": "META-INF/services/com.oracle.truffle.runtime.EngineCacheSupport" + }, + { + "glob": "META-INF/services/com.oracle.truffle.runtime.FloodControlHandler" + }, + { + "glob": "META-INF/services/com.oracle.truffle.runtime.LoopNodeFactory" + }, + { + "glob": "META-INF/services/com.oracle.truffle.runtime.TruffleTypes" + }, + { + "glob": "META-INF/services/com.oracle.truffle.runtime.jfr.EventFactory$Provider" + }, + { + "glob": "META-INF/services/elide.runtime.intrinsics.GuestIntrinsic" + }, + { + "glob": "META-INF/services/io.micronaut.context.ApplicationContextConfigurer" + }, + { + "glob": "META-INF/services/io.micronaut.core.optim.StaticOptimizations$Loader" + }, + { + "glob": "META-INF/services/java.lang.System$LoggerFinder" + }, + { + "glob": "META-INF/services/java.nio.channels.spi.SelectorProvider" + }, + { + "glob": "META-INF/services/java.nio.file.spi.FileSystemProvider" + }, + { + "glob": "META-INF/services/java.nio.file.spi.FileTypeDetector" + }, + { + "glob": "META-INF/services/java.sql.Driver" + }, + { + "glob": "META-INF/services/java.time.zone.ZoneRulesProvider" + }, + { + "glob": "META-INF/services/java.util.spi.ResourceBundleControlProvider" + }, + { + "glob": "META-INF/services/org.graalvm.home.HomeFinder" + }, + { + "glob": "META-INF/services/org.graalvm.polyglot.impl.AbstractPolyglotImpl" + }, + { + "glob": "META-INF/services/org.slf4j.spi.SLF4JServiceProvider" + }, + { + "glob": "logback-test.scmo" + }, + { + "glob": "logback.scmo" + }, + { + "module": "java.base", + "glob": "sun/net/www/content-types.properties" + }, + { + "module": "jdk.jfr", + "glob": "jdk/jfr/internal/types/metadata.bin" + } + ], + "bundles": [ + { + "name":"ElideTool", + "locales":["en-US"] + }, + { + "name":"org.pkl.core.errorMessages", + "locales":["en"] + }, + { + "name":"sun.text.resources.BreakIteratorInfo", + "locales":["und"] + }, + { + "name":"sun.text.resources.BreakIteratorResources", + "locales":["en", "en-US", "und"] + }, + { + "name":"sun.text.resources.cldr.FormatData", + "locales":["en", "en-US", "und"] + }, + { + "name":"sun.util.resources.cldr.CalendarData", + "locales":["und"] + }, + { + "name":"sun.util.resources.cldr.TimeZoneNames", + "locales":["en", "en-US", "und"] + }, + { + "name": "com.sun.tools.javac.resources.compiler", + "locales": ["en"] + }, + { + "name": "sun.util.logging.resources.logging", + "locales": ["en", "en-US"] + }, + { + "name": "sun.tools.jar.resources.jar", + "locales": ["en"] + }, + { + "name": "com.sun.tools.javac.resources.javac", + "locales": ["en"] + } + ], + "serialization": [ + { + "type": "ch.qos.logback.classic.model.ConfigurationModel" + }, + { + "type": "ch.qos.logback.classic.model.ContextNameModel" + }, + { + "type": "ch.qos.logback.classic.model.LoggerContextListenerModel" + }, + { + "type": "ch.qos.logback.classic.model.LoggerModel" + }, + { + "type": "ch.qos.logback.classic.model.RootLoggerModel" + }, + { + "type": "ch.qos.logback.core.model.AppenderModel" + }, + { + "type": "ch.qos.logback.core.model.AppenderRefModel" + }, + { + "type": "ch.qos.logback.core.model.ComponentModel" + }, + { + "type": "ch.qos.logback.core.model.ImplicitModel" + }, + { + "type": "ch.qos.logback.core.model.Model" + }, + { + "type": "ch.qos.logback.core.model.NamedComponentModel" + }, + { + "type": "ch.qos.logback.core.model.NamedModel" + }, + { + "type": "ch.qos.logback.core.model.PropertyModel" + }, + { + "type": "ch.qos.logback.core.model.SerializeModelModel" + }, + { + "type": "ch.qos.logback.core.model.SiftModel" + }, + { + "type": "ch.qos.logback.core.model.StatusListenerModel" + }, + { + "type": "java.util.ArrayList" + } + ], + "jni": [ + { + "type": "oshi.software.os.linux.LinuxOperatingSystem", + "methods": [ + { + "name": "" + } + ] + }, + { + "type": "org.sqlite.BusyHandler", + "methods": [ + { + "name": "" + }, + { + "name": "callback", + "parameterTypes": [ + "int" + ] + } + ] + }, + { + "type": "[B" + }, + { + "type": "[J" + }, + { + "type": "[Z" + }, + { + "type": "[[J" + }, + { + "type": "io.netty.channel.ChannelException" + }, + { + "type": "io.netty.channel.DefaultFileRegion", + "fields": [ + { + "name": "file" + }, + { + "name": "transferred" + } + ] + }, + { + "type": "io.netty.channel.epoll.LinuxSocket" + }, + { + "type": "io.netty.channel.epoll.Native" + }, + { + "type": "io.netty.channel.epoll.NativeDatagramPacketArray$NativeDatagramPacket", + "fields": [ + { + "name": "count" + }, + { + "name": "memoryAddress" + }, + { + "name": "recipientAddr" + }, + { + "name": "recipientAddrLen" + }, + { + "name": "recipientPort" + }, + { + "name": "recipientScopeId" + }, + { + "name": "segmentSize" + }, + { + "name": "senderAddr" + }, + { + "name": "senderAddrLen" + }, + { + "name": "senderPort" + }, + { + "name": "senderScopeId" + } + ] + }, + { + "type": "io.netty.channel.epoll.NativeStaticallyReferencedJniMethods" + }, + { + "type": "io.netty.channel.unix.Buffer" + }, + { + "type": "io.netty.channel.unix.DatagramSocketAddress", + "methods": [ + { + "name": "", + "parameterTypes": [ + "byte[]", + "int", + "int", + "int", + "io.netty.channel.unix.DatagramSocketAddress" + ] + } + ] + }, + { + "type": "io.netty.channel.unix.DomainDatagramSocketAddress", + "methods": [ + { + "name": "", + "parameterTypes": [ + "byte[]", + "int", + "io.netty.channel.unix.DomainDatagramSocketAddress" + ] + } + ] + }, + { + "type": "io.netty.channel.unix.ErrorsStaticallyReferencedJniMethods" + }, + { + "type": "io.netty.channel.unix.FileDescriptor" + }, + { + "type": "io.netty.channel.unix.LimitsStaticallyReferencedJniMethods" + }, + { + "type": "io.netty.channel.unix.PeerCredentials", + "methods": [ + { + "name": "", + "parameterTypes": [ + "int", + "int", + "int[]" + ] + } + ] + }, + { + "type": "io.netty.channel.unix.Socket" + }, + { + "type": "io.netty.incubator.channel.uring.LinuxSocket" + }, + { + "type": "io.netty.incubator.channel.uring.Native" + }, + { + "type": "io.netty.incubator.channel.uring.NativeStaticallyReferencedJniMethods" + }, + { + "type": "io.netty.internal.tcnative.Buffer" + }, + { + "type": "io.netty.internal.tcnative.CertificateCallbackTask", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "byte[]", + "byte[][]", + "io.netty.internal.tcnative.CertificateCallback" + ] + } + ] + }, + { + "type": "io.netty.internal.tcnative.CertificateVerifierTask", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "byte[][]", + "java.lang.String", + "io.netty.internal.tcnative.CertificateVerifier" + ] + } + ] + }, + { + "type": "io.netty.internal.tcnative.Library" + }, + { + "type": "io.netty.internal.tcnative.NativeStaticallyReferencedJniMethods" + }, + { + "type": "io.netty.internal.tcnative.SSL" + }, + { + "type": "io.netty.internal.tcnative.SSLContext" + }, + { + "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodDecryptTask", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "byte[]", + "io.netty.internal.tcnative.AsyncSSLPrivateKeyMethod" + ] + } + ] + }, + { + "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodSignTask", + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "int", + "byte[]", + "io.netty.internal.tcnative.AsyncSSLPrivateKeyMethod" + ] + } + ] + }, + { + "type": "io.netty.internal.tcnative.SSLPrivateKeyMethodTask", + "fields": [ + { + "name": "resultBytes" + } + ] + }, + { + "type": "io.netty.internal.tcnative.SSLSession" + }, + { + "type": "io.netty.internal.tcnative.SSLTask", + "fields": [ + { + "name": "complete" + }, + { + "name": "returnValue" + } + ] + }, + { + "type": "java.io.FileDescriptor", + "fields": [ + { + "name": "fd" + } + ] + }, + { + "type": "java.io.IOException" + }, + { + "type": "java.lang.Boolean", + "methods": [ + { + "name": "getBoolean", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "java.lang.Class", + "methods": [ + { + "name": "getClassLoader", + "parameterTypes": [] + } + ] + }, + { + "type": "java.lang.ClassLoader", + "methods": [ + { + "name": "loadClass", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "java.lang.Exception" + }, + { + "type": "java.lang.IllegalArgumentException" + }, + { + "type": "java.lang.NullPointerException" + }, + { + "type": "java.lang.OutOfMemoryError" + }, + { + "type": "java.lang.RuntimeException" + }, + { + "type": "java.lang.String", + "methods": [ + { + "name": "", + "parameterTypes": [ + "byte[]" + ] + }, + { + "name": "getBytes", + "parameterTypes": [] + } + ] + }, + { + "type": "java.lang.Throwable", + "methods": [ + { + "name": "toString", + "parameterTypes": [] + } + ] + }, + { + "type": "java.net.InetSocketAddress", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.lang.String", + "int" + ] + } + ] + }, + { + "type": "java.net.PortUnreachableException" + }, + { + "type": "java.nio.Buffer", + "fields": [ + { + "name": "limit" + }, + { + "name": "position" + } + ], + "methods": [ + { + "name": "limit", + "parameterTypes": [] + }, + { + "name": "position", + "parameterTypes": [] + } + ] + }, + { + "type": "java.nio.DirectByteBuffer" + }, + { + "type": "org.sqlite.Collation", + "methods": [ + { + "name": "xCompare", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ] + } + ] + }, + { + "type": "org.sqlite.Function", + "fields": [ + { + "name": "args" + }, + { + "name": "context" + }, + { + "name": "value" + } + ], + "methods": [ + { + "name": "xFunc", + "parameterTypes": [] + } + ] + }, + { + "type": "org.sqlite.Function$Aggregate", + "methods": [ + { + "name": "clone", + "parameterTypes": [] + }, + { + "name": "xFinal", + "parameterTypes": [] + }, + { + "name": "xStep", + "parameterTypes": [] + } + ] + }, + { + "type": "org.sqlite.Function$Window", + "methods": [ + { + "name": "xInverse", + "parameterTypes": [] + }, + { + "name": "xValue", + "parameterTypes": [] + } + ] + }, + { + "type": "org.sqlite.ProgressHandler", + "methods": [ + { + "name": "progress", + "parameterTypes": [] + } + ] + }, + { + "type": "org.sqlite.core.DB", + "methods": [ + { + "name": "onCommit", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "onUpdate", + "parameterTypes": [ + "int", + "java.lang.String", + "java.lang.String", + "long" + ] + }, + { + "name": "throwex", + "parameterTypes": [] + }, + { + "name": "throwex", + "parameterTypes": [ + "int" + ] + } + ] + }, + { + "type": "org.sqlite.core.DB$ProgressObserver", + "methods": [ + { + "name": "progress", + "parameterTypes": [ + "int", + "int" + ] + } + ] + }, + { + "type": "org.sqlite.core.NativeDB", + "fields": [ + { + "name": "busyHandler" + }, + { + "name": "commitListener" + }, + { + "name": "pointer" + }, + { + "name": "progressHandler" + }, + { + "name": "updateListener" + } + ], + "methods": [ + { + "name": "stringToUtf8ByteArray", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "throwex", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + } + ] +} diff --git a/packages/graalvm/src/test/kotlin/elide/runtime/gvm/internals/js/JsTimersTest.kt b/packages/graalvm/src/test/kotlin/elide/runtime/gvm/internals/js/JsTimersTest.kt index 8f34cbc477..d4a12720ab 100644 --- a/packages/graalvm/src/test/kotlin/elide/runtime/gvm/internals/js/JsTimersTest.kt +++ b/packages/graalvm/src/test/kotlin/elide/runtime/gvm/internals/js/JsTimersTest.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -133,7 +133,7 @@ import elide.testing.annotations.TestCase latch.await() assertNotEquals(-1, stopped.get()) assertTrue(stopped.get() - now >= 1000) - assertTrue(stopped.get() - now < 1100) + assertTrue(stopped.get() - now <= 1100) } @Test fun `test setTimeout() cancel before run`() = withContext { diff --git a/packages/graalvm/src/test/kotlin/elide/runtime/gvm/js/polyfills/JsAbortControllerTest.kt b/packages/graalvm/src/test/kotlin/elide/runtime/gvm/js/polyfills/JsAbortControllerTest.kt index 5a7bd52ae8..c98d37c5de 100644 --- a/packages/graalvm/src/test/kotlin/elide/runtime/gvm/js/polyfills/JsAbortControllerTest.kt +++ b/packages/graalvm/src/test/kotlin/elide/runtime/gvm/js/polyfills/JsAbortControllerTest.kt @@ -98,10 +98,6 @@ import elide.testing.annotations.TestCase }.guest { // language=JavaScript """ - test(AbortSignal).isNotNull(); - test(AbortSignal.abort).isNotNull(); - test(AbortSignal.abort()).isNotNull(); - test(AbortSignal.abort().aborted).isNotNull(); test(AbortSignal.abort().aborted === true).isEqualTo(true); """ } diff --git a/packages/graalvm/src/test/kotlin/elide/runtime/node/NodeOsTest.kt b/packages/graalvm/src/test/kotlin/elide/runtime/node/NodeOsTest.kt index 280ff0bb04..f015f2b42b 100644 --- a/packages/graalvm/src/test/kotlin/elide/runtime/node/NodeOsTest.kt +++ b/packages/graalvm/src/test/kotlin/elide/runtime/node/NodeOsTest.kt @@ -14,6 +14,7 @@ package elide.runtime.node +import org.graalvm.nativeimage.ImageInfo import org.graalvm.polyglot.Value import org.graalvm.polyglot.proxy.ProxyExecutable import org.graalvm.polyglot.proxy.ProxyObject @@ -125,6 +126,9 @@ internal class NodeOsTest : NodeModuleConformanceTest } }, dynamicTest("member '$member' should not throw") { + Assumptions.assumeTrue( + !ImageInfo.inImageRuntimeCode() + ) Assumptions.assumeTrue( member !in suppressedMembers, "member '$member' is suppressed", @@ -198,15 +202,19 @@ internal class NodeOsTest : NodeModuleConformanceTest """ } - @Test fun `os availableParallelism() should return expected value for current host`() = conforms { - assertNotNull(acquire().availableParallelism(), "should not get `null` from `os.availableParallelism()`") - }.guest { - // language=javascript - """ + @Test fun `os availableParallelism() should return expected value for current host`() { + Assumptions.assumeTrue(!ImageInfo.inImageCode()) + + conforms { + assertNotNull(acquire().availableParallelism(), "should not get `null` from `os.availableParallelism()`") + }.guest { + // language=javascript + """ const { equal } = require("assert"); const { availableParallelism } = require("os"); equal(availableParallelism(), '${acquire().availableParallelism()}'); """ + } } @Test fun `os endianness() should return expected value for current host`() = conforms { @@ -232,23 +240,27 @@ internal class NodeOsTest : NodeModuleConformanceTest """ } - @Test fun `os cpus() should return expected value for current host`() = conforms { - val cpus = acquire().cpus() - assertNotNull(cpus, "should not get `null` from `os.cpus()`") - assertTrue(cpus.isNotEmpty()) - cpus.forEach { cpu -> - assertNotNull(cpu.model, "should not get `null` from `cpu.model`") - assertNotNull(cpu.speed, "should not get `null` from `cpu.speed`") - assertNotNull(cpu.times, "should not get `null` from `cpu.times`") - } - }.guest { - // language=javascript - """ + @Test fun `os cpus() should return expected value for current host`() { + Assumptions.assumeTrue(!ImageInfo.inImageCode()) + + conforms { + val cpus = acquire().cpus() + assertNotNull(cpus, "should not get `null` from `os.cpus()`") + assertTrue(cpus.isNotEmpty()) + cpus.forEach { cpu -> + assertNotNull(cpu.model, "should not get `null` from `cpu.model`") + assertNotNull(cpu.speed, "should not get `null` from `cpu.speed`") + assertNotNull(cpu.times, "should not get `null` from `cpu.times`") + } + }.guest { + // language=javascript + """ const { ok } = require("assert"); const { cpus } = require("os"); const allCpus = cpus(); ok(allCpus.length !== 0); """ + } } @Test fun `os homedir() should return expected value for current host`() = conforms { @@ -343,36 +355,40 @@ internal class NodeOsTest : NodeModuleConformanceTest """ } - @Test fun `os networkInterfaces() should return expected value for current host`() = conforms { - val nics: Map>? = acquire().networkInterfaces() - assertNotNull(nics, "should not get `null` from `os.networkInterfaces()`") - assertTrue(nics.isNotEmpty()) - nics.entries.forEach { entry -> - assertNotNull(entry.key, "should not get `null` from NIC name as map key") - assertTrue(entry.key.isNotEmpty(), "NIC name should not be empty") - entry.value.forEach { nicAddr -> - assertNotNull(nicAddr.address) - assertNotNull(nicAddr.netmask) - assertNotNull(nicAddr.family) - assertNotNull(nicAddr.mac) - assertNotNull(nicAddr.internal) - assertNotNull(nicAddr.cidr) - - assertNotEquals(nicAddr.address, "") - assertNotEquals(nicAddr.family, "") - assertNotEquals(nicAddr.mac, "") - assertNotEquals(nicAddr.netmask, "") - assertNotEquals(nicAddr.cidr, "") + @Test fun `os networkInterfaces() should return expected value for current host`() { + Assumptions.assumeTrue(!ImageInfo.inImageCode()) + + conforms { + val nics: Map>? = acquire().networkInterfaces() + assertNotNull(nics, "should not get `null` from `os.networkInterfaces()`") + assertTrue(nics.isNotEmpty()) + nics.entries.forEach { entry -> + assertNotNull(entry.key, "should not get `null` from NIC name as map key") + assertTrue(entry.key.isNotEmpty(), "NIC name should not be empty") + entry.value.forEach { nicAddr -> + assertNotNull(nicAddr.address) + assertNotNull(nicAddr.netmask) + assertNotNull(nicAddr.family) + assertNotNull(nicAddr.mac) + assertNotNull(nicAddr.internal) + assertNotNull(nicAddr.cidr) + + assertNotEquals(nicAddr.address, "") + assertNotEquals(nicAddr.family, "") + assertNotEquals(nicAddr.mac, "") + assertNotEquals(nicAddr.netmask, "") + assertNotEquals(nicAddr.cidr, "") + } } - } - }.guest { - // language=javascript - """ + }.guest { + // language=javascript + """ const { ok } = require("assert"); const { networkInterfaces } = require("os"); const nics = networkInterfaces(); ok(Object.keys(nics).length !== 0); """ + } } @Test fun `os userInfo() should return expected value for current host`() = conforms { diff --git a/packages/graalvm/src/test/resources/META-INF/native-image/reachability-metadata.json b/packages/graalvm/src/test/resources/META-INF/native-image/reachability-metadata.json new file mode 100644 index 0000000000..bfab5c9ea0 --- /dev/null +++ b/packages/graalvm/src/test/resources/META-INF/native-image/reachability-metadata.json @@ -0,0 +1,79 @@ +{ + "reflection": [ + { + "type": "elide.runtime.gvm.internals.AbstractDualTest$TestAssertion" + }, + { + "type": "elide.runtime.gvm.internals.js.AbstractJsIntrinsicTest$JsAssertion" + }, + { + "type": "elide.runtime.gvm.internals.js.AbstractJsIntrinsicTest$CaptureAssertion", + "methods": [ + { + "name": "apply", + "parameterTypes": [ + "java.lang.Object" + ] + } + ] + }, + { + "type": "elide.runtime.gvm.internals.AbstractDualTest$TestContext", + "methods": [ + { + "name": "isNotNull" + }, + { + "name": "shouldBeTrue" + }, + { + "name": "shouldBeFalse" + }, + { + "name": "isNull" + }, + { + "name": "isEqualTo" + }, + { + "name": "isNotEqualTo" + }, + { + "name": "fails" + }, + { + "name": "doesNotFail" + } + ] + }, + { + "type": "elide.runtime.gvm.internals.AbstractDualTest$TestResultContext", + "methods": [ + { + "name": "isNotNull" + }, + { + "name": "shouldBeTrue" + }, + { + "name": "shouldBeFalse" + }, + { + "name": "isNull" + }, + { + "name": "isEqualTo" + }, + { + "name": "isNotEqualTo" + }, + { + "name": "fails" + }, + { + "name": "doesNotFail" + } + ] + } + ] +} diff --git a/proto/README.md b/packages/proto/README.md similarity index 100% rename from proto/README.md rename to packages/proto/README.md diff --git a/proto/buf.lock b/packages/proto/buf.lock similarity index 100% rename from proto/buf.lock rename to packages/proto/buf.lock diff --git a/proto/buf.pb.bin b/packages/proto/buf.pb.bin similarity index 100% rename from proto/buf.pb.bin rename to packages/proto/buf.pb.bin diff --git a/proto/buf.pb.json.gz b/packages/proto/buf.pb.json.gz similarity index 100% rename from proto/buf.pb.json.gz rename to packages/proto/buf.pb.json.gz diff --git a/proto/buf.yaml b/packages/proto/buf.yaml similarity index 100% rename from proto/buf.yaml rename to packages/proto/buf.yaml diff --git a/proto/deps/elide.tar.gz b/packages/proto/deps/elide.tar.gz similarity index 100% rename from proto/deps/elide.tar.gz rename to packages/proto/deps/elide.tar.gz diff --git a/proto/deps/google.tar.gz b/packages/proto/deps/google.tar.gz similarity index 100% rename from proto/deps/google.tar.gz rename to packages/proto/deps/google.tar.gz diff --git a/proto/deps/openapiv2.tar.gz b/packages/proto/deps/openapiv2.tar.gz similarity index 100% rename from proto/deps/openapiv2.tar.gz rename to packages/proto/deps/openapiv2.tar.gz diff --git a/proto/deps/webutil.tar.gz b/packages/proto/deps/webutil.tar.gz similarity index 100% rename from proto/deps/webutil.tar.gz rename to packages/proto/deps/webutil.tar.gz diff --git a/proto/elide/app/app.proto b/packages/proto/elide/app/app.proto similarity index 100% rename from proto/elide/app/app.proto rename to packages/proto/elide/app/app.proto diff --git a/proto/elide/app/capability.proto b/packages/proto/elide/app/capability.proto similarity index 100% rename from proto/elide/app/capability.proto rename to packages/proto/elide/app/capability.proto diff --git a/proto/elide/app/config.proto b/packages/proto/elide/app/config.proto similarity index 100% rename from proto/elide/app/config.proto rename to packages/proto/elide/app/config.proto diff --git a/proto/elide/app/deployment.proto b/packages/proto/elide/app/deployment.proto similarity index 100% rename from proto/elide/app/deployment.proto rename to packages/proto/elide/app/deployment.proto diff --git a/proto/elide/app/domain.proto b/packages/proto/elide/app/domain.proto similarity index 100% rename from proto/elide/app/domain.proto rename to packages/proto/elide/app/domain.proto diff --git a/proto/elide/app/env.proto b/packages/proto/elide/app/env.proto similarity index 100% rename from proto/elide/app/env.proto rename to packages/proto/elide/app/env.proto diff --git a/proto/elide/app/identity.proto b/packages/proto/elide/app/identity.proto similarity index 100% rename from proto/elide/app/identity.proto rename to packages/proto/elide/app/identity.proto diff --git a/proto/elide/app/instance.proto b/packages/proto/elide/app/instance.proto similarity index 100% rename from proto/elide/app/instance.proto rename to packages/proto/elide/app/instance.proto diff --git a/proto/elide/app/io.proto b/packages/proto/elide/app/io.proto similarity index 100% rename from proto/elide/app/io.proto rename to packages/proto/elide/app/io.proto diff --git a/proto/elide/app/isolation.proto b/packages/proto/elide/app/isolation.proto similarity index 100% rename from proto/elide/app/isolation.proto rename to packages/proto/elide/app/isolation.proto diff --git a/proto/elide/app/namespace.proto b/packages/proto/elide/app/namespace.proto similarity index 100% rename from proto/elide/app/namespace.proto rename to packages/proto/elide/app/namespace.proto diff --git a/proto/elide/app/region.proto b/packages/proto/elide/app/region.proto similarity index 100% rename from proto/elide/app/region.proto rename to packages/proto/elide/app/region.proto diff --git a/proto/elide/app/secret.proto b/packages/proto/elide/app/secret.proto similarity index 100% rename from proto/elide/app/secret.proto rename to packages/proto/elide/app/secret.proto diff --git a/proto/elide/assets/bundle.fbs b/packages/proto/elide/assets/bundle.fbs similarity index 100% rename from proto/elide/assets/bundle.fbs rename to packages/proto/elide/assets/bundle.fbs diff --git a/proto/elide/assets/bundle.proto b/packages/proto/elide/assets/bundle.proto similarity index 100% rename from proto/elide/assets/bundle.proto rename to packages/proto/elide/assets/bundle.proto diff --git a/proto/elide/assets/embedded.capnp b/packages/proto/elide/assets/embedded.capnp similarity index 100% rename from proto/elide/assets/embedded.capnp rename to packages/proto/elide/assets/embedded.capnp diff --git a/proto/elide/assets/embedded.fbs b/packages/proto/elide/assets/embedded.fbs similarity index 100% rename from proto/elide/assets/embedded.fbs rename to packages/proto/elide/assets/embedded.fbs diff --git a/proto/elide/assets/embedded.proto b/packages/proto/elide/assets/embedded.proto similarity index 100% rename from proto/elide/assets/embedded.proto rename to packages/proto/elide/assets/embedded.proto diff --git a/proto/elide/base/language.capnp b/packages/proto/elide/base/language.capnp similarity index 100% rename from proto/elide/base/language.capnp rename to packages/proto/elide/base/language.capnp diff --git a/proto/elide/base/language.fbs b/packages/proto/elide/base/language.fbs similarity index 100% rename from proto/elide/base/language.fbs rename to packages/proto/elide/base/language.fbs diff --git a/proto/elide/base/language.proto b/packages/proto/elide/base/language.proto similarity index 100% rename from proto/elide/base/language.proto rename to packages/proto/elide/base/language.proto diff --git a/proto/elide/call/call.capnp b/packages/proto/elide/call/call.capnp similarity index 100% rename from proto/elide/call/call.capnp rename to packages/proto/elide/call/call.capnp diff --git a/proto/elide/call/call.fbs b/packages/proto/elide/call/call.fbs similarity index 100% rename from proto/elide/call/call.fbs rename to packages/proto/elide/call/call.fbs diff --git a/proto/elide/call/call.proto b/packages/proto/elide/call/call.proto similarity index 100% rename from proto/elide/call/call.proto rename to packages/proto/elide/call/call.proto diff --git a/proto/elide/call/v1alpha1/call_api.proto b/packages/proto/elide/call/v1alpha1/call_api.proto similarity index 100% rename from proto/elide/call/v1alpha1/call_api.proto rename to packages/proto/elide/call/v1alpha1/call_api.proto diff --git a/proto/elide/cli/tool.fbs b/packages/proto/elide/cli/tool.fbs similarity index 100% rename from proto/elide/cli/tool.fbs rename to packages/proto/elide/cli/tool.fbs diff --git a/proto/elide/cli/tool.proto b/packages/proto/elide/cli/tool.proto similarity index 100% rename from proto/elide/cli/tool.proto rename to packages/proto/elide/cli/tool.proto diff --git a/proto/elide/control/host.capnp b/packages/proto/elide/control/host.capnp similarity index 100% rename from proto/elide/control/host.capnp rename to packages/proto/elide/control/host.capnp diff --git a/proto/elide/control/host.fbs b/packages/proto/elide/control/host.fbs similarity index 100% rename from proto/elide/control/host.fbs rename to packages/proto/elide/control/host.fbs diff --git a/proto/elide/control/host.proto b/packages/proto/elide/control/host.proto similarity index 100% rename from proto/elide/control/host.proto rename to packages/proto/elide/control/host.proto diff --git a/proto/elide/control/v1alpha1/host_api.proto b/packages/proto/elide/control/v1alpha1/host_api.proto similarity index 100% rename from proto/elide/control/v1alpha1/host_api.proto rename to packages/proto/elide/control/v1alpha1/host_api.proto diff --git a/proto/elide/crypto/crypto.capnp b/packages/proto/elide/crypto/crypto.capnp similarity index 100% rename from proto/elide/crypto/crypto.capnp rename to packages/proto/elide/crypto/crypto.capnp diff --git a/proto/elide/crypto/crypto.fbs b/packages/proto/elide/crypto/crypto.fbs similarity index 100% rename from proto/elide/crypto/crypto.fbs rename to packages/proto/elide/crypto/crypto.fbs diff --git a/proto/elide/crypto/crypto.proto b/packages/proto/elide/crypto/crypto.proto similarity index 100% rename from proto/elide/crypto/crypto.proto rename to packages/proto/elide/crypto/crypto.proto diff --git a/proto/elide/crypto/symmetric.proto b/packages/proto/elide/crypto/symmetric.proto similarity index 100% rename from proto/elide/crypto/symmetric.proto rename to packages/proto/elide/crypto/symmetric.proto diff --git a/proto/elide/crypto/tls.capnp b/packages/proto/elide/crypto/tls.capnp similarity index 100% rename from proto/elide/crypto/tls.capnp rename to packages/proto/elide/crypto/tls.capnp diff --git a/proto/elide/crypto/tls.fbs b/packages/proto/elide/crypto/tls.fbs similarity index 100% rename from proto/elide/crypto/tls.fbs rename to packages/proto/elide/crypto/tls.fbs diff --git a/proto/elide/crypto/tls.proto b/packages/proto/elide/crypto/tls.proto similarity index 100% rename from proto/elide/crypto/tls.proto rename to packages/proto/elide/crypto/tls.proto diff --git a/proto/elide/data/data.capnp b/packages/proto/elide/data/data.capnp similarity index 100% rename from proto/elide/data/data.capnp rename to packages/proto/elide/data/data.capnp diff --git a/proto/elide/data/data.fbs b/packages/proto/elide/data/data.fbs similarity index 100% rename from proto/elide/data/data.fbs rename to packages/proto/elide/data/data.fbs diff --git a/proto/elide/data/data.proto b/packages/proto/elide/data/data.proto similarity index 100% rename from proto/elide/data/data.proto rename to packages/proto/elide/data/data.proto diff --git a/proto/elide/data/encoding.capnp b/packages/proto/elide/data/encoding.capnp similarity index 100% rename from proto/elide/data/encoding.capnp rename to packages/proto/elide/data/encoding.capnp diff --git a/proto/elide/data/encoding.fbs b/packages/proto/elide/data/encoding.fbs similarity index 100% rename from proto/elide/data/encoding.fbs rename to packages/proto/elide/data/encoding.fbs diff --git a/proto/elide/data/encoding.proto b/packages/proto/elide/data/encoding.proto similarity index 100% rename from proto/elide/data/encoding.proto rename to packages/proto/elide/data/encoding.proto diff --git a/proto/elide/data/secrets/token.fbs b/packages/proto/elide/data/secrets/token.fbs similarity index 100% rename from proto/elide/data/secrets/token.fbs rename to packages/proto/elide/data/secrets/token.fbs diff --git a/proto/elide/data/secrets/token.proto b/packages/proto/elide/data/secrets/token.proto similarity index 100% rename from proto/elide/data/secrets/token.proto rename to packages/proto/elide/data/secrets/token.proto diff --git a/proto/elide/db/db.proto b/packages/proto/elide/db/db.proto similarity index 100% rename from proto/elide/db/db.proto rename to packages/proto/elide/db/db.proto diff --git a/proto/elide/deps/dependency.proto b/packages/proto/elide/deps/dependency.proto similarity index 100% rename from proto/elide/deps/dependency.proto rename to packages/proto/elide/deps/dependency.proto diff --git a/proto/elide/deps/deps.proto b/packages/proto/elide/deps/deps.proto similarity index 100% rename from proto/elide/deps/deps.proto rename to packages/proto/elide/deps/deps.proto diff --git a/proto/elide/deps/ecosystem.proto b/packages/proto/elide/deps/ecosystem.proto similarity index 100% rename from proto/elide/deps/ecosystem.proto rename to packages/proto/elide/deps/ecosystem.proto diff --git a/proto/elide/deps/scope.proto b/packages/proto/elide/deps/scope.proto similarity index 100% rename from proto/elide/deps/scope.proto rename to packages/proto/elide/deps/scope.proto diff --git a/proto/elide/http/http.capnp b/packages/proto/elide/http/http.capnp similarity index 100% rename from proto/elide/http/http.capnp rename to packages/proto/elide/http/http.capnp diff --git a/proto/elide/http/http.fbs b/packages/proto/elide/http/http.fbs similarity index 100% rename from proto/elide/http/http.fbs rename to packages/proto/elide/http/http.fbs diff --git a/proto/elide/http/http.proto b/packages/proto/elide/http/http.proto similarity index 100% rename from proto/elide/http/http.proto rename to packages/proto/elide/http/http.proto diff --git a/proto/elide/kv/kv.proto b/packages/proto/elide/kv/kv.proto similarity index 100% rename from proto/elide/kv/kv.proto rename to packages/proto/elide/kv/kv.proto diff --git a/proto/elide/machine/arch.proto b/packages/proto/elide/machine/arch.proto similarity index 100% rename from proto/elide/machine/arch.proto rename to packages/proto/elide/machine/arch.proto diff --git a/proto/elide/machine/cpu.proto b/packages/proto/elide/machine/cpu.proto similarity index 100% rename from proto/elide/machine/cpu.proto rename to packages/proto/elide/machine/cpu.proto diff --git a/proto/elide/machine/device.proto b/packages/proto/elide/machine/device.proto similarity index 100% rename from proto/elide/machine/device.proto rename to packages/proto/elide/machine/device.proto diff --git a/proto/elide/machine/disk.proto b/packages/proto/elide/machine/disk.proto similarity index 100% rename from proto/elide/machine/disk.proto rename to packages/proto/elide/machine/disk.proto diff --git a/proto/elide/machine/machine.proto b/packages/proto/elide/machine/machine.proto similarity index 100% rename from proto/elide/machine/machine.proto rename to packages/proto/elide/machine/machine.proto diff --git a/proto/elide/machine/memory.proto b/packages/proto/elide/machine/memory.proto similarity index 100% rename from proto/elide/machine/memory.proto rename to packages/proto/elide/machine/memory.proto diff --git a/proto/elide/machine/os.proto b/packages/proto/elide/machine/os.proto similarity index 100% rename from proto/elide/machine/os.proto rename to packages/proto/elide/machine/os.proto diff --git a/proto/elide/meta/app.fbs b/packages/proto/elide/meta/app.fbs similarity index 100% rename from proto/elide/meta/app.fbs rename to packages/proto/elide/meta/app.fbs diff --git a/proto/elide/meta/app.proto b/packages/proto/elide/meta/app.proto similarity index 100% rename from proto/elide/meta/app.proto rename to packages/proto/elide/meta/app.proto diff --git a/proto/elide/meta/guest.fbs b/packages/proto/elide/meta/guest.fbs similarity index 100% rename from proto/elide/meta/guest.fbs rename to packages/proto/elide/meta/guest.fbs diff --git a/proto/elide/meta/guest.proto b/packages/proto/elide/meta/guest.proto similarity index 100% rename from proto/elide/meta/guest.proto rename to packages/proto/elide/meta/guest.proto diff --git a/proto/elide/meta/syntax.fbs b/packages/proto/elide/meta/syntax.fbs similarity index 100% rename from proto/elide/meta/syntax.fbs rename to packages/proto/elide/meta/syntax.fbs diff --git a/proto/elide/meta/syntax.proto b/packages/proto/elide/meta/syntax.proto similarity index 100% rename from proto/elide/meta/syntax.proto rename to packages/proto/elide/meta/syntax.proto diff --git a/proto/elide/model/model.proto b/packages/proto/elide/model/model.proto similarity index 100% rename from proto/elide/model/model.proto rename to packages/proto/elide/model/model.proto diff --git a/proto/elide/net/dns.proto b/packages/proto/elide/net/dns.proto similarity index 100% rename from proto/elide/net/dns.proto rename to packages/proto/elide/net/dns.proto diff --git a/proto/elide/net/domain.proto b/packages/proto/elide/net/domain.proto similarity index 100% rename from proto/elide/net/domain.proto rename to packages/proto/elide/net/domain.proto diff --git a/proto/elide/net/ip.proto b/packages/proto/elide/net/ip.proto similarity index 100% rename from proto/elide/net/ip.proto rename to packages/proto/elide/net/ip.proto diff --git a/proto/elide/net/network.proto b/packages/proto/elide/net/network.proto similarity index 100% rename from proto/elide/net/network.proto rename to packages/proto/elide/net/network.proto diff --git a/proto/elide/net/port.proto b/packages/proto/elide/net/port.proto similarity index 100% rename from proto/elide/net/port.proto rename to packages/proto/elide/net/port.proto diff --git a/proto/elide/net/protocol.proto b/packages/proto/elide/net/protocol.proto similarity index 100% rename from proto/elide/net/protocol.proto rename to packages/proto/elide/net/protocol.proto diff --git a/proto/elide/net/service.proto b/packages/proto/elide/net/service.proto similarity index 100% rename from proto/elide/net/service.proto rename to packages/proto/elide/net/service.proto diff --git a/proto/elide/page/media.fbs b/packages/proto/elide/page/media.fbs similarity index 100% rename from proto/elide/page/media.fbs rename to packages/proto/elide/page/media.fbs diff --git a/proto/elide/page/media.proto b/packages/proto/elide/page/media.proto similarity index 100% rename from proto/elide/page/media.proto rename to packages/proto/elide/page/media.proto diff --git a/proto/elide/page/page.fbs b/packages/proto/elide/page/page.fbs similarity index 100% rename from proto/elide/page/page.fbs rename to packages/proto/elide/page/page.fbs diff --git a/proto/elide/page/page.proto b/packages/proto/elide/page/page.proto similarity index 100% rename from proto/elide/page/page.proto rename to packages/proto/elide/page/page.proto diff --git a/proto/elide/page/semantic.fbs b/packages/proto/elide/page/semantic.fbs similarity index 100% rename from proto/elide/page/semantic.fbs rename to packages/proto/elide/page/semantic.fbs diff --git a/proto/elide/page/semantic.proto b/packages/proto/elide/page/semantic.proto similarity index 100% rename from proto/elide/page/semantic.proto rename to packages/proto/elide/page/semantic.proto diff --git a/proto/elide/std/hash.capnp b/packages/proto/elide/std/hash.capnp similarity index 100% rename from proto/elide/std/hash.capnp rename to packages/proto/elide/std/hash.capnp diff --git a/proto/elide/std/hash.fbs b/packages/proto/elide/std/hash.fbs similarity index 100% rename from proto/elide/std/hash.fbs rename to packages/proto/elide/std/hash.fbs diff --git a/proto/elide/std/hash.proto b/packages/proto/elide/std/hash.proto similarity index 100% rename from proto/elide/std/hash.proto rename to packages/proto/elide/std/hash.proto diff --git a/proto/elide/std/logging.capnp b/packages/proto/elide/std/logging.capnp similarity index 100% rename from proto/elide/std/logging.capnp rename to packages/proto/elide/std/logging.capnp diff --git a/proto/elide/std/logging.fbs b/packages/proto/elide/std/logging.fbs similarity index 100% rename from proto/elide/std/logging.fbs rename to packages/proto/elide/std/logging.fbs diff --git a/proto/elide/std/logging.proto b/packages/proto/elide/std/logging.proto similarity index 100% rename from proto/elide/std/logging.proto rename to packages/proto/elide/std/logging.proto diff --git a/proto/elide/std/temporal.capnp b/packages/proto/elide/std/temporal.capnp similarity index 100% rename from proto/elide/std/temporal.capnp rename to packages/proto/elide/std/temporal.capnp diff --git a/proto/elide/std/version.capnp b/packages/proto/elide/std/version.capnp similarity index 100% rename from proto/elide/std/version.capnp rename to packages/proto/elide/std/version.capnp diff --git a/proto/elide/std/version.fbs b/packages/proto/elide/std/version.fbs similarity index 100% rename from proto/elide/std/version.fbs rename to packages/proto/elide/std/version.fbs diff --git a/proto/elide/std/version.proto b/packages/proto/elide/std/version.proto similarity index 100% rename from proto/elide/std/version.proto rename to packages/proto/elide/std/version.proto diff --git a/proto/elide/stream/bytestream.capnp b/packages/proto/elide/stream/bytestream.capnp similarity index 100% rename from proto/elide/stream/bytestream.capnp rename to packages/proto/elide/stream/bytestream.capnp diff --git a/proto/elide/stream/bytestream.proto b/packages/proto/elide/stream/bytestream.proto similarity index 100% rename from proto/elide/stream/bytestream.proto rename to packages/proto/elide/stream/bytestream.proto diff --git a/proto/elide/structs/bloom.capnp b/packages/proto/elide/structs/bloom.capnp similarity index 100% rename from proto/elide/structs/bloom.capnp rename to packages/proto/elide/structs/bloom.capnp diff --git a/proto/elide/structs/bloom.fbs b/packages/proto/elide/structs/bloom.fbs similarity index 100% rename from proto/elide/structs/bloom.fbs rename to packages/proto/elide/structs/bloom.fbs diff --git a/proto/elide/structs/bloom.proto b/packages/proto/elide/structs/bloom.proto similarity index 100% rename from proto/elide/structs/bloom.proto rename to packages/proto/elide/structs/bloom.proto diff --git a/proto/elide/tools/coverage/coverage.proto b/packages/proto/elide/tools/coverage/coverage.proto similarity index 100% rename from proto/elide/tools/coverage/coverage.proto rename to packages/proto/elide/tools/coverage/coverage.proto diff --git a/proto/elide/tools/formatter/formatter.proto b/packages/proto/elide/tools/formatter/formatter.proto similarity index 100% rename from proto/elide/tools/formatter/formatter.proto rename to packages/proto/elide/tools/formatter/formatter.proto diff --git a/proto/elide/tools/linter/linter.proto b/packages/proto/elide/tools/linter/linter.proto similarity index 100% rename from proto/elide/tools/linter/linter.proto rename to packages/proto/elide/tools/linter/linter.proto diff --git a/proto/elide/tools/resolver/resolver.proto b/packages/proto/elide/tools/resolver/resolver.proto similarity index 100% rename from proto/elide/tools/resolver/resolver.proto rename to packages/proto/elide/tools/resolver/resolver.proto diff --git a/proto/elide/tools/runner/runner.proto b/packages/proto/elide/tools/runner/runner.proto similarity index 100% rename from proto/elide/tools/runner/runner.proto rename to packages/proto/elide/tools/runner/runner.proto diff --git a/proto/elide/tools/tool.proto b/packages/proto/elide/tools/tool.proto similarity index 100% rename from proto/elide/tools/tool.proto rename to packages/proto/elide/tools/tool.proto diff --git a/proto/elide/tools/tools.proto b/packages/proto/elide/tools/tools.proto similarity index 100% rename from proto/elide/tools/tools.proto rename to packages/proto/elide/tools/tools.proto diff --git a/proto/elide/vfs/bundle.fbs b/packages/proto/elide/vfs/bundle.fbs similarity index 100% rename from proto/elide/vfs/bundle.fbs rename to packages/proto/elide/vfs/bundle.fbs diff --git a/proto/elide/vfs/bundle.proto b/packages/proto/elide/vfs/bundle.proto similarity index 100% rename from proto/elide/vfs/bundle.proto rename to packages/proto/elide/vfs/bundle.proto diff --git a/proto/elide/vfs/config.fbs b/packages/proto/elide/vfs/config.fbs similarity index 100% rename from proto/elide/vfs/config.fbs rename to packages/proto/elide/vfs/config.fbs diff --git a/proto/elide/vfs/config.proto b/packages/proto/elide/vfs/config.proto similarity index 100% rename from proto/elide/vfs/config.proto rename to packages/proto/elide/vfs/config.proto diff --git a/proto/elide/vfs/file.fbs b/packages/proto/elide/vfs/file.fbs similarity index 100% rename from proto/elide/vfs/file.fbs rename to packages/proto/elide/vfs/file.fbs diff --git a/proto/elide/vfs/file.proto b/packages/proto/elide/vfs/file.proto similarity index 100% rename from proto/elide/vfs/file.proto rename to packages/proto/elide/vfs/file.proto diff --git a/proto/elide/vfs/tree.fbs b/packages/proto/elide/vfs/tree.fbs similarity index 100% rename from proto/elide/vfs/tree.fbs rename to packages/proto/elide/vfs/tree.fbs diff --git a/proto/elide/vfs/tree.proto b/packages/proto/elide/vfs/tree.proto similarity index 100% rename from proto/elide/vfs/tree.proto rename to packages/proto/elide/vfs/tree.proto diff --git a/proto/google/protobuf/duration.fbs b/packages/proto/google/protobuf/duration.fbs similarity index 100% rename from proto/google/protobuf/duration.fbs rename to packages/proto/google/protobuf/duration.fbs diff --git a/proto/google/protobuf/timestamp.fbs b/packages/proto/google/protobuf/timestamp.fbs similarity index 100% rename from proto/google/protobuf/timestamp.fbs rename to packages/proto/google/protobuf/timestamp.fbs diff --git a/proto/webutil/html/types/html.fbs b/packages/proto/webutil/html/types/html.fbs similarity index 100% rename from proto/webutil/html/types/html.fbs rename to packages/proto/webutil/html/types/html.fbs diff --git a/packages/server/api/server.api b/packages/server/api/server.api index c4b0de52c2..84e5bea8eb 100644 --- a/packages/server/api/server.api +++ b/packages/server/api/server.api @@ -24,14 +24,6 @@ public final class elide/server/Application$Initialization { public final fun initializeWithServer (Lkotlin/jvm/functions/Function1;)V } -public final class elide/server/AssetHandler : elide/server/BaseResponseHandler { - public fun (Lelide/server/assets/AssetType;Lelide/server/controller/ElideController;Lio/micronaut/http/HttpRequest;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;)V - public synthetic fun (Lelide/server/assets/AssetType;Lelide/server/controller/ElideController;Lio/micronaut/http/HttpRequest;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun assetType (Lelide/server/assets/AssetType;)V - public final fun module (Ljava/lang/String;Lelide/server/assets/AssetType;)V - public static synthetic fun module$default (Lelide/server/AssetHandler;Ljava/lang/String;Lelide/server/assets/AssetType;ILjava/lang/Object;)V -} - public abstract class elide/server/BaseResponseHandler : elide/server/ResponseHandler { public fun ()V public fun respond (Lio/micronaut/http/MutableHttpResponse;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -44,34 +36,19 @@ public final class elide/server/HtmlRenderer : elide/server/SuspensionRenderer { } public final class elide/server/PageExtensionsKt { - public static final fun script (Lkotlinx/html/BODY;Lelide/server/assets/AssetReference;ZZLjava/lang/String;Ljava/util/Map;)V public static final fun script (Lkotlinx/html/BODY;Ljava/lang/String;ZZLjava/lang/String;Ljava/util/Map;)V - public static final fun script (Lkotlinx/html/HEAD;Lelide/server/assets/AssetReference;ZZZLjava/lang/String;Ljava/util/Map;)V public static final fun script (Lkotlinx/html/HEAD;Ljava/lang/String;ZZLjava/lang/String;Ljava/util/Map;)V - public static synthetic fun script$default (Lkotlinx/html/BODY;Lelide/server/assets/AssetReference;ZZLjava/lang/String;Ljava/util/Map;ILjava/lang/Object;)V public static synthetic fun script$default (Lkotlinx/html/BODY;Ljava/lang/String;ZZLjava/lang/String;Ljava/util/Map;ILjava/lang/Object;)V - public static synthetic fun script$default (Lkotlinx/html/HEAD;Lelide/server/assets/AssetReference;ZZZLjava/lang/String;Ljava/util/Map;ILjava/lang/Object;)V public static synthetic fun script$default (Lkotlinx/html/HEAD;Ljava/lang/String;ZZLjava/lang/String;Ljava/util/Map;ILjava/lang/Object;)V - public static final fun stylesheet (Lkotlinx/html/HEAD;Lelide/server/assets/AssetReference;Ljava/lang/String;Ljava/util/SortedMap;)V public static final fun stylesheet (Lkotlinx/html/HEAD;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V - public static synthetic fun stylesheet$default (Lkotlinx/html/HEAD;Lelide/server/assets/AssetReference;Ljava/lang/String;Ljava/util/SortedMap;ILjava/lang/Object;)V public static synthetic fun stylesheet$default (Lkotlinx/html/HEAD;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)V } public final class elide/server/ResponseExtensionsKt { - public static final fun asset (Lelide/server/controller/PageController;Lio/micronaut/http/HttpRequest;Lelide/server/assets/AssetType;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static final fun asset (Lelide/server/controller/PageController;Lio/micronaut/http/HttpRequest;Ljava/lang/String;Lelide/server/assets/AssetType;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun asset$default (Lelide/server/controller/PageController;Lio/micronaut/http/HttpRequest;Lelide/server/assets/AssetType;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public static synthetic fun asset$default (Lelide/server/controller/PageController;Lio/micronaut/http/HttpRequest;Ljava/lang/String;Lelide/server/assets/AssetType;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public static final fun css (Lkotlin/jvm/functions/Function1;)Lio/micronaut/http/MutableHttpResponse; public static final fun html (Lelide/server/controller/PageController;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static final fun htmlSuspend (Lkotlinx/html/TagConsumer;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun htmlSuspend$default (Lkotlinx/html/TagConsumer;Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public static final fun script (Lelide/server/controller/PageController;Lio/micronaut/http/HttpRequest;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static final fun script (Lelide/server/controller/PageController;Lio/micronaut/http/HttpRequest;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static final fun staticFile (Ljava/lang/String;Ljava/lang/String;)Lio/micronaut/http/HttpResponse; - public static final fun stylesheet (Lelide/server/controller/PageController;Lio/micronaut/http/HttpRequest;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static final fun stylesheet (Lelide/server/controller/PageController;Lio/micronaut/http/HttpRequest;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static final fun visitAndFinalizeSuspend (Lkotlinx/html/Tag;Lkotlinx/html/TagConsumer;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -111,230 +88,6 @@ public abstract interface annotation class elide/server/annotations/Page : java/ public abstract fun route ()Ljava/lang/String; } -public synthetic class elide/server/assets/$AssetController$Definition : io/micronaut/context/AbstractInitializableBeanDefinitionAndReference { - public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; - public fun ()V - protected fun (Ljava/lang/Class;Lio/micronaut/context/AbstractInitializableBeanDefinition$MethodOrFieldReference;)V - public fun instantiate (Lio/micronaut/context/BeanResolutionContext;Lio/micronaut/context/BeanContext;)Ljava/lang/Object; - public fun load ()Lio/micronaut/inject/BeanDefinition; -} - -public synthetic class elide/server/assets/$ServerAssetIndex$AssetStartupListener$Definition : io/micronaut/context/AbstractInitializableBeanDefinitionAndReference { - public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; - public fun ()V - protected fun (Ljava/lang/Class;Lio/micronaut/context/AbstractInitializableBeanDefinition$MethodOrFieldReference;)V - public fun inject (Lio/micronaut/context/BeanResolutionContext;Lio/micronaut/context/BeanContext;Ljava/lang/Object;)Ljava/lang/Object; - public fun instantiate (Lio/micronaut/context/BeanResolutionContext;Lio/micronaut/context/BeanContext;)Ljava/lang/Object; - public fun isContextScope ()Z - public fun isEnabled (Lio/micronaut/context/BeanContext;)Z - public fun isEnabled (Lio/micronaut/context/BeanContext;Lio/micronaut/context/BeanResolutionContext;)Z - public fun load ()Lio/micronaut/inject/BeanDefinition; -} - -public synthetic class elide/server/assets/$ServerAssetIndex$AssetStartupListener$ReflectConfig : io/micronaut/core/graal/GraalReflectionConfigurer { - public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; - public fun ()V - public fun getAnnotationMetadata ()Lio/micronaut/core/annotation/AnnotationMetadata; -} - -public synthetic class elide/server/assets/$ServerAssetIndex$Definition : io/micronaut/context/AbstractInitializableBeanDefinitionAndReference { - public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; - public fun ()V - protected fun (Ljava/lang/Class;Lio/micronaut/context/AbstractInitializableBeanDefinition$MethodOrFieldReference;)V - public fun instantiate (Lio/micronaut/context/BeanResolutionContext;Lio/micronaut/context/BeanContext;)Ljava/lang/Object; - public fun isContextScope ()Z - public fun isEnabled (Lio/micronaut/context/BeanContext;)Z - public fun isEnabled (Lio/micronaut/context/BeanContext;Lio/micronaut/context/BeanResolutionContext;)Z - public fun load ()Lio/micronaut/inject/BeanDefinition; -} - -public synthetic class elide/server/assets/$ServerAssetManager$Definition : io/micronaut/context/AbstractInitializableBeanDefinitionAndReference { - public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; - public fun ()V - protected fun (Ljava/lang/Class;Lio/micronaut/context/AbstractInitializableBeanDefinition$MethodOrFieldReference;)V - public fun instantiate (Lio/micronaut/context/BeanResolutionContext;Lio/micronaut/context/BeanContext;)Ljava/lang/Object; - public fun isContextScope ()Z - public fun isEnabled (Lio/micronaut/context/BeanContext;)Z - public fun isEnabled (Lio/micronaut/context/BeanContext;Lio/micronaut/context/BeanResolutionContext;)Z - public fun load ()Lio/micronaut/inject/BeanDefinition; -} - -public synthetic class elide/server/assets/$ServerAssetManifestProvider$Definition : io/micronaut/context/AbstractInitializableBeanDefinitionAndReference { - public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; - public fun ()V - protected fun (Ljava/lang/Class;Lio/micronaut/context/AbstractInitializableBeanDefinition$MethodOrFieldReference;)V - public fun instantiate (Lio/micronaut/context/BeanResolutionContext;Lio/micronaut/context/BeanContext;)Ljava/lang/Object; - public fun isContextScope ()Z - public fun isEnabled (Lio/micronaut/context/BeanContext;)Z - public fun isEnabled (Lio/micronaut/context/BeanContext;Lio/micronaut/context/BeanResolutionContext;)Z - public fun load ()Lio/micronaut/inject/BeanDefinition; -} - -public synthetic class elide/server/assets/$ServerAssetReader$Definition : io/micronaut/context/AbstractInitializableBeanDefinitionAndReference { - public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; - public fun ()V - protected fun (Ljava/lang/Class;Lio/micronaut/context/AbstractInitializableBeanDefinition$MethodOrFieldReference;)V - public fun instantiate (Lio/micronaut/context/BeanResolutionContext;Lio/micronaut/context/BeanContext;)Ljava/lang/Object; - public fun isContextScope ()Z - public fun isEnabled (Lio/micronaut/context/BeanContext;)Z - public fun isEnabled (Lio/micronaut/context/BeanContext;Lio/micronaut/context/BeanResolutionContext;)Z - public fun load ()Lio/micronaut/inject/BeanDefinition; -} - -public final class elide/server/assets/AssetController : elide/server/controller/StatusEnabledController { - public fun (Lelide/server/assets/AssetManager;)V - public final fun assetGet (Lio/micronaut/http/HttpRequest;Ljava/lang/String;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public abstract interface class elide/server/assets/AssetManager { - public fun findAssetByModuleId (Ljava/lang/String;)Lelide/server/assets/AssetPointer; - public abstract fun getLogging ()Lorg/slf4j/Logger; - public abstract fun getReader ()Lelide/server/assets/AssetReader; - public abstract fun linkForAsset (Ljava/lang/String;Lelide/server/assets/AssetType;)Ljava/lang/String; - public static synthetic fun linkForAsset$default (Lelide/server/assets/AssetManager;Ljava/lang/String;Lelide/server/assets/AssetType;ILjava/lang/Object;)Ljava/lang/String; - public abstract fun renderAssetAsync (Lio/micronaut/http/HttpRequest;Lelide/server/assets/ServerAsset;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun resolve (Lio/micronaut/http/HttpRequest;Ljava/lang/String;)Lelide/server/assets/ServerAsset; - public static synthetic fun resolve$default (Lelide/server/assets/AssetManager;Lio/micronaut/http/HttpRequest;Ljava/lang/String;ILjava/lang/Object;)Lelide/server/assets/ServerAsset; - public fun serveAsync (Lio/micronaut/http/HttpRequest;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun serveAsync$default (Lelide/server/assets/AssetManager;Lio/micronaut/http/HttpRequest;Ljava/lang/String;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public fun serveNotFoundAsync (Lio/micronaut/http/HttpRequest;)Lkotlinx/coroutines/Deferred; -} - -public abstract interface class elide/server/assets/AssetManifestLoader { - public static final field Companion Lelide/server/assets/AssetManifestLoader$Companion; - public fun findLoadManifest ()Ltools/elide/assets/AssetBundle; - public abstract fun findLoadManifest (Ljava/util/List;)Ltools/elide/assets/AssetBundle; - public fun findManifest ()Lkotlin/Pair; - public abstract fun findManifest (Ljava/util/List;)Lkotlin/Pair; -} - -public final class elide/server/assets/AssetManifestLoader$Companion { -} - -public final class elide/server/assets/AssetPointer : java/io/Serializable { - public fun (Ljava/lang/String;Lelide/server/assets/AssetType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/util/SortedSet;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lelide/server/assets/AssetType; - public final fun component3 ()Ljava/lang/String; - public final fun component4 ()Ljava/lang/String; - public final fun component5 ()Ljava/lang/String; - public final fun component6 ()J - public final fun component7 ()Ljava/util/SortedSet; - public final fun copy (Ljava/lang/String;Lelide/server/assets/AssetType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/util/SortedSet;)Lelide/server/assets/AssetPointer; - public static synthetic fun copy$default (Lelide/server/assets/AssetPointer;Ljava/lang/String;Lelide/server/assets/AssetType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLjava/util/SortedSet;ILjava/lang/Object;)Lelide/server/assets/AssetPointer; - public fun equals (Ljava/lang/Object;)Z - public final fun getEtag ()Ljava/lang/String; - public final fun getIndex ()Ljava/util/SortedSet; - public final fun getModified ()J - public final fun getModuleId ()Ljava/lang/String; - public final fun getTag ()Ljava/lang/String; - public final fun getToken ()Ljava/lang/String; - public final fun getType ()Lelide/server/assets/AssetType; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public abstract interface class elide/server/assets/AssetReader : elide/server/assets/AssetResolver { - public abstract fun pointerTo (Ljava/lang/String;)Lelide/server/assets/AssetPointer; - public abstract fun readAsync (Lelide/server/assets/ServerAsset;Lio/micronaut/http/HttpRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public final class elide/server/assets/AssetReference : java/io/Serializable { - public fun (Ljava/lang/String;Lelide/server/assets/AssetType;Ljava/lang/String;Ljava/lang/String;ZZ)V - public synthetic fun (Ljava/lang/String;Lelide/server/assets/AssetType;Ljava/lang/String;Ljava/lang/String;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Ljava/lang/String; - public final fun component2 ()Lelide/server/assets/AssetType; - public final fun component3 ()Ljava/lang/String; - public final fun component4 ()Ljava/lang/String; - public final fun component5 ()Z - public final fun component6 ()Z - public final fun copy (Ljava/lang/String;Lelide/server/assets/AssetType;Ljava/lang/String;Ljava/lang/String;ZZ)Lelide/server/assets/AssetReference; - public static synthetic fun copy$default (Lelide/server/assets/AssetReference;Ljava/lang/String;Lelide/server/assets/AssetType;Ljava/lang/String;Ljava/lang/String;ZZILjava/lang/Object;)Lelide/server/assets/AssetReference; - public fun equals (Ljava/lang/Object;)Z - public static final fun fromPointer$server (Lelide/server/assets/AssetPointer;Ljava/lang/String;)Lelide/server/assets/AssetReference; - public final fun getAssetType ()Lelide/server/assets/AssetType; - public final fun getHref ()Ljava/lang/String; - public final fun getInline ()Z - public final fun getModule ()Ljava/lang/String; - public final fun getPreload ()Z - public final fun getType ()Ljava/lang/String; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public final class elide/server/assets/AssetReference$$serializer : kotlinx/serialization/internal/GeneratedSerializer { - public static final field INSTANCE Lelide/server/assets/AssetReference$$serializer; - public fun childSerializers ()[Lkotlinx/serialization/KSerializer; - public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lelide/server/assets/AssetReference; - public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; - public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; - public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lelide/server/assets/AssetReference;)V - public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V -} - -public abstract interface class elide/server/assets/AssetResolver { - public abstract fun findByModuleId (Ljava/lang/String;)Lelide/server/assets/ServerAsset; - public fun resolve (Lio/micronaut/http/HttpRequest;)Lelide/server/assets/ServerAsset; - public abstract fun resolve (Ljava/lang/String;)Lelide/server/assets/ServerAsset; -} - -public final class elide/server/assets/AssetType : java/lang/Enum { - public static final field GENERIC Lelide/server/assets/AssetType; - public static final field SCRIPT Lelide/server/assets/AssetType; - public static final field STYLESHEET Lelide/server/assets/AssetType; - public static final field TEXT Lelide/server/assets/AssetType; - public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Lelide/server/assets/AssetType; - public static fun values ()[Lelide/server/assets/AssetType; -} - -public final class elide/server/assets/RenderedAsset { - public fun (Ljava/lang/String;Lelide/server/assets/AssetType;Ltools/elide/data/CompressionMode;Ljava/util/Map;JJLkotlin/Pair;Lkotlin/jvm/functions/Function0;)V - public final fun getDigest ()Lkotlin/Pair; - public final fun getHeaders ()Ljava/util/Map; - public final fun getLastModified ()J - public final fun getModule ()Ljava/lang/String; - public final fun getProducer ()Lkotlin/jvm/functions/Function0; - public final fun getSize ()J - public final fun getType ()Lelide/server/assets/AssetType; - public final fun getVariant ()Ltools/elide/data/CompressionMode; -} - -public abstract class elide/server/assets/ServerAsset { - public synthetic fun (Ljava/lang/String;Lelide/server/assets/AssetType;Ljava/util/SortedSet;Lkotlin/jvm/internal/DefaultConstructorMarker;)V -} - -public final class elide/server/assets/ServerAsset$Script : elide/server/assets/ServerAsset { - public fun (Ltools/elide/assets/AssetBundle$ScriptBundle;Ljava/util/SortedSet;)V -} - -public final class elide/server/assets/ServerAsset$Stylesheet : elide/server/assets/ServerAsset { - public fun (Ltools/elide/assets/AssetBundle$StyleBundle;Ljava/util/SortedSet;)V -} - -public final class elide/server/assets/ServerAsset$Text : elide/server/assets/ServerAsset { - public fun (Ltools/elide/assets/AssetBundle$GenericBundle;Ljava/util/SortedSet;)V -} - -public final class elide/server/assets/ServerAssetManager : elide/server/assets/AssetManager { - public static final field Companion Lelide/server/assets/ServerAssetManager$Companion; - public static final field waitTimeout J - public fun getLogging ()Lorg/slf4j/Logger; - public fun getReader ()Lelide/server/assets/AssetReader; - public fun linkForAsset (Ljava/lang/String;Lelide/server/assets/AssetType;)Ljava/lang/String; - public fun renderAssetAsync (Lio/micronaut/http/HttpRequest;Lelide/server/assets/ServerAsset;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public final class elide/server/assets/ServerAssetManager$Companion { -} - -public final class elide/server/assets/ServerAssetReader : elide/server/assets/AssetReader { - public fun findByModuleId (Ljava/lang/String;)Lelide/server/assets/ServerAsset; - public fun pointerTo (Ljava/lang/String;)Lelide/server/assets/AssetPointer; - public fun readAsync (Lelide/server/assets/ServerAsset;Lio/micronaut/http/HttpRequest;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun resolve (Ljava/lang/String;)Lelide/server/assets/ServerAsset; -} - public synthetic class elide/server/cfg/$AssetConfig$Intercepted$Definition : io/micronaut/context/AbstractInitializableBeanDefinitionAndReference, io/micronaut/inject/AdvisedBeanType { public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; public fun ()V @@ -412,28 +165,15 @@ public abstract class elide/server/controller/BaseController : elide/server/cont } public abstract interface class elide/server/controller/ElideController { - public abstract fun assets ()Lelide/server/assets/AssetManager; public abstract fun context ()Lio/micronaut/context/ApplicationContext; } public abstract class elide/server/controller/PageController : elide/server/controller/BaseController { public fun ()V - public final fun asset (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lelide/server/assets/AssetReference; - public static synthetic fun asset$default (Lelide/server/controller/PageController;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lelide/server/assets/AssetReference; - public fun assets ()Lelide/server/assets/AssetManager; public fun context ()Lio/micronaut/context/ApplicationContext; protected final fun html (Lio/micronaut/http/HttpRequest;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } -public final class elide/server/controller/PageController$AssetReferenceBuilder { - public final fun getInline ()Z - public final fun getModule ()Ljava/lang/String; - public final fun getPreload ()Z - public final fun setInline (Z)V - public final fun setModule (Ljava/lang/String;)V - public final fun setPreload (Z)V -} - public final class elide/server/controller/PageController$ServerRenderAgent { public fun (Lkotlinx/html/HTML;Lelide/server/controller/PageController;Lio/micronaut/http/HttpRequest;)V public final fun body (Ljava/lang/String;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; @@ -514,23 +254,6 @@ public synthetic class elide/server/http/$HeaderFinalizingFilter$Definition : io public fun load ()Lio/micronaut/inject/BeanDefinition; } -public synthetic class elide/server/http/$RequestContextFilter$Definition : io/micronaut/context/AbstractInitializableBeanDefinitionAndReference { - public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; - public fun ()V - protected fun (Ljava/lang/Class;Lio/micronaut/context/AbstractInitializableBeanDefinition$MethodOrFieldReference;)V - public fun inject (Lio/micronaut/context/BeanResolutionContext;Lio/micronaut/context/BeanContext;Ljava/lang/Object;)Ljava/lang/Object; - public fun instantiate (Lio/micronaut/context/BeanResolutionContext;Lio/micronaut/context/BeanContext;)Ljava/lang/Object; - public fun isEnabled (Lio/micronaut/context/BeanContext;)Z - public fun isEnabled (Lio/micronaut/context/BeanContext;Lio/micronaut/context/BeanResolutionContext;)Z - public fun load ()Lio/micronaut/inject/BeanDefinition; -} - -public synthetic class elide/server/http/$RequestContextFilter$ReflectConfig : io/micronaut/core/graal/GraalReflectionConfigurer { - public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; - public fun ()V - public fun getAnnotationMetadata ()Lio/micronaut/core/annotation/AnnotationMetadata; -} - public final class elide/server/http/HeaderFinalizingFilter : io/micronaut/http/filter/HttpServerFilter { public fun ()V public fun doFilter (Lio/micronaut/http/HttpRequest;Lio/micronaut/http/filter/ServerFilterChain;)Lorg/reactivestreams/Publisher; @@ -556,11 +279,6 @@ public final class elide/server/http/RequestContext$Key$Companion { public final fun getASSET_MANAGER ()Lelide/server/http/RequestContext$Key; } -public final class elide/server/http/RequestContextFilter : io/micronaut/http/filter/HttpServerFilter { - public fun ()V - public fun doFilter (Lio/micronaut/http/HttpRequest;Lio/micronaut/http/filter/ServerFilterChain;)Lorg/reactivestreams/Publisher; -} - public synthetic class elide/server/runtime/$AppExecutor$DefaultExecutor$Definition : io/micronaut/context/AbstractInitializableBeanDefinitionAndReference { public static final field $ANNOTATION_METADATA Lio/micronaut/core/annotation/AnnotationMetadata; public fun ()V diff --git a/packages/server/detekt-baseline.xml b/packages/server/detekt-baseline.xml index 72fa509277..4316eb1acd 100644 --- a/packages/server/detekt-baseline.xml +++ b/packages/server/detekt-baseline.xml @@ -2,9 +2,6 @@ - LargeClass:ServerAssetIndexTest.kt$ServerAssetIndexTest RethrowCaughtException:api.ext.kt$throw err - SwallowedException:Application.kt$Application.Initialization$e: Exception - TooGenericExceptionCaught:Application.kt$Application.Initialization$e: Exception diff --git a/packages/server/gradle.lockfile b/packages/server/gradle.lockfile index d743ce4be9..b261260df8 100644 --- a/packages/server/gradle.lockfile +++ b/packages/server/gradle.lockfile @@ -10,22 +10,14 @@ com.aayushatharva.brotli4j:native-windows-x86_64:1.18.0=runtimeClasspath com.aayushatharva.brotli4j:service:1.18.0=compileClasspath,runtimeClasspath com.amazonaws:aws-java-sdk-bom:1.12.777=compileClasspath,runtimeClasspath com.azure:azure-sdk-bom:1.2.29=compileClasspath,runtimeClasspath -com.fasterxml.jackson.core:jackson-annotations:2.17.2=compileClasspath -com.fasterxml.jackson.core:jackson-annotations:2.18.2=runtimeClasspath -com.fasterxml.jackson.core:jackson-core:2.17.2=compileClasspath -com.fasterxml.jackson.core:jackson-core:2.18.2=runtimeClasspath -com.fasterxml.jackson.core:jackson-databind:2.17.2=compileClasspath -com.fasterxml.jackson.core:jackson-databind:2.18.2=runtimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.17.2=compileClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.18.2=runtimeClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.2=compileClasspath -com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=runtimeClasspath -com.fasterxml.jackson.module:jackson-module-kotlin:2.18.2=runtimeClasspath -com.fasterxml.jackson:jackson-bom:2.17.2=compileClasspath -com.fasterxml.jackson:jackson-bom:2.18.2=runtimeClasspath +com.fasterxml.jackson.core:jackson-annotations:2.17.2=compileClasspath,runtimeClasspath +com.fasterxml.jackson.core:jackson-core:2.17.2=compileClasspath,runtimeClasspath +com.fasterxml.jackson:jackson-bom:2.17.2=compileClasspath,runtimeClasspath +com.github.elide-tools.jimfs:jimfs:66161ebdf9=runtimeClasspath +com.github.elide-tools:jimfs:66161ebdf9=runtimeClasspath com.github.javaparser:javaparser-core:3.26.3=runtimeClasspath com.github.javaparser:javaparser-symbol-solver-core:3.26.3=runtimeClasspath -com.github.oshi:oshi-core-java11:6.6.6=runtimeClasspath +com.github.oshi:oshi-core-java11:6.7.0=runtimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath com.google.code.gson:gson:2.10.1=compileClasspath,runtimeClasspath com.google.common.html.types:proto:1.0.8=runtimeClasspath @@ -35,12 +27,11 @@ com.google.guava:failureaccess:1.0.2=compileClasspath,runtimeClasspath com.google.guava:guava:33.3.1-jre=compileClasspath,runtimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=compileClasspath,runtimeClasspath com.google.j2objc:j2objc-annotations:3.0.0=compileClasspath,runtimeClasspath -com.google.jimfs:jimfs:1.3.0=runtimeClasspath com.google.jsinterop:jsinterop-annotations:1.0.1=compileClasspath,runtimeClasspath com.google.protobuf:protobuf-bom:3.25.5=compileClasspath,runtimeClasspath -com.google.protobuf:protobuf-java-util:3.25.2=compileClasspath,runtimeClasspath -com.google.protobuf:protobuf-java:3.25.2=compileClasspath,runtimeClasspath -com.google.protobuf:protobuf-kotlin:3.25.2=compileClasspath,runtimeClasspath +com.google.protobuf:protobuf-java-util:4.28.2=compileClasspath,runtimeClasspath +com.google.protobuf:protobuf-java:4.28.2=compileClasspath,runtimeClasspath +com.google.protobuf:protobuf-kotlin:4.28.2=compileClasspath,runtimeClasspath com.oracle.coherence.ce:coherence-bom:23.03=compileClasspath,runtimeClasspath commons-codec:commons-codec:1.18.0=compileClasspath,runtimeClasspath commons-io:commons-io:2.16.1=compileClasspath @@ -64,7 +55,7 @@ io.micronaut.coherence:micronaut-coherence-bom:4.0.0=compileClasspath,runtimeCla io.micronaut.controlpanel:micronaut-control-panel-bom:1.6.0=compileClasspath,runtimeClasspath io.micronaut.crac:micronaut-crac-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.data:micronaut-data-bom:4.10.5=compileClasspath,runtimeClasspath -io.micronaut.discovery:micronaut-discovery-client-bom:4.5.1=compileClasspath,runtimeClasspath +io.micronaut.discovery:micronaut-discovery-client-bom:4.5.2=compileClasspath,runtimeClasspath io.micronaut.eclipsestore:micronaut-eclipsestore-bom:1.8.0=compileClasspath,runtimeClasspath io.micronaut.elasticsearch:micronaut-elasticsearch-bom:5.7.0=compileClasspath,runtimeClasspath io.micronaut.email:micronaut-email-bom:2.7.0=compileClasspath,runtimeClasspath @@ -79,7 +70,7 @@ io.micronaut.jaxrs:micronaut-jaxrs-bom:4.7.2=compileClasspath,runtimeClasspath io.micronaut.jms:micronaut-jms-bom:4.1.0=compileClasspath,runtimeClasspath io.micronaut.jmx:micronaut-jmx-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.jsonschema:micronaut-json-schema-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.kafka:micronaut-kafka-bom:5.7.0=compileClasspath,runtimeClasspath +io.micronaut.kafka:micronaut-kafka-bom:5.7.1=compileClasspath,runtimeClasspath io.micronaut.kotlin:micronaut-kotlin-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.kubernetes:micronaut-kubernetes-bom:6.2.0=compileClasspath,runtimeClasspath io.micronaut.langchain4j:micronaut-langchain4j-bom:0.0.1=compileClasspath,runtimeClasspath @@ -95,9 +86,9 @@ io.micronaut.neo4j:micronaut-neo4j-bom:6.8.0=compileClasspath,runtimeClasspath io.micronaut.objectstorage:micronaut-object-storage-bom:2.7.0=compileClasspath,runtimeClasspath io.micronaut.openapi:micronaut-openapi-bom:6.13.2=compileClasspath,runtimeClasspath io.micronaut.opensearch:micronaut-opensearch-bom:1.3.0=compileClasspath,runtimeClasspath -io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.6=compileClasspath,runtimeClasspath +io.micronaut.oraclecloud:micronaut-oraclecloud-bom:4.3.8=compileClasspath,runtimeClasspath io.micronaut.picocli:micronaut-picocli-bom:5.6.0=compileClasspath,runtimeClasspath -io.micronaut.platform:micronaut-platform:4.7.4=compileClasspath,runtimeClasspath +io.micronaut.platform:micronaut-platform:4.7.6=compileClasspath,runtimeClasspath io.micronaut.problem:micronaut-problem-json-bom:3.6.0=compileClasspath,runtimeClasspath io.micronaut.pulsar:micronaut-pulsar-bom:2.5.1=compileClasspath,runtimeClasspath io.micronaut.r2dbc:micronaut-r2dbc-bom:5.7.0=compileClasspath,runtimeClasspath @@ -107,38 +98,42 @@ io.micronaut.redis:micronaut-redis-bom:6.6.1=compileClasspath,runtimeClasspath io.micronaut.rss:micronaut-rss-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.rxjava2:micronaut-rxjava2-bom:2.6.0=compileClasspath,runtimeClasspath io.micronaut.rxjava3:micronaut-rxjava3-bom:3.6.0=compileClasspath,runtimeClasspath -io.micronaut.security:micronaut-security-bom:4.11.2=compileClasspath,runtimeClasspath +io.micronaut.security:micronaut-security-bom:4.11.3=compileClasspath,runtimeClasspath +io.micronaut.serde:micronaut-serde-api:2.12.1=compileClasspath,runtimeClasspath io.micronaut.serde:micronaut-serde-bom:2.12.1=compileClasspath,runtimeClasspath +io.micronaut.serde:micronaut-serde-jackson:2.12.1=compileClasspath,runtimeClasspath +io.micronaut.serde:micronaut-serde-support:2.12.1=runtimeClasspath io.micronaut.servlet:micronaut-servlet-bom:4.12.0=compileClasspath,runtimeClasspath io.micronaut.session:micronaut-session-bom:4.5.0=compileClasspath,runtimeClasspath io.micronaut.sourcegen:micronaut-sourcegen-bom:1.4.1=compileClasspath,runtimeClasspath +io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer:1.6.2=runtimeClasspath +io.micronaut.sourcegen:micronaut-sourcegen-model:1.6.2=runtimeClasspath io.micronaut.spring:micronaut-spring-bom:5.9.0=compileClasspath,runtimeClasspath io.micronaut.sql:micronaut-sql-bom:6.0.2=compileClasspath,runtimeClasspath io.micronaut.test:micronaut-test-bom:4.6.2=compileClasspath,runtimeClasspath -io.micronaut.testresources:micronaut-test-resources-bom:2.7.0=compileClasspath,runtimeClasspath +io.micronaut.testresources:micronaut-test-resources-bom:2.7.3=compileClasspath,runtimeClasspath io.micronaut.toml:micronaut-toml-bom:2.5.0=compileClasspath,runtimeClasspath io.micronaut.tracing:micronaut-tracing-bom:6.9.0=compileClasspath,runtimeClasspath -io.micronaut.validation:micronaut-validation-bom:4.8.0=compileClasspath,runtimeClasspath +io.micronaut.validation:micronaut-validation-bom:4.8.1=compileClasspath,runtimeClasspath io.micronaut.views:micronaut-views-bom:5.6.0=compileClasspath,runtimeClasspath io.micronaut.xml:micronaut-jackson-xml-bom:4.5.0=compileClasspath,runtimeClasspath -io.micronaut:micronaut-aop:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-buffer-netty:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context-propagation:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-context:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-bom:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core-processor:4.7.11=runtimeClasspath -io.micronaut:micronaut-core-reactive:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-graal:4.7.11=runtimeClasspath -io.micronaut:micronaut-http-netty:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-http-server-netty:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-http-server:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-http:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-inject:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-jackson-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-jackson-databind:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-json-core:4.7.11=compileClasspath,runtimeClasspath -io.micronaut:micronaut-router:4.7.11=compileClasspath,runtimeClasspath +io.micronaut:micronaut-aop:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-buffer-netty:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context-propagation:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-context:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-bom:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core-processor:4.8.5=runtimeClasspath +io.micronaut:micronaut-core-reactive:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-core:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-graal:4.8.5=runtimeClasspath +io.micronaut:micronaut-http-netty:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-http-server-netty:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-http-server:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-http:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-inject:4.8.5=compileClasspath,runtimeClasspath +io.micronaut:micronaut-jackson-core:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-json-core:4.7.14=compileClasspath,runtimeClasspath +io.micronaut:micronaut-router:4.8.5=compileClasspath,runtimeClasspath io.netty.incubator:netty-incubator-transport-classes-io_uring:0.0.26.Final=runtimeClasspath io.netty.incubator:netty-incubator-transport-native-io_uring:0.0.26.Final=runtimeClasspath io.netty:netty-bom:4.1.118.Final=compileClasspath,runtimeClasspath @@ -166,7 +161,8 @@ io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:1.33.6=compil io.opentelemetry:opentelemetry-bom-alpha:1.40.0-alpha=compileClasspath,runtimeClasspath io.opentelemetry:opentelemetry-bom:1.32.0=compileClasspath,runtimeClasspath io.projectreactor:reactor-bom:2023.0.10=compileClasspath,runtimeClasspath -io.projectreactor:reactor-core:3.6.10=compileClasspath,runtimeClasspath +io.projectreactor:reactor-core:3.6.10=compileClasspath +io.projectreactor:reactor-core:3.7.2=runtimeClasspath io.rest-assured:rest-assured-bom:5.5.0=compileClasspath,runtimeClasspath io.zipkin.brave:brave-bom:6.0.3=compileClasspath,runtimeClasspath io.zipkin.reporter2:zipkin-reporter-bom:3.4.2=compileClasspath,runtimeClasspath @@ -179,7 +175,6 @@ org.apache.commons:commons-compress:1.27.1=compileClasspath,runtimeClasspath org.apache.commons:commons-lang3:3.16.0=compileClasspath,runtimeClasspath org.apache.groovy:groovy-bom:4.0.18=compileClasspath,runtimeClasspath org.apache.logging.log4j:log4j-bom:2.24.3=compileClasspath,runtimeClasspath -org.bouncycastle:bcprov-jdk18on:1.80=compileClasspath,runtimeClasspath org.checkerframework:checker-qual:3.43.0=compileClasspath,runtimeClasspath org.eclipse.jetty:jetty-bom:11.0.24=compileClasspath,runtimeClasspath org.graalvm.js:js-community:24.1.2=runtimeClasspath @@ -199,13 +194,13 @@ org.graalvm.truffle:truffle-runtime:24.1.2=compileClasspath,runtimeClasspath org.graalvm.wasm:wasm-community:24.1.2=runtimeClasspath org.graalvm.wasm:wasm-language:24.1.2=runtimeClasspath org.jdbi:jdbi3-bom:3.47.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlin-wrappers:kotlin-css-jvm:1.0.0-pre.754=compileClasspath,runtimeClasspath -org.jetbrains.kotlin-wrappers:kotlin-css:1.0.0-pre.754=compileClasspath,runtimeClasspath +org.jetbrains.kotlin-wrappers:kotlin-css-jvm:2025.3.3=compileClasspath,runtimeClasspath +org.jetbrains.kotlin-wrappers:kotlin-css:2025.3.3=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:1.9.25=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-reflect:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-reflect:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu-jvm:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:atomicfu:0.27.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.8=compileClasspath,runtimeClasspath @@ -222,10 +217,10 @@ org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1=runtimeClasspath org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.6.2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-datetime:0.6.2=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-html-jvm:0.12.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlinx:kotlinx-io-core:0.6.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.7.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-bytestring:0.7.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.7.0=compileClasspath,runtimeClasspath +org.jetbrains.kotlinx:kotlinx-io-core:0.7.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,runtimeClasspath @@ -235,13 +230,16 @@ org.jetbrains.kotlinx:kotlinx-serialization-protobuf-jvm:1.8.0=runtimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-protobuf:1.8.0=runtimeClasspath org.jetbrains:annotations:26.0.2=compileClasspath,runtimeClasspath org.junit:junit-bom:5.11.3=compileClasspath,runtimeClasspath +org.ow2.asm:asm-analysis:9.7.1=runtimeClasspath org.ow2.asm:asm-commons:9.7.1=runtimeClasspath org.ow2.asm:asm-tree:9.7.1=runtimeClasspath +org.ow2.asm:asm-util:9.7.1=runtimeClasspath org.ow2.asm:asm:9.7.1=runtimeClasspath org.reactivestreams:reactive-streams:1.0.4=compileClasspath,runtimeClasspath -org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath +org.slf4j:slf4j-api:2.0.16=compileClasspath +org.slf4j:slf4j-api:2.0.17=runtimeClasspath org.spockframework:spock-bom:2.3-groovy-4.0=compileClasspath,runtimeClasspath org.springframework:spring-framework-bom:6.1.14=compileClasspath,runtimeClasspath -org.testcontainers:testcontainers-bom:1.20.3=compileClasspath,runtimeClasspath +org.testcontainers:testcontainers-bom:1.20.4=compileClasspath,runtimeClasspath software.amazon.awssdk:bom:2.29.7=compileClasspath,runtimeClasspath empty= diff --git a/packages/server/src/main/kotlin/elide/server/Application.kt b/packages/server/src/main/kotlin/elide/server/Application.kt index b98d2b1c3b..4533394fd2 100644 --- a/packages/server/src/main/kotlin/elide/server/Application.kt +++ b/packages/server/src/main/kotlin/elide/server/Application.kt @@ -22,7 +22,6 @@ import java.util.concurrent.atomic.AtomicBoolean import kotlinx.coroutines.runBlocking import elide.server.annotations.Eager import elide.server.runtime.jvm.SecurityProviderConfigurator -import elide.util.RuntimeFlag /** * Static class interface which equips a Micronaut application with extra initialization features powered by Elide; to @@ -77,7 +76,7 @@ public interface Application { private suspend fun dispatchCallback(pair: Pair Unit>) { try { pair.second.invoke() - } catch (e: Exception) { + } catch (_: Exception) { // Ignore. } } @@ -127,10 +126,6 @@ public interface Application { Initialization.trigger( Initialization.CallbackStage.INIT ) - - if (RuntimeFlag.warmup) Initialization.trigger( - Initialization.CallbackStage.WARMUP - ) } } diff --git a/packages/server/src/main/kotlin/elide/server/PageExtensions.kt b/packages/server/src/main/kotlin/elide/server/PageExtensions.kt index c42b05985b..52ac6e70e2 100644 --- a/packages/server/src/main/kotlin/elide/server/PageExtensions.kt +++ b/packages/server/src/main/kotlin/elide/server/PageExtensions.kt @@ -15,34 +15,11 @@ package elide.server -import java.util.* import kotlinx.html.* -import elide.server.assets.AssetReference // DOM type for JavaScript files. private const val JAVASCRIPT_TYPE = "application/javascript" -/** Generate a stylesheet link from an embedded server [asset], optionally with the provided [media] declaration. */ -public fun HEAD.stylesheet( - asset: AssetReference, - media: String? = null, - attrs: SortedMap? = null -): Unit = LINK( - attributesMapOf( - "rel", - "stylesheet", - "href", - asset.href, - ).plus( - attrs ?: emptyMap() - ), - consumer -).visit { - if (media?.isNotBlank() == true) { - this.media = media - } -} - /** Generates a CSS link from the provided handler [uri], optionally including the specified [attrs]. */ public fun HEAD.stylesheet(uri: String, media: String? = null, attrs: Map? = null): Unit = LINK( attributesMapOf( @@ -60,30 +37,6 @@ public fun HEAD.stylesheet(uri: String, media: String? = null, attrs: Map` script link from the provided [asset], optionally including the specified [attrs], etc. */ -public fun HEAD.script( - asset: AssetReference, - defer: Boolean = false, - async: Boolean = false, - nomodule: Boolean = false, - type: String = JAVASCRIPT_TYPE, - attrs: Map? = null, -): Unit = SCRIPT( - attributesMapOf( - "type", - type, - "src", - asset.href, - ).plus( - attrs ?: emptyMap() - ), - consumer -).visit { - if (defer) this.defer = true - if (async) this.async = true - if (nomodule) this.attributes["nomodule"] = "" -} - /** Generates a `` script link from the provided handler [uri], optionally including the specified [attrs]. */ public fun HEAD.script( uri: String, @@ -127,25 +80,3 @@ public fun BODY.script( if (defer) this.defer = true if (async) this.async = true } - -/** Generates a `` script link from the provided [asset], optionally including the specified [attrs], etc. */ -public fun BODY.script( - asset: AssetReference, - defer: Boolean = false, - async: Boolean = false, - type: String = JAVASCRIPT_TYPE, - attrs: Map? = null, -): Unit = SCRIPT( - attributesMapOf( - "type", - type, - "src", - asset.href, - ).plus( - attrs ?: emptyMap() - ), - consumer -).visit { - if (defer) this.defer = true - if (async) this.async = true -} diff --git a/packages/server/src/main/kotlin/elide/server/ResponseExtensions.kt b/packages/server/src/main/kotlin/elide/server/ResponseExtensions.kt index 2a87507d7d..e4b3d5b575 100644 --- a/packages/server/src/main/kotlin/elide/server/ResponseExtensions.kt +++ b/packages/server/src/main/kotlin/elide/server/ResponseExtensions.kt @@ -21,13 +21,9 @@ import java.io.ByteArrayOutputStream import java.nio.charset.StandardCharsets import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicReference -import kotlinx.css.CssBuilder import kotlinx.html.* import kotlinx.html.stream.appendHTML -import elide.server.assets.AssetType -import elide.server.controller.ElideController import elide.server.controller.PageController -import elide.ssr.ResponseRenderer /** * Raw bytes body type used internally by Elide. @@ -137,156 +133,6 @@ public typealias AssetModuleId = String */ public typealias AssetTag = String -/** - * Serve an application asset file which is embedded in the application JAR as a registered server asset, from the - * application resource path `/assets`. - * - * To use module ID-based assets, files must be registered at build time through the Elide Plugin for Gradle, or must - * produce an equivalent protocol buffer manifest. - * - * @param moduleId ID of the asset module we wish to serve. - * @param type Specifies the asset type expected to be served by this call, if known. - * @return HTTP response wrapping the desired asset, or an HTTP response which serves a 404 if the asset could not be - * located at the specified path. - */ -public suspend fun PageController.asset( - request: HttpRequest<*>, - moduleId: AssetModuleId, - type: AssetType? = null -): FinalizedAssetResponse { - val handler = AssetHandler(type, this, request) - handler.module(moduleId) - return handler.finalize() -} - -/** - * Serve a static script asset embedded within the application, based on the provided [moduleId], and customizing the - * response based on the provided [request]. - * - * @param request Request to consider when creating the asset response. - * @param moduleId Module ID for the asset which we wish to serve. - * @return Streamed asset response for the desired module ID. - */ -public suspend fun PageController.script(request: HttpRequest<*>, moduleId: AssetModuleId): FinalizedAssetResponse { - return asset( - request, - moduleId, - AssetType.SCRIPT, - ) -} - -/** - * Serve a static script asset embedded within the application, based on the provided [block], which should customize - * the serving of the script and declare a module ID. - * - * @param request Request to consider when creating the asset response. - * @param block Block which, when executed, will configure the script for a response. - * @return Streamed asset response generated from the configuration provided by [block]. - */ -public suspend fun PageController.script( - request: HttpRequest<*>, - block: AssetHandler.() -> Unit -): FinalizedAssetResponse { - return asset( - request, - AssetType.SCRIPT, - block, - ) -} - -/** - * Serve a static stylesheet asset embedded within the application, based on the provided [moduleId], and customizing - * the response based on the provided [request]. - * - * @param request Request to consider when creating the asset response. - * @param moduleId Module ID for the asset which we wish to serve. - * @return Streamed asset response for the desired module ID. - */ -public suspend fun PageController.stylesheet(request: HttpRequest<*>, moduleId: AssetModuleId): FinalizedAssetResponse { - return asset( - request, - moduleId, - AssetType.STYLESHEET, - ) -} - -/** - * Serve a static stylesheet asset embedded within the application, based on the provided [block], which should - * customize the serving of the document and declare a module ID. - * - * @param request Request to consider when creating the asset response. - * @param block Block which, when executed, will configure the stylesheet for a response. - * @return Streamed asset response generated from the configuration provided by [block]. - */ -public suspend fun PageController.stylesheet( - request: HttpRequest<*>, - block: AssetHandler.() -> Unit -): FinalizedAssetResponse { - return asset( - request, - AssetType.STYLESHEET, - block, - ) -} - -/** - * Generate a [StreamedAssetResponse] which serves an asset embedded within the application, and specified by the - * provided [block]; [request] will be considered when producing the response. - * - * @param request HTTP request to consider when producing the desired asset response. - * @param type Type of asset expected to be returned with this response. - * @param block Block to customize the serving of this asset and declare a module ID. - * @return Structure which streams the resolved asset content as the response. - */ -public suspend fun PageController.asset( - request: HttpRequest<*>, - type: AssetType? = null, - block: suspend AssetHandler.() -> Unit -): FinalizedAssetResponse { - val handler = AssetHandler(type, this, request) - block.invoke(handler) - return handler.finalize() -} - -// Handler context for an asset serving cycle. -public class AssetHandler( - initialExpectedType: AssetType? = null, - private val handler: ElideController, - private val request: HttpRequest<*>, - private val moduleId: AtomicReference = AtomicReference(null), - private val expectedType: AtomicReference = AtomicReference(initialExpectedType), -) : BaseResponseHandler() { - /** Bind an asset handler to an asset module ID. */ - public fun module(id: AssetModuleId, type: AssetType? = null) { - moduleId.set(id) - if (type != null) expectedType.set(type) - } - - /** Declare the expected asset type for this handler. Optional. */ - public fun assetType(type: AssetType) { - expectedType.set(type) - } - - override suspend fun finalize(): MutableHttpResponse { - return respond( - handler.assets().serveAsync( - request, - moduleId.get(), - ).await().let { streamedAsset -> - val obj = streamedAsset.body() - if (obj != null) { - val (type, data) = streamedAsset.body() - streamedAsset.contentType(type).body(data) - } else if (streamedAsset.status().code == HttpStatus.NOT_MODIFIED.code) { - streamedAsset.body(ByteArray(0)) - } else { - error("Failed to resolve pair of type and data") - } - } - ) - } -} - /** * Responds to a client with an HTML response, using specified [block] to build an HTML page via Kotlin's HTML DSL. * @@ -326,32 +172,6 @@ public class HtmlRenderer( } } -/** - * Responds to a client with an HTML response, using specified [block] to build the CSS document via Kotlin's CSS DSL. - * - * @param block Block to execute to build the CSS document. - * @return HTTP response wrapping the CSS content, with a content type of `text/css; charset=utf-8`. - */ -public fun css(block: CssBuilder.() -> Unit): FinalizedAssetResponse { - return HttpResponse.ok( - CssContent(block).render().second - ).characterEncoding( - StandardCharsets.UTF_8 - ).contentType( - "text/css;chartset=utf-8" - ) -} - -// HTML content rendering and container utility. -internal class CssContent( - private val builder: CssBuilder.() -> Unit -) : ResponseRenderer { - override fun render(): StreamedAsset { - val content = CssBuilder().apply(builder).toString().toByteArray(StandardCharsets.UTF_8) - return AssetType.STYLESHEET.mediaType to content - } -} - @HtmlTagMarker public suspend inline fun > C.htmlSuspend( namespace : String? = null, diff --git a/packages/server/src/main/kotlin/elide/server/assets/AssetController.kt b/packages/server/src/main/kotlin/elide/server/assets/AssetController.kt deleted file mode 100644 index 3a8939c7c2..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/AssetController.kt +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import io.micronaut.context.annotation.Requires -import io.micronaut.http.HttpRequest -import io.micronaut.http.HttpStatus -import io.micronaut.http.MutableHttpResponse -import io.micronaut.http.annotation.Controller -import io.micronaut.http.annotation.Get -import java.nio.charset.StandardCharsets -import jakarta.inject.Inject -import elide.runtime.Logger -import elide.runtime.Logging -import elide.server.FinalizedAssetResponse -import elide.server.controller.StatusEnabledController - -/** - * Built-in controller implementation which bridges the configured asset serving prefix to the active [AssetManager] - * layer for this server run. - * - * For this controller to be enabled, the configuration value `elide.assets.enabled` needs to be set to `true`. The - * asset prefix used by this controller is governed by the configuration value `elide.assets.prefix`. - * - * @param assetManager Main asset manager which should be used to resolve and serve assets. - */ -@Requires(property = "elide.assets.isEnabled", notEquals = "false") -@Controller("\${elide.assets.prefix:/_/assets}") -public class AssetController @Inject constructor(private val assetManager: AssetManager) : StatusEnabledController { - // Logger pipe. - private val logging: Logger by lazy { - Logging.of(AssetController::class) - } - - /** - * Handles HTTP `GET` calls to asset endpoints based on "asset tag" values, which are generated at build time, and are - * typically composed of 8-16 characters from the tail end of the content hash for the asset. - * - * @param request HTTP request incoming to this endpoint. - * @param tag Decoded tag value from the URL. - * @param ext Extension value from the URL. - */ - @Get("/{tag}.{ext}") - public suspend fun assetGet(request: HttpRequest<*>, tag: String, ext: String): MutableHttpResponse<*> { - logging.debug("Loading asset with tag '$tag' (extension: '$ext')") - return assetManager.serveAsync(request).await().let { response -> - val body = response.body() - if (body == null) response.body("Not found".toByteArray(StandardCharsets.UTF_8)) else response.body().let { - val size = it.second.size.toLong() - - when { - response.status != HttpStatus.OK -> - response - - size > 0 -> response - .contentType(it.first) - .contentLength(it.second.size.toLong()) - .body(it.second) - - else -> response - .contentType(it.first) - .status(HttpStatus.NO_CONTENT) - .body(ByteArray(0)) - } - } - } - } -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/AssetDependency.kt b/packages/server/src/main/kotlin/elide/server/assets/AssetDependency.kt deleted file mode 100644 index 385802f24e..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/AssetDependency.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -/** - * Model for a dependency relationship between assets. - * - * @param depender Module which is establishing the dependency. - * @param dependee Module which is being depended on. - * @param optional Whether the dependency is optional. Defaults to `false`. - */ -internal data class AssetDependency( - val depender: String, - val dependee: String, - val optional: Boolean = false, -) { - init { - require(depender != dependee) { - "Asset cannot depend on itself" - } - } -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/AssetManager.kt b/packages/server/src/main/kotlin/elide/server/assets/AssetManager.kt deleted file mode 100644 index d3682b2046..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/AssetManager.kt +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import com.google.common.util.concurrent.Futures -import io.micronaut.http.HttpRequest -import io.micronaut.http.HttpResponse -import org.slf4j.Logger -import kotlinx.coroutines.Deferred -import kotlinx.coroutines.guava.asDeferred -import elide.annotations.API -import elide.server.AssetModuleId -import elide.server.StreamedAsset -import elide.server.StreamedAssetResponse - -/** - * Describes the API surface of an *Asset Manager*, which controls access to embedded server-side assets such as CSS and - * JS documents. - * - * The asset manager is responsible for maintaining a runtime registry of all available assets, which is typically built - * at server startup. Assets should be held in memory so they may easily be resolved, dynamically transformed, and - * ultimately served to end-users through either user-defined controllers or the built-in asset controller. - * - * ### Asset descriptors - * - * During the app build, the Elide build tools package scripts for use with SSR or client-side serving. After packaging - * assets from internal and external builds, protocol buffer descriptors are computed and embedded in the application, - * which describe how each asset should be served, addressed, and treated with regard to dependencies. - * - * At server startup, the encoded descriptors are loaded, assets are interpreted and loaded, and the server refers to - * the resulting mapping when called upon to serve assets. - * - * ### Offloading - * - * Static assets do exist on disk, technically, but when embedded in an application JAR or native image, they are - * automatically zipped and inlined into the application binary. Therefore, OS-level tools like `sendfile` aren't an - * option. - * - * However, Micronaut and KotlinX Coroutines both have built-in IO scheduling support, which is usually backed by a pool - * of cached POSIX threads. This offers a good alternative for offloading I/O from a user-defined request handler. - * - * ### Customizing the asset system - * - * The [AssetManager] is a simple interface which mediates between an [AssetResolver] and [AssetReader] implementation - * pair to serve assets at mapped HTTP paths. In some cases, the developer may want to customize this behavior, either - * in the way asset paths are translated or interpreted (via a custom [AssetResolver]), or the way asset content is - * loaded and returned (via a custom [AssetReader]). Both can be used at once if needed. - * - * To customize a given asset system component, use the `Replaces` annotation from Micronaut's context module. For - * example: - * ```kotlin - * package your.package.here; - * - * import elide.server.assets.AssetReader; - * import io.micronaut.context.annotation.Replaces; - * - * @Replaces(ServerAssetReader::class) - * public class MyCoolAssetReader: AssetReader { - * // (impl here) - * } - * ``` - * - * The [AssetManager] participates in the DI container, so the developer only needs to provide a component definition. - * Later, when an [AssetManager] instance is requested by the app, the main implementation will load and use the - * developer's custom implementation. - * - * @see AssetResolver which is responsible for checking, translating, and loading asset paths. - * @see AssetReader which is responsible for reading asset content efficiently. - * @see RenderedAsset for the generic return value model leveraged by [AssetManager]. - * @see ServerAsset for the symbolic asset reference model leveraged by [AssetManager]. - */ -@API public interface AssetManager { - /** - * Asset reader which is in use for this asset manager; responsible for translating an absolute asset resource path - * into a stream of actual resource content. - */ - public val reader: AssetReader - - /** - * Logger which should be used to emit not-found warnings and other messages from the asset manager implementation - * which is live for the current server lifecycle. - */ - public val logging: Logger - - /** - * Resolve the asset requested by the provided HTTP [request]; if the corresponding file cannot be found, return - * `null`, and otherwise, throw an error. - * - * @param request HTTP request to interpret into a relative asset path and return a descriptor for. - * @param moduleId Resolved asset module ID to serve, if known; if `null`, one will be resolved from the [request]. - * @return Resolved server asset, or `null` if one could not be located at the calculated path provided by [request]. - */ - public fun resolve(request: HttpRequest<*>, moduleId: String? = null): ServerAsset? { - return if (moduleId != null) { - reader.findByModuleId(moduleId) - } else { - reader.resolve(request) - } - } - - /** - * Serve a response of status HTTP 404 (Not Found), in response to a request for an asset which could not be located - * by the built-in asset system. - * - * The resulting response is not specific to the asset requested, but the [request] is provided nonetheless so that - * implementations may log or perform other relevant follow-up work. - * - * @param request HTTP request which prompted this 404-not-found response. - * @return Deferred task which resolves to an HTTP 404 response. - */ - public fun serveNotFoundAsync(request: HttpRequest<*>): Deferred { - return Futures.immediateFuture(HttpResponse.notFound()).asDeferred() - } - - /** - * Resolve an [AssetPointer] for the specified [asset] module ID; if none can be located within the current set of - * live server assets, return `null`. - * - * @param asset Asset module ID to resolve. - * @return Pointer to the resulting asset, or `null` if it could not be located. - */ - public fun findAssetByModuleId(asset: AssetModuleId): AssetPointer? { - return reader.pointerTo(asset) - } - - /** - * Generate a relative link to serve the asset specified by the provided [module] ID; the link is built from the - * active configured asset prefix, plus the "asset tag," which is a variable-length cryptographic fingerprint of the - * asset's content. - * - * If the asset system isn't ready, this method may suspend to wait for a period of time for initialization. - * - * @param module Asset module ID for which a relative link is needed. - * @param overrideType Overrides the asset type, which governs the file extension in the generated link. - * @return Relative URI calculated to serve the provided asset. - * @throws IllegalArgumentException If the provided [module] ID cannot be found in the active asset bundle. - */ - public fun linkForAsset(module: AssetModuleId, overrideType: AssetType? = null): String - - /** - * Responsible for converting a known-good asset held by the server into an efficient [StreamedAssetResponse] which - * serves the asset to the invoking client. - * - * This method is the core of the runtime portion of the asset system. When an asset is requested via an endpoint - * managed by the [AssetController], it effectively calls into this method, after resolving the asset, in order to - * actually serve it. - * - * [StreamedAssetResponse] is mapped to Netty/Micronaut classes under the hood which are optimal for serving static - * asset data. - * - * ### Dynamic asset transformation - * - * If the asset must be transformed before being returned, especially in some computationally-expensive manner, then - * the underlying method should switch out to the I/O scheduler (or some other scheduler) in order to avoid any - * blocking behavior. - * - * ### Response variability - * - * If the response needs to be customized based on the provided [request], make sure to include any relevant request - * headers as `Vary` values in the response, so that HTTP caching can work correctly. - * - * @param request HTTP request which this render cycle is responding to. - * @param asset Resolved server asset which we intend to render and serve. - * @return Deferred task which resolves to a [StreamedAssetResponse] satisfying a request to serve the provided - * resolved [asset] data. - */ - public suspend fun renderAssetAsync(request: HttpRequest<*>, asset: ServerAsset): Deferred - - /** - * Asynchronously produce an HTTP response which serves the asset described by the provided [request]; if the asset in - * question cannot be located, serve a `404 Not Found`, and for any other error, serve a `500 Internal Server Error`. - * - * @param request HTTP request which should be translated into an asset path and served. - * @param moduleId Resolved asset module ID to serve, if known; if `null`, one will be resolved from the [request]. - * @return Deferred task which resolves to an HTTP response serving the requested asset. - */ - public suspend fun serveAsync(request: HttpRequest<*>, moduleId: String? = null): Deferred { - return renderAssetAsync( - request, - resolve(request, moduleId) ?: return ( - serveNotFoundAsync(request) - ) - ) - } -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/AssetManifestLoader.kt b/packages/server/src/main/kotlin/elide/server/assets/AssetManifestLoader.kt deleted file mode 100644 index 18c3cfe9ce..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/AssetManifestLoader.kt +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import tools.elide.assets.AssetBundle -import tools.elide.assets.ManifestFormat -import java.io.InputStream -import elide.annotations.API -import elide.server.assets.AssetManifestLoader.Companion.assetManifestCandidates - -/** - * Defines the API surface of a loader which is capable of searching for an asset manifest at server startup, and then - * de-serializing the manifest, so it can be indexed and then made available via an [AssetManager] implementation. - * - * The manifest loader is responsible only for two things: - * 1. **Locating** the manifest on the classpath, if it exists, from a given or default set of candidate locations. - * 2. **De-serializing** the manifest from some known format, and producing the result as an [AssetBundle]. - * - * At server startup, the default set of manifest locations ([assetManifestCandidates]) is searched unless otherwise - * specified by the developer. - * - * ### Implementation - * - * Typically, this interface is implemented by [ServerAssetManifestProvider]. The developer may replace this default - * implementation using the `@Replaces` annotation from Micronaut. For example: - * - * ```kotlin - * @Replaces(ServerAssetManifestProvider::class) - * class MyAssetManifestProvider : AssetManifestLoader { - * // implementation here - * } - * ``` - */ -@API public interface AssetManifestLoader { - public companion object { - private const val assetRoot = "/assets" - private val assetManifestCandidates = listOf( - ManifestFormat.BINARY to "$assetRoot/app.assets.pb", - ManifestFormat.JSON to "$assetRoot/app.assets.pb.json", - ) - } - - /** - * Find and load an asset manifest embedded within the scope of the current application, using the provided set of - * [candidates] as locations in the classpath to search. - * - * Each pair carries a [ManifestFormat] and path, indicating the expected format of the bundle. - * - * @param candidates Candidate locations for the server asset manifest. - * @return Decoded [AssetBundle] from one of the candidate locations; which location is lost, and any decoding errors - * are returned as `null`. - */ - public fun findLoadManifest(candidates: List>): AssetBundle? - - /** - * Find and load an asset manifest embedded within the scope of the current application; search in the default path - * locations, and if no manifest is found, or no manifest could safely be decoded, return `null`. - * - * @return Decoded asset manifest, or `null` if no manifest could be found, or a manifest was found and could not be - * safely de-serialized. - */ - public fun findLoadManifest(): AssetBundle? { - return findLoadManifest( - assetManifestCandidates - ) - } - - /** - * Find an asset manifest present as a resource in the application classpath from the set of provided [candidates], - * each of which represents a potential path and [ManifestFormat]. - * - * If a manifest is found at any of the candidate locations, a pair of [ManifestFormat]/[InputStream] is returned, - * which can be used to load a de-serializer and run it. If no manifest is found or anything else goes wrong (i.e. a - * manifest is found but it is in the wrong format), `null` is returned. - * - * @param candidates Candidate paths and [ManifestFormat] values where we should search for the manifest. - * @return Pair of the located [ManifestFormat] and an [InputStream], or `null` if no manifest was found. - */ - public fun findManifest(candidates: List>): Pair? - - /** - * Find an asset manifest embedded within the scope of the current application; search in the default path locations, - * and if no manifest is found, return `null`; otherwise, return the expected format of the found manifest, and an - * input stream to consume it. - * - * @return Pair carrying the found [ManifestFormat] and an [InputStream] to consume it, or `null` if no manifest could - * be located in the default classpath resource locations. - */ - public fun findManifest(): Pair? { - return findManifest( - assetManifestCandidates - ) - } -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/AssetPointer.kt b/packages/server/src/main/kotlin/elide/server/assets/AssetPointer.kt deleted file mode 100644 index ec5e9068ec..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/AssetPointer.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import java.util.* -import elide.server.AssetModuleId - -/** - * Reference to an application-embedded asset. - * - * @param moduleId Developer-assigned ID for this asset module. - * @param type Type of asset represented by this reference. - * @param token Full-length Asset Tag (referred to as the "asset token"). - * @param tag Generated asset tag (fingerprint) for this asset, in full (untrimmed) form. - * @param etag Computed ETag for this asset. - * @param modified Last-modified time for this asset; set to `-1` to indicate "unknown". - * @param index Index of the asset within the asset content payload list of the active asset bundle. - */ -public data class AssetPointer( - val moduleId: AssetModuleId, - val type: AssetType, - val token: String, - val tag: String, - val etag: String, - val modified: Long, - val index: SortedSet?, -) : java.io.Serializable diff --git a/packages/server/src/main/kotlin/elide/server/assets/AssetReader.kt b/packages/server/src/main/kotlin/elide/server/assets/AssetReader.kt deleted file mode 100644 index fa27db8160..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/AssetReader.kt +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import io.micronaut.http.HttpRequest -import java.io.FileNotFoundException -import kotlinx.coroutines.Deferred -import elide.annotations.API -import elide.server.AssetModuleId - -/** - * Describes the API surface expected for a reader of static assets from some data source; responsible for efficiently - * reading assets from a resource path and producing resulting content. - * - * Asset readers can cache the results of their reads, if desired, and may base caching decisions on the asset - * descriptors provided when resolving assets. - * - * ### Resource assets - * - * Typically, resources are embedded in the application JAR or native image, in zipped form, alongside embedded SSR - * assets and compiled JVM or native classes. The main [AssetReader] implementation knows how to interpret these assets - * based on a binary-encoded protocol buffer message *also* embedded within the application. - * - * ### Replacing the main reader - * - * The developer may find it desirable to write and provide their own [AssetReader] implementation, which can be - * accomplished via Micronaut's DI system (read on below). In particular, this may be a requirement for stable testing - * of a broader [AssetManager] implementation. - * - * #### Replacing components of the [AssetManager] - * - * To replace the stock [AssetReader] implementation, Micronaut's `Replaces` annotation can be used: - * ```kotlin - * package your.package.here; - * - * import elide.server.assets.AssetReader; - * import io.micronaut.context.annotation.Replaces; - * - * @Replaces(ServerAssetReader::class) - * public class MyCoolAssetReader: AssetReader { - * // (impl here) - * } - * ``` - * - * @see AssetManager which coordinates between the [AssetReader] and [AssetResolver]. - * @see RenderedAsset for the generic return value model leveraged by [AssetManager]. - * @see ServerAsset for the symbolic asset reference model leveraged by [AssetManager]. - */ -@API public interface AssetReader : AssetResolver { - /** - * Given a resolved asset [descriptor] which should be known to exist, read the associated asset content, and return - * it as an async [Deferred] task which can be awaited, and then consumed. - * - * If the asset underlying the provided asset descriptor is found not to exist, a [FileNotFoundException] is raised. - * - * @throws FileNotFoundException if the provided asset cannot be located. - * @param descriptor Resolved asset descriptor, which is expected to exist. - * @param request HTTP request which is asking to be served this asset. - * @return Deferred task which resolves to a rendered asset which may be consumed, corresponding to [descriptor]. - */ - @Throws(FileNotFoundException::class) - public suspend fun readAsync(descriptor: ServerAsset, request: HttpRequest<*>): Deferred - - /** - * Resolve a reference to an asset identified by the provided [moduleId], in the form of an [AssetPointer]; if no - * matching asset can be found, return `null` to indicate a not-found failure. - * - * @param moduleId ID of the module which we should resolve from the active asset bundle. - * @return Asset pointer resolved for the provided [moduleId], or `null`. - */ - public fun pointerTo(moduleId: AssetModuleId): AssetPointer? -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/AssetReference.kt b/packages/server/src/main/kotlin/elide/server/assets/AssetReference.kt deleted file mode 100644 index 3cdeb58d52..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/AssetReference.kt +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import kotlinx.serialization.Serializable -import elide.server.AssetModuleId - -/** - * Represents a resolved reference to an asset at serving-time, before it is rendered into a link or other tag. - * - * @param module ID of the asset module being referenced. - * @param assetType Type of asset being referenced. - * @param href Relative link to serve the asset. - * @param type Type override for the tag, if applicable. - * @param inline Whether this asset is eligible to be inlined into the page. - * @param preload Whether this asset is eligible to be preloaded. - */ -@Serializable public data class AssetReference( - val module: AssetModuleId, - val assetType: AssetType, - val href: String, - val type: String? = null, - val inline: Boolean = false, - val preload: Boolean = false, -) : java.io.Serializable { - internal companion object { - /** @return [AssetReference] from the specified [pointer]. */ - @JvmStatic internal fun fromPointer(pointer: AssetPointer, uri: String): AssetReference = AssetReference( - module = pointer.moduleId, - assetType = pointer.type, - href = uri, - ) - } -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/AssetResolver.kt b/packages/server/src/main/kotlin/elide/server/assets/AssetResolver.kt deleted file mode 100644 index 657315abf6..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/AssetResolver.kt +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import io.micronaut.http.HttpRequest -import elide.annotations.API -import elide.server.AssetModuleId - -/** - * Describes the expected API surface for a resolver of server-side assets, which, in cooperation with an [AssetReader] - * and under the management of an [AssetManager], is responsible for checking asset paths for existence and translating - * them to absolute paths which may be read and served. - * - * ### Asset tags - * "Asset tags" are short strings which are computed at build time from a cryptographic hash of the asset's contents. - * Tags can be used to serve an asset from the asset controller, using URLs like `/_/asset/{tag}.{ext}`, where `{tag}` - * is the asset tag and `{ext}` is the asset's file extension (prefix adjustable by user). - * - * Developers reference assets by their *module ID*, which is a short recognizable string assigned by the developer to a - * given asset. - * - * @see AssetReader which is charged with efficiently reading asset content. - * @see AssetManager which coordinates between the [AssetReader] and [AssetResolver]. - * @see RenderedAsset for the generic return value model leveraged by [AssetManager]. - * @see ServerAsset for the symbolic asset reference model leveraged by [AssetManager]. - */ -@API public interface AssetResolver { - /** - * Return the asset module corresponding to the provided [moduleId], if possible, or return `null` to indicate that - * the asset could not be located. - * - * @param moduleId ID for the asset module, assigned by the developer. - * @return Resolved server asset, or `null`, indicating that the asset could not be located. - */ - public fun findByModuleId(moduleId: AssetModuleId): ServerAsset? - - /** - * Resolve the provided [path] to a server asset, if possible, or return `null` to indicate that the asset could not - * be located; the given [path] value can be prefixed with the asset serving prefix (`/_/asset` by default) or not - * prefixed at all. - * - * **Note:** Only asset tags should be used to serve resources at runtime in production circumstances. - * - * @param path Path for the asset which we should resolve. - * @return Resolved server asset, or `null`, indicating that the asset could not be located. - */ - public fun resolve(path: String): ServerAsset? - - /** - * Resolve the provided HTTP [request] to an asset path string, and then resolve the asset path string to a loaded - * [ServerAsset], if possible; return `null` if the asset cannot be located. - * - * @param request HTTP request for the asset which we should resolve. - * @return Resolved server-held asset, or `null` to indicate that the asset could not be located. - */ - public fun resolve(request: HttpRequest<*>): ServerAsset? { - return resolve(request.path) - } -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/AssetType.kt b/packages/server/src/main/kotlin/elide/server/assets/AssetType.kt deleted file mode 100644 index c53a237a1d..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/AssetType.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import io.micronaut.http.MediaType - -/** - * Enumerates known kinds of registered application assets. - * - * @param mediaType Micronaut media type associated with this asset type. - */ -public enum class AssetType constructor(internal val mediaType: MediaType) { - /** Generic assets which employ custom configuration. */ - GENERIC(mediaType = MediaType("application/octet-stream")), - - /** Plain text assets. */ - TEXT(mediaType = MediaType("text/plain", "txt")), - - /** JavaScript assets. */ - SCRIPT(mediaType = MediaType("application/javascript", "js")), - - /** Stylesheet assets. */ - STYLESHEET(mediaType = MediaType("text/css", "css")), -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/RenderedAsset.kt b/packages/server/src/main/kotlin/elide/server/assets/RenderedAsset.kt deleted file mode 100644 index 64110f748f..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/RenderedAsset.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import com.google.protobuf.ByteString -import tools.elide.data.CompressionMode -import tools.elide.std.HashAlgorithm -import elide.server.AssetModuleId - -/** - * Intermediary class which represents an asset that has been fully prepared to serve to an end-user request, including - * any headers which should apply to the response. - * - * @param module Asset module which was rendered to produce this record. - * @param type Type of asset being served. - * @param variant Compression mode for this asset response. - * @param headers Headers to apply to this asset response. - * @param size Size of the data expected from this asset variant. - * @param lastModified Unix epoch timestamp indicating when this asset was last modified. - * @param digest Raw bytes of the attached digest for this asset. - * @param producer Data payload callable for this asset response. - */ -public class RenderedAsset( - public val module: AssetModuleId, - public val type: AssetType, - public val variant: CompressionMode, - public val headers: Map, - public val size: Long, - public val lastModified: Long, - public val digest: Pair?, - public val producer: () -> ByteString, -) diff --git a/packages/server/src/main/kotlin/elide/server/assets/ServerAsset.kt b/packages/server/src/main/kotlin/elide/server/assets/ServerAsset.kt deleted file mode 100644 index 22d5f6774d..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/ServerAsset.kt +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import tools.elide.assets.AssetBundle -import java.util.* -import elide.server.AssetModuleId - -/** - * Describes a server-side asset which is embedded in an application bundle through Elide's asset tools and protocol - * buffer for asset bundle metadata. - * - * @param module ID assigned by the developer to this asset module. - * @param assetType Type of asset being referenced by this object. - * @param index Index of this asset within the content bundle, if applicable. - */ -public sealed class ServerAsset private constructor( - internal val module: AssetModuleId, - internal val assetType: AssetType, - internal val index: SortedSet?, -) { - /** - * Describes a JavaScript asset which is embedded in a given Elide application, and described by Elide's protocol - * buffer structures; when read from the application bundle and interpreted, this class is used to hold script info. - * - * @param descriptor Script-type settings bundle describing this asset. - * @param index Index of the content payload, within the live asset bundle, corresponding to this script. - */ - public class Script( - internal val descriptor: AssetBundle.ScriptBundle, - index: SortedSet?, - ) : ServerAsset( - module = descriptor.module, - assetType = AssetType.SCRIPT, - index = index, - ) - - /** - * Describes a stylesheet asset which is embedded in a given Elide application, and described by Elide's protocol - * buffer structures; when read from the application bundle and interpreted, this class is used to hold document info. - * - * @param descriptor Stylesheet-type settings bundle describing this asset. - * @param index Index of the content payload, within the live asset bundle, corresponding to this stylesheet. - */ - public class Stylesheet( - internal val descriptor: AssetBundle.StyleBundle, - index: SortedSet?, - ) : ServerAsset( - module = descriptor.module, - assetType = AssetType.STYLESHEET, - index = index, - ) - - /** - * Describes a generic text asset of some kind, for example, `humans.txt` or `robots.txt`; when read from the app - * bundle and interpreted, this class is used to hold file info. - * - * @param descriptor Text-type settings bundle describing this asset. - * @param index Index of the content payload, within the live asset bundle, corresponding to this text asset. - */ - public class Text( - internal val descriptor: AssetBundle.GenericBundle, - index: SortedSet?, - ) : ServerAsset( - module = descriptor.module, - assetType = AssetType.TEXT, - index = index, - ) -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/ServerAssetIndex.kt b/packages/server/src/main/kotlin/elide/server/assets/ServerAssetIndex.kt deleted file mode 100644 index 3aaea6ef14..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/ServerAssetIndex.kt +++ /dev/null @@ -1,414 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import com.google.common.annotations.VisibleForTesting -import com.google.common.graph.ElementOrder -import com.google.common.graph.ImmutableNetwork -import com.google.common.graph.Network -import com.google.common.graph.NetworkBuilder -import io.micronaut.context.BeanContext -import io.micronaut.context.annotation.Context -import io.micronaut.context.event.ApplicationEventListener -import io.micronaut.runtime.server.event.ServerStartupEvent -import tools.elide.assets.AssetBundle -import tools.elide.assets.AssetBundle.AssetContent -import java.nio.charset.StandardCharsets -import java.util.* -import java.util.concurrent.ConcurrentSkipListMap -import java.util.concurrent.CountDownLatch -import java.util.concurrent.TimeUnit -import java.util.concurrent.atomic.AtomicBoolean -import java.util.concurrent.atomic.AtomicReference -import java.util.stream.Collectors -import java.util.stream.IntStream -import jakarta.inject.Inject -import kotlin.math.max -import elide.server.AssetModuleId -import elide.server.AssetTag -import elide.server.assets.ServerAssetIndex.AssetStartupListener -import elide.server.cfg.AssetConfig -import elide.util.Base64 - -/** - * Server-side utility which, at server startup, consumes the embedded asset bundle (if any), and generates a set of - * runtime indexes therefrom. - * - * Indexes produced by this object include `(assetModuleId => assetPointer)`, and `(assetTag => idx)`. The first of - * these can be used to efficiently resolve assets when you know the module ID before-hand. The second can be used to - * directly resolve an asset tag from a URL to a content payload. - * - * Asset content payloads enclose their module ID, so if you need to resolve an `assetTag` to a pointer, you can simply - * resolve the `assetTag` to the content payload index, resolve the content payload, and then use the other index to - * get to an `assetPointer`, which should have everything you need. - * - * ### Dependency graph - * - * In addition to the indexes described above, an immutable directed graph is computed from asset dependencies described - * in the bundle. The dependency graph is used to determine load order and dependency resolution when including assets - * on a page. - * - * ### Startup sequence - * - * At server startup, [AssetStartupListener] is dispatched, which acquires a bean of [ServerAssetIndex]. The bean then - * initializes by calling into [ServerAssetManifestProvider] (having been initialized by the DI container already), and - * waits until a materialized asset bundle is ready. From that bundle, indexes are computed and then made live. - * - * @param assetConfig Configuration for the asset system, which is live for this server run. - * @param manifestProvider Provider for the de-serialized asset manifest. Responsible for locating the bundle within the - * current application and de-serializing it into an interpreted manifest. - */ -@Context -@Suppress("UnstableApiUsage", "TooManyFunctions") -internal class ServerAssetIndex @Inject constructor( - private val assetConfig: AssetConfig, - private val manifestProvider: AssetManifestLoader, -) { - companion object { - private const val WAIT_TIMEOUT = 5L - private const val MIN_TAIL_SIZE = 4 - } - - // Wait latch for asset consumers. - private val latch: CountDownLatch = CountDownLatch(1) - - /** Listens for server startup and runs hooks. */ - @Context internal class AssetStartupListener : ApplicationEventListener { - @Inject private lateinit var beanContext: BeanContext - - override fun onApplicationEvent(event: ServerStartupEvent) { - // initialize the asset manager - beanContext.getBean(ServerAssetIndex::class.java).initialize() - } - } - - // Whether the manager has started initializing yet. - internal val initialized: AtomicBoolean = AtomicBoolean(false) - - // Dependency graph loaded from the embedded manifest. - internal val dependencyGraph: AtomicReference> = - AtomicReference(null) - - // Interpreted manifest structure loaded from the embedded proto document. - internal val assetManifest: AtomicReference = AtomicReference(null) - - // Build an ETag value for the provided `entry`. - @VisibleForTesting internal fun buildETagForAsset(entry: AssetContent, bundle: AssetBundle): String { - return if (entry.variantCount > 0 && entry.getVariant(0).data.integrityCount > 0) { - val identityVariant = entry.getVariant(0) - val integrityValue = identityVariant.data.getIntegrity(0) - if (!(assetConfig.preferWeakEtags ?: AssetConfig.DEFAULT_PREFER_WEAK_ETAGS)) { - // we have an integrity tag and we prefer strong etags - val tailCount = bundle.settings.digestSettings.tail - val encoded = String( - Base64.encodeWebSafe(integrityValue.fingerprint.toByteArray().takeLast(tailCount).toByteArray()), - StandardCharsets.UTF_8 - ) - "\"$encoded\"" - } else { - // we have an integrity tag and we prefer weak etags - "W/\"${bundle.generated.seconds}\"" - } - } else { - // since we don't have an integrity fingerprint for this asset, we can substitute and use a "weak" ETag via the - // generated-timestamp in the asset bundle. - "W/\"${bundle.generated.seconds}\"" - } - } - - // Build an ETag value for the provided `entry`, resolving the active manifest. - @VisibleForTesting internal fun buildETagForAsset(entry: AssetContent): String { - return buildETagForAsset(entry, activeManifest().bundle) - } - - // Resolve the active manifest or fail loudly. - @VisibleForTesting internal fun activeManifest(): ServerAssetManifest { - require(initialized.get()) { - "Asset manager is not initialized; `activeManifest` cannot be called yet" - } - return assetManifest.get()!! - } - - @VisibleForTesting internal fun addDirectDeps( - moduleId: String, - depGraph: ImmutableNetwork.Builder, - deps: AssetBundle.AssetDependencies, - ) { - depGraph.addNode(moduleId) - - // add only direct dependencies - deps.directList.forEach { - depGraph.addEdge( - moduleId, - it, - AssetDependency( - depender = moduleId, - dependee = it, - optional = false - ), - ) - } - } - - @VisibleForTesting - internal fun buildAssetIndexes( - bundle: AssetBundle - ): Pair, ServerAssetManifest> { - // create a builder for the asset graph - val builder: ImmutableNetwork.Builder = NetworkBuilder - .directed() - .allowsParallelEdges(false) - .allowsSelfLoops(false) - .nodeOrder(ElementOrder.stable()) - .edgeOrder(ElementOrder.stable()) - .immutable() - - // check for module and tag duplicates - val distinctAssets = bundle.assetList.stream().map { - it.module - }.distinct().collect(Collectors.toSet()) - - // no duplicate module IDs allowed - if (distinctAssets.size != bundle.assetCount) { - val dupes = bundle.assetList.stream().map { - it.module - }.map { moduleId -> - moduleId to bundle.assetList.count { - it.module == moduleId - } - }.collect(Collectors.toList()).joinToString(", ") { - "${it.first} (${it.second} entries)" - } - - error("Duplicate asset modules detected in bundle: $dupes") - } - - val tagIndex = ConcurrentSkipListMap() - - // first, build a content payload index which maps each module to the content payload which implements it. - val modulesToIndexes = IntStream.rangeClosed(0, bundle.assetCount - 1).parallel().mapToObj { - it to bundle.getAsset(it) - }.map { - val (idx, content) = it - - // map the tag to both the full asset fingerprint, and the "trimmed" asset fingerprint, which is the "asset tag." - // the asset tag length is specified on the settings payload in the manifest. - tagIndex[content.token] = idx - tagIndex[content.token.takeLast(max(bundle.settings.digestSettings.tail, MIN_TAIL_SIZE))] = idx - content.module to idx - }.collect( - Collectors.toMap( - { it.first }, - { sortedSetOf(it.second) }, - { _, _ -> error("Assets must hold a maximum of one source file.") }, - { TreeMap() } - ) - ) - - // build an index of each module ID => a module record. we can typically get to the module ID from everything else. - val typeRanges = listOf( - AssetType.SCRIPT to bundle.scriptsMap.keys, - AssetType.STYLESHEET to bundle.stylesMap.keys, - AssetType.TEXT to bundle.genericMap.keys, - ) - val moduleIndex = typeRanges.parallelStream().flatMap { - val (type, keys) = it - keys.parallelStream().map { key -> - type to key - } - }.map { - // we're working with a type of asset and index in the array here. so we need to use a concrete extractor, but we - // are just assembling an index, so we return back to generic use quickly. - val (assetType, moduleId) = it - - // we also need to fetch the content record so we can index the asset tag along with the other details. - val targetIndexes = modulesToIndexes[moduleId] - val assetContent = bundle.getAsset(targetIndexes!!.first()) - - it.second to pointerForConcrete( - assetType, - moduleId, - assetContent, - modulesToIndexes[moduleId], - bundle, - builder, - ) - }.collect( - Collectors.toMap( - { it.first }, // module ID - { it.second }, // pointer - { value, _ -> error("Two assets cannot have the same module ID: '$value'") }, - { ConcurrentSkipListMap() } - ) - ) - return builder.build() to ServerAssetManifest( - bundle = bundle, - moduleIndex = moduleIndex, - tagIndex = tagIndex, - ) - } - - @VisibleForTesting - internal fun pointerForConcrete( - type: AssetType, - key: AssetModuleId, - content: AssetContent, - idx: TreeSet?, - bundle: AssetBundle, - depGraph: ImmutableNetwork.Builder, - ): AssetPointer { - // pre-emptively build an etag (if enabled) - val token = content.token - val etag = buildETagForAsset(content, bundle) - val tailCount = bundle.settings.digestSettings.tail - val tag = token.takeLast(tailCount) - - when (type) { - // JavaScript assets - AssetType.SCRIPT -> { - val script = bundle.getScriptsOrThrow(key) - if (script.hasDependencies()) addDirectDeps( - key, - depGraph, - script.dependencies, - ) - } - - // CSS assets - AssetType.STYLESHEET -> { - val sheet = bundle.getStylesOrThrow(key) - if (sheet.hasDependencies()) addDirectDeps( - key, - depGraph, - sheet.dependencies, - ) - } - - // generic assets - AssetType.TEXT -> { - bundle.getGenericOrThrow( - key - ) - } - - else -> error("Unsupported asset type for pointer: '${type.name}'") - } - return AssetPointer( - moduleId = key, - type = type, - token = token, - tag = tag, - etag = etag, - modified = bundle.generated.seconds, - index = idx, - ) - } - - @VisibleForTesting - @Synchronized - internal fun initialize() { - if (initialized.compareAndSet(false, true)) { - // read the embedded asset bundle - val assetBundle = manifestProvider.findLoadManifest() ?: return - - // build index of assets to modules and tags - val (graph, manifest) = buildAssetIndexes(assetBundle) - assetManifest.set(manifest) - dependencyGraph.set(graph) - - // allow asset serving now - latch.countDown() - } - } - - @VisibleForTesting - internal fun buildConcreteAsset( - type: AssetType, - moduleId: String, - bundle: AssetBundle, - idx: SortedSet? - ): ServerAsset { - return when (type) { - // if it's a script, wrap it as a script - AssetType.SCRIPT -> ServerAsset.Script( - bundle.getScriptsOrThrow(moduleId), - idx, - ) - - // if it's a stylesheet, wrap it as a stylesheet - AssetType.STYLESHEET -> ServerAsset.Stylesheet( - bundle.getStylesOrThrow(moduleId), - idx, - ) - - // same with text - AssetType.TEXT -> ServerAsset.Text( - bundle.getGenericOrThrow(moduleId), - idx, - ) - - else -> error("Unsupported asset type for pointer: '${type.name}'") - } - } - - /** - * Look up any embedded server asset by the provided asset [tag], or return `null` to indicate that there was no - * matching asset. - * - * @param tag Tag for the asset to resolve. - * @param timeoutSeconds Max time to wait for the asset engine. - * @return Resolved and interpreted asset, or `null`. - */ - internal fun resolveByTag(tag: String, timeoutSeconds: Long = WAIT_TIMEOUT): ServerAsset? { - if (!initialized.get()) { - latch.await(timeoutSeconds, TimeUnit.SECONDS) - if (!initialized.get()) { - return null - } - } - val manifest = activeManifest() - return manifest.tagIndex[tag]?.let { asset -> - // we've found an asset pointer, so we just need to wrap it with extra metadata before returning. - val assetPayload = manifest.bundle.getAsset(asset) - val pointer = manifest.moduleIndex[assetPayload.module]!! - buildConcreteAsset( - pointer.type, - pointer.moduleId, - manifest.bundle, - pointer.index, - ) - } - } - - /** - * Given a known-good asset [idx] for a content payload, read the asset and perform any transformations or other - * relevant pre-requisite work before returning it to the invoking client. - * - * @param idx Index of the content payload implementing this module. - * @return Rendered asset module, ready for serving decisions. - */ - internal suspend fun readByModuleIndex(idx: Int): AssetContent { - return activeManifest().bundle.getAsset(idx)!! - } - - /** - * Retrieve the timestamp indicating when the active asset bundle was generated; this is used as the last-modified - * value when serving assets from the bundle. - * - * @return Generated timestamp value, in seconds, from the active asset bundle. - */ - internal fun getBundleTimestamp(): Long { - return activeManifest().bundle.generated.seconds - } -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/ServerAssetManager.kt b/packages/server/src/main/kotlin/elide/server/assets/ServerAssetManager.kt deleted file mode 100644 index 8527f9a71b..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/ServerAssetManager.kt +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import com.google.common.util.concurrent.Futures -import io.micronaut.context.annotation.Context -import io.micronaut.http.HttpHeaders -import io.micronaut.http.HttpRequest -import io.micronaut.http.HttpResponse -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import java.nio.charset.StandardCharsets -import jakarta.inject.Inject -import kotlinx.coroutines.Deferred -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.async -import kotlinx.coroutines.guava.asDeferred -import kotlinx.coroutines.withContext -import elide.server.AssetModuleId -import elide.server.StreamedAsset -import elide.server.StreamedAssetResponse -import elide.server.cfg.AssetConfig - -/** - * Built-in asset manager implementation for use with Elide applications. - * - * Resolves and loads assets embedded in the application at build-time, based on binary-encoded protocol buffer messages - * which define the dependency structure and metadata of each embedded asset. - * - * @param assetConfig Server-side asset configuration. - * @param assetIndex Active asset index for this server run. - * @param reader Active asset reader implementation for this server run. - */ -@Context -public class ServerAssetManager @Inject internal constructor( - private val assetConfig: AssetConfig, - private val assetIndex: ServerAssetIndex, - override val reader: AssetReader, -) : AssetManager { - public companion object { - // Wait timeout in seconds for initialization. - public const val waitTimeout: Long = 10L - } - - override val logging: Logger = LoggerFactory.getLogger(AssetManager::class.java) - - // Check if a request has conditional headers. - private fun requestIsConditional(request: HttpRequest<*>): Boolean { - return request.headers.contains(HttpHeaders.IF_NONE_MATCH) || request.headers.contains(HttpHeaders.IF_MATCH) - } - - // Build an HTTP asset response from the provided asset result. - private fun buildAssetResponse(asset: RenderedAsset): StreamedAssetResponse { - val responseData = asset.type.mediaType to asset.producer.invoke() - .toByteArray() - - val response = HttpResponse.ok( - responseData - ).characterEncoding( - StandardCharsets.UTF_8 - ).contentType( - asset.type.mediaType - ).contentLength( - asset.size - ) - asset.headers.entries.forEach { - val (header, value) = it - response.header(header, value) - } - return response - } - - override fun linkForAsset(module: AssetModuleId, overrideType: AssetType?): String { - val pointer = reader.pointerTo(module) - require(pointer != null) { - "Failed to generate link for asset: asset module '$module' not found" - } - val prefix = (assetConfig.prefix ?: AssetConfig.DEFAULT_ASSET_PREFIX).removeSuffix("/") - val tag = pointer.tag - val extension = when (overrideType ?: pointer.type) { - AssetType.STYLESHEET -> ".css" - AssetType.SCRIPT -> ".js" - AssetType.TEXT -> ".txt" - AssetType.GENERIC -> "" - } - return "$prefix/$tag$extension" - } - - @Suppress("NestedBlockDepth", "ReturnCount") - override suspend fun renderAssetAsync(request: HttpRequest<*>, asset: ServerAsset): Deferred { - logging.debug( - "Serving asset with module ID '${asset.module}'" - ) - - // before serving the asset, check if the request is conditional. if it has an ETag specified that matches, or a - // last-modified time that matches, we can skip serving it and serve a 304. - if ((assetConfig.etags ?: AssetConfig.DEFAULT_ENABLE_ETAGS) && requestIsConditional(request)) { - val etag = request.headers[HttpHeaders.IF_NONE_MATCH] - if (etag != null && etag.isNotEmpty()) { - // fast path: the current server assigned the ETag. - val module = assetIndex.activeManifest().moduleIndex[asset.module] - if (module != null) { - val reference = module.etag - if (etag == reference) { - // we have a match against a strong ETag. - return Futures.immediateFuture( - HttpResponse.notModified() - ).asDeferred() - } - } - if (etag.startsWith("W/")) { - // match against the manifest timestamp. if the two match, we're able to satisfy this without sending the - // asset, via a weak ETag. - val generatedTime = assetIndex.getBundleTimestamp() - val etagTime = etag.substring(2).removeSurrounding("\"") - if (etagTime == generatedTime.toString()) { - // we have a match against a weak ETag. - return Futures.immediateFuture( - HttpResponse.notModified() - ).asDeferred() - } - } - // if we arrive here, the ETag either didn't match, or was not present in a substantive way. either way we need - // to fall back to regular serving (below). - } - } - return withContext(Dispatchers.IO) { - // pass off to the reader to read the asset - reader.readAsync( - asset, - request = request, - ).let { - async { - buildAssetResponse(it.await()) - } - } - } - } -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/ServerAssetManifest.kt b/packages/server/src/main/kotlin/elide/server/assets/ServerAssetManifest.kt deleted file mode 100644 index 17dc3b3322..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/ServerAssetManifest.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import tools.elide.assets.AssetBundle -import java.util.* -import elide.server.AssetModuleId -import elide.server.AssetTag - -/** - * Loaded/interpreted asset manifest data structure. - * - * @param bundle De-serialized asset bundle, embedded in the application. - * @param moduleIndex Sorted map (index) of asset module IDs to asset pointers. - * @param tagIndex Sorted map (index) of asset tags to content payload indexes. - */ -internal class ServerAssetManifest( - internal val bundle: AssetBundle, - internal val moduleIndex: SortedMap, - internal val tagIndex: SortedMap, -) diff --git a/packages/server/src/main/kotlin/elide/server/assets/ServerAssetManifestProvider.kt b/packages/server/src/main/kotlin/elide/server/assets/ServerAssetManifestProvider.kt deleted file mode 100644 index 2f4bce7480..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/ServerAssetManifestProvider.kt +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import com.google.common.annotations.VisibleForTesting -import com.google.protobuf.util.JsonFormat -import io.micronaut.context.annotation.Context -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import tools.elide.assets.AssetBundle -import tools.elide.assets.ManifestFormat -import java.io.InputStream -import java.nio.charset.StandardCharsets -import java.util.* - -/** Loads an asset manifest from the application JAR or native image. */ -@Context internal class ServerAssetManifestProvider : AssetManifestLoader { - private val logging: Logger = LoggerFactory.getLogger(ServerAssetManifestProvider::class.java) - - @VisibleForTesting - @Suppress("TooGenericExceptionCaught") - internal fun deserializeLoadManifest(subject: Pair): AssetBundle? { - val (format, stream) = subject - logging.debug( - "Decoding manifest from detected format '${format.name}'" - ) - val result = try { - when (format) { - ManifestFormat.BINARY -> stream.buffered().use { - AssetBundle.parseFrom(it) - } - - ManifestFormat.JSON -> stream.bufferedReader(StandardCharsets.UTF_8).use { buf -> - val builder = AssetBundle.newBuilder() - JsonFormat.parser().ignoringUnknownFields().merge( - buf, - builder, - ) - builder.build() - } - - else -> { - logging.warn( - "Cannot de-serialize asset manifest with format: '${format.name}'. Asset loading disabled." - ) - null - } - } - } catch (thr: Throwable) { - logging.debug("Failed to load asset manifest", thr) - null - } - return if (result == null) { - null - } else { - val algo = result.settings.digestSettings.algorithm - val encoded = Base64.getEncoder().withoutPadding() - .encodeToString(result.digest.toByteArray()) - logging.debug( - "Resolved asset manifest with fingerprint ${algo.name}($encoded)" - ) - result - } - } - - /** @inheritDoc */ - override fun findLoadManifest(candidates: List>): AssetBundle? { - val found = findManifest(candidates) - logging.debug( - if (found != null) { - "Located asset manifest: loading" - } else { - "No asset manifest located. Asset loading will be disabled." - } - ) - return if (found == null) { - // we couldn't locate a manifest. - null - } else deserializeLoadManifest( - found - ) - } - - /** @inheritDoc */ - override fun findManifest(candidates: List>): Pair? { - // find the first manifest that exists - return candidates.firstNotNullOfOrNull { - val (format, path) = it - logging.trace( - "Checking for manifest at resource location '$path'" - ) - val result = ServerAssetManager::class.java.getResourceAsStream(path) - logging.trace( - if (result != null) { - "Found manifest at resource location '$path'" - } else { - "No manifest found at resource location '$path'" - } - ) - if (result == null) { - null - } else { - format to result - } - } - } -} diff --git a/packages/server/src/main/kotlin/elide/server/assets/ServerAssetReader.kt b/packages/server/src/main/kotlin/elide/server/assets/ServerAssetReader.kt deleted file mode 100644 index f85e67608c..0000000000 --- a/packages/server/src/main/kotlin/elide/server/assets/ServerAssetReader.kt +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import com.google.common.annotations.VisibleForTesting -import com.google.common.util.concurrent.Futures -import io.micronaut.context.annotation.Context -import io.micronaut.http.HttpHeaders -import io.micronaut.http.HttpRequest -import tools.elide.assets.AssetBundle.AssetContent -import tools.elide.data.CompressedData -import tools.elide.data.CompressionMode -import java.util.* -import jakarta.inject.Inject -import jakarta.inject.Singleton -import kotlinx.coroutines.Deferred -import kotlinx.coroutines.guava.asDeferred -import elide.server.AssetModuleId -import elide.server.cfg.AssetConfig - -/** - * Default implementation of an [AssetReader]; used in concert with the default [AssetManager] to fulfill HTTP requests - * for static assets embedded within the application. - * - * @param assetConfig Server-side asset configuration. - * @Param assetIndex Live index of asset data. - */ -@Context @Singleton -public class ServerAssetReader @Inject internal constructor( - private val assetConfig: AssetConfig, - private val assetIndex: ServerAssetIndex, -) : AssetReader { - @VisibleForTesting - internal fun baselineHeaders(entry: AssetContent, variant: CompressedData): Map { - val headerMap = HashMap() - - // apply content encoding header - val contentEncoding = if (CompressionMode.BROTLI == variant.compression) { - "br" - } else { - // optimization: each content encoding is the lower-cased name of the enum, except for `BROTLI`, which is `br`. - variant.compression.name.lowercase() - } - if (contentEncoding != "identity") { - headerMap[HttpHeaders.CONTENT_ENCODING] = contentEncoding - } - - // if we have a digest for this asset, we should affix it as the `ETag` for the response. - if (assetConfig.etags ?: AssetConfig.DEFAULT_ENABLE_ETAGS) { - headerMap[HttpHeaders.ETAG] = assetIndex.buildETagForAsset(entry) - } - return headerMap - } - - @VisibleForTesting - internal fun selectBestVariant( - content: AssetContent, - request: HttpRequest<*> - ): Pair, CompressedData> { - val identity = content.getVariant(0) - val acceptEncoding = request.headers[HttpHeaders.ACCEPT_ENCODING] - if (acceptEncoding != null && acceptEncoding.isNotBlank() && acceptEncoding != "identity") { - // calculate supported encodings based on request - val encodingNames = acceptEncoding.split(",").mapNotNull { - when (it.trim().lowercase()) { - "br" -> CompressionMode.BROTLI - "deflate" -> CompressionMode.DEFLATE - "gzip" -> CompressionMode.GZIP - else -> null - } - } - if (encodingNames.isNotEmpty()) { - val encodings = EnumSet.copyOf(encodingNames) - - // based on the set of supported encodings, find the smallest response available. because payloads are either - // elided based on size, or sorted by size in ascending order (aside from the first which is the `IDENTITY` - // payload), then it should always be the first option we can actually use. - val bestCandidate = content.variantList.find { - (it.compression != CompressionMode.IDENTITY && encodings.contains(it.compression)) - } - - // sanity check: the compressed variant should of course be smaller than the identity variant, otherwise it is - // more efficient to just serve the identity variant. - if (bestCandidate != null && bestCandidate.size < identity.size) { - return baselineHeaders(content, bestCandidate) to bestCandidate - } - } - } - - // fallback to serve the non-compressed version of the asset. - return baselineHeaders(content, identity) to identity - } - - /** @inheritDoc */ - override fun pointerTo(moduleId: AssetModuleId): AssetPointer? { - return assetIndex.activeManifest().moduleIndex[moduleId] - } - - /** @inheritDoc */ - override fun findByModuleId(moduleId: AssetModuleId): ServerAsset? { - if (assetIndex.initialized.get()) { - val manifest = assetIndex.activeManifest() - val asset = manifest.moduleIndex[moduleId] - if (asset != null) { - return assetIndex.buildConcreteAsset( - asset.type, - asset.moduleId, - manifest.bundle, - asset.index, - ) - } - } - return null - } - - /** @inheritDoc */ - override suspend fun readAsync(descriptor: ServerAsset, request: HttpRequest<*>): Deferred { - val module = descriptor.module - val content = assetIndex.readByModuleIndex(descriptor.index!!.first()) - - // select the best content variant to use based on the input request, which may specify supported compression - // schemes, or may be expressing if-not-modified or if-modified-since conditions. - val (headers, selectedVariant) = selectBestVariant( - content, - request, - ) - - return Futures.immediateFuture( - RenderedAsset( - module = module, - type = descriptor.assetType, - variant = selectedVariant.compression, - headers = headers, - size = selectedVariant.size, - lastModified = assetIndex.getBundleTimestamp(), - digest = if (selectedVariant.integrityCount > 0) { - val subj = selectedVariant.getIntegrity(0) - subj.hash to subj.fingerprint - } else { - null - } - ) { selectedVariant.data.raw } - ).asDeferred() - } - - /** @inheritDoc */ - override fun resolve(path: String): ServerAsset? { - var unextensioned = path - if (path.contains(".")) { - unextensioned = unextensioned.dropLast(unextensioned.length - unextensioned.lastIndexOf(".")) - } - return assetIndex.resolveByTag( - unextensioned.removePrefix((assetConfig.prefix ?: AssetConfig.DEFAULT_ASSET_PREFIX)).removePrefix("/") - ) - } -} diff --git a/packages/server/src/main/kotlin/elide/server/controller/ElideController.kt b/packages/server/src/main/kotlin/elide/server/controller/ElideController.kt index 69bc4de028..031f451f6f 100644 --- a/packages/server/src/main/kotlin/elide/server/controller/ElideController.kt +++ b/packages/server/src/main/kotlin/elide/server/controller/ElideController.kt @@ -14,16 +14,12 @@ package elide.server.controller import io.micronaut.context.ApplicationContext -import elide.server.assets.AssetManager /** * Describes the top-level expected interface for Elide-based controllers; any base class which inherits from this one * may be used as a controller, and activated/deactivated with Micronaut annotations (see: `@Controller`). */ public interface ElideController { - /** @return Access to the active asset manager. */ - public fun assets(): AssetManager - /** @return Access to the active application context. */ public fun context(): ApplicationContext } diff --git a/packages/server/src/main/kotlin/elide/server/controller/PageController.kt b/packages/server/src/main/kotlin/elide/server/controller/PageController.kt index caa6177d0d..0ddef08663 100644 --- a/packages/server/src/main/kotlin/elide/server/controller/PageController.kt +++ b/packages/server/src/main/kotlin/elide/server/controller/PageController.kt @@ -23,12 +23,8 @@ import kotlinx.html.HEAD import kotlinx.html.HTML import kotlinx.html.tagext.body import kotlinx.html.tagext.head -import elide.server.AssetModuleId import elide.server.DEFAULT_SSR_DOM_ID import elide.server.annotations.Page -import elide.server.assets.AssetManager -import elide.server.assets.AssetPointer -import elide.server.assets.AssetReference import elide.server.injectSSR import elide.server.ssr @@ -59,34 +55,12 @@ import elide.server.ssr */ @Suppress("UnnecessaryAbstractClass") public abstract class PageController : BaseController() { - // Asset management runtime. - @Inject internal lateinit var assetManager: AssetManager - // Application context. @Inject internal lateinit var appContext: ApplicationContext - /** @return Access to the active asset manager. */ - override fun assets(): AssetManager = assetManager - /** @return Access to the active application context. */ override fun context(): ApplicationContext = appContext - /** @return Reference to the asset identified by the provided [module] ID. */ - public fun asset(module: AssetModuleId, handler: (AssetReferenceBuilder.() -> Unit)? = null): AssetReference { - val pointer = assetManager.findAssetByModuleId(module) - require(pointer != null) { - "Failed to locate asset at module ID: '$module'" - } - val generatedLink = assetManager.linkForAsset(module) - return if (handler != null) { - val builder = AssetReferenceBuilder(pointer) - handler.invoke(builder) - return builder.build(generatedLink) - } else { - AssetReference.fromPointer(pointer, generatedLink) - } - } - /** */ protected suspend inline fun html( request: HttpRequest<*>, @@ -138,32 +112,4 @@ public abstract class PageController : BaseController() { ) } } - - /** Context handler to collect asset configuration. */ - @Suppress("MemberCanBePrivate") - public inner class AssetReferenceBuilder internal constructor(private val pointer: AssetPointer) { - /** Set the asset module for this reference. */ - public var module: AssetModuleId = pointer.moduleId - - /** Whether this asset is eligible for inlining. */ - public var inline: Boolean = false - - /** Whether this asset is eligible for preloading. */ - public var preload: Boolean = false - - /** @return Fabricated asset reference. */ - internal fun build(link: String): AssetReference { - val module = this.module - require(module.isNotBlank()) { - "Module ID is required to generate an asset link (was blank)" - } - return AssetReference( - module = module, - assetType = pointer.type, - href = link, - inline = inline, - preload = preload, - ) - } - } } diff --git a/packages/server/src/main/kotlin/elide/server/http/RequestContext.kt b/packages/server/src/main/kotlin/elide/server/http/RequestContext.kt index 1a882fb550..48dbb2b60d 100644 --- a/packages/server/src/main/kotlin/elide/server/http/RequestContext.kt +++ b/packages/server/src/main/kotlin/elide/server/http/RequestContext.kt @@ -13,8 +13,6 @@ package elide.server.http -import elide.server.assets.AssetManager - /** Effective namespace for request context values and objects. */ public object RequestContext { /** diff --git a/packages/server/src/main/kotlin/elide/server/http/RequestContextFilter.kt b/packages/server/src/main/kotlin/elide/server/http/RequestContextFilter.kt deleted file mode 100644 index 4bc27aa4aa..0000000000 --- a/packages/server/src/main/kotlin/elide/server/http/RequestContextFilter.kt +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.http - -import io.micronaut.http.HttpRequest -import io.micronaut.http.MutableHttpResponse -import io.micronaut.http.annotation.Filter -import io.micronaut.http.filter.HttpServerFilter -import io.micronaut.http.filter.ServerFilterChain -import org.reactivestreams.Publisher -import jakarta.inject.Inject -import elide.server.assets.AssetManager - -/** - * Provides an [HttpServerFilter] which affixes context values at known keys in [HttpRequest]s processed by Elide apps; - * known keys are defined via [RequestContext.Key]. - * - * @see RequestContext.Key for an exhaustive review of available request context. - */ -@Filter("/**") public class RequestContextFilter : HttpServerFilter { - @Inject internal lateinit var assetManager: AssetManager - - /** @inheritDoc */ - override fun doFilter(request: HttpRequest<*>, chain: ServerFilterChain): Publisher> { - request.setAttribute( - RequestContext.Key.ASSET_MANAGER.name, - assetManager - ) - return chain.proceed(request) - } -} diff --git a/packages/server/src/main/kotlin/elide/server/ssr/ServerSSRRenderer.kt b/packages/server/src/main/kotlin/elide/server/ssr/ServerSSRRenderer.kt index baf07edbef..f36248cec8 100644 --- a/packages/server/src/main/kotlin/elide/server/ssr/ServerSSRRenderer.kt +++ b/packages/server/src/main/kotlin/elide/server/ssr/ServerSSRRenderer.kt @@ -114,7 +114,7 @@ public class ServerSSRRenderer ( */ public suspend fun renderSuspendAsync(): Deferred = coroutineScope { return@coroutineScope async { - prepareContext { _, props -> + prepareContext { _, _ -> TODO("Stubbed for transition to plugin-based VM") // val vm = handler.context().findBean(VMFacadeFactory::class.java).orElseThrow { // error("Failed to resolve JavaScript runtime provider") diff --git a/packages/server/src/test/kotlin/elide/server/assets/AssetControllerTest.kt b/packages/server/src/test/kotlin/elide/server/assets/AssetControllerTest.kt deleted file mode 100644 index 351199460a..0000000000 --- a/packages/server/src/test/kotlin/elide/server/assets/AssetControllerTest.kt +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import io.micronaut.http.HttpRequest -import io.micronaut.test.extensions.junit5.annotation.MicronautTest -import org.junit.jupiter.api.Disabled -import org.junit.jupiter.api.assertDoesNotThrow -import jakarta.inject.Inject -import kotlinx.coroutines.runBlocking -import kotlin.test.* - -/** Tests for the built-in [AssetController]. */ -@Disabled -@MicronautTest -class AssetControllerTest { - @Inject lateinit var controller: AssetController - - @Test fun testInjectable() { - assertNotNull(controller) - } - - @Test fun testServeBunkAsset() { - val response = assertDoesNotThrow { - runBlocking { - controller.assetGet( - HttpRequest.GET("/something-bunk.txt"), - "something-bunk", - "txt", - ) - } - } - assertNotNull(response) - assertEquals(404, response.status.code) - } - - @Test fun testServeKnownGoodAssetStyle() { - val response = assertDoesNotThrow { - runBlocking { - controller.assetGet( - HttpRequest.GET("02ade191.css"), - "02ade191", - "css", - ) - } - } - assertNotNull(response) - assertEquals(200, response.status.code) - assertEquals("text/css", response.contentType.get().toString()) - assertNotNull(response.headers.get("Content-Length")) - assertNotEquals(0, response.headers.get("Content-Length")?.toLong()) - } - - @Test fun testServeKnownGoodAssetScript() { - val response = assertDoesNotThrow { - runBlocking { - controller.assetGet( - HttpRequest.GET("c426de48.js"), - "c426de48", - "js", - ) - } - } - assertNotNull(response) - assertEquals(200, response.status.code) - assertEquals("application/javascript", response.contentType.get().toString()) - assertNotNull(response.headers.get("Content-Length")) - assertNotEquals(0, response.headers.get("Content-Length")?.toLong()) - } -} diff --git a/packages/server/src/test/kotlin/elide/server/assets/AssetDataTest.kt b/packages/server/src/test/kotlin/elide/server/assets/AssetDataTest.kt deleted file mode 100644 index e1b39931fd..0000000000 --- a/packages/server/src/test/kotlin/elide/server/assets/AssetDataTest.kt +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import com.google.protobuf.ByteString -import org.junit.jupiter.api.assertThrows -import tools.elide.data.CompressionMode -import tools.elide.std.HashAlgorithm -import java.nio.charset.StandardCharsets -import kotlinx.serialization.json.Json -import kotlin.test.* - -/** Tests for data structures and utilities which implement server-side asset serving. */ -class AssetDataTest { - @Test fun testAssetType() { - AssetType.values().forEach { - assertNotNull(it.name) - if (it != AssetType.GENERIC) { - assertNotNull(it.mediaType) - } - } - } - - @Test fun testAssetPointerWithoutIndex() { - val pointer = AssetPointer( - moduleId = "some-module", - type = AssetType.SCRIPT, - token = "some-token-some-tag", - tag = "some-tag", - etag = "W/\"some-etag\"", - modified = 123L, - index = null, - ) - assertNull( - pointer.index, - ) - } - - @Test fun testAssetPointer() { - val pointer = AssetPointer( - moduleId = "some-module", - type = AssetType.SCRIPT, - token = "some-token-some-tag", - tag = "some-tag", - etag = "W/\"some-etag\"", - modified = 123L, - index = sortedSetOf(5), - ) - assertEquals("some-module", pointer.moduleId) - assertEquals("some-token-some-tag", pointer.token) - assertEquals("some-tag", pointer.tag) - assertEquals(AssetType.SCRIPT, pointer.type) - assertEquals(5, pointer.index!!.first()) - assertEquals(pointer, pointer) - assertEquals(pointer, pointer.copy()) - assertNotNull(pointer.hashCode()) - assertEquals("W/\"some-etag\"", pointer.etag) - assertEquals(123L, pointer.modified) - assertTrue(pointer.toString().contains("some-module")) - } - - @Test fun testAssetDependency() { - val nonOptional = AssetDependency("test1", "test2", optional = false) - assertEquals("test1", nonOptional.depender) - assertEquals("test2", nonOptional.dependee) - assertFalse(nonOptional.optional) - assertEquals(nonOptional, nonOptional) - assertEquals(nonOptional, nonOptional.copy()) - val optional = AssetDependency("test1", "test2", optional = true) - assertEquals("test1", optional.depender) - assertEquals("test2", optional.dependee) - assertTrue(optional.optional) - assertEquals(optional, optional) - assertEquals(optional, optional.copy()) - } - - @Test fun testAssetDependencyDefault() { - val default = AssetDependency("test1", "test2") - assertEquals("test1", default.depender) - assertEquals("test2", default.dependee) - assertFalse(default.optional) - assertEquals(default, default) - assertEquals(default, default.copy()) - } - - @Test fun testAssetDependencyCannotReferenceItself() { - assertThrows { - AssetDependency("test", "test", optional = false) - } - } - - @Test fun testRenderedAsset() { - val asset = RenderedAsset( - module = "some-module", - type = AssetType.SCRIPT, - variant = CompressionMode.GZIP, - headers = emptyMap(), - size = 123L, - lastModified = 124L, - digest = HashAlgorithm.SHA256 to ByteString.copyFrom(ByteArray(0)), - ) { ByteString.copyFrom("hello world".toByteArray(StandardCharsets.UTF_8)) } - assertNotNull(asset) - assertNotNull(asset.module) - assertNotNull(asset.type) - assertNotNull(asset.variant) - assertNotNull(asset.headers) - assertNotNull(asset.size) - assertNotNull(asset.lastModified) - assertNotNull(asset.digest) - assertEquals(asset, asset) - assertNotNull(asset.hashCode()) - } - - @Test fun testAssetReferenceDefaults() { - val ref = AssetReference( - module = "some-module", - assetType = AssetType.STYLESHEET, - href = "/_/assets/some-path.css", - ) - assertEquals(ref.module, "some-module") - assertEquals(ref.assetType, AssetType.STYLESHEET) - assertEquals(ref.href, "/_/assets/some-path.css") - - // type should be `null` and `inline` should be not be `null` by default. - assertNull(ref.type) - assertNotNull(ref.inline) - assertNotNull(ref.preload) - } - - @Test fun testAssetReference() { - val ref = AssetReference( - module = "some-module", - assetType = AssetType.STYLESHEET, - href = "/_/assets/some-path.css", - type = "type-override", - inline = true, - ) - assertEquals(ref.module, "some-module") - assertEquals(ref.assetType, AssetType.STYLESHEET) - assertEquals(ref.href, "/_/assets/some-path.css") - assertEquals(ref.type, "type-override") - assertTrue(ref.inline) - assertNotNull(AssetReference.serializer()) - assertEquals(ref, ref) - assertEquals(ref, ref.copy()) - val json = Json.encodeToString(AssetReference.serializer(), ref) - assertNotNull(json) - val inflated = Json.decodeFromString(AssetReference.serializer(), json) - assertNotNull(inflated) - assertEquals(ref, inflated) - } - - @Test fun testAssetReferenceFromPointer() { - val pointer = AssetPointer( - moduleId = "some-module", - type = AssetType.SCRIPT, - token = "some-token-some-tag", - tag = "some-tag", - etag = "W/\"some-etag\"", - modified = 123L, - index = sortedSetOf(5), - ) - val reference = AssetReference.fromPointer( - pointer, - "/_/assets/some-uri.js" - ) - assertNotNull(reference) - assertEquals(reference.module, "some-module") - assertEquals(reference.assetType, AssetType.SCRIPT) - } -} diff --git a/packages/server/src/test/kotlin/elide/server/assets/ServerAssetIndexTest.kt b/packages/server/src/test/kotlin/elide/server/assets/ServerAssetIndexTest.kt deleted file mode 100644 index c057f936a9..0000000000 --- a/packages/server/src/test/kotlin/elide/server/assets/ServerAssetIndexTest.kt +++ /dev/null @@ -1,1012 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import com.google.common.graph.ElementOrder -import com.google.common.graph.ImmutableNetwork -import com.google.common.graph.NetworkBuilder -import com.google.common.truth.extensions.proto.ProtoTruth.assertThat -import com.google.protobuf.ByteString -import io.micronaut.http.HttpHeaders -import io.micronaut.http.HttpRequest -import org.junit.jupiter.api.Disabled -import org.junit.jupiter.api.assertDoesNotThrow -import org.junit.jupiter.api.assertThrows -import tools.elide.assets.AssetBundle -import tools.elide.assets.AssetBundle.* -import tools.elide.assets.ManifestFormat -import tools.elide.data.CompressedData -import tools.elide.data.compressedData -import tools.elide.data.dataContainer -import tools.elide.data.dataFingerprint -import tools.elide.std.HashAlgorithm -import java.io.ByteArrayInputStream -import java.io.InputStream -import java.nio.charset.StandardCharsets -import java.security.MessageDigest -import java.util.concurrent.atomic.AtomicBoolean -import kotlinx.coroutines.Deferred -import kotlinx.coroutines.runBlocking -import kotlin.test.* -import elide.server.AssetModuleId -import elide.server.TestUtil -import elide.server.cfg.AssetConfig -import elide.testing.annotations.TestCase - -/** Tests for [ServerAssetIndex]. */ -@Disabled -@Suppress("UnstableApiUsage") -@TestCase class ServerAssetIndexTest { - private fun loadSampleManifest(): AssetBundle { - val data = TestUtil.loadBinary("/manifests/app.assets.pb") - val baos = ByteArrayInputStream(data) - val provider = ServerAssetManifestProvider() - return provider.deserializeLoadManifest( - ManifestFormat.BINARY to baos, - ) ?: error("Failed to load embedded sample manifest") - } - - private fun createIndexer( - assetBundle: AssetBundle? = null, - config: AssetConfig? = null - ): Pair { - val sample = assetBundle ?: assertNotNull(loadSampleManifest()) - return sample to ServerAssetIndex( - config ?: object : AssetConfig {}, - object : AssetManifestLoader { - override fun findLoadManifest(candidates: List>): AssetBundle { - return sample - } - - override fun findManifest(candidates: List>): Pair { - return ManifestFormat.BINARY to ByteArrayInputStream(ByteArray(0)) - } - } - ) - } - - @Test fun testGenerateIndexes() { - val (sample, indexer) = createIndexer() - val indexes = assertDoesNotThrow { - indexer.buildAssetIndexes( - sample - ) - } - assertNotNull(indexes, "should not get `null` from `buildAssetIndexes`") - val (depGraph, manifest) = indexes - assertNotNull(depGraph, "should not get `null` for first item in interpreted asset manifest pair") - assertNotNull(manifest, "should not get `null` for second item in interpreted asset manifest pair") - assertTrue(depGraph.nodes().isNotEmpty(), "nodes list in dep graph should not be empty") - } - - private fun identityVariant(): CompressedData { - val data = "hello world".toByteArray(StandardCharsets.UTF_8) - return compressedData { - this.size = data.size.toLong() - this.data = dataContainer { - raw = ByteString.copyFrom(data) - integrity.add( - dataFingerprint { - this.hash = HashAlgorithm.SHA256 - this.fingerprint = ByteString.copyFrom(MessageDigest.getInstance("SHA-256").digest(data)) - } - ) - } - } - } - - @Test fun testGenerateFailDuplicateTags() { - val bundle = AssetBundle.newBuilder() - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.addAsset(AssetContent.newBuilder().setModule("test2").setToken("abc123").addVariant(identityVariant())) - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.putScripts("test1", ScriptBundle.newBuilder().setModule("test1").build()) - bundle.putScripts("test2", ScriptBundle.newBuilder().setModule("test2").build()) - val (_, indexer) = createIndexer(bundle.build()) - assertThrows { - indexer.buildAssetIndexes(bundle.build()) - } - } - - @Test fun testGenerateFailDuplicateModuleIds() { - val bundle = AssetBundle.newBuilder() - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.addAsset(AssetContent.newBuilder().setModule("test2").setToken("abc123").addVariant(identityVariant())) - bundle.putScripts("test1", ScriptBundle.newBuilder().setModule("test1").build()) - bundle.putScripts("test2", ScriptBundle.newBuilder().setModule("test2").build()) - bundle.putStyles("test1", StyleBundle.newBuilder().setModule("test1").build()) - val (_, indexer) = createIndexer(bundle.build()) - assertThrows { - indexer.buildAssetIndexes(bundle.build()) - } - } - - @Test fun testGenerateWithScriptDeps() { - val bundle = AssetBundle.newBuilder() - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.addAsset(AssetContent.newBuilder().setModule("test2").setToken("abc123").addVariant(identityVariant())) - bundle.putScripts("test1", ScriptBundle.newBuilder().setModule("test1").build()) - bundle.putScripts( - "test2", - ScriptBundle - .newBuilder() - .setModule("test2") - .setDependencies( - AssetDependencies.newBuilder() - .addDirect("test1") - ) - .build() - ) - val (_, indexer) = createIndexer(bundle.build()) - val indexes = assertDoesNotThrow { - indexer.buildAssetIndexes( - bundle.build() - ) - } - assertNotNull(indexes) - val (depGraph, manifest) = indexes - assertNotNull(depGraph) - assertNotNull(manifest) - assertTrue(depGraph.nodes().isNotEmpty()) - assertTrue(depGraph.nodes().contains("test1")) - assertTrue(depGraph.nodes().contains("test2")) - assertTrue(depGraph.edges().isNotEmpty()) - assertTrue( - depGraph.edges().contains( - AssetDependency( - depender = "test2", - dependee = "test1", - optional = false, - ) - ) - ) - assertTrue( - depGraph.hasEdgeConnecting("test2", "test1") - ) - assertTrue( - depGraph.adjacentNodes("test2").contains("test1") - ) - assertTrue( - depGraph.outEdges("test2").isNotEmpty() - ) - assertTrue( - depGraph.outEdges("test2").contains( - AssetDependency( - depender = "test2", - dependee = "test1", - optional = false, - ) - ) - ) - assertTrue( - depGraph.inEdges("test1").contains( - AssetDependency( - depender = "test2", - dependee = "test1", - optional = false, - ) - ) - ) - } - - @Test fun testGenerateWithStyleDeps() { - val bundle = AssetBundle.newBuilder() - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.addAsset(AssetContent.newBuilder().setModule("test2").setToken("abc123").addVariant(identityVariant())) - bundle.putStyles("test1", StyleBundle.newBuilder().setModule("test1").build()) - bundle.putStyles( - "test2", - StyleBundle - .newBuilder() - .setModule("test2") - .setDependencies( - AssetDependencies.newBuilder() - .addDirect("test1") - ) - .build() - ) - val (_, indexer) = createIndexer(bundle.build()) - val indexes = assertDoesNotThrow { - indexer.buildAssetIndexes( - bundle.build() - ) - } - assertNotNull(indexes) - val (depGraph, manifest) = indexes - assertNotNull(depGraph) - assertNotNull(manifest) - assertTrue(depGraph.nodes().isNotEmpty()) - assertTrue(depGraph.nodes().contains("test1")) - assertTrue(depGraph.nodes().contains("test2")) - assertTrue(depGraph.edges().isNotEmpty()) - assertTrue( - depGraph.edges().contains( - AssetDependency( - depender = "test2", - dependee = "test1", - optional = false, - ) - ) - ) - assertTrue( - depGraph.hasEdgeConnecting("test2", "test1") - ) - assertTrue( - depGraph.adjacentNodes("test2").contains("test1") - ) - assertTrue( - depGraph.outEdges("test2").isNotEmpty() - ) - assertTrue( - depGraph.outEdges("test2").contains( - AssetDependency( - depender = "test2", - dependee = "test1", - optional = false, - ) - ) - ) - assertTrue( - depGraph.inEdges("test1").contains( - AssetDependency( - depender = "test2", - dependee = "test1", - optional = false, - ) - ) - ) - } - - @Test fun testGenerateEtagsStrong() { - // standard config - val (sample, indexer) = createIndexer( - config = object : AssetConfig { - override fun isEnabled(): Boolean = true - override val etags: Boolean get() = true - override val preferWeakEtags: Boolean get() = false - } - ) - assertDoesNotThrow { - indexer.initialize() - } - - // generate an etag - val etag = indexer.buildETagForAsset(sample.getAsset(0)) - assertNotNull(etag, "generated etag value should not be null") - assertTrue(etag.startsWith("\""), "strong etag should start with a double-quote") - assertTrue(etag.endsWith("\""), "strong etag should end with a double-quote") - } - - @Test fun testGenerateEtagsWeak() { - // standard config - val (sample, indexer) = createIndexer( - config = object : AssetConfig { - override fun isEnabled(): Boolean = true - override val etags: Boolean get() = true - override val preferWeakEtags: Boolean get() { - return true - } - } - ) - assertDoesNotThrow { - indexer.initialize() - } - - // generate an etag - val etag = indexer.buildETagForAsset(sample.getAsset(0)) - assertNotNull(etag, "generated etag value should not be null") - assertTrue(etag.startsWith("W/\""), "weak etag should start with `W/\"`") - assertTrue(etag.endsWith("\""), "weak etag should end with a double-quote") - } - - @Test fun testRenderConditionalStrongETagMatch() { - // standard config - val cfg = object : AssetConfig { - override fun isEnabled(): Boolean = true - override val etags: Boolean get() = true - override val preferWeakEtags: Boolean get() = false - } - val (sample, indexer) = createIndexer(config = cfg) - assertDoesNotThrow { - indexer.initialize() - } - - // generate an etag - val etag = indexer.buildETagForAsset(sample.getAsset(0)) - assertNotNull(etag, "generated etag value should not be null") - assertTrue(etag.startsWith("\""), "strong etag should start with `\"`") - assertTrue(etag.endsWith("\""), "strong etag should end with a double-quote") - - // forge a request with a matching etag, make sure it matches - val req = HttpRequest.GET("/_/assets/some-asset-url.css") - .header(HttpHeaders.IF_NONE_MATCH, etag) - - val reader = object : AssetReader { - override suspend fun readAsync(descriptor: ServerAsset, request: HttpRequest<*>): Deferred { - error("should not be called") - } - - override fun pointerTo(moduleId: AssetModuleId): AssetPointer? { - error("should not be called") - } - - override fun findByModuleId(moduleId: AssetModuleId): ServerAsset? { - error("should not be called") - } - - override fun resolve(path: String): ServerAsset? { - error("should not be called") - } - } - - val descriptor = sample.stylesMap[sample.stylesMap.keys.first()]!! - val baseStyleAsset = ServerAsset.Stylesheet( - descriptor = descriptor, - sortedSetOf( - List( - sample.assetList.filter { - it.module == descriptor.module - }.size - ) { idx -> idx }.first() - ) - ) - val response = assertDoesNotThrow { - runBlocking { - ServerAssetManager(cfg, indexer, reader).renderAssetAsync( - req, - baseStyleAsset, - ).await() - } - } - assertNotNull(response, "should not get `null` response from strong conditional etag match") - assertEquals(304, response.status.code, "should get HTTP 200 from conditional etag match") - } - - @Test fun testRenderConditionalStrongETagMismatch() { - // standard config - val cfg =object : AssetConfig { - override fun isEnabled(): Boolean = true - override val etags: Boolean get() = true - override val preferWeakEtags: Boolean get() = false - } - val (sample, indexer) = createIndexer(config = cfg) - assertDoesNotThrow { - indexer.initialize() - } - - // generate an etag - val etag = indexer.buildETagForAsset(sample.getAsset(0)) - assertNotNull(etag, "generated etag value should not be null") - assertTrue(etag.startsWith("\""), "strong etag should start with `\"`") - assertTrue(etag.endsWith("\""), "strong etag should end with a double-quote") - - // forge a request with a matching etag, make sure it DOES NOT match - val req = HttpRequest.GET("/_/assets/some-asset-url.css") - .header(HttpHeaders.IF_NONE_MATCH, "some-other-etag-value") - - class ItMismatched : RuntimeException() - - val reader = object : AssetReader { - override suspend fun readAsync(descriptor: ServerAsset, request: HttpRequest<*>): Deferred { - throw ItMismatched() - } - - override fun pointerTo(moduleId: AssetModuleId): AssetPointer? { - error("should not be called") - } - - override fun findByModuleId(moduleId: AssetModuleId): ServerAsset? { - error("should not be called") - } - - override fun resolve(path: String): ServerAsset? { - error("should not be called") - } - } - - val descriptor = sample.stylesMap[sample.stylesMap.keys.first()]!! - val baseStyleAsset = ServerAsset.Stylesheet( - descriptor = descriptor, - sortedSetOf( - List( - sample.assetList.filter { - it.module == descriptor.module - }.size - ) { idx -> idx }.first() - ) - ) - assertThrows { - runBlocking { - ServerAssetManager(cfg, indexer, reader).renderAssetAsync( - req, - baseStyleAsset, - ).await() - } - } - } - - @Test fun testRenderConditionalWeakETagMatch() { - // standard config - val cfg = object : AssetConfig { - override fun isEnabled(): Boolean = true - override val etags: Boolean get() = true - override val preferWeakEtags: Boolean get() = true - } - val (sample, indexer) = createIndexer(config = cfg) - assertDoesNotThrow { - indexer.initialize() - } - - // generate an etag - val etag = indexer.buildETagForAsset(sample.getAsset(0)) - assertNotNull(etag, "generated etag value should not be null") - assertTrue(etag.startsWith("W/\""), "weak etag should start with `W/\"`") - assertTrue(etag.endsWith("\""), "weak etag should end with a double-quote") - - // forge a request with a matching weak etag, make sure it matches - val req = HttpRequest.GET("/_/assets/some-asset-url.css") - .header(HttpHeaders.IF_NONE_MATCH, etag) - - val reader = object : AssetReader { - override suspend fun readAsync(descriptor: ServerAsset, request: HttpRequest<*>): Deferred { - error("should not be called") - } - - override fun pointerTo(moduleId: AssetModuleId): AssetPointer? { - error("should not be called") - } - - override fun findByModuleId(moduleId: AssetModuleId): ServerAsset? { - error("should not be called") - } - - override fun resolve(path: String): ServerAsset? { - error("should not be called") - } - } - - val descriptor = sample.stylesMap[sample.stylesMap.keys.first()]!! - val baseStyleAsset = ServerAsset.Stylesheet( - descriptor = descriptor, - sortedSetOf( - List( - sample.assetList.filter { - it.module == descriptor.module - }.size - ) { idx -> idx }.first() - ) - ) - val response = assertDoesNotThrow { - runBlocking { - ServerAssetManager(cfg, indexer, reader).renderAssetAsync( - req, - baseStyleAsset, - ).await() - } - } - assertNotNull(response, "should not get `null` response from strong conditional etag match") - assertEquals(304, response.status.code, "should get HTTP 200 from conditional etag match") - } - - @Test fun testRenderConditionalWeakETagMismatch() { - // standard config - val cfg = object : AssetConfig { - override fun isEnabled(): Boolean = true - override val etags: Boolean get() = true - override val preferWeakEtags: Boolean get() = true - } - val (sample, indexer) = createIndexer(config = cfg) - assertDoesNotThrow { - indexer.initialize() - } - - // generate an etag - val etag = indexer.buildETagForAsset(sample.getAsset(0)) - assertNotNull(etag, "generated etag value should not be null") - assertTrue(etag.startsWith("W/\""), "weak etag should start with `W/\"`") - assertTrue(etag.endsWith("\""), "weak etag should end with a double-quote") - - // forge a request with a matching weak etag, make sure it matches - val req = HttpRequest.GET("/_/assets/some-asset-url.css") - .header(HttpHeaders.IF_NONE_MATCH, "W/\"123123123\"") - - class ItMismatched : RuntimeException() - - val reader = object : AssetReader { - override suspend fun readAsync(descriptor: ServerAsset, request: HttpRequest<*>): Deferred { - throw ItMismatched() - } - - override fun pointerTo(moduleId: AssetModuleId): AssetPointer? { - error("should not be called") - } - - override fun findByModuleId(moduleId: AssetModuleId): ServerAsset? { - error("should not be called") - } - - override fun resolve(path: String): ServerAsset? { - error("should not be called") - } - } - - val descriptor = sample.stylesMap[sample.stylesMap.keys.first()]!! - val baseStyleAsset = ServerAsset.Stylesheet( - descriptor = descriptor, - sortedSetOf( - List( - sample.assetList.filter { - it.module == descriptor.module - }.size - ) { idx -> idx }.first() - ) - ) - assertThrows { - runBlocking { - ServerAssetManager(cfg, indexer, reader).renderAssetAsync( - req, - baseStyleAsset, - ).await() - } - } - } - - @Test fun testRenderConditionalWeakETagBadFormat() { - // standard config - val cfg = object : AssetConfig { - override fun isEnabled(): Boolean = true - override val etags: Boolean get() = true - override val preferWeakEtags: Boolean get() = true - } - val (sample, indexer) = createIndexer(config = cfg) - assertDoesNotThrow { - indexer.initialize() - } - - // generate an etag - val etag = indexer.buildETagForAsset(sample.getAsset(0)) - assertNotNull(etag, "generated etag value should not be null") - assertTrue(etag.startsWith("W/\""), "weak etag should start with `W/\"`") - assertTrue(etag.endsWith("\""), "weak etag should end with a double-quote") - - // forge a request with a matching weak etag, make sure it matches - val req = HttpRequest.GET("/_/assets/some-asset-url.css") - .header(HttpHeaders.IF_NONE_MATCH, "W/\"lololol\"") - - class ItMismatched : RuntimeException() - - val reader = object : AssetReader { - override suspend fun readAsync(descriptor: ServerAsset, request: HttpRequest<*>): Deferred { - throw ItMismatched() - } - - override fun pointerTo(moduleId: AssetModuleId): AssetPointer? { - error("should not be called") - } - - override fun findByModuleId(moduleId: AssetModuleId): ServerAsset? { - error("should not be called") - } - - override fun resolve(path: String): ServerAsset? { - error("should not be called") - } - } - - val descriptor = sample.stylesMap[sample.stylesMap.keys.first()]!! - val baseStyleAsset = ServerAsset.Stylesheet( - descriptor = descriptor, - sortedSetOf( - List( - sample.assetList.filter { - it.module == descriptor.module - }.size - ) { idx -> idx }.first() - ) - ) - assertThrows { - runBlocking { - ServerAssetManager(cfg, indexer, reader).renderAssetAsync( - req, - baseStyleAsset, - ).await() - } - } - } - - @Test fun testRenderConditionalWeakETagMatchInStrongMode() { - val (sample, indexerWithWeakEtags) = createIndexer( - config = object : AssetConfig { - override fun isEnabled(): Boolean = true - override val etags: Boolean get() = true - override val preferWeakEtags: Boolean get() = true - } - ) - assertDoesNotThrow { - indexerWithWeakEtags.initialize() - } - - // generate an etag - val injectedEtag = indexerWithWeakEtags.buildETagForAsset(sample.getAsset(0)) - assertNotNull(injectedEtag, "generated etag value should not be null") - assertTrue(injectedEtag.startsWith("W/\""), "weak etag should start with `W/\"`") - assertTrue(injectedEtag.endsWith("\""), "weak etag should end with a double-quote") - - // standard config - val cfg = object : AssetConfig { - override fun isEnabled(): Boolean = true - override val etags: Boolean get() = true - override val preferWeakEtags: Boolean get() = false // important - } - val (_, indexer) = createIndexer(sample, config = cfg) - assertDoesNotThrow { - indexer.initialize() - } - - // generate an etag - val etag = indexer.buildETagForAsset(sample.getAsset(0)) - assertNotNull(etag, "generated etag value should not be null") - assertTrue(etag.startsWith("\""), "strong etag should start with `\"`") - assertTrue(etag.endsWith("\""), "strong etag should end with a double-quote") - - // forge a request with a matching weak etag, make sure it matches - val req = HttpRequest.GET("/_/assets/some-asset-url.css") - .header(HttpHeaders.IF_NONE_MATCH, injectedEtag) - - val reader = object : AssetReader { - override suspend fun readAsync(descriptor: ServerAsset, request: HttpRequest<*>): Deferred { - error("should not be called") - } - - override fun pointerTo(moduleId: AssetModuleId): AssetPointer? { - error("should not be called") - } - - override fun findByModuleId(moduleId: AssetModuleId): ServerAsset? { - error("should not be called") - } - - override fun resolve(path: String): ServerAsset? { - error("should not be called") - } - } - - val descriptor = sample.stylesMap[sample.stylesMap.keys.first()]!! - val baseStyleAsset = ServerAsset.Stylesheet( - descriptor = descriptor, - sortedSetOf( - List( - sample.assetList.filter { - it.module == descriptor.module - }.size - ) { idx -> idx }.first() - ) - ) - val response = assertDoesNotThrow { - runBlocking { - ServerAssetManager(cfg, indexer, reader).renderAssetAsync( - req, - baseStyleAsset, - ).await() - } - } - assertNotNull(response, "should not get `null` response from strong conditional etag match") - assertEquals(304, response.status.code, "should get HTTP 200 from conditional etag match") - } - - @Test fun testGenerateIndexesTextAssets() { - val bundle = AssetBundle.newBuilder() - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.putGeneric("test1", GenericBundle.newBuilder().setModule("test1").build()) - val (_, indexer) = createIndexer(bundle.build()) - val indexes = assertDoesNotThrow { - indexer.buildAssetIndexes( - bundle.build() - ) - } - assertNotNull(indexes) - val (depGraph, manifest) = indexes - assertNotNull(depGraph) - assertNotNull(manifest) - assertTrue(manifest.moduleIndex.contains("test1")) - } - - @Test fun testFailCompletelyGenericAsset() { - val bundle = AssetBundle.newBuilder().build() - val (_, indexer) = createIndexer(bundle) - val builder: ImmutableNetwork.Builder = NetworkBuilder - .directed() - .allowsParallelEdges(false) - .allowsSelfLoops(false) - .nodeOrder(ElementOrder.stable()) - .edgeOrder(ElementOrder.stable()) - .immutable() - - assertThrows { - indexer.pointerForConcrete( - AssetType.GENERIC, - "some-module", - AssetContent - .newBuilder() - .setToken("token-value-here") - .setModule("module-id") - .setFilename("filename.data") - .addVariant(identityVariant()) - .build(), - sortedSetOf(5), - bundle, - builder, - ) - } - } - - @Test fun testAssetIndexBoot() { - val (sample, indexer) = createIndexer() - assertNotNull(sample) - assertNotNull(indexer) - assertDoesNotThrow { - indexer.initialize() - } - assertTrue(indexer.initialized.get()) - assertNotNull(indexer.assetManifest.get()) - assertNotNull(indexer.dependencyGraph.get()) - } - - @Test fun testAssetIndexerInitializeTwiceDoesNotThrow() { - val (sample, indexer) = createIndexer() - assertNotNull(sample) - assertNotNull(indexer) - assertDoesNotThrow { - indexer.initialize() - } - assertDoesNotThrow { - indexer.initialize() - } - } - - @Test fun testAssetIndexerDoesNotInitializeMoreThanOnce() { - val firstCall = AtomicBoolean(true) - val indexer = ServerAssetIndex( - object : AssetConfig {}, - object : AssetManifestLoader { - override fun findLoadManifest(candidates: List>): AssetBundle? { - if (firstCall.get()) { - return null - } else { - throw IllegalStateException("FAIL") - } - } - - override fun findManifest(candidates: List>): Pair? { - if (firstCall.get()) { - return null - } else { - throw IllegalStateException("FAIL") - } - } - } - ) - assertNotNull(indexer) - assertDoesNotThrow { - indexer.initialize() - } - assertDoesNotThrow { - indexer.initialize() - } - } - - @Test fun testAssetIndexBootNoManifest() { - val indexer = ServerAssetIndex( - object : AssetConfig {}, - object : AssetManifestLoader { - override fun findLoadManifest(candidates: List>): AssetBundle? { - return null - } - - override fun findManifest(candidates: List>): Pair? { - return null - } - } - ) - - assertDoesNotThrow { - indexer.initialize() - } - assertTrue(indexer.initialized.get()) - assertNull(indexer.assetManifest.get()) - assertNull(indexer.dependencyGraph.get()) - } - - @Test fun testInterpretedManifest() { - val (sample, indexer) = createIndexer() - assertDoesNotThrow { - indexer.initialize() - } - val manifest = indexer.assetManifest.get() - assertNotNull(manifest) - assertNotNull(manifest.bundle) - assertNotNull(manifest.moduleIndex) - assertNotNull(manifest.tagIndex) - assertTrue(manifest.bundle.isInitialized) - assertTrue(manifest.moduleIndex.isNotEmpty()) - assertTrue(manifest.tagIndex.isNotEmpty()) - assertThat(sample).isEqualTo(manifest.bundle) - } - - @Test fun testLookupAssetByTagScript() { - val bundle = AssetBundle.newBuilder() - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.putScripts("test1", ScriptBundle.newBuilder().setModule("test1").build()) - val target = bundle.build() - val (_, indexer) = createIndexer(target) - assertDoesNotThrow { - indexer.initialize() - } - val resolved = assertDoesNotThrow { - indexer.resolveByTag("abc123") - } - assertNotNull( - resolved, - "should be able to resolve known-good script by tag" - ) - assertTrue( - resolved is ServerAsset.Script, - "resolved asset should be the right sub-type" - ) - } - - @Test fun testLookupAssetByTagStyle() { - val bundle = AssetBundle.newBuilder() - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.putStyles("test1", StyleBundle.newBuilder().setModule("test1").build()) - val target = bundle.build() - val (_, indexer) = createIndexer(target) - assertDoesNotThrow { - indexer.initialize() - } - val resolved = assertDoesNotThrow { - indexer.resolveByTag("abc123") - } - assertNotNull( - resolved, - "should be able to resolve known-good stylesheet by tag" - ) - assertTrue( - resolved is ServerAsset.Stylesheet, - "resolved asset should be the right sub-type" - ) - } - - @Test fun testLookupAssetByTagText() { - val bundle = AssetBundle.newBuilder() - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.putGeneric("test1", GenericBundle.newBuilder().setModule("test1").build()) - val target = bundle.build() - val (_, indexer) = createIndexer(target) - assertDoesNotThrow { - indexer.initialize() - } - val resolved = assertDoesNotThrow { - indexer.resolveByTag("abc123") - } - assertNotNull( - resolved, - "should be able to resolve known-good text asset by tag" - ) - assertTrue( - resolved is ServerAsset.Text, - "resolved asset should be the right sub-type" - ) - } - - @Test fun testLookupAssetByTagNotFound() { - val bundle = AssetBundle.newBuilder() - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.putGeneric("test1", GenericBundle.newBuilder().setModule("test1").build()) - val target = bundle.build() - val (_, indexer) = createIndexer(target) - assertDoesNotThrow { - indexer.initialize() - } - val resolved = assertDoesNotThrow { - indexer.resolveByTag("abc124") - } - assertNull( - resolved, - "should NOT be able to resolve known-bad asset by tag" - ) - } - - @Test fun testFailBuildConcreteGeneric() { - val bundle = AssetBundle.newBuilder() - bundle.addAsset(AssetContent.newBuilder().setModule("test1").setToken("abc123").addVariant(identityVariant())) - bundle.putGeneric("test1", GenericBundle.newBuilder().setModule("test1").build()) - val target = bundle.build() - val (_, indexer) = createIndexer(target) - assertDoesNotThrow { - indexer.initialize() - } - assertThrows { - indexer.buildConcreteAsset( - AssetType.GENERIC, - "some-module-id", - target, - null, - ) - } - } - - @Test fun testInitializeBeforeAccessingManifest() { - val (_, indexer) = createIndexer() - assertThrows { - indexer.activeManifest() - } - assertDoesNotThrow { - assertNull(indexer.resolveByTag("sample-tag", timeoutSeconds = 1L)) - } - assertDoesNotThrow { - indexer.initialize() - } - assertDoesNotThrow { - indexer.activeManifest() - } - } - - @Test fun addDirectDepsTest() { - // build a deliberately incorrect graph - val (_, indexer) = createIndexer() - val builder: ImmutableNetwork.Builder = NetworkBuilder - .directed() - .allowsParallelEdges(false) - .allowsSelfLoops(false) - .nodeOrder(ElementOrder.stable()) - .edgeOrder(ElementOrder.stable()) - .immutable() - - indexer.addDirectDeps( - "should-be-there", - builder, - AssetDependencies.getDefaultInstance(), - ) - indexer.addDirectDeps( - "should-also-be-there", - builder, - AssetDependencies.getDefaultInstance(), - ) - indexer.addDirectDeps( - "should-not-be-there", - builder, - AssetDependencies.getDefaultInstance(), - ) - indexer.addDirectDeps( - "some-module-id", - builder, - AssetDependencies - .newBuilder() - .addDirect("should-be-there") - .addDirect("should-also-be-there") - .addTransitive("should-not-be-there") - .build() - ) - val depGraph = builder.build() - assertTrue(depGraph.nodes().isNotEmpty()) - assertTrue(depGraph.nodes().contains("should-be-there")) - assertTrue(depGraph.nodes().contains("should-also-be-there")) - assertTrue(depGraph.nodes().contains("some-module-id")) - assertTrue(depGraph.edges().contains(AssetDependency("some-module-id", "should-be-there"))) - assertTrue(depGraph.edges().contains(AssetDependency("some-module-id", "should-also-be-there"))) - assertFalse(depGraph.edges().contains(AssetDependency("some-module-id", "should-not-be-there"))) - assertTrue(depGraph.edgesConnecting("some-module-id", "should-not-be-there").isEmpty()) - } -} diff --git a/packages/server/src/test/kotlin/elide/server/assets/ServerAssetManifestTest.kt b/packages/server/src/test/kotlin/elide/server/assets/ServerAssetManifestTest.kt deleted file mode 100644 index e0b8aa6858..0000000000 --- a/packages/server/src/test/kotlin/elide/server/assets/ServerAssetManifestTest.kt +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import com.google.common.truth.extensions.proto.ProtoTruth.assertThat -import org.junit.jupiter.api.Disabled -import org.junit.jupiter.api.assertDoesNotThrow -import tools.elide.assets.AssetBundle -import tools.elide.assets.ManifestFormat -import java.io.ByteArrayInputStream -import java.nio.charset.StandardCharsets -import kotlin.test.* -import elide.server.TestUtil -import elide.testing.annotations.TestCase - -/** Tests for [ServerAssetManifest] and [ServerAssetManifestProvider]. */ -@Disabled -@TestCase class ServerAssetManifestTest { - @Test fun testParseSampleManifestBinary() { - val data = TestUtil.loadBinary("/manifests/app.assets.pb") - val baos = ByteArrayInputStream(data) - val provider = ServerAssetManifestProvider() - val manifest = assertDoesNotThrow { - provider.deserializeLoadManifest( - ManifestFormat.BINARY to baos, - ) - } - assertNotNull( - manifest, - "loaded asset manifest should not be `null`" - ) - assertTrue( - manifest.isInitialized, - "manifest proto should be initialized after loading" - ) - assertTrue( - manifest.hasSettings(), - "manifest should have settings data present" - ) - assertTrue( - manifest.hasGenerated(), - "manifest should have a generated-at timestamp" - ) - } - - @Test fun testParseStabilityBinary() { - val data = TestUtil.loadBinary("/manifests/app.assets.pb") - val provider = ServerAssetManifestProvider() - val manifest = assertDoesNotThrow { - provider.deserializeLoadManifest( - ManifestFormat.BINARY to ByteArrayInputStream(data), - ) - } - val reparsed = assertDoesNotThrow { - provider.deserializeLoadManifest( - ManifestFormat.BINARY to ByteArrayInputStream(data), - ) - } - assertThat(manifest).isEqualTo( - reparsed - ) - } - - @Test fun testParseStabilityJson() { - val data = TestUtil.loadBinary("/manifests/app.assets.pb.json") - val provider = ServerAssetManifestProvider() - val manifest = assertDoesNotThrow { - provider.deserializeLoadManifest( - ManifestFormat.JSON to ByteArrayInputStream(data), - ) - } - val reparsed = assertDoesNotThrow { - provider.deserializeLoadManifest( - ManifestFormat.JSON to ByteArrayInputStream(data), - ) - } - assertThat(manifest).isEqualTo( - reparsed - ) - } - - @Test fun testManifestEqualsAcrossFormats() { - val dataBinary = TestUtil.loadBinary("/manifests/app.assets.pb") - val dataJson = TestUtil.loadBinary("/manifests/app.assets.pb.json") - val provider = ServerAssetManifestProvider() - val manifest1 = assertDoesNotThrow { - provider.deserializeLoadManifest( - ManifestFormat.BINARY to ByteArrayInputStream(dataBinary), - ) - } - val manifest2 = assertDoesNotThrow { - provider.deserializeLoadManifest( - ManifestFormat.JSON to ByteArrayInputStream(dataJson), - ) - } - assertThat(manifest1) - .ignoringFields(AssetBundle.getDescriptor().findFieldByName("styles").number) - .ignoringFields(AssetBundle.getDescriptor().findFieldByName("scripts").number) - .ignoringFields(AssetBundle.getDescriptor().findFieldByName("generated").number) - .isEqualTo(manifest2) - } - - @Test fun testParseSampleManifestJson() { - val data = TestUtil.loadBinary("/manifests/app.assets.pb.json") - val baos = ByteArrayInputStream(data) - val provider = ServerAssetManifestProvider() - val manifest = assertDoesNotThrow { - provider.deserializeLoadManifest( - ManifestFormat.JSON to baos, - ) - } - assertNotNull( - manifest, - "loaded asset manifest should not be `null`" - ) - assertTrue( - manifest.isInitialized, - "manifest proto should be initialized after loading" - ) - assertTrue( - manifest.hasSettings(), - "manifest should have settings data present" - ) - assertTrue( - manifest.hasGenerated(), - "manifest should have a generated-at timestamp" - ) - } - - @Test fun testParseInvalidFormat() { - assertNull( - assertDoesNotThrow { - ServerAssetManifestProvider().deserializeLoadManifest( - ManifestFormat.TEXT to ByteArrayInputStream(ByteArray(0)), - ) - } - ) - } - - @Test fun testParseInvalidData() { - val data = "i am not a valid manifest".toByteArray(StandardCharsets.UTF_8) - val baos = ByteArrayInputStream(data) - val provider = ServerAssetManifestProvider() - assertNull( - assertDoesNotThrow { - provider.deserializeLoadManifest( - ManifestFormat.BINARY to baos, - ) - } - ) - assertNull( - assertDoesNotThrow { - provider.deserializeLoadManifest( - ManifestFormat.JSON to baos, - ) - } - ) - } - - @Test fun testFindManifestFound() { - val path = "/manifests/app.assets.pb" - val provider = ServerAssetManifestProvider() - val manifest = assertDoesNotThrow { - provider.findManifest( - listOf( - ManifestFormat.BINARY to "/manifest/some-bad-path.pb", - ManifestFormat.JSON to "/manifest/some-bad-path.pb.json", - ManifestFormat.BINARY to path, - ManifestFormat.TEXT to "/manifest/some-bad-path.pb.txt" - ) - ) - } - assertNotNull( - manifest, - "should be able to find present manifest" - ) - } - - @Test fun testFindManifestNotFound() { - val path = "/manifests/some.non.existent.manifest.file.pb" - val provider = ServerAssetManifestProvider() - val manifest = assertDoesNotThrow { - provider.findManifest( - listOf( - ManifestFormat.BINARY to "/manifest/some-bad-path.pb", - ManifestFormat.JSON to "/manifest/some-bad-path.pb.json", - ManifestFormat.BINARY to path, - ManifestFormat.TEXT to "/manifest/some-bad-path.pb.txt" - ) - ) - } - assertNull( - manifest, - "should not be able to find missing manifest" - ) - } - - @Test fun testFindManifestDefault() { - assertDoesNotThrow { - ServerAssetManifestProvider().findManifest() - } - } - - @Test fun testFindLoadManifestFound() { - val path = "/manifests/app.assets.pb" - val provider = ServerAssetManifestProvider() - val manifest = assertDoesNotThrow { - provider.findLoadManifest( - listOf(ManifestFormat.BINARY to path), - ) - } - assertNotNull( - manifest, - "should be able to find present manifest" - ) - val manifest2 = assertDoesNotThrow { - provider.findLoadManifest( - listOf(ManifestFormat.BINARY to path), - ) - } - assertThat(manifest).isEqualTo( - manifest2 - ) - } - - @Test fun testFindLoadManifestNotFound() { - val path = "/manifests/i.do.not.exist.assets.pb" - val provider = ServerAssetManifestProvider() - val manifest = assertDoesNotThrow { - provider.findLoadManifest( - listOf(ManifestFormat.BINARY to path), - ) - } - assertNull( - manifest, - "not finding a manifest should result in `null`" - ) - } - - @Test fun testFindLoadManifestDefault() { - assertDoesNotThrow { - ServerAssetManifestProvider().findLoadManifest() - } - } -} diff --git a/packages/server/src/test/kotlin/elide/server/assets/ServerAssetServingTest.kt b/packages/server/src/test/kotlin/elide/server/assets/ServerAssetServingTest.kt deleted file mode 100644 index b84064a521..0000000000 --- a/packages/server/src/test/kotlin/elide/server/assets/ServerAssetServingTest.kt +++ /dev/null @@ -1,414 +0,0 @@ -/* - * Copyright (c) 2024 Elide Technologies, Inc. - * - * Licensed under the MIT license (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://opensource.org/license/mit/ - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under the License. - */ - -package elide.server.assets - -import io.micronaut.http.HttpRequest -import io.micronaut.http.HttpResponse -import org.junit.jupiter.api.Disabled -import org.junit.jupiter.api.assertDoesNotThrow -import org.junit.jupiter.api.assertThrows -import org.junit.jupiter.params.ParameterizedTest -import org.junit.jupiter.params.provider.CsvSource -import tools.elide.assets.AssetBundle.AssetContent -import tools.elide.assets.AssetBundle.GenericBundle -import jakarta.inject.Inject -import kotlinx.coroutines.runBlocking -import kotlinx.coroutines.test.runTest -import kotlin.test.* -import elide.server.StreamedAsset -import elide.testing.annotations.TestCase - -/** Tests general asset serving features, like ETags/conditional requests and compression variants. */ -@Disabled -@TestCase class ServerAssetServingTest { - companion object { - private const val assetPrefix = "/_/assets" - private const val sampleStylesheet = "$assetPrefix/02ade191.css" - private const val sampleScript = "$assetPrefix/c426de48.js" - } - - // Asset index. - @Inject internal lateinit var index: ServerAssetIndex - - // Asset manager. - @Inject lateinit var manager: AssetManager - - private suspend fun execute( - request: HttpRequest, - moduleId: String? = null - ): HttpResponse = manager.serveAsync( - request, - moduleId, - ).await() - - private fun assertAsset( - assetType: AssetType, - response: HttpResponse?, - status: Int = 200, - encoding: String? = null, - more: (() -> Unit)? = null - ) { - assertNotNull(response) - assertEquals(status, response.status.code) - if (status == 200) { - assertTrue(response.headers.contains("Content-Length")) - assertNotNull(response.headers.get("Content-Length")?.toLongOrNull()) - assertTrue(response.headers.get("Content-Length")!!.toLong() > 0) - assertTrue(response.headers.contains("Content-Type")) - assertTrue(response.headers.contains("ETag")) - assertTrue(response.headers.get("Content-Type")!!.contains(assetType.mediaType.type)) - assertTrue(response.headers.get("Content-Type")!!.contains(assetType.mediaType.subtype)) - if (encoding != null) { - assertTrue(response.headers.contains("Content-Encoding"), "headers should specify `Content-Encoding`") - assertEquals(response.headers.get("Content-Encoding"), encoding) - } - } - more?.invoke() - } - - @Test fun testInjectable() { - assertNotNull(manager) - assertNotNull(index) - } - - @Test fun testNonConditionalStyle() = runTest { - val response = execute(HttpRequest.GET(sampleStylesheet)) - assertEquals(200, response.status.code) - assertAsset( - AssetType.STYLESHEET, - response, - ) - } - - @Test fun testNonConditionalScript() = runTest { - val response = execute(HttpRequest.GET(sampleScript)) - assertEquals(200, response.status.code) - assertAsset( - AssetType.SCRIPT, - response, - ) - } - - @Test fun testEtagsStyle() = runTest { - val response = execute(HttpRequest.GET(sampleStylesheet)) - assertAsset( - AssetType.STYLESHEET, - response, - ) - assertTrue(response.headers.contains("ETag")) - val etag = response.headers.get("ETag")!! - if (etag.startsWith("W/")) { - assertTrue(etag.drop(2).startsWith("\"")) - } - assertTrue(etag.endsWith("\"")) - } - - @Test fun testEtagsScript() = runTest { - val response = execute(HttpRequest.GET(sampleScript)) - assertAsset( - AssetType.SCRIPT, - response, - ) - assertTrue(response.headers.contains("ETag")) - val etag = response.headers.get("ETag")!! - if (etag.startsWith("W/")) { - assertTrue(etag.drop(2).startsWith("\"")) - } - assertTrue(etag.endsWith("\"")) - } - - @Test fun testConditionalRequestETagStyle() = runTest { - val response = execute(HttpRequest.GET(sampleStylesheet)) - assertAsset( - AssetType.STYLESHEET, - response, - ) - val conditionNotSatisified = execute( - HttpRequest.GET(sampleStylesheet) - .header("If-None-Match", "some-value-that-isnt-the-etag") - ) - assertAsset( - AssetType.STYLESHEET, - conditionNotSatisified, - ) - val conditionSatisfied = execute( - HttpRequest.GET(sampleStylesheet) - .header("If-None-Match", response.header("ETag")!!) - ) - assertAsset(AssetType.STYLESHEET, conditionSatisfied, status = 304) { - assertTrue(response.headers.contains("Content-Length")) - } - } - - @Test fun testConditionalRequestETagScript() = runTest { - val response = execute(HttpRequest.GET(sampleScript)) - assertAsset( - AssetType.SCRIPT, - response, - ) - val conditionNotSatisified = execute( - HttpRequest.GET(sampleScript) - .header("If-None-Match", "some-value-that-isnt-the-etag") - ) - assertAsset( - AssetType.SCRIPT, - conditionNotSatisified, - ) - val conditionSatisfied = execute( - HttpRequest.GET(sampleScript) - .header("If-None-Match", response.header("ETag")!!) - ) - assertAsset(AssetType.SCRIPT, conditionSatisfied, status = 304) { - assertTrue(response.headers.contains("Content-Length")) - } - } - - @Test fun testResolveUnknownFromModuleId() { - assertNull( - assertDoesNotThrow { - manager.resolve(HttpRequest.GET("/_/assets/some-asset.css"), "unknown-module") - } - ) - } - - @Test fun testResolveUnknownFromRequest() { - assertNull( - assertDoesNotThrow { - manager.resolve(HttpRequest.GET("/_/assets/some-asset.css")) - } - ) - } - - @Test fun testResolveKnownFromModuleId() { - assertNotNull( - assertDoesNotThrow { - manager.resolve(HttpRequest.GET("/_/assets/some-asset.css"), "styles.base") - } - ) - } - - @Test fun testResolveKnownFromRequest() { - assertNotNull( - assertDoesNotThrow { - manager.resolve(HttpRequest.GET(manager.linkForAsset("styles.base"))) - } - ) - } - - @Test fun testGenerateUnknownLink() { - assertThrows { - manager.linkForAsset("unknown-module-id") - } - } - - @CsvSource("styles.base:css", "scripts.ui:js") - @ParameterizedTest - fun testGenerateLink(spec: String) { - val split = spec.split(":") - val module = split.first() - val extension = split.last() - val assetLink = manager.linkForAsset(module) - assertNotNull(assetLink) - assertTrue(assetLink.endsWith(".$extension"), "expected extension '$extension' for module '$module'") - } - - @Test fun testGenerateLinkOverrideType() { - val assetLink = manager.linkForAsset("styles.base") - assertTrue(assetLink.endsWith(".css")) - val assetLink2 = manager.linkForAsset("styles.base", overrideType = AssetType.TEXT) - assertTrue(assetLink2.endsWith(".txt")) - } - - @Test fun testGenerateLinkGeneric() { - val assetLink = manager.linkForAsset("styles.base") - assertTrue(assetLink.endsWith(".css")) - val assetLink2 = manager.linkForAsset("styles.base", overrideType = AssetType.GENERIC) - assertFalse(assetLink2.contains(".")) // should not have a file extension - } - - @CsvSource("gzip", "br", "deflate") - @ParameterizedTest - fun testCompressionSupportedStyle(encodingName: String) = runTest { - val response = execute(HttpRequest.GET(sampleStylesheet)) - assertAsset( - AssetType.STYLESHEET, - response, - ) - val compressedResponse = execute( - HttpRequest.GET(sampleStylesheet) - .header("Accept-Encoding", encodingName) - ) - assertAsset( - AssetType.STYLESHEET, - compressedResponse, - encoding = encodingName, - ) - } - - @CsvSource("gzip", "br", "deflate") - @ParameterizedTest - fun testCompressionSupportedScript(encodingName: String) = runTest { - val response = execute(HttpRequest.GET(sampleScript)) - assertAsset( - AssetType.SCRIPT, - response, - ) - val compressedResponse = execute( - HttpRequest.GET(sampleScript) - .header("Accept-Encoding", encodingName) - ) - assertAsset( - AssetType.SCRIPT, - compressedResponse, - encoding = encodingName, - ) - } - - @Test fun testUnsupportedCompressionStyle() = runTest { - val response = execute(HttpRequest.GET(sampleStylesheet)) - assertAsset( - AssetType.STYLESHEET, - response, - ) - val identityResponse = execute( - HttpRequest.GET(sampleStylesheet) - .header("Accept-Encoding", "some-encoding, some-other-unfamiliar-encoding, perhaps-another") - ) - assertAsset( - AssetType.STYLESHEET, - identityResponse, - ) - } - - @Test fun testUnsupportedCompressionScript() = runTest { - val response = execute(HttpRequest.GET(sampleScript)) - assertAsset( - AssetType.SCRIPT, - response, - ) - val identityResponse = execute( - HttpRequest.GET(sampleScript) - .header("Accept-Encoding", "some-encoding, some-other-unfamiliar-encoding, perhaps-another") - ) - assertAsset( - AssetType.SCRIPT, - identityResponse, - ) - } - - @Test fun testLocateKnownGoodModuleStyle() { - assertNotNull( - assertDoesNotThrow { - manager.findAssetByModuleId("styles.base") - } - ) - } - - @Test fun testLocateKnownGoodModuleScript() { - assertNotNull( - assertDoesNotThrow { - manager.findAssetByModuleId("scripts.ui") - } - ) - } - - @Test fun testLocateKnownBadModule() { - assertNull( - assertDoesNotThrow { - manager.findAssetByModuleId("some.unknown.module.here") - } - ) - } - - @Test fun testServerAssetDescriptorScript() { - val assetType = AssetType.SCRIPT - val bundle = index.activeManifest().bundle - val someScript = bundle.scriptsMap[bundle.scriptsMap.keys.first()]!! - val idx = List( - bundle.assetList.filter { - it.module == someScript.module - }.size - ) { idx -> - idx - }.first() - - val concrete = index.buildConcreteAsset( - assetType, - someScript.module, - bundle, - sortedSetOf(idx), - ) - assertTrue(concrete is ServerAsset.Script, "concrete script should be a `ServerAsset.Script`") - assertNotNull(concrete.descriptor) - assertNotNull(concrete.assetType) - assertEquals(assetType, concrete.assetType) - assertEquals(someScript.module, concrete.module) - } - - @Test fun testServerAssetDescriptorStyle() { - val assetType = AssetType.STYLESHEET - val bundle = index.activeManifest().bundle - val someStylesheet = bundle.stylesMap[bundle.stylesMap.keys.first()]!! - val idx = List( - bundle.assetList.filter { - it.module == someStylesheet.module - }.size - ) { idx -> - idx - }.first() - - val concrete = index.buildConcreteAsset( - assetType, - someStylesheet.module, - bundle, - sortedSetOf(idx), - ) - assertTrue(concrete is ServerAsset.Stylesheet, "concrete script should be a `ServerAsset.Stylesheet`") - assertNotNull(concrete.descriptor) - assertNotNull(concrete.assetType) - assertEquals(assetType, concrete.assetType) - assertEquals(someStylesheet.module, concrete.module) - } - - @Test fun testServerAssetDescriptorText() { - val assetType = AssetType.TEXT - val bundle = index.activeManifest().bundle - val someText = GenericBundle.newBuilder() - .setModule("module-text-id") - .setToken("abc123123123123123123") - .build() - - val newBundle = bundle.toBuilder() - .putGeneric("module-text-id", someText) - .addAsset( - AssetContent.newBuilder() - .setModule("module-text-id") - .setToken("abc123123123123123123") - ) - .build() - - val idx = newBundle.assetCount - 1 - val concrete = index.buildConcreteAsset( - assetType, - someText.module, - newBundle, - sortedSetOf(idx), - ) - assertTrue(concrete is ServerAsset.Text, "concrete script should be a `ServerAsset.Text`") - assertNotNull(concrete.descriptor) - assertNotNull(concrete.assetType) - assertEquals(assetType, concrete.assetType) - assertEquals(someText.module, concrete.module) - } -} diff --git a/packages/server/src/test/kotlin/elide/server/controller/PageControllerTest.kt b/packages/server/src/test/kotlin/elide/server/controller/PageControllerTest.kt index 578cdc823d..c83697d81a 100644 --- a/packages/server/src/test/kotlin/elide/server/controller/PageControllerTest.kt +++ b/packages/server/src/test/kotlin/elide/server/controller/PageControllerTest.kt @@ -13,23 +13,17 @@ package elide.server.controller -import io.micronaut.http.HttpRequest import io.micronaut.http.HttpResponse import io.micronaut.test.extensions.junit5.annotation.MicronautTest -import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.assertDoesNotThrow -import org.junit.jupiter.api.assertThrows import jakarta.inject.Inject import kotlinx.coroutines.runBlocking import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertNotNull import kotlin.test.assertTrue -import elide.server.assets.AssetReference -import elide.server.assets.AssetType /** Tests for the top-level [PageController] extension point. */ -@Disabled @MicronautTest class PageControllerTest { // Application bean context. @Inject lateinit var sample: SamplePageController @@ -47,83 +41,6 @@ import elide.server.assets.AssetType assertNotNull(sample) } - @Test fun testGenerateAssetReferenceInvalid() { - assertThrows { - sample.asset("some-invalid-module") - } - } - - @Test fun testGenerateReferenceValid() { - assertNotNull( - assertDoesNotThrow { - sample.asset("styles.base") - }, - "acquiring a known-good asset reference should not produce `null` or throw" - ) - } - - @Test fun testGenerateReferenceModuleIdRequired() { - assertThrows { - sample.asset("") - } - assertThrows { - sample.asset(" ") - } - assertThrows { - sample.asset("") { - // nothing - } - } - assertThrows { - sample.asset(" ") { - // nothing - } - } - assertThrows { - sample.asset("styles.base") { - module = "" - } - } - } - - @Test fun testAssignmentToUtilities() { - assertDoesNotThrow { - sample.assetManager = sample.assetManager - sample.appContext = sample.appContext - } - } - - @Test fun testGenerateReferenceViaHandler() { - val ref = assertDoesNotThrow { - sample.asset("styles.base") { - module = "styles.base" - inline = true - preload = true - } - } - - assertNotNull(ref, "customizing an asset reference should not produce `null`") - assertEquals( - AssetReference( - module = "styles.base", - assetType = AssetType.STYLESHEET, - href = ref.href, - type = null, - inline = true, - preload = true, - ), - ref, - "should be able to customize an asset reference with a handler" - ) - } - - @Test fun testCanAcquireAssetManager() { - assertNotNull( - sample.assets(), - "`PageController` inheritors should be able to acquire the asset runtime" - ) - } - @Test fun testCanAcquireAppContext() { assertNotNull( sample.context(), @@ -141,66 +58,6 @@ import elide.server.assets.AssetType ) } - @Test fun testRenderCssDocument() { - assetResponse( - assertDoesNotThrow { - runBlocking { - sample.styles() - } - } - ) - } - - @Test fun testRenderStylesheetAssetWithHandler() { - assetResponse( - assertDoesNotThrow { - runBlocking { - sample.assetStyle(HttpRequest.GET("/styles/base.css")) - } - } - ) - } - - @Test fun testRenderStylesheetAssetWithKnownModule() { - assetResponse( - assertDoesNotThrow { - runBlocking { - sample.assetStyleExplicit(HttpRequest.GET("/styles/base.other.css")) - } - } - ) - } - - @Test fun testRenderStylesheetAssetWithGenericCall() { - assetResponse( - assertDoesNotThrow { - runBlocking { - sample.assetGeneric(HttpRequest.GET("/styles/base.another.css")) - } - } - ) - } - - @Test fun testRenderScriptAssetWithHandler() { - assetResponse( - assertDoesNotThrow { - runBlocking { - sample.assetScript(HttpRequest.GET("/scripts/ui.js")) - } - } - ) - } - - @Test fun testRenderScriptAssetWithKnownModule() { - assetResponse( - assertDoesNotThrow { - runBlocking { - sample.assetScriptExplicit(HttpRequest.GET("/scripts/ui.other.js")) - } - } - ) - } - @Test fun testRenderTextStaticResource() { assetResponse( assertDoesNotThrow { diff --git a/packages/server/src/test/kotlin/elide/server/controller/SamplePageController.kt b/packages/server/src/test/kotlin/elide/server/controller/SamplePageController.kt index bdc78bfa1f..d968cbcdef 100644 --- a/packages/server/src/test/kotlin/elide/server/controller/SamplePageController.kt +++ b/packages/server/src/test/kotlin/elide/server/controller/SamplePageController.kt @@ -13,34 +13,19 @@ package elide.server.controller -import io.micronaut.http.HttpRequest import io.micronaut.http.annotation.Get -import kotlinx.css.* import kotlinx.html.strong import kotlinx.html.tagext.body import kotlinx.html.tagext.head import kotlinx.html.title import elide.server.* import elide.server.annotations.Page -import elide.server.assets.AssetType /** Sample page controller for testing. */ @Page class SamplePageController : PageController() { @Get("/") suspend fun indexPage() = html { head { title { +"Hello, Elide!" } - stylesheet(asset("styles.base"), media = "screen", attrs = sortedMapOf("hello" to "cool")) - stylesheet(asset("styles.base")) - script( - asset("scripts.ui"), - async = true, - defer = true, - nomodule = true, - attrs = sortedMapOf( - "extra" to "attr", - ) - ) - script(asset("scripts.ui")) stylesheet("/styles/base.css") script("/scripts/ui.js", defer = true) } @@ -48,44 +33,10 @@ import elide.server.assets.AssetType strong { +"Hello Sample Page!" } - script(asset("scripts.ui")) script("/scripts/ui.js", defer = true) } } - @Get("/some-styles.css") fun styles() = css { - rule("main") { - backgroundColor = Color.white - maxWidth = 600.px - maxHeight = 800.px - } - rule(".sample-app-container") { - display = Display.flex - justifyContent = JustifyContent.center - alignItems = Align.center - } - } - - @Get("/styles/base.css") suspend fun assetStyle(request: HttpRequest) = stylesheet(request) { - module("styles.base") - assetType(AssetType.STYLESHEET) - } - - @Get("/styles/base.another.css") suspend fun assetGeneric(request: HttpRequest) = asset(request) { - module("styles.base") - assetType(AssetType.STYLESHEET) - } - - @Get("/styles/base.other.css") suspend fun assetStyleExplicit(request: HttpRequest) = - stylesheet(request, "styles.base") - - @Get("/scripts/ui.js") suspend fun assetScript(request: HttpRequest) = script(request) { - module("scripts.ui") - } - - @Get("/scripts/ui.other.js") suspend fun assetScriptExplicit(request: HttpRequest) = - script(request, "scripts.ui") - @Get("/something.txt") suspend fun somethingText() = staticFile( "something.txt", "text/plain", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index dd85dfb043..0000000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,5047 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -overrides: - jszip: 3.10.1 - node-fetch: 3.3.2 - -importers: - - .: - dependencies: - browserslist: - specifier: 4.24.4 - version: 4.24.4 - cssnano: - specifier: 7.0.6 - version: 7.0.6(postcss@8.5.3) - esbuild: - specifier: 0.25.0 - version: 0.25.0 - google-protobuf: - specifier: 3.21.4 - version: 3.21.4 - jszip: - specifier: 3.10.1 - version: 3.10.1 - lz-string: - specifier: 1.5.0 - version: 1.5.0 - postcss: - specifier: 8.5.3 - version: 8.5.3 - preact: - specifier: 10.26.4 - version: 10.26.4 - react: - specifier: 19.0.0 - version: 19.0.0 - react-dom: - specifier: 19.0.0 - version: 19.0.0(react@19.0.0) - readable-stream: - specifier: 4.5.2 - version: 4.5.2 - typescript: - specifier: 5.8.2 - version: 5.8.2 - web-streams-polyfill: - specifier: 3.3.3 - version: 3.3.3 - devDependencies: - '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 - '@commitlint/cli': - specifier: 19.7.1 - version: 19.7.1(@types/node@22.13.8)(typescript@5.8.2) - '@commitlint/config-conventional': - specifier: 19.7.1 - version: 19.7.1 - '@mdx-js/esbuild': - specifier: 3.1.0 - version: 3.1.0(acorn@8.14.0)(esbuild@0.25.0) - '@mitata/counters': - specifier: 0.0.8 - version: 0.0.8 - '@prettier/plugin-xml': - specifier: 3.4.1 - version: 3.4.1(prettier@3.5.3) - '@types/google-protobuf': - specifier: 3.15.12 - version: 3.15.12 - '@types/node': - specifier: 22.13.8 - version: 22.13.8 - commitlint: - specifier: 19.7.1 - version: 19.7.1(@types/node@22.13.8)(typescript@5.8.2) - eslint: - specifier: 9.21.0 - version: 9.21.0(jiti@2.4.2) - express: - specifier: ^4.21.2 - version: 4.21.2 - husky: - specifier: 9.1.7 - version: 9.1.7 - lint-staged: - specifier: 15.4.3 - version: 15.4.3 - mitata: - specifier: 1.0.34 - version: 1.0.34 - postcss-cli: - specifier: 11.0.0 - version: 11.0.0(jiti@2.4.2)(postcss@8.5.3) - prettier: - specifier: 3.5.3 - version: 3.5.3 - prettier-plugin-java: - specifier: 2.6.7 - version: 2.6.7(prettier@3.5.3) - prettier-plugin-properties: - specifier: 0.3.0 - version: 0.3.0(prettier@3.5.3) - prettier-plugin-sh: - specifier: 0.15.0 - version: 0.15.0(prettier@3.5.3) - prettier-plugin-toml: - specifier: 2.0.2 - version: 2.0.2(prettier@3.5.3) - -packages: - - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} - engines: {node: '>=14.21.3'} - hasBin: true - - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - - '@chevrotain/cst-dts-gen@11.0.3': - resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} - - '@chevrotain/gast@11.0.3': - resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} - - '@chevrotain/regexp-to-ast@11.0.3': - resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} - - '@chevrotain/types@11.0.3': - resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} - - '@chevrotain/utils@11.0.3': - resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} - - '@commitlint/cli@19.7.1': - resolution: {integrity: sha512-iObGjR1tE/PfDtDTEfd+tnRkB3/HJzpQqRTyofS2MPPkDn1mp3DBC8SoPDayokfAy+xKhF8+bwRCJO25Nea0YQ==} - engines: {node: '>=v18'} - hasBin: true - - '@commitlint/config-conventional@19.7.1': - resolution: {integrity: sha512-fsEIF8zgiI/FIWSnykdQNj/0JE4av08MudLTyYHm4FlLWemKoQvPNUYU2M/3tktWcCEyq7aOkDDgtjrmgWFbvg==} - engines: {node: '>=v18'} - - '@commitlint/config-validator@19.5.0': - resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} - engines: {node: '>=v18'} - - '@commitlint/ensure@19.5.0': - resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==} - engines: {node: '>=v18'} - - '@commitlint/execute-rule@19.5.0': - resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} - engines: {node: '>=v18'} - - '@commitlint/format@19.5.0': - resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} - engines: {node: '>=v18'} - - '@commitlint/is-ignored@19.7.1': - resolution: {integrity: sha512-3IaOc6HVg2hAoGleRK3r9vL9zZ3XY0rf1RsUf6jdQLuaD46ZHnXBiOPTyQ004C4IvYjSWqJwlh0/u2P73aIE3g==} - engines: {node: '>=v18'} - - '@commitlint/lint@19.7.1': - resolution: {integrity: sha512-LhcPfVjcOcOZA7LEuBBeO00o3MeZa+tWrX9Xyl1r9PMd5FWsEoZI9IgnGqTKZ0lZt5pO3ZlstgnRyY1CJJc9Xg==} - engines: {node: '>=v18'} - - '@commitlint/load@19.6.1': - resolution: {integrity: sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==} - engines: {node: '>=v18'} - - '@commitlint/message@19.5.0': - resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==} - engines: {node: '>=v18'} - - '@commitlint/parse@19.5.0': - resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==} - engines: {node: '>=v18'} - - '@commitlint/read@19.5.0': - resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==} - engines: {node: '>=v18'} - - '@commitlint/resolve-extends@19.5.0': - resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} - engines: {node: '>=v18'} - - '@commitlint/rules@19.6.0': - resolution: {integrity: sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==} - engines: {node: '>=v18'} - - '@commitlint/to-lines@19.5.0': - resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==} - engines: {node: '>=v18'} - - '@commitlint/top-level@19.5.0': - resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==} - engines: {node: '>=v18'} - - '@commitlint/types@19.5.0': - resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} - engines: {node: '>=v18'} - - '@esbuild/aix-ppc64@0.25.0': - resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.0': - resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.0': - resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.0': - resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.0': - resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.0': - resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.0': - resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.0': - resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.0': - resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.0': - resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.0': - resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.0': - resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.0': - resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.0': - resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.0': - resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.0': - resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.0': - resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.0': - resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.0': - resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.0': - resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.0': - resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.25.0': - resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.0': - resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.0': - resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.0': - resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.1': - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.19.2': - resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.12.0': - resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.0': - resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.21.0': - resolution: {integrity: sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.2.7': - resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} - engines: {node: '>=18.18'} - - '@mdx-js/esbuild@3.1.0': - resolution: {integrity: sha512-Jk42xUb1SEJxh6n2GBAtJjQISFIZccjz8XVEsHVhrlvZJAJziIxR9KyaFF6nTeTB/jCAFQGDgO7+oMRH/ApRsg==} - peerDependencies: - esbuild: '>=0.14.0' - - '@mdx-js/mdx@3.1.0': - resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} - - '@mitata/counters@0.0.8': - resolution: {integrity: sha512-f11w0Y1ETFlarDP7CePj8Z+y8Gv5Ax4gMxWsEwrqh0kH/YIY030Ezx5SUJeQg0YPTZ2OHKGcLG1oGJbIqHzaJA==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@prettier/plugin-xml@3.4.1': - resolution: {integrity: sha512-Uf/6/+9ez6z/IvZErgobZ2G9n1ybxF5BhCd7eMcKqfoWuOzzNUxBipNo3QAP8kRC1VD18TIo84no7LhqtyDcTg==} - peerDependencies: - prettier: ^3.0.0 - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - - '@taplo/core@0.1.1': - resolution: {integrity: sha512-BG/zLGf5wiNXGEVPvUAAX/4ilB3PwDUY2o0MV0y47mZbDZ9ad9UK/cIQsILat3bqbPJsALVbU6k3cskNZ3vAQg==} - - '@taplo/lib@0.4.0-alpha.2': - resolution: {integrity: sha512-DV/Re3DPVY+BhBtLZ3dmP4mP6YMLSsgq9qGLXwOV38lvNF/fBlgvQswzlXmzCEefL/3q2eMoefZpOI/+GLuCNA==} - - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - - '@types/acorn@4.0.6': - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - - '@types/conventional-commits-parser@5.0.1': - resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/google-protobuf@3.15.12': - resolution: {integrity: sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/mdx@2.0.13': - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/node@22.13.8': - resolution: {integrity: sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==} - - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - - '@ungap/structured-clone@1.2.1': - resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} - - '@xml-tools/parser@1.0.11': - resolution: {integrity: sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} - engines: {node: '>=18'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-ify@1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - - astring@1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} - hasBin: true - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - call-bind-apply-helpers@1.0.1: - resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} - engines: {node: '>= 0.4'} - - call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-lite@1.0.30001692: - resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - chevrotain-allstar@0.3.1: - resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} - peerDependencies: - chevrotain: ^11.0.0 - - chevrotain@11.0.3: - resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} - - chevrotain@7.1.1: - resolution: {integrity: sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - commander@13.1.0: - resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} - engines: {node: '>=18'} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commitlint@19.7.1: - resolution: {integrity: sha512-iNWqXl/A1WN8qd9JehqUpzbOxczNBE1nzBiYE33TkHeTptq7Cvg5U4j8PpvO92Nxganv6o/20IO3omP5N5M7/A==} - engines: {node: '>=v18'} - hasBin: true - - compare-func@2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} - - conventional-changelog-conventionalcommits@7.0.2: - resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} - engines: {node: '>=16'} - - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} - hasBin: true - - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cosmiconfig-typescript-loader@6.1.0: - resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} - engines: {node: '>=v18'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=9' - typescript: '>=5' - - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - css-declaration-sorter@7.2.0: - resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.0.9 - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssnano-preset-default@7.0.6: - resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano-utils@5.0.0: - resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano@7.0.6: - resolution: {integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - dargs@8.1.0: - resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} - engines: {node: '>=12'} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - dependency-graph@0.11.0: - resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} - engines: {node: '>= 0.6.0'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - - dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - - dot-properties@1.0.1: - resolution: {integrity: sha512-cjIHHKlf2dPINJ5Io3lPocWvWmthXn3ztqyHVzUfufRiCiPECb0oiEqEGbEGaunFZtcMvwgUcxP9CTpLG4KCsA==} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - electron-to-chromium@1.5.83: - resolution: {integrity: sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==} - - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - - esast-util-from-estree@2.0.0: - resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} - - esast-util-from-js@2.0.1: - resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - - esbuild@0.25.0: - resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.21.0: - resolution: {integrity: sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - - estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-util-scope@1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} - - estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} - engines: {node: '>= 0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-up@7.0.0: - resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} - engines: {node: '>=18'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} - engines: {node: '>=18'} - - get-intrinsic@1.2.6: - resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} - engines: {node: '>= 0.4'} - - get-stdin@9.0.0: - resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} - engines: {node: '>=12'} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - git-raw-commits@4.0.0: - resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} - engines: {node: '>=16'} - hasBin: true - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - global-directory@4.0.1: - resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} - engines: {node: '>=18'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} - - google-protobuf@3.21.4: - resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-util-to-estree@3.1.0: - resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} - - hast-util-to-jsx-runtime@2.3.2: - resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - husky@9.1.7: - resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} - engines: {node: '>=18'} - hasBin: true - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - - import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@4.1.1: - resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} - engines: {node: '>=18'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - java-parser@2.3.3: - resolution: {integrity: sha512-9YY8OGlNGfq5TDDq2SBjtIEHMVLeV8vSSZrXDaQBhQ84hi1zc3/+5l3DF3wW8JGqQT2kNVha05dziSamvN8M/g==} - - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lint-staged@15.4.3: - resolution: {integrity: sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==} - engines: {node: '>=18.12.0'} - hasBin: true - - listr2@8.2.5: - resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} - engines: {node: '>=18.0.0'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - - lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - - markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - - math-intrinsics@1.0.0: - resolution: {integrity: sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==} - engines: {node: '>= 0.4'} - - mdast-util-from-markdown@2.0.2: - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - - mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - - mdast-util-mdx-jsx@3.1.3: - resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} - - mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} - - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - micromark-core-commonmark@2.0.2: - resolution: {integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==} - - micromark-extension-mdx-expression@3.0.0: - resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} - - micromark-extension-mdx-jsx@3.0.1: - resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} - - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - - micromark-factory-mdx-expression@2.0.2: - resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} - - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - - micromark-util-events-to-acorn@2.0.2: - resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} - - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - - micromark-util-subtokenize@2.0.3: - resolution: {integrity: sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==} - - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - - micromark-util-types@2.0.1: - resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} - - micromark@4.0.1: - resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mitata@1.0.34: - resolution: {integrity: sha512-Mc3zrtNBKIMeHSCQ0XqRLo1vbdIx1wvFV9c8NJAiyho6AjNfMY8bVhbS12bwciUdd1t4rj8099CH3N3NFahaUA==} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - mvdan-sh@0.10.1: - resolution: {integrity: sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==} - - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - object-inspect@1.13.3: - resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} - engines: {node: '>= 0.4'} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-entities@4.0.2: - resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - postcss-calc@10.0.2: - resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} - engines: {node: ^18.12 || ^20.9 || >=22.0} - peerDependencies: - postcss: ^8.4.38 - - postcss-cli@11.0.0: - resolution: {integrity: sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - postcss: ^8.0.0 - - postcss-colormin@7.0.2: - resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-convert-values@7.0.4: - resolution: {integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-comments@7.0.3: - resolution: {integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-duplicates@7.0.1: - resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-empty@7.0.0: - resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-overridden@7.0.0: - resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-load-config@5.1.0: - resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - - postcss-merge-longhand@7.0.4: - resolution: {integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-rules@7.0.4: - resolution: {integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-font-values@7.0.0: - resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-gradients@7.0.0: - resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-params@7.0.2: - resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-selectors@7.0.4: - resolution: {integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-charset@7.0.0: - resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-display-values@7.0.0: - resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-positions@7.0.0: - resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-repeat-style@7.0.0: - resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-string@7.0.0: - resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-timing-functions@7.0.0: - resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-unicode@7.0.2: - resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-url@7.0.0: - resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-whitespace@7.0.0: - resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-ordered-values@7.0.1: - resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-initial@7.0.2: - resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-transforms@7.0.0: - resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reporter@7.1.0: - resolution: {integrity: sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==} - engines: {node: '>=10'} - peerDependencies: - postcss: ^8.1.0 - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-svgo@7.0.1: - resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} - engines: {node: ^18.12.0 || ^20.9.0 || >= 18} - peerDependencies: - postcss: ^8.4.31 - - postcss-unique-selectors@7.0.3: - resolution: {integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - - preact@10.26.4: - resolution: {integrity: sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-plugin-java@2.6.7: - resolution: {integrity: sha512-AVm+X7fhAZpYKiUCdUIGZ8HJbkGkTUgYQIKVuCQEplcqpGw2ewVnNGcPb1Kc3+MYMfiEqzhd8ZYhMGVHw6tZdQ==} - peerDependencies: - prettier: ^3.0.0 - - prettier-plugin-properties@0.3.0: - resolution: {integrity: sha512-j2h4NbG6hIaRx0W7CDPUH+yDbzXHmI2urPC1EC8pYrsS5R5AYgAmcSDN0oea+C5mBiN6BK0AkiSKPj0RC17NDQ==} - peerDependencies: - prettier: '>= 2.3.0' - - prettier-plugin-sh@0.15.0: - resolution: {integrity: sha512-U0PikJr/yr2bzzARl43qI0mApBj0C1xdAfA04AZa6LnvIKawXHhuy2fFo6LNA7weRzGlAiNbaEFfKMFo0nZr/A==} - engines: {node: '>=16.0.0'} - peerDependencies: - prettier: ^3.0.3 - - prettier-plugin-toml@2.0.2: - resolution: {integrity: sha512-tUIIhyfdVX5DMsLGKX/2qaEwi3W48OkUSR7XC91PRI5jFzhexmaYWkrSP1Xh/eWUcEc0TVMQenM3lB09xLQstQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - prettier: ^3.0.3 - - prettier@3.5.3: - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} - engines: {node: '>=14'} - hasBin: true - - pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - react-dom@19.0.0: - resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} - peerDependencies: - react: ^19.0.0 - - react@19.0.0: - resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - recma-build-jsx@1.0.0: - resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - - recma-jsx@1.0.0: - resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==} - - recma-parse@1.0.0: - resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} - - recma-stringify@1.0.0: - resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - - regexp-to-ast@0.5.0: - resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} - - rehype-recma@1.0.0: - resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} - - remark-mdx@3.1.0: - resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.1.1: - resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - scheduler@0.25.0: - resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} - - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - sh-syntax@0.4.2: - resolution: {integrity: sha512-/l2UZ5fhGZLVZa16XQM9/Vq/hezGGbdHeVEA01uWjOL1+7Ek/gt6FquW0iKKws4a9AYPYvlz6RyVvjh3JxOteg==} - engines: {node: '>=16.0.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} - engines: {node: '>=18'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - style-to-object@0.4.4: - resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - - style-to-object@1.0.8: - resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} - - stylehacks@7.0.4: - resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} - engines: {node: '>=14.0.0'} - hasBin: true - - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} - engines: {node: '>=8'} - - thenby@1.3.4: - resolution: {integrity: sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - typescript@5.8.2: - resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - update-browserslist-db@1.1.2: - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} - engines: {node: '>=18'} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/helper-validator-identifier@7.25.9': {} - - '@biomejs/biome@1.9.4': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - - '@biomejs/cli-darwin-arm64@1.9.4': - optional: true - - '@biomejs/cli-darwin-x64@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64@1.9.4': - optional: true - - '@biomejs/cli-linux-x64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-x64@1.9.4': - optional: true - - '@biomejs/cli-win32-arm64@1.9.4': - optional: true - - '@biomejs/cli-win32-x64@1.9.4': - optional: true - - '@chevrotain/cst-dts-gen@11.0.3': - dependencies: - '@chevrotain/gast': 11.0.3 - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/gast@11.0.3': - dependencies: - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/regexp-to-ast@11.0.3': {} - - '@chevrotain/types@11.0.3': {} - - '@chevrotain/utils@11.0.3': {} - - '@commitlint/cli@19.7.1(@types/node@22.13.8)(typescript@5.8.2)': - dependencies: - '@commitlint/format': 19.5.0 - '@commitlint/lint': 19.7.1 - '@commitlint/load': 19.6.1(@types/node@22.13.8)(typescript@5.8.2) - '@commitlint/read': 19.5.0 - '@commitlint/types': 19.5.0 - tinyexec: 0.3.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - typescript - - '@commitlint/config-conventional@19.7.1': - dependencies: - '@commitlint/types': 19.5.0 - conventional-changelog-conventionalcommits: 7.0.2 - - '@commitlint/config-validator@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - ajv: 8.17.1 - - '@commitlint/ensure@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.upperfirst: 4.3.1 - - '@commitlint/execute-rule@19.5.0': {} - - '@commitlint/format@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - chalk: 5.4.1 - - '@commitlint/is-ignored@19.7.1': - dependencies: - '@commitlint/types': 19.5.0 - semver: 7.7.1 - - '@commitlint/lint@19.7.1': - dependencies: - '@commitlint/is-ignored': 19.7.1 - '@commitlint/parse': 19.5.0 - '@commitlint/rules': 19.6.0 - '@commitlint/types': 19.5.0 - - '@commitlint/load@19.6.1(@types/node@22.13.8)(typescript@5.8.2)': - dependencies: - '@commitlint/config-validator': 19.5.0 - '@commitlint/execute-rule': 19.5.0 - '@commitlint/resolve-extends': 19.5.0 - '@commitlint/types': 19.5.0 - chalk: 5.4.1 - cosmiconfig: 9.0.0(typescript@5.8.2) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.13.8)(cosmiconfig@9.0.0(typescript@5.8.2))(typescript@5.8.2) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - transitivePeerDependencies: - - '@types/node' - - typescript - - '@commitlint/message@19.5.0': {} - - '@commitlint/parse@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 - - '@commitlint/read@19.5.0': - dependencies: - '@commitlint/top-level': 19.5.0 - '@commitlint/types': 19.5.0 - git-raw-commits: 4.0.0 - minimist: 1.2.8 - tinyexec: 0.3.2 - - '@commitlint/resolve-extends@19.5.0': - dependencies: - '@commitlint/config-validator': 19.5.0 - '@commitlint/types': 19.5.0 - global-directory: 4.0.1 - import-meta-resolve: 4.1.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - - '@commitlint/rules@19.6.0': - dependencies: - '@commitlint/ensure': 19.5.0 - '@commitlint/message': 19.5.0 - '@commitlint/to-lines': 19.5.0 - '@commitlint/types': 19.5.0 - - '@commitlint/to-lines@19.5.0': {} - - '@commitlint/top-level@19.5.0': - dependencies: - find-up: 7.0.0 - - '@commitlint/types@19.5.0': - dependencies: - '@types/conventional-commits-parser': 5.0.1 - chalk: 5.4.1 - - '@esbuild/aix-ppc64@0.25.0': - optional: true - - '@esbuild/android-arm64@0.25.0': - optional: true - - '@esbuild/android-arm@0.25.0': - optional: true - - '@esbuild/android-x64@0.25.0': - optional: true - - '@esbuild/darwin-arm64@0.25.0': - optional: true - - '@esbuild/darwin-x64@0.25.0': - optional: true - - '@esbuild/freebsd-arm64@0.25.0': - optional: true - - '@esbuild/freebsd-x64@0.25.0': - optional: true - - '@esbuild/linux-arm64@0.25.0': - optional: true - - '@esbuild/linux-arm@0.25.0': - optional: true - - '@esbuild/linux-ia32@0.25.0': - optional: true - - '@esbuild/linux-loong64@0.25.0': - optional: true - - '@esbuild/linux-mips64el@0.25.0': - optional: true - - '@esbuild/linux-ppc64@0.25.0': - optional: true - - '@esbuild/linux-riscv64@0.25.0': - optional: true - - '@esbuild/linux-s390x@0.25.0': - optional: true - - '@esbuild/linux-x64@0.25.0': - optional: true - - '@esbuild/netbsd-arm64@0.25.0': - optional: true - - '@esbuild/netbsd-x64@0.25.0': - optional: true - - '@esbuild/openbsd-arm64@0.25.0': - optional: true - - '@esbuild/openbsd-x64@0.25.0': - optional: true - - '@esbuild/sunos-x64@0.25.0': - optional: true - - '@esbuild/win32-arm64@0.25.0': - optional: true - - '@esbuild/win32-ia32@0.25.0': - optional: true - - '@esbuild/win32-x64@0.25.0': - optional: true - - '@eslint-community/eslint-utils@4.4.1(eslint@9.21.0(jiti@2.4.2))': - dependencies: - eslint: 9.21.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/config-array@0.19.2': - dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/core@0.12.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.0': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.21.0': {} - - '@eslint/object-schema@2.1.6': {} - - '@eslint/plugin-kit@0.2.7': - dependencies: - '@eslint/core': 0.12.0 - levn: 0.4.1 - - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.2': {} - - '@mdx-js/esbuild@3.1.0(acorn@8.14.0)(esbuild@0.25.0)': - dependencies: - '@mdx-js/mdx': 3.1.0(acorn@8.14.0) - '@types/unist': 3.0.3 - esbuild: 0.25.0 - source-map: 0.7.4 - vfile: 6.0.3 - vfile-message: 4.0.2 - transitivePeerDependencies: - - acorn - - supports-color - - '@mdx-js/mdx@3.1.0(acorn@8.14.0)': - dependencies: - '@types/estree': 1.0.6 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdx': 2.0.13 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.0 - estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.2 - markdown-extensions: 2.0.0 - recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.14.0) - recma-stringify: 1.0.0 - rehype-recma: 1.0.0 - remark-mdx: 3.1.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.1 - source-map: 0.7.4 - unified: 11.0.5 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - transitivePeerDependencies: - - acorn - - supports-color - - '@mitata/counters@0.0.8': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@prettier/plugin-xml@3.4.1(prettier@3.5.3)': - dependencies: - '@xml-tools/parser': 1.0.11 - prettier: 3.5.3 - - '@sindresorhus/merge-streams@2.3.0': {} - - '@taplo/core@0.1.1': {} - - '@taplo/lib@0.4.0-alpha.2': - dependencies: - '@taplo/core': 0.1.1 - - '@trysound/sax@0.2.0': {} - - '@types/acorn@4.0.6': - dependencies: - '@types/estree': 1.0.6 - - '@types/conventional-commits-parser@5.0.1': - dependencies: - '@types/node': 22.13.8 - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 - - '@types/estree-jsx@1.0.5': - dependencies: - '@types/estree': 1.0.6 - - '@types/estree@1.0.6': {} - - '@types/google-protobuf@3.15.12': {} - - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/json-schema@7.0.15': {} - - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/mdx@2.0.13': {} - - '@types/ms@0.7.34': {} - - '@types/node@22.13.8': - dependencies: - undici-types: 6.20.0 - - '@types/unist@2.0.11': {} - - '@types/unist@3.0.3': {} - - '@ungap/structured-clone@1.2.1': {} - - '@xml-tools/parser@1.0.11': - dependencies: - chevrotain: 7.1.1 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - - acorn-jsx@5.3.2(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - - acorn@8.14.0: {} - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - - ansi-escapes@7.0.0: - dependencies: - environment: 1.1.0 - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - array-flatten@1.1.1: {} - - array-ify@1.0.0: {} - - astring@1.9.0: {} - - bail@2.0.2: {} - - balanced-match@1.0.2: {} - - base64-js@1.5.1: {} - - binary-extensions@2.3.0: {} - - body-parser@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - boolbase@1.0.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001692 - electron-to-chromium: 1.5.83 - node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bytes@3.1.2: {} - - call-bind-apply-helpers@1.0.1: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bound@1.0.3: - dependencies: - call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.6 - - callsites@3.1.0: {} - - caniuse-api@3.0.0: - dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001692 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-lite@1.0.30001692: {} - - ccount@2.0.1: {} - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.4.1: {} - - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - character-entities@2.0.2: {} - - character-reference-invalid@2.0.1: {} - - chevrotain-allstar@0.3.1(chevrotain@11.0.3): - dependencies: - chevrotain: 11.0.3 - lodash-es: 4.17.21 - - chevrotain@11.0.3: - dependencies: - '@chevrotain/cst-dts-gen': 11.0.3 - '@chevrotain/gast': 11.0.3 - '@chevrotain/regexp-to-ast': 11.0.3 - '@chevrotain/types': 11.0.3 - '@chevrotain/utils': 11.0.3 - lodash-es: 4.17.21 - - chevrotain@7.1.1: - dependencies: - regexp-to-ast: 0.5.0 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - - cli-truncate@4.0.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - collapse-white-space@2.1.0: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - colord@2.9.3: {} - - colorette@2.0.20: {} - - comma-separated-tokens@2.0.3: {} - - commander@13.1.0: {} - - commander@7.2.0: {} - - commitlint@19.7.1(@types/node@22.13.8)(typescript@5.8.2): - dependencies: - '@commitlint/cli': 19.7.1(@types/node@22.13.8)(typescript@5.8.2) - '@commitlint/types': 19.5.0 - transitivePeerDependencies: - - '@types/node' - - typescript - - compare-func@2.0.0: - dependencies: - array-ify: 1.0.0 - dot-prop: 5.3.0 - - concat-map@0.0.1: {} - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - - conventional-changelog-angular@7.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-conventionalcommits@7.0.2: - dependencies: - compare-func: 2.0.0 - - conventional-commits-parser@5.0.0: - dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 - - cookie-signature@1.0.6: {} - - cookie@0.7.1: {} - - core-util-is@1.0.3: {} - - cosmiconfig-typescript-loader@6.1.0(@types/node@22.13.8)(cosmiconfig@9.0.0(typescript@5.8.2))(typescript@5.8.2): - dependencies: - '@types/node': 22.13.8 - cosmiconfig: 9.0.0(typescript@5.8.2) - jiti: 2.4.2 - typescript: 5.8.2 - - cosmiconfig@9.0.0(typescript@5.8.2): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.8.2 - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - css-declaration-sorter@7.2.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - - css-tree@2.2.1: - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.1 - - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 - - css-what@6.1.0: {} - - cssesc@3.0.0: {} - - cssnano-preset-default@7.0.6(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - css-declaration-sorter: 7.2.0(postcss@8.5.3) - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-calc: 10.0.2(postcss@8.5.3) - postcss-colormin: 7.0.2(postcss@8.5.3) - postcss-convert-values: 7.0.4(postcss@8.5.3) - postcss-discard-comments: 7.0.3(postcss@8.5.3) - postcss-discard-duplicates: 7.0.1(postcss@8.5.3) - postcss-discard-empty: 7.0.0(postcss@8.5.3) - postcss-discard-overridden: 7.0.0(postcss@8.5.3) - postcss-merge-longhand: 7.0.4(postcss@8.5.3) - postcss-merge-rules: 7.0.4(postcss@8.5.3) - postcss-minify-font-values: 7.0.0(postcss@8.5.3) - postcss-minify-gradients: 7.0.0(postcss@8.5.3) - postcss-minify-params: 7.0.2(postcss@8.5.3) - postcss-minify-selectors: 7.0.4(postcss@8.5.3) - postcss-normalize-charset: 7.0.0(postcss@8.5.3) - postcss-normalize-display-values: 7.0.0(postcss@8.5.3) - postcss-normalize-positions: 7.0.0(postcss@8.5.3) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.3) - postcss-normalize-string: 7.0.0(postcss@8.5.3) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.3) - postcss-normalize-unicode: 7.0.2(postcss@8.5.3) - postcss-normalize-url: 7.0.0(postcss@8.5.3) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.3) - postcss-ordered-values: 7.0.1(postcss@8.5.3) - postcss-reduce-initial: 7.0.2(postcss@8.5.3) - postcss-reduce-transforms: 7.0.0(postcss@8.5.3) - postcss-svgo: 7.0.1(postcss@8.5.3) - postcss-unique-selectors: 7.0.3(postcss@8.5.3) - - cssnano-utils@5.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - cssnano@7.0.6(postcss@8.5.3): - dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.3) - lilconfig: 3.1.3 - postcss: 8.5.3 - - csso@5.0.5: - dependencies: - css-tree: 2.2.1 - - dargs@8.1.0: {} - - debug@2.6.9: - dependencies: - ms: 2.0.0 - - debug@4.4.0: - dependencies: - ms: 2.1.3 - - decode-named-character-reference@1.0.2: - dependencies: - character-entities: 2.0.2 - - deep-is@0.1.4: {} - - depd@2.0.0: {} - - dependency-graph@0.11.0: {} - - dequal@2.0.3: {} - - destroy@1.2.0: {} - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.1.0: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dot-prop@5.3.0: - dependencies: - is-obj: 2.0.0 - - dot-properties@1.0.1: {} - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - ee-first@1.1.1: {} - - electron-to-chromium@1.5.83: {} - - emoji-regex@10.4.0: {} - - emoji-regex@8.0.0: {} - - encodeurl@1.0.2: {} - - encodeurl@2.0.0: {} - - entities@4.5.0: {} - - env-paths@2.2.1: {} - - environment@1.1.0: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-object-atoms@1.0.0: - dependencies: - es-errors: 1.3.0 - - esast-util-from-estree@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - unist-util-position-from-estree: 2.0.0 - - esast-util-from-js@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - acorn: 8.14.0 - esast-util-from-estree: 2.0.0 - vfile-message: 4.0.2 - - esbuild@0.25.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.0 - '@esbuild/android-arm': 0.25.0 - '@esbuild/android-arm64': 0.25.0 - '@esbuild/android-x64': 0.25.0 - '@esbuild/darwin-arm64': 0.25.0 - '@esbuild/darwin-x64': 0.25.0 - '@esbuild/freebsd-arm64': 0.25.0 - '@esbuild/freebsd-x64': 0.25.0 - '@esbuild/linux-arm': 0.25.0 - '@esbuild/linux-arm64': 0.25.0 - '@esbuild/linux-ia32': 0.25.0 - '@esbuild/linux-loong64': 0.25.0 - '@esbuild/linux-mips64el': 0.25.0 - '@esbuild/linux-ppc64': 0.25.0 - '@esbuild/linux-riscv64': 0.25.0 - '@esbuild/linux-s390x': 0.25.0 - '@esbuild/linux-x64': 0.25.0 - '@esbuild/netbsd-arm64': 0.25.0 - '@esbuild/netbsd-x64': 0.25.0 - '@esbuild/openbsd-arm64': 0.25.0 - '@esbuild/openbsd-x64': 0.25.0 - '@esbuild/sunos-x64': 0.25.0 - '@esbuild/win32-arm64': 0.25.0 - '@esbuild/win32-ia32': 0.25.0 - '@esbuild/win32-x64': 0.25.0 - - escalade@3.2.0: {} - - escape-html@1.0.3: {} - - escape-string-regexp@4.0.0: {} - - eslint-scope@8.2.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.0: {} - - eslint@9.21.0(jiti@2.4.2): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.2 - '@eslint/core': 0.12.0 - '@eslint/eslintrc': 3.3.0 - '@eslint/js': 9.21.0 - '@eslint/plugin-kit': 0.2.7 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.4.2 - transitivePeerDependencies: - - supports-color - - espree@10.3.0: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - estree-util-attach-comments@3.0.0: - dependencies: - '@types/estree': 1.0.6 - - estree-util-build-jsx@3.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-walker: 3.0.3 - - estree-util-is-identifier-name@3.0.0: {} - - estree-util-scope@1.0.0: - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - - estree-util-to-js@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - astring: 1.9.0 - source-map: 0.7.4 - - estree-util-visit@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.6 - - esutils@2.0.3: {} - - etag@1.8.1: {} - - event-target-shim@5.0.1: {} - - eventemitter3@5.0.1: {} - - events@3.3.0: {} - - execa@8.0.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - - express@4.21.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - extend@3.0.2: {} - - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fast-uri@3.0.6: {} - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - find-up@7.0.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - unicorn-magic: 0.1.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - - flatted@3.3.3: {} - - forwarded@0.2.0: {} - - fresh@0.5.2: {} - - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-caller-file@2.0.5: {} - - get-east-asian-width@1.3.0: {} - - get-intrinsic@1.2.6: - dependencies: - call-bind-apply-helpers: 1.0.1 - dunder-proto: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - function-bind: 1.1.2 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.0.0 - - get-stdin@9.0.0: {} - - get-stream@8.0.1: {} - - git-raw-commits@4.0.0: - dependencies: - dargs: 8.1.0 - meow: 12.1.1 - split2: 4.2.0 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - global-directory@4.0.1: - dependencies: - ini: 4.1.1 - - globals@14.0.0: {} - - globby@14.0.2: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 5.3.2 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - - google-protobuf@3.21.4: {} - - gopd@1.2.0: {} - - graceful-fs@4.2.11: {} - - has-flag@4.0.0: {} - - has-symbols@1.1.0: {} - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hast-util-to-estree@3.1.0: - dependencies: - '@types/estree': 1.0.6 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-attach-comments: 3.0.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 - unist-util-position: 5.0.0 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - - hast-util-to-jsx-runtime@2.3.2: - dependencies: - '@types/estree': 1.0.6 - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - style-to-object: 1.0.8 - unist-util-position: 5.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - human-signals@5.0.0: {} - - husky@9.1.7: {} - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - ieee754@1.2.1: {} - - ignore@5.3.2: {} - - immediate@3.0.6: {} - - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-meta-resolve@4.1.0: {} - - imurmurhash@0.1.4: {} - - inherits@2.0.4: {} - - ini@4.1.1: {} - - inline-style-parser@0.1.1: {} - - inline-style-parser@0.2.4: {} - - ipaddr.js@1.9.1: {} - - is-alphabetical@2.0.1: {} - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - - is-arrayish@0.2.1: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-decimal@2.0.1: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-fullwidth-code-point@4.0.0: {} - - is-fullwidth-code-point@5.0.0: - dependencies: - get-east-asian-width: 1.3.0 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-hexadecimal@2.0.1: {} - - is-number@7.0.0: {} - - is-obj@2.0.0: {} - - is-plain-obj@4.1.0: {} - - is-stream@3.0.0: {} - - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - - isarray@1.0.0: {} - - isexe@2.0.0: {} - - java-parser@2.3.3: - dependencies: - chevrotain: 11.0.3 - chevrotain-allstar: 0.3.1(chevrotain@11.0.3) - lodash: 4.17.21 - - jiti@2.4.2: {} - - js-tokens@4.0.0: {} - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonparse@1.3.1: {} - - jszip@3.10.1: - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lie@3.3.0: - dependencies: - immediate: 3.0.6 - - lilconfig@3.1.3: {} - - lines-and-columns@1.2.4: {} - - lint-staged@15.4.3: - dependencies: - chalk: 5.4.1 - commander: 13.1.0 - debug: 4.4.0 - execa: 8.0.1 - lilconfig: 3.1.3 - listr2: 8.2.5 - micromatch: 4.0.8 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.7.0 - transitivePeerDependencies: - - supports-color - - listr2@8.2.5: - dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 9.0.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - - lodash-es@4.17.21: {} - - lodash.camelcase@4.3.0: {} - - lodash.isplainobject@4.0.6: {} - - lodash.kebabcase@4.1.1: {} - - lodash.memoize@4.1.2: {} - - lodash.merge@4.6.2: {} - - lodash.mergewith@4.6.2: {} - - lodash.snakecase@4.1.1: {} - - lodash.startcase@4.4.0: {} - - lodash.uniq@4.5.0: {} - - lodash.upperfirst@4.3.1: {} - - lodash@4.17.21: {} - - log-update@6.1.0: - dependencies: - ansi-escapes: 7.0.0 - cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 - - longest-streak@3.1.0: {} - - lz-string@1.5.0: {} - - markdown-extensions@2.0.0: {} - - math-intrinsics@1.0.0: {} - - mdast-util-from-markdown@2.0.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-expression@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.1.3: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.2 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.1.3 - mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdxjs-esm@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 - - mdast-util-to-hast@13.2.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.1 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.1 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - - mdast-util-to-markdown@2.1.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-classify-character: 2.0.1 - micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - - mdn-data@2.0.28: {} - - mdn-data@2.0.30: {} - - media-typer@0.3.0: {} - - meow@12.1.1: {} - - merge-descriptors@1.0.3: {} - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - methods@1.1.2: {} - - micromark-core-commonmark@2.0.2: - dependencies: - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-factory-destination: 2.0.1 - micromark-factory-label: 2.0.1 - micromark-factory-space: 2.0.1 - micromark-factory-title: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-html-tag-name: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-subtokenize: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-mdx-expression@3.0.0: - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.2 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-extension-mdx-jsx@3.0.1: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.2 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - vfile-message: 4.0.2 - - micromark-extension-mdx-md@2.0.0: - dependencies: - micromark-util-types: 2.0.1 - - micromark-extension-mdxjs-esm@3.0.0: - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.2 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 - - micromark-extension-mdxjs@3.0.0: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.1 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-factory-destination@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-factory-label@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-factory-mdx-expression@2.0.2: - dependencies: - '@types/estree': 1.0.6 - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 - - micromark-factory-space@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-types: 2.0.1 - - micromark-factory-title@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-factory-whitespace@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-character@2.1.1: - dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-chunked@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-classify-character@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-combine-extensions@2.0.1: - dependencies: - micromark-util-chunked: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-decode-numeric-character-reference@2.0.2: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-decode-string@2.0.1: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.1.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-symbol: 2.0.1 - - micromark-util-encode@2.0.1: {} - - micromark-util-events-to-acorn@2.0.2: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 - '@types/unist': 3.0.3 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - vfile-message: 4.0.2 - - micromark-util-html-tag-name@2.0.1: {} - - micromark-util-normalize-identifier@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-resolve-all@2.0.1: - dependencies: - micromark-util-types: 2.0.1 - - micromark-util-sanitize-uri@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 - - micromark-util-subtokenize@2.0.3: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-symbol@2.0.1: {} - - micromark-util-types@2.0.1: {} - - micromark@4.0.1: - dependencies: - '@types/debug': 4.1.12 - debug: 4.4.0 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.2 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-combine-extensions: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-encode: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime@1.6.0: {} - - mimic-fn@4.0.0: {} - - mimic-function@5.0.1: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimist@1.2.8: {} - - mitata@1.0.34: {} - - ms@2.0.0: {} - - ms@2.1.3: {} - - mvdan-sh@0.10.1: {} - - nanoid@3.3.8: {} - - natural-compare@1.4.0: {} - - negotiator@0.6.3: {} - - node-releases@2.0.19: {} - - normalize-path@3.0.0: {} - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - object-inspect@1.13.3: {} - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - onetime@7.0.0: - dependencies: - mimic-function: 5.0.1 - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@4.0.0: - dependencies: - yocto-queue: 1.1.1 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - - pako@1.0.11: {} - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-entities@4.0.2: - dependencies: - '@types/unist': 2.0.11 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parseurl@1.3.3: {} - - path-exists@4.0.0: {} - - path-exists@5.0.0: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-to-regexp@0.1.12: {} - - path-type@5.0.0: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - pidtree@0.6.0: {} - - pify@2.3.0: {} - - postcss-calc@10.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - - postcss-cli@11.0.0(jiti@2.4.2)(postcss@8.5.3): - dependencies: - chokidar: 3.6.0 - dependency-graph: 0.11.0 - fs-extra: 11.2.0 - get-stdin: 9.0.0 - globby: 14.0.2 - picocolors: 1.1.1 - postcss: 8.5.3 - postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.5.3) - postcss-reporter: 7.1.0(postcss@8.5.3) - pretty-hrtime: 1.0.3 - read-cache: 1.0.0 - slash: 5.1.0 - yargs: 17.7.2 - transitivePeerDependencies: - - jiti - - tsx - - postcss-colormin@7.0.2(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-convert-values@7.0.4(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-discard-comments@7.0.3(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - postcss-discard-duplicates@7.0.1(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - postcss-discard-empty@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - postcss-discard-overridden@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.5.3): - dependencies: - lilconfig: 3.1.3 - yaml: 2.7.0 - optionalDependencies: - jiti: 2.4.2 - postcss: 8.5.3 - - postcss-merge-longhand@7.0.4(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.3) - - postcss-merge-rules@7.0.4(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - postcss-minify-font-values@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@7.0.0(postcss@8.5.3): - dependencies: - colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-minify-params@7.0.2(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@7.0.4(postcss@8.5.3): - dependencies: - cssesc: 3.0.0 - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - postcss-normalize-charset@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - postcss-normalize-display-values@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@7.0.2(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@7.0.1(postcss@8.5.3): - dependencies: - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-reduce-initial@7.0.2(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - postcss: 8.5.3 - - postcss-reduce-transforms@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-reporter@7.1.0(postcss@8.5.3): - dependencies: - picocolors: 1.1.1 - postcss: 8.5.3 - thenby: 1.3.4 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-svgo@7.0.1(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - - postcss-unique-selectors@7.0.3(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.5.3: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - preact@10.26.4: {} - - prelude-ls@1.2.1: {} - - prettier-plugin-java@2.6.7(prettier@3.5.3): - dependencies: - java-parser: 2.3.3 - lodash: 4.17.21 - prettier: 3.5.3 - - prettier-plugin-properties@0.3.0(prettier@3.5.3): - dependencies: - dot-properties: 1.0.1 - prettier: 3.5.3 - - prettier-plugin-sh@0.15.0(prettier@3.5.3): - dependencies: - mvdan-sh: 0.10.1 - prettier: 3.5.3 - sh-syntax: 0.4.2 - - prettier-plugin-toml@2.0.2(prettier@3.5.3): - dependencies: - '@taplo/lib': 0.4.0-alpha.2 - prettier: 3.5.3 - - prettier@3.5.3: {} - - pretty-hrtime@1.0.3: {} - - process-nextick-args@2.0.1: {} - - process@0.11.10: {} - - property-information@6.5.0: {} - - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - - punycode@2.3.1: {} - - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - - queue-microtask@1.2.3: {} - - range-parser@1.2.1: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - react-dom@19.0.0(react@19.0.0): - dependencies: - react: 19.0.0 - scheduler: 0.25.0 - - react@19.0.0: {} - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@4.5.2: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - recma-build-jsx@1.0.0: - dependencies: - '@types/estree': 1.0.6 - estree-util-build-jsx: 3.0.1 - vfile: 6.0.3 - - recma-jsx@1.0.0(acorn@8.14.0): - dependencies: - acorn-jsx: 5.3.2(acorn@8.14.0) - estree-util-to-js: 2.0.0 - recma-parse: 1.0.0 - recma-stringify: 1.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - acorn - - recma-parse@1.0.0: - dependencies: - '@types/estree': 1.0.6 - esast-util-from-js: 2.0.1 - unified: 11.0.5 - vfile: 6.0.3 - - recma-stringify@1.0.0: - dependencies: - '@types/estree': 1.0.6 - estree-util-to-js: 2.0.0 - unified: 11.0.5 - vfile: 6.0.3 - - regexp-to-ast@0.5.0: {} - - rehype-recma@1.0.0: - dependencies: - '@types/estree': 1.0.6 - '@types/hast': 3.0.4 - hast-util-to-estree: 3.1.0 - transitivePeerDependencies: - - supports-color - - remark-mdx@3.1.0: - dependencies: - mdast-util-mdx: 3.0.0 - micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color - - remark-parse@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 - micromark-util-types: 2.0.1 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-rehype@11.1.1: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 - unified: 11.0.5 - vfile: 6.0.3 - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - resolve-from@4.0.0: {} - - resolve-from@5.0.0: {} - - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - - reusify@1.0.4: {} - - rfdc@1.4.1: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safer-buffer@2.1.2: {} - - scheduler@0.25.0: {} - - semver@7.7.1: {} - - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - - setimmediate@1.0.5: {} - - setprototypeof@1.2.0: {} - - sh-syntax@0.4.2: - dependencies: - tslib: 2.8.1 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - side-channel-list@1.0.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.3 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.6 - object-inspect: 1.13.3 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.6 - object-inspect: 1.13.3 - side-channel-map: 1.0.1 - - side-channel@1.1.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.3 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - signal-exit@4.1.0: {} - - slash@5.1.0: {} - - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - slice-ansi@7.1.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 - - source-map-js@1.2.1: {} - - source-map@0.7.4: {} - - space-separated-tokens@2.0.2: {} - - split2@4.2.0: {} - - statuses@2.0.1: {} - - string-argv@0.3.2: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@7.2.0: - dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - strip-final-newline@3.0.0: {} - - strip-json-comments@3.1.1: {} - - style-to-object@0.4.4: - dependencies: - inline-style-parser: 0.1.1 - - style-to-object@1.0.8: - dependencies: - inline-style-parser: 0.2.4 - - stylehacks@7.0.4(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - svgo@3.3.2: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 - csso: 5.0.5 - picocolors: 1.1.1 - - text-extensions@2.4.0: {} - - thenby@1.3.4: {} - - through@2.3.8: {} - - tinyexec@0.3.2: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - toidentifier@1.0.1: {} - - trim-lines@3.0.1: {} - - trough@2.2.0: {} - - tslib@2.8.1: {} - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - - typescript@5.8.2: {} - - undici-types@6.20.0: {} - - unicorn-magic@0.1.0: {} - - unified@11.0.5: - dependencies: - '@types/unist': 3.0.3 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.3 - - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position-from-estree@2.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - universalify@2.0.1: {} - - unpipe@1.0.0: {} - - update-browserslist-db@1.1.2(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - util-deprecate@1.0.2: {} - - utils-merge@1.0.1: {} - - vary@1.1.2: {} - - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile@6.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.2 - - web-streams-polyfill@3.3.3: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - word-wrap@1.2.5: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@9.0.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 7.2.0 - strip-ansi: 7.1.0 - - y18n@5.0.8: {} - - yaml@2.7.0: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yocto-queue@0.1.0: {} - - yocto-queue@1.1.1: {} - - zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml deleted file mode 100644 index 0a6dbf93e1..0000000000 --- a/pnpm-workspace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -onlyBuiltDependencies: - - "@biomejs/biome" - - esbuild - - hakuna diff --git a/project/docs/index.html b/project/docs/index.html index 4f0309284f..4f68e90673 100644 --- a/project/docs/index.html +++ b/project/docs/index.html @@ -1,7 +1,7 @@ - + - - - - + + + + diff --git a/project/docs/kotlin/html/index.html b/project/docs/kotlin/html/index.html deleted file mode 100644 index fe810d6e4d..0000000000 --- a/project/docs/kotlin/html/index.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/project/docs/styles/logo-styles.css b/project/docs/styles/logo-styles.css index 3479511210..577f61604a 100644 --- a/project/docs/styles/logo-styles.css +++ b/project/docs/styles/logo-styles.css @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Elide Technologies, Inc. + * Copyright (c) 2024-2025 Elide Technologies, Inc. * * Licensed under the MIT license (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -14,7 +14,7 @@ @import "/apidocs/styles/theme-styles.css"; :root { - --dokka-logo-image-url: url('../creative/logo/gray-elide-symbol-lg.png'); - --dokka-logo-height: 48px; - --dokka-logo-width: 50px; + --dokka-logo-image-url: url('/apidocs/images/gray-elide-symbol-lg.png'); + --dokka-logo-height: 32px; + --dokka-logo-width: 32px; } diff --git a/project/docs/styles.css b/project/docs/templates-v2/.gitkeep similarity index 100% rename from project/docs/styles.css rename to project/docs/templates-v2/.gitkeep diff --git a/project/infra/README.md b/project/infra/README.md new file mode 100644 index 0000000000..54bb4561c5 --- /dev/null +++ b/project/infra/README.md @@ -0,0 +1,4 @@ +## Project Infra + +Defines (mostly) Cloudflare Workers-based infrastructure which supports Elide. Each subdirectory is +a standalone Bun project targeting Workers. diff --git a/project/infra/install/bun.lock b/project/infra/install/bun.lock new file mode 100644 index 0000000000..4e2231a2e1 --- /dev/null +++ b/project/infra/install/bun.lock @@ -0,0 +1,248 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "@elide/workers-install", + "devDependencies": { + "@cloudflare/workers-types": "4.20250313.0", + "bun": "1.2.5", + "bun-types": "1.2.5", + "typescript": "5.8.2", + "wrangler": "latest", + }, + }, + }, + "packages": { + "@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.4.0", "", { "dependencies": { "mime": "^3.0.0" } }, "sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA=="], + + "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.0.2", "", { "peerDependencies": { "unenv": "2.0.0-rc.14", "workerd": "^1.20250124.0" }, "optionalPeers": ["workerd"] }, "sha512-nyzYnlZjjV5xT3LizahG1Iu6mnrCaxglJ04rZLpDwlDVDZ7v46lNsfxhV3A/xtfgQuSHmLnc6SVI+KwBpc3Lwg=="], + + "@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20250310.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-LkLJO6F8lRNaCbK5sQCITi66SyCirDpffRuI5/5iILDJWQU4KVvAOKPvHrd4E5h/WDm9FGd22zMJwky7SxaNjg=="], + + "@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20250310.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-WythDJQbsU3Ii1hhA7pJZLBQlHezeYWAnaMnv3gS2Exj45oF8G4chFvrO7zCzjlcJXwSeBTtQRJqxw9AiUDhyA=="], + + "@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20250310.0", "", { "os": "linux", "cpu": "x64" }, "sha512-LbP769tT4/5QBHSj4lCt99QIKTi6cU+wYhLfF7rEtYHBnZS2+nIw9xttAzxeERx/aFrU+mxLcYPFV8fUeVxGng=="], + + "@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20250310.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-FzWeKM6id20EMZACaDg0Kkvg1C4lvXZgLBXVI6h6xaXTNFReoyEp4v4eMrRTuja5ec5k+m5iGKjP4/bMWJp9ew=="], + + "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20250310.0", "", { "os": "win32", "cpu": "x64" }, "sha512-04OgaDzm8/8nkjF3tovB+WywZLjSdAHCQT2omXKCwH3EDd1kpd8vvzE1pErtdIyKCOf9/sArY4BhPdxRj7ijlg=="], + + "@cloudflare/workers-types": ["@cloudflare/workers-types@4.20250313.0", "", {}, "sha512-iqyzZwogC+3yL8h58vMhjYQUHUZA8XazE3Q+ofR59wDOnsPe/u9W6+aCl408N0iNBhMPvpJQQ3/lkz0iJN2fhA=="], + + "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.3.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.24.2", "", { "os": "android", "cpu": "x64" }, "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.24.2", "", { "os": "none", "cpu": "arm64" }, "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.2", "", { "os": "none", "cpu": "x64" }, "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.24.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.2", "", { "os": "win32", "cpu": "x64" }, "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg=="], + + "@fastify/busboy": ["@fastify/busboy@2.1.1", "", {}, "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="], + + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="], + + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="], + + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="], + + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="], + + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="], + + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="], + + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="], + + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="], + + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="], + + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="], + + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="], + + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="], + + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="], + + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="], + + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="], + + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="], + + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="], + + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="], + + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], + + "@oven/bun-darwin-aarch64": ["@oven/bun-darwin-aarch64@1.2.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ggZfdpgUJ/OiWrfcfTgHeSTHcec5HAjkGrZHL9FJ/R60sydRKPYHgAgexdIoJAGfsCVAL+x7y8NSTRIAX8J4Ng=="], + + "@oven/bun-darwin-x64": ["@oven/bun-darwin-x64@1.2.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-4zqyQLJB33s99KcTxH6yQqH5EYBmF1qofQTtLsToIFbIZN1NqSp/aegYiGmxO5Kj/BuWsy8Wf8MS6vX2O0o2Lw=="], + + "@oven/bun-darwin-x64-baseline": ["@oven/bun-darwin-x64-baseline@1.2.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-3W1RO3/D6Z1S79J47F/DLzmK+dgkYq5hS1ShOCSBAYTTA2b1ZuymaN8avGzSb9ed5W0QfxtyeAksfEY2xUBOqA=="], + + "@oven/bun-linux-aarch64": ["@oven/bun-linux-aarch64@1.2.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-NQFtAVyQyJhLYrhFVxKdh6cqrDNc60pBnBGLQSO8PU+oyFyiJ3e3gGXjLzMbxd6cJxNIK5FZ0JIq96WljKAhlg=="], + + "@oven/bun-linux-aarch64-musl": ["@oven/bun-linux-aarch64-musl@1.2.5", "", { "os": "linux", "cpu": "none" }, "sha512-URlISBOE2HQi8qdru691OYywJRwChxMfXFbk26tCgdZ01LgGAKsIjAYylefuSsPuA697imDN3Pel3D7rveusmw=="], + + "@oven/bun-linux-x64": ["@oven/bun-linux-x64@1.2.5", "", { "os": "linux", "cpu": "x64" }, "sha512-pa3kQ4cXNV0jk5aM8+Hdmxr+b4QoPVgeAIA454SN5l3hMGfNsHjczKpsz0ksInZ8506iMMTCPEBXpyQJcSme+Q=="], + + "@oven/bun-linux-x64-baseline": ["@oven/bun-linux-x64-baseline@1.2.5", "", { "os": "linux", "cpu": "x64" }, "sha512-fCm/qp7e3VYlaoRs6NIEsKubPqyxjzLv8/qZkxeLLOlPd7CS8L26UY4KPOSjA+wrhPT+Nxsyvl/EEJq2R/iauA=="], + + "@oven/bun-linux-x64-musl": ["@oven/bun-linux-x64-musl@1.2.5", "", { "os": "linux", "cpu": "x64" }, "sha512-DuU2kQnY48g9tNWjFrZqyG+U2emCBwlhOPxbuY/TMVVNSTMAcQbE/bb3s2pZdhZH5ssjc5SH/ZyWU1TePcYB2A=="], + + "@oven/bun-linux-x64-musl-baseline": ["@oven/bun-linux-x64-musl-baseline@1.2.5", "", { "os": "linux", "cpu": "x64" }, "sha512-H7tuJz7mZvOTPo4yLbIXIxkiDGWSGd2DbwGl4zNol/FURqGsKQVqpomv86yl9KCXsUUOm5FX2i5Ed+ro8N//Cg=="], + + "@oven/bun-windows-x64": ["@oven/bun-windows-x64@1.2.5", "", { "os": "win32", "cpu": "x64" }, "sha512-oNDdPmzsCyvCATiYgkKWgxOeEx2F7m/i2MGUba+YJAeVXJsJg9iPJrLVBtETvKoSAgkXViwoUEw2U25jRYsp4g=="], + + "@oven/bun-windows-x64-baseline": ["@oven/bun-windows-x64-baseline@1.2.5", "", { "os": "win32", "cpu": "x64" }, "sha512-j5FxI8FeKfWI6rEXA+1O3ASBMTp5CFcZ7MR+/aCpiBKrDse32wLaZMVGnvqQqs4y0YHUvR8b7eXHHTboezjL1w=="], + + "@types/node": ["@types/node@22.13.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw=="], + + "@types/ws": ["@types/ws@8.5.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw=="], + + "acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], + + "acorn-walk": ["acorn-walk@8.3.2", "", {}, "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A=="], + + "as-table": ["as-table@1.0.55", "", { "dependencies": { "printable-characters": "^1.0.42" } }, "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ=="], + + "blake3-wasm": ["blake3-wasm@2.1.5", "", {}, "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g=="], + + "bun": ["bun@1.2.5", "", { "optionalDependencies": { "@oven/bun-darwin-aarch64": "1.2.5", "@oven/bun-darwin-x64": "1.2.5", "@oven/bun-darwin-x64-baseline": "1.2.5", "@oven/bun-linux-aarch64": "1.2.5", "@oven/bun-linux-aarch64-musl": "1.2.5", "@oven/bun-linux-x64": "1.2.5", "@oven/bun-linux-x64-baseline": "1.2.5", "@oven/bun-linux-x64-musl": "1.2.5", "@oven/bun-linux-x64-musl-baseline": "1.2.5", "@oven/bun-windows-x64": "1.2.5", "@oven/bun-windows-x64-baseline": "1.2.5" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ], "bin": { "bun": "bin/bun.exe", "bunx": "bin/bun.exe" } }, "sha512-fbQLt+DPiGUrPKdmsHRRT7cQAlfjdxPVFvLZrsUPmKiTdv+pU50ypdx9yRJluknSbyaZchFVV7Lx2KXikXKX2Q=="], + + "bun-types": ["bun-types@1.2.5", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-3oO6LVGGRRKI4kHINx5PIdIgnLRb7l/SprhzqXapmoYkFl5m4j6EvALvbDVuuBFaamB46Ap6HCUxIXNLCGy+tg=="], + + "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="], + + "cookie": ["cookie@0.5.0", "", {}, "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="], + + "data-uri-to-buffer": ["data-uri-to-buffer@2.0.2", "", {}, "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA=="], + + "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="], + + "detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="], + + "esbuild": ["esbuild@0.24.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.2", "@esbuild/android-arm": "0.24.2", "@esbuild/android-arm64": "0.24.2", "@esbuild/android-x64": "0.24.2", "@esbuild/darwin-arm64": "0.24.2", "@esbuild/darwin-x64": "0.24.2", "@esbuild/freebsd-arm64": "0.24.2", "@esbuild/freebsd-x64": "0.24.2", "@esbuild/linux-arm": "0.24.2", "@esbuild/linux-arm64": "0.24.2", "@esbuild/linux-ia32": "0.24.2", "@esbuild/linux-loong64": "0.24.2", "@esbuild/linux-mips64el": "0.24.2", "@esbuild/linux-ppc64": "0.24.2", "@esbuild/linux-riscv64": "0.24.2", "@esbuild/linux-s390x": "0.24.2", "@esbuild/linux-x64": "0.24.2", "@esbuild/netbsd-arm64": "0.24.2", "@esbuild/netbsd-x64": "0.24.2", "@esbuild/openbsd-arm64": "0.24.2", "@esbuild/openbsd-x64": "0.24.2", "@esbuild/sunos-x64": "0.24.2", "@esbuild/win32-arm64": "0.24.2", "@esbuild/win32-ia32": "0.24.2", "@esbuild/win32-x64": "0.24.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA=="], + + "exit-hook": ["exit-hook@2.2.1", "", {}, "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw=="], + + "exsolve": ["exsolve@1.0.4", "", {}, "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "get-source": ["get-source@2.0.12", "", { "dependencies": { "data-uri-to-buffer": "^2.0.0", "source-map": "^0.6.1" } }, "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w=="], + + "glob-to-regexp": ["glob-to-regexp@0.4.1", "", {}, "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="], + + "is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="], + + "mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], + + "miniflare": ["miniflare@4.20250310.0", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "stoppable": "1.1.0", "undici": "^5.28.5", "workerd": "1.20250310.0", "ws": "8.18.0", "youch": "3.2.3", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-WL4hKQIfXyTxKyQzxJyyy/v+OYSiF51s3Qe1Q4W4MjHJbtiN8Kg7+oeTdHYgqYehanN2zYoSKJ/xooIy8q5+XA=="], + + "mustache": ["mustache@4.2.0", "", { "bin": { "mustache": "bin/mustache" } }, "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="], + + "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], + + "path-to-regexp": ["path-to-regexp@6.3.0", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="], + + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "printable-characters": ["printable-characters@1.0.42", "", {}, "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ=="], + + "semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], + + "sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="], + + "simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="], + + "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "stacktracey": ["stacktracey@2.1.8", "", { "dependencies": { "as-table": "^1.0.36", "get-source": "^2.0.12" } }, "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw=="], + + "stoppable": ["stoppable@1.1.0", "", {}, "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "typescript": ["typescript@5.8.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ=="], + + "ufo": ["ufo@1.5.4", "", {}, "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="], + + "undici": ["undici@5.28.5", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA=="], + + "undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], + + "unenv": ["unenv@2.0.0-rc.14", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.1", "ohash": "^2.0.10", "pathe": "^2.0.3", "ufo": "^1.5.4" } }, "sha512-od496pShMen7nOy5VmVJCnq8rptd45vh6Nx/r2iPbrba6pa6p+tS2ywuIHRZ/OBvSbQZB0kWvpO9XBNVFXHD3Q=="], + + "workerd": ["workerd@1.20250310.0", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20250310.0", "@cloudflare/workerd-darwin-arm64": "1.20250310.0", "@cloudflare/workerd-linux-64": "1.20250310.0", "@cloudflare/workerd-linux-arm64": "1.20250310.0", "@cloudflare/workerd-windows-64": "1.20250310.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-bAaZ9Bmts3mArbIrXYAtr+ZRsAJAAUEsCtvwfBavIYXaZ5sgdEOJBEiBbvsHp6CsVObegOM85tIWpYLpbTxQrQ=="], + + "wrangler": ["wrangler@4.0.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.0.2", "blake3-wasm": "2.1.5", "esbuild": "0.24.2", "miniflare": "4.20250310.0", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.14", "workerd": "1.20250310.0" }, "optionalDependencies": { "fsevents": "~2.3.2", "sharp": "^0.33.5" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20250310.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-9QqqoznS5sfLNqPKPkeEkwPAIe4lPfWLzPxVATmAbMQl4sh3/8iKEYSjZXQxdtcTgiS8iGOUbHq/rdiOFU8H1w=="], + + "ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], + + "youch": ["youch@3.2.3", "", { "dependencies": { "cookie": "^0.5.0", "mustache": "^4.2.0", "stacktracey": "^2.1.8" } }, "sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw=="], + + "zod": ["zod@3.22.3", "", {}, "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug=="], + } +} diff --git a/requirements.txt b/project/infra/install/bunfig.toml similarity index 100% rename from requirements.txt rename to project/infra/install/bunfig.toml diff --git a/project/infra/install/package.json b/project/infra/install/package.json new file mode 100644 index 0000000000..ef4173b5df --- /dev/null +++ b/project/infra/install/package.json @@ -0,0 +1,17 @@ +{ + "name": "@elide/workers-install", + "version": "1.0.0", + "private": true, + "scripts": { + "postinstall": "bun run wrangler types ./worker-apis.d.ts", + "build": "bun run wrangler deploy --dry-run", + "deploy": "bun run wrangler deploy" + }, + "devDependencies": { + "@cloudflare/workers-types": "4.20250313.0", + "bun": "1.2.5", + "bun-types": "1.2.5", + "typescript": "5.8.2", + "wrangler": "latest" + } +} diff --git a/project/infra/install/worker-apis.d.ts b/project/infra/install/worker-apis.d.ts new file mode 100644 index 0000000000..c4c4ab3e9e --- /dev/null +++ b/project/infra/install/worker-apis.d.ts @@ -0,0 +1,6284 @@ +// Generated by Wrangler by running `wrangler types ./worker-apis.d.ts` (hash: 854e4fb8eb41a6ea7648fe02d2f70a11) +// Runtime types generated with workerd@1.20250310.0 2025-03-14 +interface Env { + STORAGE: R2Bucket + ANALYTICS: AnalyticsEngineDataset +} + +// Begin runtime types +/*! ***************************************************************************** +Copyright (c) Cloudflare. All rights reserved. +Copyright (c) Microsoft Corporation. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +/* eslint-disable */ +// noinspection JSUnusedGlobalSymbols +declare var onmessage: never +/** + * An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException) + */ +declare class DOMException extends Error { + constructor(message?: string, name?: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/message) */ + readonly message: string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/name) */ + readonly name: string + /** + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/code) + */ + readonly code: number + static readonly INDEX_SIZE_ERR: number + static readonly DOMSTRING_SIZE_ERR: number + static readonly HIERARCHY_REQUEST_ERR: number + static readonly WRONG_DOCUMENT_ERR: number + static readonly INVALID_CHARACTER_ERR: number + static readonly NO_DATA_ALLOWED_ERR: number + static readonly NO_MODIFICATION_ALLOWED_ERR: number + static readonly NOT_FOUND_ERR: number + static readonly NOT_SUPPORTED_ERR: number + static readonly INUSE_ATTRIBUTE_ERR: number + static readonly INVALID_STATE_ERR: number + static readonly SYNTAX_ERR: number + static readonly INVALID_MODIFICATION_ERR: number + static readonly NAMESPACE_ERR: number + static readonly INVALID_ACCESS_ERR: number + static readonly VALIDATION_ERR: number + static readonly TYPE_MISMATCH_ERR: number + static readonly SECURITY_ERR: number + static readonly NETWORK_ERR: number + static readonly ABORT_ERR: number + static readonly URL_MISMATCH_ERR: number + static readonly QUOTA_EXCEEDED_ERR: number + static readonly TIMEOUT_ERR: number + static readonly INVALID_NODE_TYPE_ERR: number + static readonly DATA_CLONE_ERR: number + get stack(): any + set stack(value: any) +} +type WorkerGlobalScopeEventMap = { + fetch: FetchEvent + scheduled: ScheduledEvent + queue: QueueEvent + unhandledrejection: PromiseRejectionEvent + rejectionhandled: PromiseRejectionEvent +} +declare abstract class WorkerGlobalScope extends EventTarget { + EventTarget: typeof EventTarget +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console) */ +interface Console { + assert(condition?: boolean, ...data: any[]): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/clear_static) */ + clear(): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/count_static) */ + count(label?: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/countreset_static) */ + countReset(label?: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/debug_static) */ + debug(...data: any[]): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/dir_static) */ + dir(item?: any, options?: any): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/dirxml_static) */ + dirxml(...data: any[]): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/error_static) */ + error(...data: any[]): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/group_static) */ + group(...data: any[]): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/groupcollapsed_static) */ + groupCollapsed(...data: any[]): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/groupend_static) */ + groupEnd(): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/info_static) */ + info(...data: any[]): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/log_static) */ + log(...data: any[]): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/table_static) */ + table(tabularData?: any, properties?: string[]): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/time_static) */ + time(label?: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/timeend_static) */ + timeEnd(label?: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/timelog_static) */ + timeLog(label?: string, ...data: any[]): void + timeStamp(label?: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/trace_static) */ + trace(...data: any[]): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/console/warn_static) */ + warn(...data: any[]): void +} +declare const console: Console +type BufferSource = ArrayBufferView | ArrayBuffer +type TypedArray = + | Int8Array + | Uint8Array + | Uint8ClampedArray + | Int16Array + | Uint16Array + | Int32Array + | Uint32Array + | Float32Array + | Float64Array + | BigInt64Array + | BigUint64Array +declare namespace WebAssembly { + class CompileError extends Error { + constructor(message?: string) + } + class RuntimeError extends Error { + constructor(message?: string) + } + type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128" + interface GlobalDescriptor { + value: ValueType + mutable?: boolean + } + class Global { + constructor(descriptor: GlobalDescriptor, value?: any) + value: any + valueOf(): any + } + type ImportValue = ExportValue | number + type ModuleImports = Record + type Imports = Record + type ExportValue = Function | Global | Memory | Table + type Exports = Record + class Instance { + constructor(module: Module, imports?: Imports) + readonly exports: Exports + } + interface MemoryDescriptor { + initial: number + maximum?: number + shared?: boolean + } + class Memory { + constructor(descriptor: MemoryDescriptor) + readonly buffer: ArrayBuffer + grow(delta: number): number + } + type ImportExportKind = "function" | "global" | "memory" | "table" + interface ModuleExportDescriptor { + kind: ImportExportKind + name: string + } + interface ModuleImportDescriptor { + kind: ImportExportKind + module: string + name: string + } + abstract class Module { + static customSections(module: Module, sectionName: string): ArrayBuffer[] + static exports(module: Module): ModuleExportDescriptor[] + static imports(module: Module): ModuleImportDescriptor[] + } + type TableKind = "anyfunc" | "externref" + interface TableDescriptor { + element: TableKind + initial: number + maximum?: number + } + class Table { + constructor(descriptor: TableDescriptor, value?: any) + readonly length: number + get(index: number): any + grow(delta: number, value?: any): number + set(index: number, value?: any): void + } + function instantiate(module: Module, imports?: Imports): Promise + function validate(bytes: BufferSource): boolean +} +/** + * This ServiceWorker API interface represents the global execution context of a service worker. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope) + */ +interface ServiceWorkerGlobalScope extends WorkerGlobalScope { + DOMException: typeof DOMException + WorkerGlobalScope: typeof WorkerGlobalScope + btoa(data: string): string + atob(data: string): string + setTimeout(callback: (...args: any[]) => void, msDelay?: number): number + setTimeout(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number + clearTimeout(timeoutId: number | null): void + setInterval(callback: (...args: any[]) => void, msDelay?: number): number + setInterval(callback: (...args: Args) => void, msDelay?: number, ...args: Args): number + clearInterval(timeoutId: number | null): void + queueMicrotask(task: Function): void + structuredClone(value: T, options?: StructuredSerializeOptions): T + reportError(error: any): void + fetch(input: RequestInfo | URL, init?: RequestInit): Promise + self: ServiceWorkerGlobalScope + crypto: Crypto + caches: CacheStorage + scheduler: Scheduler + performance: Performance + Cloudflare: Cloudflare + readonly origin: string + Event: typeof Event + ExtendableEvent: typeof ExtendableEvent + CustomEvent: typeof CustomEvent + PromiseRejectionEvent: typeof PromiseRejectionEvent + FetchEvent: typeof FetchEvent + TailEvent: typeof TailEvent + TraceEvent: typeof TailEvent + ScheduledEvent: typeof ScheduledEvent + MessageEvent: typeof MessageEvent + CloseEvent: typeof CloseEvent + ReadableStreamDefaultReader: typeof ReadableStreamDefaultReader + ReadableStreamBYOBReader: typeof ReadableStreamBYOBReader + ReadableStream: typeof ReadableStream + WritableStream: typeof WritableStream + WritableStreamDefaultWriter: typeof WritableStreamDefaultWriter + TransformStream: typeof TransformStream + ByteLengthQueuingStrategy: typeof ByteLengthQueuingStrategy + CountQueuingStrategy: typeof CountQueuingStrategy + ErrorEvent: typeof ErrorEvent + EventSource: typeof EventSource + ReadableStreamBYOBRequest: typeof ReadableStreamBYOBRequest + ReadableStreamDefaultController: typeof ReadableStreamDefaultController + ReadableByteStreamController: typeof ReadableByteStreamController + WritableStreamDefaultController: typeof WritableStreamDefaultController + TransformStreamDefaultController: typeof TransformStreamDefaultController + CompressionStream: typeof CompressionStream + DecompressionStream: typeof DecompressionStream + TextEncoderStream: typeof TextEncoderStream + TextDecoderStream: typeof TextDecoderStream + Headers: typeof Headers + Body: typeof Body + Request: typeof Request + Response: typeof Response + WebSocket: typeof WebSocket + WebSocketPair: typeof WebSocketPair + WebSocketRequestResponsePair: typeof WebSocketRequestResponsePair + AbortController: typeof AbortController + AbortSignal: typeof AbortSignal + TextDecoder: typeof TextDecoder + TextEncoder: typeof TextEncoder + navigator: Navigator + Navigator: typeof Navigator + URL: typeof URL + URLSearchParams: typeof URLSearchParams + URLPattern: typeof URLPattern + Blob: typeof Blob + File: typeof File + FormData: typeof FormData + Crypto: typeof Crypto + SubtleCrypto: typeof SubtleCrypto + CryptoKey: typeof CryptoKey + CacheStorage: typeof CacheStorage + Cache: typeof Cache + FixedLengthStream: typeof FixedLengthStream + IdentityTransformStream: typeof IdentityTransformStream + HTMLRewriter: typeof HTMLRewriter + GPUAdapter: typeof GPUAdapter + GPUOutOfMemoryError: typeof GPUOutOfMemoryError + GPUValidationError: typeof GPUValidationError + GPUInternalError: typeof GPUInternalError + GPUDeviceLostInfo: typeof GPUDeviceLostInfo + GPUBufferUsage: typeof GPUBufferUsage + GPUShaderStage: typeof GPUShaderStage + GPUMapMode: typeof GPUMapMode + GPUTextureUsage: typeof GPUTextureUsage + GPUColorWrite: typeof GPUColorWrite +} +declare function addEventListener( + type: Type, + handler: EventListenerOrEventListenerObject, + options?: EventTargetAddEventListenerOptions | boolean, +): void +declare function removeEventListener( + type: Type, + handler: EventListenerOrEventListenerObject, + options?: EventTargetEventListenerOptions | boolean, +): void +/** + * Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent) + */ +declare function dispatchEvent(event: WorkerGlobalScopeEventMap[keyof WorkerGlobalScopeEventMap]): boolean +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/btoa) */ +declare function btoa(data: string): string +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/atob) */ +declare function atob(data: string): string +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/setTimeout) */ +declare function setTimeout(callback: (...args: any[]) => void, msDelay?: number): number +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/setTimeout) */ +declare function setTimeout( + callback: (...args: Args) => void, + msDelay?: number, + ...args: Args +): number +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/clearTimeout) */ +declare function clearTimeout(timeoutId: number | null): void +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/setInterval) */ +declare function setInterval(callback: (...args: any[]) => void, msDelay?: number): number +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/setInterval) */ +declare function setInterval( + callback: (...args: Args) => void, + msDelay?: number, + ...args: Args +): number +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/clearInterval) */ +declare function clearInterval(timeoutId: number | null): void +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/queueMicrotask) */ +declare function queueMicrotask(task: Function): void +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/structuredClone) */ +declare function structuredClone(value: T, options?: StructuredSerializeOptions): T +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/reportError) */ +declare function reportError(error: any): void +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/fetch) */ +declare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise +declare const self: ServiceWorkerGlobalScope +/** + * The Web Crypto API provides a set of low-level functions for common cryptographic tasks. + * The Workers runtime implements the full surface of this API, but with some differences in + * the [supported algorithms](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/#supported-algorithms) + * compared to those implemented in most browsers. + * + * [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/) + */ +declare const crypto: Crypto +/** + * The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. + * + * [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) + */ +declare const caches: CacheStorage +declare const scheduler: Scheduler +/** + * The Workers runtime supports a subset of the Performance API, used to measure timing and performance, + * as well as timing of subrequests and other operations. + * + * [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/) + */ +declare const performance: Performance +declare const Cloudflare: Cloudflare +declare const origin: string +declare const navigator: Navigator +interface TestController {} +interface ExecutionContext { + waitUntil(promise: Promise): void + passThroughOnException(): void + props: any +} +type ExportedHandlerFetchHandler = ( + request: Request>, + env: Env, + ctx: ExecutionContext, +) => Response | Promise +type ExportedHandlerTailHandler = ( + events: TraceItem[], + env: Env, + ctx: ExecutionContext, +) => void | Promise +type ExportedHandlerTraceHandler = ( + traces: TraceItem[], + env: Env, + ctx: ExecutionContext, +) => void | Promise +type ExportedHandlerTailStreamHandler = ( + event: TailStream.TailEvent, + env: Env, + ctx: ExecutionContext, +) => TailStream.TailEventHandlerType | Promise +type ExportedHandlerScheduledHandler = ( + controller: ScheduledController, + env: Env, + ctx: ExecutionContext, +) => void | Promise +type ExportedHandlerQueueHandler = ( + batch: MessageBatch, + env: Env, + ctx: ExecutionContext, +) => void | Promise +type ExportedHandlerTestHandler = ( + controller: TestController, + env: Env, + ctx: ExecutionContext, +) => void | Promise +interface ExportedHandler { + fetch?: ExportedHandlerFetchHandler + tail?: ExportedHandlerTailHandler + trace?: ExportedHandlerTraceHandler + tailStream?: ExportedHandlerTailStreamHandler + scheduled?: ExportedHandlerScheduledHandler + test?: ExportedHandlerTestHandler + email?: EmailExportedHandler + queue?: ExportedHandlerQueueHandler +} +interface StructuredSerializeOptions { + transfer?: any[] +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent) */ +declare abstract class PromiseRejectionEvent extends Event { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/promise) */ + readonly promise: Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/reason) */ + readonly reason: any +} +declare abstract class Navigator { + sendBeacon( + url: string, + body?: + | ReadableStream + | string + | (ArrayBuffer | ArrayBufferView) + | Blob + | FormData + | URLSearchParams + | URLSearchParams, + ): boolean + readonly userAgent: string + readonly gpu?: GPU +} +/** + * The Workers runtime supports a subset of the Performance API, used to measure timing and performance, + * as well as timing of subrequests and other operations. + * + * [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/) + */ +interface Performance { + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/#performancetimeorigin) */ + readonly timeOrigin: number + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/#performancenow) */ + now(): number +} +interface AlarmInvocationInfo { + readonly isRetry: boolean + readonly retryCount: number +} +interface Cloudflare { + readonly compatibilityFlags: Record +} +interface DurableObject { + fetch(request: Request): Response | Promise + alarm?(alarmInfo?: AlarmInvocationInfo): void | Promise + webSocketMessage?(ws: WebSocket, message: string | ArrayBuffer): void | Promise + webSocketClose?(ws: WebSocket, code: number, reason: string, wasClean: boolean): void | Promise + webSocketError?(ws: WebSocket, error: unknown): void | Promise +} +type DurableObjectStub = Fetcher< + T, + "alarm" | "webSocketMessage" | "webSocketClose" | "webSocketError" +> & { + readonly id: DurableObjectId + readonly name?: string +} +interface DurableObjectId { + toString(): string + equals(other: DurableObjectId): boolean + readonly name?: string +} +interface DurableObjectNamespace { + newUniqueId(options?: DurableObjectNamespaceNewUniqueIdOptions): DurableObjectId + idFromName(name: string): DurableObjectId + idFromString(id: string): DurableObjectId + get(id: DurableObjectId, options?: DurableObjectNamespaceGetDurableObjectOptions): DurableObjectStub + jurisdiction(jurisdiction: DurableObjectJurisdiction): DurableObjectNamespace +} +type DurableObjectJurisdiction = "eu" | "fedramp" +interface DurableObjectNamespaceNewUniqueIdOptions { + jurisdiction?: DurableObjectJurisdiction +} +type DurableObjectLocationHint = "wnam" | "enam" | "sam" | "weur" | "eeur" | "apac" | "oc" | "afr" | "me" +interface DurableObjectNamespaceGetDurableObjectOptions { + locationHint?: DurableObjectLocationHint +} +interface DurableObjectState { + waitUntil(promise: Promise): void + readonly id: DurableObjectId + readonly storage: DurableObjectStorage + container?: Container + blockConcurrencyWhile(callback: () => Promise): Promise + acceptWebSocket(ws: WebSocket, tags?: string[]): void + getWebSockets(tag?: string): WebSocket[] + setWebSocketAutoResponse(maybeReqResp?: WebSocketRequestResponsePair): void + getWebSocketAutoResponse(): WebSocketRequestResponsePair | null + getWebSocketAutoResponseTimestamp(ws: WebSocket): Date | null + setHibernatableWebSocketEventTimeout(timeoutMs?: number): void + getHibernatableWebSocketEventTimeout(): number | null + getTags(ws: WebSocket): string[] + abort(reason?: string): void +} +interface DurableObjectTransaction { + get(key: string, options?: DurableObjectGetOptions): Promise + get(keys: string[], options?: DurableObjectGetOptions): Promise> + list(options?: DurableObjectListOptions): Promise> + put(key: string, value: T, options?: DurableObjectPutOptions): Promise + put(entries: Record, options?: DurableObjectPutOptions): Promise + delete(key: string, options?: DurableObjectPutOptions): Promise + delete(keys: string[], options?: DurableObjectPutOptions): Promise + rollback(): void + getAlarm(options?: DurableObjectGetAlarmOptions): Promise + setAlarm(scheduledTime: number | Date, options?: DurableObjectSetAlarmOptions): Promise + deleteAlarm(options?: DurableObjectSetAlarmOptions): Promise +} +interface DurableObjectStorage { + get(key: string, options?: DurableObjectGetOptions): Promise + get(keys: string[], options?: DurableObjectGetOptions): Promise> + list(options?: DurableObjectListOptions): Promise> + put(key: string, value: T, options?: DurableObjectPutOptions): Promise + put(entries: Record, options?: DurableObjectPutOptions): Promise + delete(key: string, options?: DurableObjectPutOptions): Promise + delete(keys: string[], options?: DurableObjectPutOptions): Promise + deleteAll(options?: DurableObjectPutOptions): Promise + transaction(closure: (txn: DurableObjectTransaction) => Promise): Promise + getAlarm(options?: DurableObjectGetAlarmOptions): Promise + setAlarm(scheduledTime: number | Date, options?: DurableObjectSetAlarmOptions): Promise + deleteAlarm(options?: DurableObjectSetAlarmOptions): Promise + sync(): Promise + sql: SqlStorage + transactionSync(closure: () => T): T + getCurrentBookmark(): Promise + getBookmarkForTime(timestamp: number | Date): Promise + onNextSessionRestoreBookmark(bookmark: string): Promise +} +interface DurableObjectListOptions { + start?: string + startAfter?: string + end?: string + prefix?: string + reverse?: boolean + limit?: number + allowConcurrency?: boolean + noCache?: boolean +} +interface DurableObjectGetOptions { + allowConcurrency?: boolean + noCache?: boolean +} +interface DurableObjectGetAlarmOptions { + allowConcurrency?: boolean +} +interface DurableObjectPutOptions { + allowConcurrency?: boolean + allowUnconfirmed?: boolean + noCache?: boolean +} +interface DurableObjectSetAlarmOptions { + allowConcurrency?: boolean + allowUnconfirmed?: boolean +} +declare class WebSocketRequestResponsePair { + constructor(request: string, response: string) + get request(): string + get response(): string +} +interface AnalyticsEngineDataset { + writeDataPoint(event?: AnalyticsEngineDataPoint): void +} +interface AnalyticsEngineDataPoint { + indexes?: ((ArrayBuffer | string) | null)[] + doubles?: number[] + blobs?: ((ArrayBuffer | string) | null)[] +} +/** + * An event which takes place in the DOM. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event) + */ +declare class Event { + constructor(type: string, init?: EventInit) + /** + * Returns the type of event, e.g. "click", "hashchange", or "submit". + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/type) + */ + get type(): string + /** + * Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/eventPhase) + */ + get eventPhase(): number + /** + * Returns true or false depending on how event was initialized. True if event invokes listeners past a ShadowRoot node that is the root of its target, and false otherwise. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/composed) + */ + get composed(): boolean + /** + * Returns true or false depending on how event was initialized. True if event goes through its target's ancestors in reverse tree order, and false otherwise. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/bubbles) + */ + get bubbles(): boolean + /** + * Returns true or false depending on how event was initialized. Its return value does not always carry meaning, but true can indicate that part of the operation during which event was dispatched, can be canceled by invoking the preventDefault() method. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelable) + */ + get cancelable(): boolean + /** + * Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/defaultPrevented) + */ + get defaultPrevented(): boolean + /** + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/returnValue) + */ + get returnValue(): boolean + /** + * Returns the object whose event listener's callback is currently being invoked. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/currentTarget) + */ + get currentTarget(): EventTarget | undefined + /** + * Returns the object to which event is dispatched (its target). + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/target) + */ + get target(): EventTarget | undefined + /** + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/srcElement) + */ + get srcElement(): EventTarget | undefined + /** + * Returns the event's timestamp as the number of milliseconds measured relative to the time origin. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/timeStamp) + */ + get timeStamp(): number + /** + * Returns true if event was dispatched by the user agent, and false otherwise. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/isTrusted) + */ + get isTrusted(): boolean + /** + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelBubble) + */ + get cancelBubble(): boolean + /** + * @deprecated + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelBubble) + */ + set cancelBubble(value: boolean) + /** + * Invoking this method prevents event from reaching any registered event listeners after the current one finishes running and, when dispatched in a tree, also prevents event from reaching any other objects. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/stopImmediatePropagation) + */ + stopImmediatePropagation(): void + /** + * If invoked when the cancelable attribute value is true, and while executing a listener for the event with passive set to false, signals to the operation that caused event to be dispatched that it needs to be canceled. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/preventDefault) + */ + preventDefault(): void + /** + * When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/stopPropagation) + */ + stopPropagation(): void + /** + * Returns the invocation target objects of event's path (objects on which listeners will be invoked), except for any nodes in shadow trees of which the shadow root's mode is "closed" that are not reachable from event's currentTarget. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/composedPath) + */ + composedPath(): EventTarget[] + static readonly NONE: number + static readonly CAPTURING_PHASE: number + static readonly AT_TARGET: number + static readonly BUBBLING_PHASE: number +} +interface EventInit { + bubbles?: boolean + cancelable?: boolean + composed?: boolean +} +type EventListener = (event: EventType) => void +interface EventListenerObject { + handleEvent(event: EventType): void +} +type EventListenerOrEventListenerObject = + | EventListener + | EventListenerObject +/** + * EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget) + */ +declare class EventTarget = Record> { + constructor() + /** + * Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. + * + * The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. + * + * When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. + * + * When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. + * + * When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. + * + * If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. + * + * The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener) + */ + addEventListener( + type: Type, + handler: EventListenerOrEventListenerObject, + options?: EventTargetAddEventListenerOptions | boolean, + ): void + /** + * Removes the event listener in target's event listener list with the same type, callback, and options. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener) + */ + removeEventListener( + type: Type, + handler: EventListenerOrEventListenerObject, + options?: EventTargetEventListenerOptions | boolean, + ): void + /** + * Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent) + */ + dispatchEvent(event: EventMap[keyof EventMap]): boolean +} +interface EventTargetEventListenerOptions { + capture?: boolean +} +interface EventTargetAddEventListenerOptions { + capture?: boolean + passive?: boolean + once?: boolean + signal?: AbortSignal +} +interface EventTargetHandlerObject { + handleEvent: (event: Event) => any | undefined +} +/** + * A controller object that allows you to abort one or more DOM requests as and when desired. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController) + */ +declare class AbortController { + constructor() + /** + * Returns the AbortSignal object associated with this object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController/signal) + */ + get signal(): AbortSignal + /** + * Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController/abort) + */ + abort(reason?: any): void +} +/** + * A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal) + */ +declare abstract class AbortSignal extends EventTarget { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_static) */ + static abort(reason?: any): AbortSignal + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/timeout_static) */ + static timeout(delay: number): AbortSignal + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/any_static) */ + static any(signals: AbortSignal[]): AbortSignal + /** + * Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/aborted) + */ + get aborted(): boolean + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/reason) */ + get reason(): any + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_event) */ + get onabort(): any | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_event) */ + set onabort(value: any | null) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/throwIfAborted) */ + throwIfAborted(): void +} +interface Scheduler { + wait(delay: number, maybeOptions?: SchedulerWaitOptions): Promise +} +interface SchedulerWaitOptions { + signal?: AbortSignal +} +/** + * Extends the lifetime of the install and activate events dispatched on the global scope as part of the service worker lifecycle. This ensures that any functional events (like FetchEvent) are not dispatched until it upgrades database schemas and deletes the outdated cache entries. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ExtendableEvent) + */ +declare abstract class ExtendableEvent extends Event { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ExtendableEvent/waitUntil) */ + waitUntil(promise: Promise): void +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent) */ +declare class CustomEvent extends Event { + constructor(type: string, init?: CustomEventCustomEventInit) + /** + * Returns any custom data event was created with. Typically used for synthetic events. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent/detail) + */ + get detail(): T +} +interface CustomEventCustomEventInit { + bubbles?: boolean + cancelable?: boolean + composed?: boolean + detail?: any +} +/** + * A file-like object of immutable, raw data. Blobs represent data that isn't necessarily in a JavaScript-native format. The File interface is based on Blob, inheriting blob functionality and expanding it to support files on the user's system. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob) + */ +declare class Blob { + constructor(type?: ((ArrayBuffer | ArrayBufferView) | string | Blob)[], options?: BlobOptions) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) */ + get size(): number + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) */ + get type(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */ + slice(start?: number, end?: number, type?: string): Blob + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer) */ + arrayBuffer(): Promise + bytes(): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) */ + text(): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/stream) */ + stream(): ReadableStream +} +interface BlobOptions { + type?: string +} +/** + * Provides information about files and allows JavaScript in a web page to access their content. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File) + */ +declare class File extends Blob { + constructor( + bits: ((ArrayBuffer | ArrayBufferView) | string | Blob)[] | undefined, + name: string, + options?: FileOptions, + ) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) */ + get name(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) */ + get lastModified(): number +} +interface FileOptions { + type?: string + lastModified?: number +} +/** + * The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. + * + * [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) + */ +declare abstract class CacheStorage { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CacheStorage/open) */ + open(cacheName: string): Promise + readonly default: Cache +} +/** + * The Cache API allows fine grained control of reading and writing from the Cloudflare global network cache. + * + * [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/) + */ +declare abstract class Cache { + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#delete) */ + delete(request: RequestInfo | URL, options?: CacheQueryOptions): Promise + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#match) */ + match(request: RequestInfo | URL, options?: CacheQueryOptions): Promise + /* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/cache/#put) */ + put(request: RequestInfo | URL, response: Response): Promise +} +interface CacheQueryOptions { + ignoreMethod?: boolean +} +/** + * The Web Crypto API provides a set of low-level functions for common cryptographic tasks. + * The Workers runtime implements the full surface of this API, but with some differences in + * the [supported algorithms](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/#supported-algorithms) + * compared to those implemented in most browsers. + * + * [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/web-crypto/) + */ +declare abstract class Crypto { + /** + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/subtle) + */ + get subtle(): SubtleCrypto + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/getRandomValues) */ + getRandomValues< + T extends + | Int8Array + | Uint8Array + | Int16Array + | Uint16Array + | Int32Array + | Uint32Array + | BigInt64Array + | BigUint64Array, + >(buffer: T): T + /** + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/randomUUID) + */ + randomUUID(): string + DigestStream: typeof DigestStream +} +/** + * This Web Crypto API interface provides a number of low-level cryptographic functions. It is accessed via the Crypto.subtle properties available in a window context (via Window.crypto). + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto) + */ +declare abstract class SubtleCrypto { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/encrypt) */ + encrypt( + algorithm: string | SubtleCryptoEncryptAlgorithm, + key: CryptoKey, + plainText: ArrayBuffer | ArrayBufferView, + ): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/decrypt) */ + decrypt( + algorithm: string | SubtleCryptoEncryptAlgorithm, + key: CryptoKey, + cipherText: ArrayBuffer | ArrayBufferView, + ): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/sign) */ + sign( + algorithm: string | SubtleCryptoSignAlgorithm, + key: CryptoKey, + data: ArrayBuffer | ArrayBufferView, + ): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/verify) */ + verify( + algorithm: string | SubtleCryptoSignAlgorithm, + key: CryptoKey, + signature: ArrayBuffer | ArrayBufferView, + data: ArrayBuffer | ArrayBufferView, + ): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/digest) */ + digest(algorithm: string | SubtleCryptoHashAlgorithm, data: ArrayBuffer | ArrayBufferView): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/generateKey) */ + generateKey( + algorithm: string | SubtleCryptoGenerateKeyAlgorithm, + extractable: boolean, + keyUsages: string[], + ): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveKey) */ + deriveKey( + algorithm: string | SubtleCryptoDeriveKeyAlgorithm, + baseKey: CryptoKey, + derivedKeyAlgorithm: string | SubtleCryptoImportKeyAlgorithm, + extractable: boolean, + keyUsages: string[], + ): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/deriveBits) */ + deriveBits( + algorithm: string | SubtleCryptoDeriveKeyAlgorithm, + baseKey: CryptoKey, + length?: number | null, + ): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/importKey) */ + importKey( + format: string, + keyData: (ArrayBuffer | ArrayBufferView) | JsonWebKey, + algorithm: string | SubtleCryptoImportKeyAlgorithm, + extractable: boolean, + keyUsages: string[], + ): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/exportKey) */ + exportKey(format: string, key: CryptoKey): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/wrapKey) */ + wrapKey( + format: string, + key: CryptoKey, + wrappingKey: CryptoKey, + wrapAlgorithm: string | SubtleCryptoEncryptAlgorithm, + ): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/SubtleCrypto/unwrapKey) */ + unwrapKey( + format: string, + wrappedKey: ArrayBuffer | ArrayBufferView, + unwrappingKey: CryptoKey, + unwrapAlgorithm: string | SubtleCryptoEncryptAlgorithm, + unwrappedKeyAlgorithm: string | SubtleCryptoImportKeyAlgorithm, + extractable: boolean, + keyUsages: string[], + ): Promise + timingSafeEqual(a: ArrayBuffer | ArrayBufferView, b: ArrayBuffer | ArrayBufferView): boolean +} +/** + * The CryptoKey dictionary of the Web Crypto API represents a cryptographic key. + * Available only in secure contexts. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey) + */ +declare abstract class CryptoKey { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/type) */ + readonly type: string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable) */ + readonly extractable: boolean + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm) */ + readonly algorithm: + | CryptoKeyKeyAlgorithm + | CryptoKeyAesKeyAlgorithm + | CryptoKeyHmacKeyAlgorithm + | CryptoKeyRsaKeyAlgorithm + | CryptoKeyEllipticKeyAlgorithm + | CryptoKeyArbitraryKeyAlgorithm + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/usages) */ + readonly usages: string[] +} +interface CryptoKeyPair { + publicKey: CryptoKey + privateKey: CryptoKey +} +interface JsonWebKey { + kty: string + use?: string + key_ops?: string[] + alg?: string + ext?: boolean + crv?: string + x?: string + y?: string + d?: string + n?: string + e?: string + p?: string + q?: string + dp?: string + dq?: string + qi?: string + oth?: RsaOtherPrimesInfo[] + k?: string +} +interface RsaOtherPrimesInfo { + r?: string + d?: string + t?: string +} +interface SubtleCryptoDeriveKeyAlgorithm { + name: string + salt?: ArrayBuffer + iterations?: number + hash?: string | SubtleCryptoHashAlgorithm + $public?: CryptoKey + info?: ArrayBuffer +} +interface SubtleCryptoEncryptAlgorithm { + name: string + iv?: ArrayBuffer + additionalData?: ArrayBuffer + tagLength?: number + counter?: ArrayBuffer + length?: number + label?: ArrayBuffer +} +interface SubtleCryptoGenerateKeyAlgorithm { + name: string + hash?: string | SubtleCryptoHashAlgorithm + modulusLength?: number + publicExponent?: ArrayBuffer + length?: number + namedCurve?: string +} +interface SubtleCryptoHashAlgorithm { + name: string +} +interface SubtleCryptoImportKeyAlgorithm { + name: string + hash?: string | SubtleCryptoHashAlgorithm + length?: number + namedCurve?: string + compressed?: boolean +} +interface SubtleCryptoSignAlgorithm { + name: string + hash?: string | SubtleCryptoHashAlgorithm + dataLength?: number + saltLength?: number +} +interface CryptoKeyKeyAlgorithm { + name: string +} +interface CryptoKeyAesKeyAlgorithm { + name: string + length: number +} +interface CryptoKeyHmacKeyAlgorithm { + name: string + hash: CryptoKeyKeyAlgorithm + length: number +} +interface CryptoKeyRsaKeyAlgorithm { + name: string + modulusLength: number + publicExponent: ArrayBuffer | (ArrayBuffer | ArrayBufferView) + hash?: CryptoKeyKeyAlgorithm +} +interface CryptoKeyEllipticKeyAlgorithm { + name: string + namedCurve: string +} +interface CryptoKeyArbitraryKeyAlgorithm { + name: string + hash?: CryptoKeyKeyAlgorithm + namedCurve?: string + length?: number +} +declare class DigestStream extends WritableStream { + constructor(algorithm: string | SubtleCryptoHashAlgorithm) + get digest(): Promise + get bytesWritten(): number | bigint +} +/** + * A decoder for a specific method, that is a specific character encoding, like utf-8, iso-8859-2, koi8, cp1261, gbk, etc. A decoder takes a stream of bytes as input and emits a stream of code points. For a more scalable, non-native library, see StringView – a C-like representation of strings based on typed arrays. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoder) + */ +declare class TextDecoder { + constructor(decoder?: string, options?: TextDecoderConstructorOptions) + /** + * Returns the result of running encoding's decoder. The method can be invoked zero or more times with options's stream set to true, and then once without options's stream (or set to false), to process a fragmented input. If the invocation without options's stream (or set to false) has no input, it's clearest to omit both arguments. + * + * ``` + * var string = "", decoder = new TextDecoder(encoding), buffer; + * while(buffer = next_chunk()) { + * string += decoder.decode(buffer, {stream:true}); + * } + * string += decoder.decode(); // end-of-queue + * ``` + * + * If the error mode is "fatal" and encoding's decoder returns error, throws a TypeError. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoder/decode) + */ + decode(input?: ArrayBuffer | ArrayBufferView, options?: TextDecoderDecodeOptions): string + get encoding(): string + get fatal(): boolean + get ignoreBOM(): boolean +} +/** + * TextEncoder takes a stream of code points as input and emits a stream of bytes. For a more scalable, non-native library, see StringView – a C-like representation of strings based on typed arrays. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder) + */ +declare class TextEncoder { + constructor() + /** + * Returns the result of running UTF-8's encoder. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder/encode) + */ + encode(input?: string): Uint8Array + /** + * Runs the UTF-8 encoder on source, stores the result of that operation into destination, and returns the progress made as an object wherein read is the number of converted code units of source and written is the number of bytes modified in destination. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoder/encodeInto) + */ + encodeInto(input: string, buffer: ArrayBuffer | ArrayBufferView): TextEncoderEncodeIntoResult + get encoding(): string +} +interface TextDecoderConstructorOptions { + fatal: boolean + ignoreBOM: boolean +} +interface TextDecoderDecodeOptions { + stream: boolean +} +interface TextEncoderEncodeIntoResult { + read: number + written: number +} +/** + * Events providing information related to errors in scripts or in files. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent) + */ +declare class ErrorEvent extends Event { + constructor(type: string, init?: ErrorEventErrorEventInit) + get filename(): string + get message(): string + get lineno(): number + get colno(): number + get error(): any +} +interface ErrorEventErrorEventInit { + message?: string + filename?: string + lineno?: number + colno?: number + error?: any +} +/** + * Provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using the XMLHttpRequest.send() method. It uses the same format a form would use if the encoding type were set to "multipart/form-data". + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData) + */ +declare class FormData { + constructor() + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) */ + append(name: string, value: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) */ + append(name: string, value: Blob, filename?: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/delete) */ + delete(name: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/get) */ + get(name: string): (File | string) | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/getAll) */ + getAll(name: string): (File | string)[] + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/has) */ + has(name: string): boolean + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) */ + set(name: string, value: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) */ + set(name: string, value: Blob, filename?: string): void + /* Returns an array of key, value pairs for every entry in the list. */ + entries(): IterableIterator<[key: string, value: File | string]> + /* Returns a list of keys in the list. */ + keys(): IterableIterator + /* Returns a list of values in the list. */ + values(): IterableIterator + forEach( + callback: (this: This, value: File | string, key: string, parent: FormData) => void, + thisArg?: This, + ): void + [Symbol.iterator](): IterableIterator<[key: string, value: File | string]> +} +interface ContentOptions { + html?: boolean +} +declare class HTMLRewriter { + constructor() + on(selector: string, handlers: HTMLRewriterElementContentHandlers): HTMLRewriter + onDocument(handlers: HTMLRewriterDocumentContentHandlers): HTMLRewriter + transform(response: Response): Response +} +interface HTMLRewriterElementContentHandlers { + element?(element: Element): void | Promise + comments?(comment: Comment): void | Promise + text?(element: Text): void | Promise +} +interface HTMLRewriterDocumentContentHandlers { + doctype?(doctype: Doctype): void | Promise + comments?(comment: Comment): void | Promise + text?(text: Text): void | Promise + end?(end: DocumentEnd): void | Promise +} +interface Doctype { + readonly name: string | null + readonly publicId: string | null + readonly systemId: string | null +} +interface Element { + tagName: string + readonly attributes: IterableIterator + readonly removed: boolean + readonly namespaceURI: string + getAttribute(name: string): string | null + hasAttribute(name: string): boolean + setAttribute(name: string, value: string): Element + removeAttribute(name: string): Element + before(content: string | ReadableStream | Response, options?: ContentOptions): Element + after(content: string | ReadableStream | Response, options?: ContentOptions): Element + prepend(content: string | ReadableStream | Response, options?: ContentOptions): Element + append(content: string | ReadableStream | Response, options?: ContentOptions): Element + replace(content: string | ReadableStream | Response, options?: ContentOptions): Element + remove(): Element + removeAndKeepContent(): Element + setInnerContent(content: string | ReadableStream | Response, options?: ContentOptions): Element + onEndTag(handler: (tag: EndTag) => void | Promise): void +} +interface EndTag { + name: string + before(content: string | ReadableStream | Response, options?: ContentOptions): EndTag + after(content: string | ReadableStream | Response, options?: ContentOptions): EndTag + remove(): EndTag +} +interface Comment { + text: string + readonly removed: boolean + before(content: string, options?: ContentOptions): Comment + after(content: string, options?: ContentOptions): Comment + replace(content: string, options?: ContentOptions): Comment + remove(): Comment +} +interface Text { + readonly text: string + readonly lastInTextNode: boolean + readonly removed: boolean + before(content: string | ReadableStream | Response, options?: ContentOptions): Text + after(content: string | ReadableStream | Response, options?: ContentOptions): Text + replace(content: string | ReadableStream | Response, options?: ContentOptions): Text + remove(): Text +} +interface DocumentEnd { + append(content: string, options?: ContentOptions): DocumentEnd +} +/** + * This is the event type for fetch events dispatched on the service worker global scope. It contains information about the fetch, including the request and how the receiver will treat the response. It provides the event.respondWith() method, which allows us to provide a response to this fetch. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent) + */ +declare abstract class FetchEvent extends ExtendableEvent { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent/request) */ + readonly request: Request + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FetchEvent/respondWith) */ + respondWith(promise: Response | Promise): void + passThroughOnException(): void +} +type HeadersInit = Headers | Iterable> | Record +/** + * This Fetch API interface allows you to perform various actions on HTTP request and response headers. These actions include retrieving, setting, adding to, and removing. A Headers object has an associated header list, which is initially empty and consists of zero or more name and value pairs.  You can add to this using methods like append() (see Examples.) In all methods of this interface, header names are matched by case-insensitive byte sequence. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers) + */ +declare class Headers { + constructor(init?: HeadersInit) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/get) */ + get(name: string): string | null + getAll(name: string): string[] + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/getSetCookie) */ + getSetCookie(): string[] + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/has) */ + has(name: string): boolean + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/set) */ + set(name: string, value: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/append) */ + append(name: string, value: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/delete) */ + delete(name: string): void + forEach( + callback: (this: This, value: string, key: string, parent: Headers) => void, + thisArg?: This, + ): void + /* Returns an iterator allowing to go through all key/value pairs contained in this object. */ + entries(): IterableIterator<[key: string, value: string]> + /* Returns an iterator allowing to go through all keys of the key/value pairs contained in this object. */ + keys(): IterableIterator + /* Returns an iterator allowing to go through all values of the key/value pairs contained in this object. */ + values(): IterableIterator + [Symbol.iterator](): IterableIterator<[key: string, value: string]> +} +type BodyInit = ReadableStream | string | ArrayBuffer | ArrayBufferView | Blob | URLSearchParams | FormData +declare abstract class Body { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/body) */ + get body(): ReadableStream | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bodyUsed) */ + get bodyUsed(): boolean + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer) */ + arrayBuffer(): Promise + bytes(): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/text) */ + text(): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/json) */ + json(): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/formData) */ + formData(): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/blob) */ + blob(): Promise +} +/** + * This Fetch API interface represents the response to a request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response) + */ +declare var Response: { + prototype: Response + new (body?: BodyInit | null, init?: ResponseInit): Response + error(): Response + redirect(url: string, status?: number): Response + json(any: any, maybeInit?: ResponseInit | Response): Response +} +/** + * This Fetch API interface represents the response to a request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response) + */ +interface Response extends Body { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/clone) */ + clone(): Response + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/status) */ + status: number + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/statusText) */ + statusText: string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/headers) */ + headers: Headers + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/ok) */ + ok: boolean + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/redirected) */ + redirected: boolean + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/url) */ + url: string + webSocket: WebSocket | null + cf: any | undefined + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response/type) */ + type: "default" | "error" +} +interface ResponseInit { + status?: number + statusText?: string + headers?: HeadersInit + cf?: any + webSocket?: WebSocket | null + encodeBody?: "automatic" | "manual" +} +type RequestInfo> = Request | string +/** + * This Fetch API interface represents a resource request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request) + */ +declare var Request: { + prototype: Request + new >( + input: RequestInfo | URL, + init?: RequestInit, + ): Request +} +/** + * This Fetch API interface represents a resource request. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request) + */ +interface Request> extends Body { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/clone) */ + clone(): Request + /** + * Returns request's HTTP method, which is "GET" by default. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/method) + */ + method: string + /** + * Returns the URL of request as a string. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/url) + */ + url: string + /** + * Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the "Host" header. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/headers) + */ + headers: Headers + /** + * Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/redirect) + */ + redirect: string + fetcher: Fetcher | null + /** + * Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/signal) + */ + signal: AbortSignal + cf: Cf | undefined + /** + * Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI] + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/integrity) + */ + integrity: string + /* Returns a boolean indicating whether or not request can outlive the global in which it was created. */ + keepalive: boolean + /** + * Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/cache) + */ + cache?: "no-store" +} +interface RequestInit { + /* A string to set request's method. */ + method?: string + /* A Headers object, an object literal, or an array of two-item arrays to set request's headers. */ + headers?: HeadersInit + /* A BodyInit object or null to set request's body. */ + body?: BodyInit | null + /* A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */ + redirect?: string + fetcher?: Fetcher | null + cf?: Cf + /* A string indicating how the request will interact with the browser's cache to set request's cache. */ + cache?: "no-store" + /* A cryptographic hash of the resource to be fetched by request. Sets request's integrity. */ + integrity?: string + /* An AbortSignal to set request's signal. */ + signal?: AbortSignal | null +} +type Service = Fetcher +type Fetcher< + T extends Rpc.EntrypointBranded | undefined = undefined, + Reserved extends string = never, +> = (T extends Rpc.EntrypointBranded ? Rpc.Provider : unknown) & { + fetch(input: RequestInfo | URL, init?: RequestInit): Promise + connect(address: SocketAddress | string, options?: SocketOptions): Socket +} +interface KVNamespaceListKey { + name: Key + expiration?: number + metadata?: Metadata +} +type KVNamespaceListResult = + | { + list_complete: false + keys: KVNamespaceListKey[] + cursor: string + cacheStatus: string | null + } + | { + list_complete: true + keys: KVNamespaceListKey[] + cacheStatus: string | null + } +interface KVNamespace { + get(key: Key, options?: Partial>): Promise + get(key: Key, type: "text"): Promise + get(key: Key, type: "json"): Promise + get(key: Key, type: "arrayBuffer"): Promise + get(key: Key, type: "stream"): Promise + get(key: Key, options?: KVNamespaceGetOptions<"text">): Promise + get(key: Key, options?: KVNamespaceGetOptions<"json">): Promise + get(key: Key, options?: KVNamespaceGetOptions<"arrayBuffer">): Promise + get(key: Key, options?: KVNamespaceGetOptions<"stream">): Promise + list(options?: KVNamespaceListOptions): Promise> + put( + key: Key, + value: string | ArrayBuffer | ArrayBufferView | ReadableStream, + options?: KVNamespacePutOptions, + ): Promise + getWithMetadata( + key: Key, + options?: Partial>, + ): Promise> + getWithMetadata( + key: Key, + type: "text", + ): Promise> + getWithMetadata( + key: Key, + type: "json", + ): Promise> + getWithMetadata( + key: Key, + type: "arrayBuffer", + ): Promise> + getWithMetadata( + key: Key, + type: "stream", + ): Promise> + getWithMetadata( + key: Key, + options: KVNamespaceGetOptions<"text">, + ): Promise> + getWithMetadata( + key: Key, + options: KVNamespaceGetOptions<"json">, + ): Promise> + getWithMetadata( + key: Key, + options: KVNamespaceGetOptions<"arrayBuffer">, + ): Promise> + getWithMetadata( + key: Key, + options: KVNamespaceGetOptions<"stream">, + ): Promise> + delete(key: Key): Promise +} +interface KVNamespaceListOptions { + limit?: number + prefix?: string | null + cursor?: string | null +} +interface KVNamespaceGetOptions { + type: Type + cacheTtl?: number +} +interface KVNamespacePutOptions { + expiration?: number + expirationTtl?: number + metadata?: any | null +} +interface KVNamespaceGetWithMetadataResult { + value: Value | null + metadata: Metadata | null + cacheStatus: string | null +} +type QueueContentType = "text" | "bytes" | "json" | "v8" +interface Queue { + send(message: Body, options?: QueueSendOptions): Promise + sendBatch(messages: Iterable>, options?: QueueSendBatchOptions): Promise +} +interface QueueSendOptions { + contentType?: QueueContentType + delaySeconds?: number +} +interface QueueSendBatchOptions { + delaySeconds?: number +} +interface MessageSendRequest { + body: Body + contentType?: QueueContentType + delaySeconds?: number +} +interface QueueRetryOptions { + delaySeconds?: number +} +interface Message { + readonly id: string + readonly timestamp: Date + readonly body: Body + readonly attempts: number + retry(options?: QueueRetryOptions): void + ack(): void +} +interface QueueEvent extends ExtendableEvent { + readonly messages: readonly Message[] + readonly queue: string + retryAll(options?: QueueRetryOptions): void + ackAll(): void +} +interface MessageBatch { + readonly messages: readonly Message[] + readonly queue: string + retryAll(options?: QueueRetryOptions): void + ackAll(): void +} +interface R2Error extends Error { + readonly name: string + readonly code: number + readonly message: string + readonly action: string + readonly stack: any +} +interface R2ListOptions { + limit?: number + prefix?: string + cursor?: string + delimiter?: string + startAfter?: string + include?: ("httpMetadata" | "customMetadata")[] +} +declare abstract class R2Bucket { + head(key: string): Promise + get( + key: string, + options: R2GetOptions & { + onlyIf: R2Conditional | Headers + }, + ): Promise + get(key: string, options?: R2GetOptions): Promise + put( + key: string, + value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, + options?: R2PutOptions & { + onlyIf: R2Conditional | Headers + }, + ): Promise + put( + key: string, + value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob, + options?: R2PutOptions, + ): Promise + createMultipartUpload(key: string, options?: R2MultipartOptions): Promise + resumeMultipartUpload(key: string, uploadId: string): R2MultipartUpload + delete(keys: string | string[]): Promise + list(options?: R2ListOptions): Promise +} +interface R2MultipartUpload { + readonly key: string + readonly uploadId: string + uploadPart( + partNumber: number, + value: ReadableStream | (ArrayBuffer | ArrayBufferView) | string | Blob, + options?: R2UploadPartOptions, + ): Promise + abort(): Promise + complete(uploadedParts: R2UploadedPart[]): Promise +} +interface R2UploadedPart { + partNumber: number + etag: string +} +declare abstract class R2Object { + readonly key: string + readonly version: string + readonly size: number + readonly etag: string + readonly httpEtag: string + readonly checksums: R2Checksums + readonly uploaded: Date + readonly httpMetadata?: R2HTTPMetadata + readonly customMetadata?: Record + readonly range?: R2Range + readonly storageClass: string + readonly ssecKeyMd5?: string + writeHttpMetadata(headers: Headers): void +} +interface R2ObjectBody extends R2Object { + get body(): ReadableStream + get bodyUsed(): boolean + arrayBuffer(): Promise + text(): Promise + json(): Promise + blob(): Promise +} +type R2Range = + | { + offset: number + length?: number + } + | { + offset?: number + length: number + } + | { + suffix: number + } +interface R2Conditional { + etagMatches?: string + etagDoesNotMatch?: string + uploadedBefore?: Date + uploadedAfter?: Date + secondsGranularity?: boolean +} +interface R2GetOptions { + onlyIf?: R2Conditional | Headers + range?: R2Range | Headers + ssecKey?: ArrayBuffer | string +} +interface R2PutOptions { + onlyIf?: R2Conditional | Headers + httpMetadata?: R2HTTPMetadata | Headers + customMetadata?: Record + md5?: ArrayBuffer | string + sha1?: ArrayBuffer | string + sha256?: ArrayBuffer | string + sha384?: ArrayBuffer | string + sha512?: ArrayBuffer | string + storageClass?: string + ssecKey?: ArrayBuffer | string +} +interface R2MultipartOptions { + httpMetadata?: R2HTTPMetadata | Headers + customMetadata?: Record + storageClass?: string + ssecKey?: ArrayBuffer | string +} +interface R2Checksums { + readonly md5?: ArrayBuffer + readonly sha1?: ArrayBuffer + readonly sha256?: ArrayBuffer + readonly sha384?: ArrayBuffer + readonly sha512?: ArrayBuffer + toJSON(): R2StringChecksums +} +interface R2StringChecksums { + md5?: string + sha1?: string + sha256?: string + sha384?: string + sha512?: string +} +interface R2HTTPMetadata { + contentType?: string + contentLanguage?: string + contentDisposition?: string + contentEncoding?: string + cacheControl?: string + cacheExpiry?: Date +} +type R2Objects = { + objects: R2Object[] + delimitedPrefixes: string[] +} & ( + | { + truncated: true + cursor: string + } + | { + truncated: false + } +) +interface R2UploadPartOptions { + ssecKey?: ArrayBuffer | string +} +declare abstract class ScheduledEvent extends ExtendableEvent { + readonly scheduledTime: number + readonly cron: string + noRetry(): void +} +interface ScheduledController { + readonly scheduledTime: number + readonly cron: string + noRetry(): void +} +interface QueuingStrategy { + highWaterMark?: number | bigint + size?: (chunk: T) => number | bigint +} +interface UnderlyingSink { + type?: string + start?: (controller: WritableStreamDefaultController) => void | Promise + write?: (chunk: W, controller: WritableStreamDefaultController) => void | Promise + abort?: (reason: any) => void | Promise + close?: () => void | Promise +} +interface UnderlyingByteSource { + type: "bytes" + autoAllocateChunkSize?: number + start?: (controller: ReadableByteStreamController) => void | Promise + pull?: (controller: ReadableByteStreamController) => void | Promise + cancel?: (reason: any) => void | Promise +} +interface UnderlyingSource { + type?: "" | undefined + start?: (controller: ReadableStreamDefaultController) => void | Promise + pull?: (controller: ReadableStreamDefaultController) => void | Promise + cancel?: (reason: any) => void | Promise + expectedLength?: number | bigint +} +interface Transformer { + readableType?: string + writableType?: string + start?: (controller: TransformStreamDefaultController) => void | Promise + transform?: (chunk: I, controller: TransformStreamDefaultController) => void | Promise + flush?: (controller: TransformStreamDefaultController) => void | Promise + cancel?: (reason: any) => void | Promise + expectedLength?: number +} +interface StreamPipeOptions { + /** + * Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered. + * + * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader. + * + * Errors and closures of the source and destination streams propagate as follows: + * + * An error in this source readable stream will abort destination, unless preventAbort is truthy. The returned promise will be rejected with the source's error, or with any error that occurs during aborting the destination. + * + * An error in destination will cancel this source readable stream, unless preventCancel is truthy. The returned promise will be rejected with the destination's error, or with any error that occurs during canceling the source. + * + * When this source readable stream closes, destination will be closed, unless preventClose is truthy. The returned promise will be fulfilled once this process completes, unless an error is encountered while closing the destination, in which case it will be rejected with that error. + * + * If destination starts out closed or closing, this source readable stream will be canceled, unless preventCancel is true. The returned promise will be rejected with an error indicating piping to a closed stream failed, or with any error that occurs during canceling the source. + * + * The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set. + */ + preventClose?: boolean + preventAbort?: boolean + preventCancel?: boolean + signal?: AbortSignal +} +type ReadableStreamReadResult = + | { + done: false + value: R + } + | { + done: true + value?: undefined + } +/** + * This Streams API interface represents a readable stream of byte data. The Fetch API offers a concrete instance of a ReadableStream through the body property of a Response object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream) + */ +interface ReadableStream { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/locked) */ + get locked(): boolean + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/cancel) */ + cancel(reason?: any): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/getReader) */ + getReader(): ReadableStreamDefaultReader + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/getReader) */ + getReader(options: ReadableStreamGetReaderOptions): ReadableStreamBYOBReader + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeThrough) */ + pipeThrough(transform: ReadableWritablePair, options?: StreamPipeOptions): ReadableStream + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/pipeTo) */ + pipeTo(destination: WritableStream, options?: StreamPipeOptions): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream/tee) */ + tee(): [ReadableStream, ReadableStream] + values(options?: ReadableStreamValuesOptions): AsyncIterableIterator + [Symbol.asyncIterator](options?: ReadableStreamValuesOptions): AsyncIterableIterator +} +/** + * This Streams API interface represents a readable stream of byte data. The Fetch API offers a concrete instance of a ReadableStream through the body property of a Response object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStream) + */ +declare const ReadableStream: { + prototype: ReadableStream + new (underlyingSource: UnderlyingByteSource, strategy?: QueuingStrategy): ReadableStream + new (underlyingSource?: UnderlyingSource, strategy?: QueuingStrategy): ReadableStream +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader) */ +declare class ReadableStreamDefaultReader { + constructor(stream: ReadableStream) + get closed(): Promise + cancel(reason?: any): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/read) */ + read(): Promise> + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/releaseLock) */ + releaseLock(): void +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader) */ +declare class ReadableStreamBYOBReader { + constructor(stream: ReadableStream) + get closed(): Promise + cancel(reason?: any): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/read) */ + read(view: T): Promise> + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/releaseLock) */ + releaseLock(): void + readAtLeast(minElements: number, view: T): Promise> +} +interface ReadableStreamBYOBReaderReadableStreamBYOBReaderReadOptions { + min?: number +} +interface ReadableStreamGetReaderOptions { + /** + * Creates a ReadableStreamBYOBReader and locks the stream to the new reader. + * + * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation. + */ + mode: "byob" +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest) */ +declare abstract class ReadableStreamBYOBRequest { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/view) */ + get view(): Uint8Array | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respond) */ + respond(bytesWritten: number): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respondWithNewView) */ + respondWithNewView(view: ArrayBuffer | ArrayBufferView): void + get atLeast(): number | null +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController) */ +declare abstract class ReadableStreamDefaultController { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/desiredSize) */ + get desiredSize(): number | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/close) */ + close(): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/enqueue) */ + enqueue(chunk?: R): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/error) */ + error(reason: any): void +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController) */ +declare abstract class ReadableByteStreamController { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/byobRequest) */ + get byobRequest(): ReadableStreamBYOBRequest | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/desiredSize) */ + get desiredSize(): number | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/close) */ + close(): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/enqueue) */ + enqueue(chunk: ArrayBuffer | ArrayBufferView): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/error) */ + error(reason: any): void +} +/** + * This Streams API interface represents a controller allowing control of a WritableStream's state. When constructing a WritableStream, the underlying sink is given a corresponding WritableStreamDefaultController instance to manipulate. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController) + */ +declare abstract class WritableStreamDefaultController { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/signal) */ + get signal(): AbortSignal + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/error) */ + error(reason?: any): void +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController) */ +declare abstract class TransformStreamDefaultController { + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/desiredSize) */ + get desiredSize(): number | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/enqueue) */ + enqueue(chunk?: O): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/error) */ + error(reason: any): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/terminate) */ + terminate(): void +} +interface ReadableWritablePair { + /** + * Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use. + * + * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader. + */ + writable: WritableStream + readable: ReadableStream +} +/** + * This Streams API interface provides a standard abstraction for writing streaming data to a destination, known as a sink. This object comes with built-in backpressure and queuing. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream) + */ +declare class WritableStream { + constructor(underlyingSink?: UnderlyingSink, queuingStrategy?: QueuingStrategy) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/locked) */ + get locked(): boolean + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/abort) */ + abort(reason?: any): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/close) */ + close(): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStream/getWriter) */ + getWriter(): WritableStreamDefaultWriter +} +/** + * This Streams API interface is the object returned by WritableStream.getWriter() and once created locks the < writer to the WritableStream ensuring that no other streams can write to the underlying sink. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter) + */ +declare class WritableStreamDefaultWriter { + constructor(stream: WritableStream) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/closed) */ + get closed(): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/ready) */ + get ready(): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/desiredSize) */ + get desiredSize(): number | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/abort) */ + abort(reason?: any): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/close) */ + close(): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/write) */ + write(chunk?: W): Promise + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/releaseLock) */ + releaseLock(): void +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream) */ +declare class TransformStream { + constructor( + transformer?: Transformer, + writableStrategy?: QueuingStrategy, + readableStrategy?: QueuingStrategy, + ) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream/readable) */ + get readable(): ReadableStream + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TransformStream/writable) */ + get writable(): WritableStream +} +declare class FixedLengthStream extends IdentityTransformStream { + constructor(expectedLength: number | bigint, queuingStrategy?: IdentityTransformStreamQueuingStrategy) +} +declare class IdentityTransformStream extends TransformStream { + constructor(queuingStrategy?: IdentityTransformStreamQueuingStrategy) +} +interface IdentityTransformStreamQueuingStrategy { + highWaterMark?: number | bigint +} +interface ReadableStreamValuesOptions { + preventCancel?: boolean +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CompressionStream) */ +declare class CompressionStream extends TransformStream { + constructor(format: "gzip" | "deflate" | "deflate-raw") +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/DecompressionStream) */ +declare class DecompressionStream extends TransformStream { + constructor(format: "gzip" | "deflate" | "deflate-raw") +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextEncoderStream) */ +declare class TextEncoderStream extends TransformStream { + constructor() + get encoding(): string +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/TextDecoderStream) */ +declare class TextDecoderStream extends TransformStream { + constructor(label?: string, options?: TextDecoderStreamTextDecoderStreamInit) + get encoding(): string + get fatal(): boolean + get ignoreBOM(): boolean +} +interface TextDecoderStreamTextDecoderStreamInit { + fatal?: boolean + ignoreBOM?: boolean +} +/** + * This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy) + */ +declare class ByteLengthQueuingStrategy implements QueuingStrategy { + constructor(init: QueuingStrategyInit) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/highWaterMark) */ + get highWaterMark(): number + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/size) */ + get size(): (chunk?: any) => number +} +/** + * This Streams API interface provides a built-in byte length queuing strategy that can be used when constructing streams. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy) + */ +declare class CountQueuingStrategy implements QueuingStrategy { + constructor(init: QueuingStrategyInit) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/highWaterMark) */ + get highWaterMark(): number + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/size) */ + get size(): (chunk?: any) => number +} +interface QueuingStrategyInit { + /** + * Creates a new ByteLengthQueuingStrategy with the provided high water mark. + * + * Note that the provided high water mark will not be validated ahead of time. Instead, if it is negative, NaN, or not a number, the resulting ByteLengthQueuingStrategy will cause the corresponding stream constructor to throw. + */ + highWaterMark: number +} +interface ScriptVersion { + id?: string + tag?: string + message?: string +} +declare abstract class TailEvent extends ExtendableEvent { + readonly events: TraceItem[] + readonly traces: TraceItem[] +} +interface TraceItem { + readonly event: + | ( + | TraceItemFetchEventInfo + | TraceItemJsRpcEventInfo + | TraceItemScheduledEventInfo + | TraceItemAlarmEventInfo + | TraceItemQueueEventInfo + | TraceItemEmailEventInfo + | TraceItemTailEventInfo + | TraceItemCustomEventInfo + | TraceItemHibernatableWebSocketEventInfo + ) + | null + readonly eventTimestamp: number | null + readonly logs: TraceLog[] + readonly exceptions: TraceException[] + readonly diagnosticsChannelEvents: TraceDiagnosticChannelEvent[] + readonly scriptName: string | null + readonly entrypoint?: string + readonly scriptVersion?: ScriptVersion + readonly dispatchNamespace?: string + readonly scriptTags?: string[] + readonly outcome: string + readonly executionModel: string + readonly truncated: boolean + readonly cpuTime: number + readonly wallTime: number +} +interface TraceItemAlarmEventInfo { + readonly scheduledTime: Date +} +interface TraceItemCustomEventInfo {} +interface TraceItemScheduledEventInfo { + readonly scheduledTime: number + readonly cron: string +} +interface TraceItemQueueEventInfo { + readonly queue: string + readonly batchSize: number +} +interface TraceItemEmailEventInfo { + readonly mailFrom: string + readonly rcptTo: string + readonly rawSize: number +} +interface TraceItemTailEventInfo { + readonly consumedEvents: TraceItemTailEventInfoTailItem[] +} +interface TraceItemTailEventInfoTailItem { + readonly scriptName: string | null +} +interface TraceItemFetchEventInfo { + readonly response?: TraceItemFetchEventInfoResponse + readonly request: TraceItemFetchEventInfoRequest +} +interface TraceItemFetchEventInfoRequest { + readonly cf?: any + readonly headers: Record + readonly method: string + readonly url: string + getUnredacted(): TraceItemFetchEventInfoRequest +} +interface TraceItemFetchEventInfoResponse { + readonly status: number +} +interface TraceItemJsRpcEventInfo { + readonly rpcMethod: string +} +interface TraceItemHibernatableWebSocketEventInfo { + readonly getWebSocketEvent: + | TraceItemHibernatableWebSocketEventInfoMessage + | TraceItemHibernatableWebSocketEventInfoClose + | TraceItemHibernatableWebSocketEventInfoError +} +interface TraceItemHibernatableWebSocketEventInfoMessage { + readonly webSocketEventType: string +} +interface TraceItemHibernatableWebSocketEventInfoClose { + readonly webSocketEventType: string + readonly code: number + readonly wasClean: boolean +} +interface TraceItemHibernatableWebSocketEventInfoError { + readonly webSocketEventType: string +} +interface TraceLog { + readonly timestamp: number + readonly level: string + readonly message: any +} +interface TraceException { + readonly timestamp: number + readonly message: string + readonly name: string + readonly stack?: string +} +interface TraceDiagnosticChannelEvent { + readonly timestamp: number + readonly channel: string + readonly message: any +} +interface TraceMetrics { + readonly cpuTime: number + readonly wallTime: number +} +interface UnsafeTraceMetrics { + fromTrace(item: TraceItem): TraceMetrics +} +/** + * The URL interface represents an object providing static methods used for creating object URLs. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL) + */ +declare class URL { + constructor(url: string | URL, base?: string | URL) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/origin) */ + get origin(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/href) */ + get href(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/href) */ + set href(value: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/protocol) */ + get protocol(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/protocol) */ + set protocol(value: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/username) */ + get username(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/username) */ + set username(value: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/password) */ + get password(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/password) */ + set password(value: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/host) */ + get host(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/host) */ + set host(value: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hostname) */ + get hostname(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hostname) */ + set hostname(value: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/port) */ + get port(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/port) */ + set port(value: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/pathname) */ + get pathname(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/pathname) */ + set pathname(value: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/search) */ + get search(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/search) */ + set search(value: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hash) */ + get hash(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/hash) */ + set hash(value: string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/searchParams) */ + get searchParams(): URLSearchParams + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/toJSON) */ + toJSON(): string + /*function toString() { [native code] }*/ + toString(): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/canParse_static) */ + static canParse(url: string, base?: string): boolean + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/parse_static) */ + static parse(url: string, base?: string): URL | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/createObjectURL_static) */ + static createObjectURL(object: File | Blob): string + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL/revokeObjectURL_static) */ + static revokeObjectURL(object_url: string): void +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams) */ +declare class URLSearchParams { + constructor(init?: Iterable> | Record | string) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/size) */ + get size(): number + /** + * Appends a specified key/value pair as a new search parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/append) + */ + append(name: string, value: string): void + /** + * Deletes the given search parameter, and its associated value, from the list of all search parameters. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/delete) + */ + delete(name: string, value?: string): void + /** + * Returns the first value associated to the given search parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/get) + */ + get(name: string): string | null + /** + * Returns all the values association with a given search parameter. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/getAll) + */ + getAll(name: string): string[] + /** + * Returns a Boolean indicating if such a search parameter exists. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/has) + */ + has(name: string, value?: string): boolean + /** + * Sets the value associated to a given search parameter to the given value. If there were several values, delete the others. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/set) + */ + set(name: string, value: string): void + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URLSearchParams/sort) */ + sort(): void + /* Returns an array of key, value pairs for every entry in the search params. */ + entries(): IterableIterator<[key: string, value: string]> + /* Returns a list of keys in the search params. */ + keys(): IterableIterator + /* Returns a list of values in the search params. */ + values(): IterableIterator + forEach( + callback: (this: This, value: string, key: string, parent: URLSearchParams) => void, + thisArg?: This, + ): void + /*function toString() { [native code] } Returns a string containing a query string suitable for use in a URL. Does not include the question mark. */ + toString(): string + [Symbol.iterator](): IterableIterator<[key: string, value: string]> +} +declare class URLPattern { + constructor( + input?: string | URLPatternURLPatternInit, + baseURL?: string | URLPatternURLPatternOptions, + patternOptions?: URLPatternURLPatternOptions, + ) + get protocol(): string + get username(): string + get password(): string + get hostname(): string + get port(): string + get pathname(): string + get search(): string + get hash(): string + test(input?: string | URLPatternURLPatternInit, baseURL?: string): boolean + exec(input?: string | URLPatternURLPatternInit, baseURL?: string): URLPatternURLPatternResult | null +} +interface URLPatternURLPatternInit { + protocol?: string + username?: string + password?: string + hostname?: string + port?: string + pathname?: string + search?: string + hash?: string + baseURL?: string +} +interface URLPatternURLPatternComponentResult { + input: string + groups: Record +} +interface URLPatternURLPatternResult { + inputs: (string | URLPatternURLPatternInit)[] + protocol: URLPatternURLPatternComponentResult + username: URLPatternURLPatternComponentResult + password: URLPatternURLPatternComponentResult + hostname: URLPatternURLPatternComponentResult + port: URLPatternURLPatternComponentResult + pathname: URLPatternURLPatternComponentResult + search: URLPatternURLPatternComponentResult + hash: URLPatternURLPatternComponentResult +} +interface URLPatternURLPatternOptions { + ignoreCase?: boolean +} +/** + * A CloseEvent is sent to clients using WebSockets when the connection is closed. This is delivered to the listener indicated by the WebSocket object's onclose attribute. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent) + */ +declare class CloseEvent extends Event { + constructor(type: string, initializer?: CloseEventInit) + /** + * Returns the WebSocket connection close code provided by the server. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/code) + */ + readonly code: number + /** + * Returns the WebSocket connection close reason provided by the server. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/reason) + */ + readonly reason: string + /** + * Returns true if the connection closed cleanly; false otherwise. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/wasClean) + */ + readonly wasClean: boolean +} +interface CloseEventInit { + code?: number + reason?: string + wasClean?: boolean +} +/** + * A message received by a target object. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent) + */ +declare class MessageEvent extends Event { + constructor(type: string, initializer: MessageEventInit) + /** + * Returns the data of the message. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessageEvent/data) + */ + readonly data: ArrayBuffer | string +} +interface MessageEventInit { + data: ArrayBuffer | string +} +type WebSocketEventMap = { + close: CloseEvent + message: MessageEvent + open: Event + error: ErrorEvent +} +/** + * Provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket) + */ +declare var WebSocket: { + prototype: WebSocket + new (url: string, protocols?: string[] | string): WebSocket + readonly READY_STATE_CONNECTING: number + readonly CONNECTING: number + readonly READY_STATE_OPEN: number + readonly OPEN: number + readonly READY_STATE_CLOSING: number + readonly CLOSING: number + readonly READY_STATE_CLOSED: number + readonly CLOSED: number +} +/** + * Provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket) + */ +interface WebSocket extends EventTarget { + accept(): void + /** + * Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/send) + */ + send(message: (ArrayBuffer | ArrayBufferView) | string): void + /** + * Closes the WebSocket connection, optionally using code as the the WebSocket connection close code and reason as the the WebSocket connection close reason. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/close) + */ + close(code?: number, reason?: string): void + serializeAttachment(attachment: any): void + deserializeAttachment(): any | null + /** + * Returns the state of the WebSocket object's connection. It can have the values described below. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/readyState) + */ + readyState: number + /** + * Returns the URL that was used to establish the WebSocket connection. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/url) + */ + url: string | null + /** + * Returns the subprotocol selected by the server, if any. It can be used in conjunction with the array form of the constructor's second argument to perform subprotocol negotiation. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/protocol) + */ + protocol: string | null + /** + * Returns the extensions selected by the server, if any. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/extensions) + */ + extensions: string | null +} +declare const WebSocketPair: { + new (): { + 0: WebSocket + 1: WebSocket + } +} +interface SqlStorage { + exec>(query: string, ...bindings: any[]): SqlStorageCursor + get databaseSize(): number + Cursor: typeof SqlStorageCursor + Statement: typeof SqlStorageStatement +} +declare abstract class SqlStorageStatement {} +type SqlStorageValue = ArrayBuffer | string | number | null +declare abstract class SqlStorageCursor> { + next(): + | { + done?: false + value: T + } + | { + done: true + value?: never + } + toArray(): T[] + one(): T + raw(): IterableIterator + columnNames: string[] + get rowsRead(): number + get rowsWritten(): number + [Symbol.iterator](): IterableIterator +} +interface Socket { + get readable(): ReadableStream + get writable(): WritableStream + get closed(): Promise + get opened(): Promise + close(): Promise + startTls(options?: TlsOptions): Socket +} +interface SocketOptions { + secureTransport?: string + allowHalfOpen: boolean + highWaterMark?: number | bigint +} +interface SocketAddress { + hostname: string + port: number +} +interface TlsOptions { + expectedServerHostname?: string +} +interface SocketInfo { + remoteAddress?: string + localAddress?: string +} +interface GPU { + requestAdapter(param1?: GPURequestAdapterOptions): Promise +} +declare abstract class GPUAdapter { + requestDevice(param1?: GPUDeviceDescriptor): Promise + requestAdapterInfo(unmaskHints?: string[]): Promise + get features(): GPUSupportedFeatures + get limits(): GPUSupportedLimits +} +interface GPUDevice extends EventTarget { + createBuffer(param1: GPUBufferDescriptor): GPUBuffer + createBindGroupLayout(descriptor: GPUBindGroupLayoutDescriptor): GPUBindGroupLayout + createBindGroup(descriptor: GPUBindGroupDescriptor): GPUBindGroup + createSampler(descriptor: GPUSamplerDescriptor): GPUSampler + createShaderModule(descriptor: GPUShaderModuleDescriptor): GPUShaderModule + createPipelineLayout(descriptor: GPUPipelineLayoutDescriptor): GPUPipelineLayout + createComputePipeline(descriptor: GPUComputePipelineDescriptor): GPUComputePipeline + createRenderPipeline(descriptor: GPURenderPipelineDescriptor): GPURenderPipeline + createCommandEncoder(descriptor?: GPUCommandEncoderDescriptor): GPUCommandEncoder + createTexture(param1: GPUTextureDescriptor): GPUTexture + destroy(): void + createQuerySet(descriptor: GPUQuerySetDescriptor): GPUQuerySet + pushErrorScope(filter: string): void + popErrorScope(): Promise + get queue(): GPUQueue + get lost(): Promise + get features(): GPUSupportedFeatures + get limits(): GPUSupportedLimits +} +interface GPUDeviceDescriptor { + label?: string + requiredFeatures?: string[] + requiredLimits?: Record + defaultQueue?: GPUQueueDescriptor +} +interface GPUBufferDescriptor { + label: string + size: number | bigint + usage: number + mappedAtCreation: boolean +} +interface GPUQueueDescriptor { + label?: string +} +declare abstract class GPUBufferUsage { + static readonly MAP_READ: number + static readonly MAP_WRITE: number + static readonly COPY_SRC: number + static readonly COPY_DST: number + static readonly INDEX: number + static readonly VERTEX: number + static readonly UNIFORM: number + static readonly STORAGE: number + static readonly INDIRECT: number + static readonly QUERY_RESOLVE: number +} +interface GPUBuffer { + getMappedRange(size?: number | bigint, param2?: number | bigint): ArrayBuffer + unmap(): void + destroy(): void + mapAsync(offset: number, size?: number | bigint, param3?: number | bigint): Promise + get size(): number | bigint + get usage(): number + get mapState(): string +} +declare abstract class GPUShaderStage { + static readonly VERTEX: number + static readonly FRAGMENT: number + static readonly COMPUTE: number +} +interface GPUBindGroupLayoutDescriptor { + label?: string + entries: GPUBindGroupLayoutEntry[] +} +interface GPUBindGroupLayoutEntry { + binding: number + visibility: number + buffer?: GPUBufferBindingLayout + sampler?: GPUSamplerBindingLayout + texture?: GPUTextureBindingLayout + storageTexture?: GPUStorageTextureBindingLayout +} +interface GPUStorageTextureBindingLayout { + access?: string + format: string + viewDimension?: string +} +interface GPUTextureBindingLayout { + sampleType?: string + viewDimension?: string + multisampled?: boolean +} +interface GPUSamplerBindingLayout { + type?: string +} +interface GPUBufferBindingLayout { + type?: string + hasDynamicOffset?: boolean + minBindingSize?: number | bigint +} +interface GPUBindGroupLayout {} +interface GPUBindGroup {} +interface GPUBindGroupDescriptor { + label?: string + layout: GPUBindGroupLayout + entries: GPUBindGroupEntry[] +} +interface GPUBindGroupEntry { + binding: number + resource: GPUBufferBinding | GPUSampler +} +interface GPUBufferBinding { + buffer: GPUBuffer + offset?: number | bigint + size?: number | bigint +} +interface GPUSampler {} +interface GPUSamplerDescriptor { + label?: string + addressModeU?: string + addressModeV?: string + addressModeW?: string + magFilter?: string + minFilter?: string + mipmapFilter?: string + lodMinClamp?: number + lodMaxClamp?: number + compare: string + maxAnisotropy?: number +} +interface GPUShaderModule { + getCompilationInfo(): Promise +} +interface GPUShaderModuleDescriptor { + label?: string + code: string +} +interface GPUPipelineLayout {} +interface GPUPipelineLayoutDescriptor { + label?: string + bindGroupLayouts: GPUBindGroupLayout[] +} +interface GPUComputePipeline { + getBindGroupLayout(index: number): GPUBindGroupLayout +} +interface GPUComputePipelineDescriptor { + label?: string + compute: GPUProgrammableStage + layout: string | GPUPipelineLayout +} +interface GPUProgrammableStage { + module: GPUShaderModule + entryPoint: string + constants?: Record +} +interface GPUCommandEncoder { + get label(): string + beginComputePass(descriptor?: GPUComputePassDescriptor): GPUComputePassEncoder + beginRenderPass(descriptor: GPURenderPassDescriptor): GPURenderPassEncoder + copyBufferToBuffer( + source: GPUBuffer, + sourceOffset: number | bigint, + destination: GPUBuffer, + destinationOffset: number | bigint, + size: number | bigint, + ): void + finish(param0?: GPUCommandBufferDescriptor): GPUCommandBuffer + copyTextureToBuffer( + source: GPUImageCopyTexture, + destination: GPUImageCopyBuffer, + copySize: Iterable | GPUExtent3DDict, + ): void + copyBufferToTexture( + source: GPUImageCopyBuffer, + destination: GPUImageCopyTexture, + copySize: Iterable | GPUExtent3DDict, + ): void + copyTextureToTexture( + source: GPUImageCopyTexture, + destination: GPUImageCopyTexture, + copySize: Iterable | GPUExtent3DDict, + ): void + clearBuffer(buffer: GPUBuffer, offset?: number | bigint, size?: number | bigint): void +} +interface GPUCommandEncoderDescriptor { + label?: string +} +interface GPUComputePassEncoder { + setPipeline(pipeline: GPUComputePipeline): void + setBindGroup(index: number, bindGroup: GPUBindGroup | null, dynamicOffsets?: Iterable): void + dispatchWorkgroups(workgroupCountX: number, workgroupCountY?: number, workgroupCountZ?: number): void + end(): void +} +interface GPUComputePassDescriptor { + label?: string + timestampWrites?: GPUComputePassTimestampWrites +} +interface GPUQuerySet {} +interface GPUQuerySetDescriptor { + label?: string +} +interface GPUComputePassTimestampWrites { + querySet: GPUQuerySet + beginningOfPassWriteIndex?: number + endOfPassWriteIndex?: number +} +interface GPUCommandBufferDescriptor { + label?: string +} +interface GPUCommandBuffer {} +interface GPUQueue { + submit(commandBuffers: GPUCommandBuffer[]): void + writeBuffer( + buffer: GPUBuffer, + bufferOffset: number | bigint, + data: ArrayBuffer | ArrayBufferView, + dataOffset?: number | bigint, + size?: number | bigint, + ): void +} +declare abstract class GPUMapMode { + static readonly READ: number + static readonly WRITE: number +} +interface GPURequestAdapterOptions { + powerPreference: string + forceFallbackAdapter?: boolean +} +interface GPUAdapterInfo { + get vendor(): string + get architecture(): string + get device(): string + get description(): string +} +interface GPUSupportedFeatures { + has(name: string): boolean + keys(): string[] +} +interface GPUSupportedLimits { + get maxTextureDimension1D(): number + get maxTextureDimension2D(): number + get maxTextureDimension3D(): number + get maxTextureArrayLayers(): number + get maxBindGroups(): number + get maxBindingsPerBindGroup(): number + get maxDynamicUniformBuffersPerPipelineLayout(): number + get maxDynamicStorageBuffersPerPipelineLayout(): number + get maxSampledTexturesPerShaderStage(): number + get maxSamplersPerShaderStage(): number + get maxStorageBuffersPerShaderStage(): number + get maxStorageTexturesPerShaderStage(): number + get maxUniformBuffersPerShaderStage(): number + get maxUniformBufferBindingSize(): number | bigint + get maxStorageBufferBindingSize(): number | bigint + get minUniformBufferOffsetAlignment(): number + get minStorageBufferOffsetAlignment(): number + get maxVertexBuffers(): number + get maxBufferSize(): number | bigint + get maxVertexAttributes(): number + get maxVertexBufferArrayStride(): number + get maxInterStageShaderComponents(): number + get maxInterStageShaderVariables(): number + get maxColorAttachments(): number + get maxColorAttachmentBytesPerSample(): number + get maxComputeWorkgroupStorageSize(): number + get maxComputeInvocationsPerWorkgroup(): number + get maxComputeWorkgroupSizeX(): number + get maxComputeWorkgroupSizeY(): number + get maxComputeWorkgroupSizeZ(): number + get maxComputeWorkgroupsPerDimension(): number +} +declare abstract class GPUError { + get message(): string +} +declare abstract class GPUOutOfMemoryError extends GPUError {} +declare abstract class GPUInternalError extends GPUError {} +declare abstract class GPUValidationError extends GPUError {} +declare abstract class GPUDeviceLostInfo { + get message(): string + get reason(): string +} +interface GPUCompilationMessage { + get message(): string + get type(): string + get lineNum(): number + get linePos(): number + get offset(): number + get length(): number +} +interface GPUCompilationInfo { + get messages(): GPUCompilationMessage[] +} +declare abstract class GPUTextureUsage { + static readonly COPY_SRC: number + static readonly COPY_DST: number + static readonly TEXTURE_BINDING: number + static readonly STORAGE_BINDING: number + static readonly RENDER_ATTACHMENT: number +} +interface GPUTextureDescriptor { + label: string + size: number[] | GPUExtent3DDict + mipLevelCount?: number + sampleCount?: number + dimension?: string + format: string + usage: number + viewFormats?: string[] +} +interface GPUExtent3DDict { + width: number + height?: number + depthOrArrayLayers?: number +} +interface GPUTexture { + createView(descriptor?: GPUTextureViewDescriptor): GPUTextureView + destroy(): void + get width(): number + get height(): number + get depthOrArrayLayers(): number + get mipLevelCount(): number + get dimension(): string + get format(): string + get usage(): number +} +interface GPUTextureView {} +interface GPUTextureViewDescriptor { + label: string + format: string + dimension: string + aspect?: string + baseMipLevel?: number + mipLevelCount: number + baseArrayLayer?: number + arrayLayerCount: number +} +declare abstract class GPUColorWrite { + static readonly RED: number + static readonly GREEN: number + static readonly BLUE: number + static readonly ALPHA: number + static readonly ALL: number +} +interface GPURenderPipeline {} +interface GPURenderPipelineDescriptor { + label?: string + layout: string | GPUPipelineLayout + vertex: GPUVertexState + primitive?: GPUPrimitiveState + depthStencil?: GPUDepthStencilState + multisample?: GPUMultisampleState + fragment?: GPUFragmentState +} +interface GPUVertexState { + module: GPUShaderModule + entryPoint: string + constants?: Record + buffers?: GPUVertexBufferLayout[] +} +interface GPUVertexBufferLayout { + arrayStride: number | bigint + stepMode?: string + attributes: GPUVertexAttribute[] +} +interface GPUVertexAttribute { + format: string + offset: number | bigint + shaderLocation: number +} +interface GPUPrimitiveState { + topology?: string + stripIndexFormat?: string + frontFace?: string + cullMode?: string + unclippedDepth?: boolean +} +interface GPUStencilFaceState { + compare?: string + failOp?: string + depthFailOp?: string + passOp?: string +} +interface GPUDepthStencilState { + format: string + depthWriteEnabled: boolean + depthCompare: string + stencilFront?: GPUStencilFaceState + stencilBack?: GPUStencilFaceState + stencilReadMask?: number + stencilWriteMask?: number + depthBias?: number + depthBiasSlopeScale?: number + depthBiasClamp?: number +} +interface GPUMultisampleState { + count?: number + mask?: number + alphaToCoverageEnabled?: boolean +} +interface GPUFragmentState { + module: GPUShaderModule + entryPoint: string + constants?: Record + targets: GPUColorTargetState[] +} +interface GPUColorTargetState { + format: string + blend: GPUBlendState + writeMask?: number +} +interface GPUBlendState { + color: GPUBlendComponent + alpha: GPUBlendComponent +} +interface GPUBlendComponent { + operation?: string + srcFactor?: string + dstFactor?: string +} +interface GPURenderPassEncoder { + setPipeline(pipeline: GPURenderPipeline): void + draw(vertexCount: number, instanceCount?: number, firstVertex?: number, firstInstance?: number): void + end(): void +} +interface GPURenderPassDescriptor { + label?: string + colorAttachments: GPURenderPassColorAttachment[] + depthStencilAttachment?: GPURenderPassDepthStencilAttachment + occlusionQuerySet?: GPUQuerySet + timestampWrites?: GPURenderPassTimestampWrites + maxDrawCount?: number | bigint +} +interface GPURenderPassColorAttachment { + view: GPUTextureView + depthSlice?: number + resolveTarget?: GPUTextureView + clearValue?: number[] | GPUColorDict + loadOp: string + storeOp: string +} +interface GPUColorDict { + r: number + g: number + b: number + a: number +} +interface GPURenderPassDepthStencilAttachment { + view: GPUTextureView + depthClearValue?: number + depthLoadOp?: string + depthStoreOp?: string + depthReadOnly?: boolean + stencilClearValue?: number + stencilLoadOp?: string + stencilStoreOp?: string + stencilReadOnly?: boolean +} +interface GPURenderPassTimestampWrites { + querySet: GPUQuerySet + beginningOfPassWriteIndex?: number + endOfPassWriteIndex?: number +} +interface GPUImageCopyTexture { + texture: GPUTexture + mipLevel?: number + origin?: number[] | GPUOrigin3DDict + aspect?: string +} +interface GPUImageCopyBuffer { + buffer: GPUBuffer + offset?: number | bigint + bytesPerRow?: number + rowsPerImage?: number +} +interface GPUOrigin3DDict { + x?: number + y?: number + z?: number +} +/* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource) */ +declare class EventSource extends EventTarget { + constructor(url: string, init?: EventSourceEventSourceInit) + /** + * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close) + */ + close(): void + /** + * Returns the URL providing the event stream. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url) + */ + get url(): string + /** + * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials) + */ + get withCredentials(): boolean + /** + * Returns the state of this EventSource object's connection. It can have the values described below. + * + * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState) + */ + get readyState(): number + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ + get onopen(): any | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */ + set onopen(value: any | null) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ + get onmessage(): any | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */ + set onmessage(value: any | null) + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ + get onerror(): any | null + /* [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */ + set onerror(value: any | null) + static readonly CONNECTING: number + static readonly OPEN: number + static readonly CLOSED: number + static from(stream: ReadableStream): EventSource +} +interface EventSourceEventSourceInit { + withCredentials?: boolean + fetcher?: Fetcher +} +interface Container { + get running(): boolean + start(options?: ContainerStartupOptions): void + monitor(): Promise + destroy(error?: any): Promise + signal(signo: number): void + getTcpPort(port: number): Fetcher +} +interface ContainerStartupOptions { + entrypoint?: string[] + enableInternet: boolean + env?: Record +} +type AiImageClassificationInput = { + image: number[] +} +type AiImageClassificationOutput = { + score?: number + label?: string +}[] +declare abstract class BaseAiImageClassification { + inputs: AiImageClassificationInput + postProcessedOutputs: AiImageClassificationOutput +} +type AiImageToTextInput = { + image: number[] + prompt?: string + max_tokens?: number + temperature?: number + top_p?: number + top_k?: number + seed?: number + repetition_penalty?: number + frequency_penalty?: number + presence_penalty?: number + raw?: boolean + messages?: RoleScopedChatInput[] +} +type AiImageToTextOutput = { + description: string +} +declare abstract class BaseAiImageToText { + inputs: AiImageToTextInput + postProcessedOutputs: AiImageToTextOutput +} +type AiObjectDetectionInput = { + image: number[] +} +type AiObjectDetectionOutput = { + score?: number + label?: string +}[] +declare abstract class BaseAiObjectDetection { + inputs: AiObjectDetectionInput + postProcessedOutputs: AiObjectDetectionOutput +} +type AiSentenceSimilarityInput = { + source: string + sentences: string[] +} +type AiSentenceSimilarityOutput = number[] +declare abstract class BaseAiSentenceSimilarity { + inputs: AiSentenceSimilarityInput + postProcessedOutputs: AiSentenceSimilarityOutput +} +type AiAutomaticSpeechRecognitionInput = { + audio: number[] +} +type AiAutomaticSpeechRecognitionOutput = { + text?: string + words?: { + word: string + start: number + end: number + }[] + vtt?: string +} +declare abstract class BaseAiAutomaticSpeechRecognition { + inputs: AiAutomaticSpeechRecognitionInput + postProcessedOutputs: AiAutomaticSpeechRecognitionOutput +} +type AiSummarizationInput = { + input_text: string + max_length?: number +} +type AiSummarizationOutput = { + summary: string +} +declare abstract class BaseAiSummarization { + inputs: AiSummarizationInput + postProcessedOutputs: AiSummarizationOutput +} +type AiTextClassificationInput = { + text: string +} +type AiTextClassificationOutput = { + score?: number + label?: string +}[] +declare abstract class BaseAiTextClassification { + inputs: AiTextClassificationInput + postProcessedOutputs: AiTextClassificationOutput +} +type AiTextEmbeddingsInput = { + text: string | string[] +} +type AiTextEmbeddingsOutput = { + shape: number[] + data: number[][] +} +declare abstract class BaseAiTextEmbeddings { + inputs: AiTextEmbeddingsInput + postProcessedOutputs: AiTextEmbeddingsOutput +} +type RoleScopedChatInput = { + role: "user" | "assistant" | "system" | "tool" | (string & NonNullable) + content: string + name?: string +} +type AiTextGenerationToolLegacyInput = { + name: string + description: string + parameters?: { + type: "object" | (string & NonNullable) + properties: { + [key: string]: { + type: string + description?: string + } + } + required: string[] + } +} +type AiTextGenerationToolInput = { + type: "function" | (string & NonNullable) + function: { + name: string + description: string + parameters?: { + type: "object" | (string & NonNullable) + properties: { + [key: string]: { + type: string + description?: string + } + } + required: string[] + } + } +} +type AiTextGenerationFunctionsInput = { + name: string + code: string +} +type AiTextGenerationResponseFormat = { + type: string + json_schema?: any +} +type AiTextGenerationInput = { + prompt?: string + raw?: boolean + stream?: boolean + max_tokens?: number + temperature?: number + top_p?: number + top_k?: number + seed?: number + repetition_penalty?: number + frequency_penalty?: number + presence_penalty?: number + messages?: RoleScopedChatInput[] + response_format?: AiTextGenerationResponseFormat + tools?: AiTextGenerationToolInput[] | AiTextGenerationToolLegacyInput[] | (object & NonNullable) + functions?: AiTextGenerationFunctionsInput[] +} +type AiTextGenerationOutput = + | { + response?: string + tool_calls?: { + name: string + arguments: unknown + }[] + } + | ReadableStream +declare abstract class BaseAiTextGeneration { + inputs: AiTextGenerationInput + postProcessedOutputs: AiTextGenerationOutput +} +type AiTextToSpeechInput = { + prompt: string + lang?: string +} +type AiTextToSpeechOutput = + | Uint8Array + | { + audio: string + } +declare abstract class BaseAiTextToSpeech { + inputs: AiTextToSpeechInput + postProcessedOutputs: AiTextToSpeechOutput +} +type AiTextToImageInput = { + prompt: string + negative_prompt?: string + height?: number + width?: number + image?: number[] + image_b64?: string + mask?: number[] + num_steps?: number + strength?: number + guidance?: number + seed?: number +} +type AiTextToImageOutput = ReadableStream +declare abstract class BaseAiTextToImage { + inputs: AiTextToImageInput + postProcessedOutputs: AiTextToImageOutput +} +type AiTranslationInput = { + text: string + target_lang: string + source_lang?: string +} +type AiTranslationOutput = { + translated_text?: string +} +declare abstract class BaseAiTranslation { + inputs: AiTranslationInput + postProcessedOutputs: AiTranslationOutput +} +type Ai_Cf_Openai_Whisper_Input = + | string + | { + /** + * An array of integers that represent the audio data constrained to 8-bit unsigned integer values + */ + audio: number[] + } +interface Ai_Cf_Openai_Whisper_Output { + /** + * The transcription + */ + text: string + word_count?: number + words?: { + word?: string + /** + * The second this word begins in the recording + */ + start?: number + /** + * The ending second when the word completes + */ + end?: number + }[] + vtt?: string +} +declare abstract class Base_Ai_Cf_Openai_Whisper { + inputs: Ai_Cf_Openai_Whisper_Input + postProcessedOutputs: Ai_Cf_Openai_Whisper_Output +} +type Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Input = + | string + | { + /** + * The input text prompt for the model to generate a response. + */ + prompt?: string + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean + /** + * Controls the creativity of the AI's responses by adjusting how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number + /** + * Random seed for reproducibility of the generation. + */ + seed?: number + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number + image: number[] | (string & NonNullable) + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number + } +interface Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Output { + description?: string +} +declare abstract class Base_Ai_Cf_Unum_Uform_Gen2_Qwen_500M { + inputs: Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Input + postProcessedOutputs: Ai_Cf_Unum_Uform_Gen2_Qwen_500M_Output +} +type Ai_Cf_Openai_Whisper_Tiny_En_Input = + | string + | { + /** + * An array of integers that represent the audio data constrained to 8-bit unsigned integer values + */ + audio: number[] + } +interface Ai_Cf_Openai_Whisper_Tiny_En_Output { + /** + * The transcription + */ + text: string + word_count?: number + words?: { + word?: string + /** + * The second this word begins in the recording + */ + start?: number + /** + * The ending second when the word completes + */ + end?: number + }[] + vtt?: string +} +declare abstract class Base_Ai_Cf_Openai_Whisper_Tiny_En { + inputs: Ai_Cf_Openai_Whisper_Tiny_En_Input + postProcessedOutputs: Ai_Cf_Openai_Whisper_Tiny_En_Output +} +interface Ai_Cf_Openai_Whisper_Large_V3_Turbo_Input { + /** + * Base64 encoded value of the audio data. + */ + audio: string + /** + * Supported tasks are 'translate' or 'transcribe'. + */ + task?: string + /** + * The language of the audio being transcribed or translated. + */ + language?: string + /** + * Preprocess the audio with a voice activity detection model. + */ + vad_filter?: string + /** + * A text prompt to help provide context to the model on the contents of the audio. + */ + initial_prompt?: string + /** + * The prefix it appended the the beginning of the output of the transcription and can guide the transcription result. + */ + prefix?: string +} +interface Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output { + transcription_info?: { + /** + * The language of the audio being transcribed or translated. + */ + language?: string + /** + * The confidence level or probability of the detected language being accurate, represented as a decimal between 0 and 1. + */ + language_probability?: number + /** + * The total duration of the original audio file, in seconds. + */ + duration?: number + /** + * The duration of the audio after applying Voice Activity Detection (VAD) to remove silent or irrelevant sections, in seconds. + */ + duration_after_vad?: number + } + /** + * The complete transcription of the audio. + */ + text: string + /** + * The total number of words in the transcription. + */ + word_count?: number + segments?: { + /** + * The starting time of the segment within the audio, in seconds. + */ + start?: number + /** + * The ending time of the segment within the audio, in seconds. + */ + end?: number + /** + * The transcription of the segment. + */ + text?: string + /** + * The temperature used in the decoding process, controlling randomness in predictions. Lower values result in more deterministic outputs. + */ + temperature?: number + /** + * The average log probability of the predictions for the words in this segment, indicating overall confidence. + */ + avg_logprob?: number + /** + * The compression ratio of the input to the output, measuring how much the text was compressed during the transcription process. + */ + compression_ratio?: number + /** + * The probability that the segment contains no speech, represented as a decimal between 0 and 1. + */ + no_speech_prob?: number + words?: { + /** + * The individual word transcribed from the audio. + */ + word?: string + /** + * The starting time of the word within the audio, in seconds. + */ + start?: number + /** + * The ending time of the word within the audio, in seconds. + */ + end?: number + }[] + }[] + /** + * The transcription in WebVTT format, which includes timing and text information for use in subtitles. + */ + vtt?: string +} +declare abstract class Base_Ai_Cf_Openai_Whisper_Large_V3_Turbo { + inputs: Ai_Cf_Openai_Whisper_Large_V3_Turbo_Input + postProcessedOutputs: Ai_Cf_Openai_Whisper_Large_V3_Turbo_Output +} +interface Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Input { + /** + * A text description of the image you want to generate. + */ + prompt: string + /** + * The number of diffusion steps; higher values can improve quality but take longer. + */ + steps?: number +} +interface Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Output { + /** + * The generated image in Base64 format. + */ + image?: string +} +declare abstract class Base_Ai_Cf_Black_Forest_Labs_Flux_1_Schnell { + inputs: Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Input + postProcessedOutputs: Ai_Cf_Black_Forest_Labs_Flux_1_Schnell_Output +} +type Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Input = Prompt | Messages +interface Prompt { + /** + * The input text prompt for the model to generate a response. + */ + prompt: string + image?: number[] | (string & NonNullable) + /** + * If true, a chat template is not applied and you must adhere to the specific model's expected formatting. + */ + raw?: boolean + /** + * If true, the response will be streamed back incrementally using SSE, Server Sent Events. + */ + stream?: boolean + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number + /** + * Adjusts the creativity of the AI's responses by controlling how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number + /** + * Random seed for reproducibility of the generation. + */ + seed?: number + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number + /** + * Name of the LoRA (Low-Rank Adaptation) model to fine-tune the base model. + */ + lora?: string +} +interface Messages { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender (e.g., 'user', 'assistant', 'system', 'tool'). + */ + role: string + /** + * The content of the message as a string. + */ + content: string + }[] + image?: number[] | string + functions?: { + name: string + code: string + }[] + /** + * A list of tools available for the assistant to use. + */ + tools?: ( + | { + /** + * The name of the tool. More descriptive the better. + */ + name: string + /** + * A brief description of what the tool does. + */ + description: string + /** + * Schema defining the parameters accepted by the tool. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string + /** + * List of required parameter names. + */ + required?: string[] + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string + /** + * A description of the expected parameter. + */ + description: string + } + } + } + } + | { + /** + * Specifies the type of tool (e.g., 'function'). + */ + type: string + /** + * Details of the function tool. + */ + function: { + /** + * The name of the function. + */ + name: string + /** + * A brief description of what the function does. + */ + description: string + /** + * Schema defining the parameters accepted by the function. + */ + parameters: { + /** + * The type of the parameters object (usually 'object'). + */ + type: string + /** + * List of required parameter names. + */ + required?: string[] + /** + * Definitions of each parameter. + */ + properties: { + [k: string]: { + /** + * The data type of the parameter. + */ + type: string + /** + * A description of the expected parameter. + */ + description: string + } + } + } + } + } + )[] + /** + * If true, the response will be streamed back incrementally. + */ + stream?: boolean + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number + /** + * Controls the creativity of the AI's responses by adjusting how many possible words it considers. Lower values make outputs more predictable; higher values allow for more varied and creative responses. + */ + top_p?: number + /** + * Limits the AI to choose from the top 'k' most probable words. Lower values make responses more focused; higher values introduce more variety and potential surprises. + */ + top_k?: number + /** + * Random seed for reproducibility of the generation. + */ + seed?: number + /** + * Penalty for repeated tokens; higher values discourage repetition. + */ + repetition_penalty?: number + /** + * Decreases the likelihood of the model repeating the same lines verbatim. + */ + frequency_penalty?: number + /** + * Increases the likelihood of the model introducing new topics. + */ + presence_penalty?: number +} +type Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Output = + | { + /** + * The generated text response from the model + */ + response?: string + /** + * An array of tool calls requests made during the response generation + */ + tool_calls?: { + /** + * The arguments passed to be passed to the tool call request + */ + arguments?: object + /** + * The name of the tool to be called + */ + name?: string + }[] + } + | ReadableStream +declare abstract class Base_Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct { + inputs: Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Input + postProcessedOutputs: Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct_Output +} +interface Ai_Cf_Meta_Llama_Guard_3_8B_Input { + /** + * An array of message objects representing the conversation history. + */ + messages: { + /** + * The role of the message sender must alternate between 'user' and 'assistant'. + */ + role: "user" | "assistant" + /** + * The content of the message as a string. + */ + content: string + }[] + /** + * The maximum number of tokens to generate in the response. + */ + max_tokens?: number + /** + * Controls the randomness of the output; higher values produce more random results. + */ + temperature?: number + /** + * Dictate the output format of the generated response. + */ + response_format?: { + /** + * Set to json_object to process and output generated text as JSON. + */ + type?: string + } +} +interface Ai_Cf_Meta_Llama_Guard_3_8B_Output { + response?: + | string + | { + /** + * Whether the conversation is safe or not. + */ + safe?: boolean + /** + * A list of what hazard categories predicted for the conversation, if the conversation is deemed unsafe. + */ + categories?: string[] + } + /** + * Usage statistics for the inference request + */ + usage?: { + /** + * Total number of tokens in input + */ + prompt_tokens?: number + /** + * Total number of tokens in output + */ + completion_tokens?: number + /** + * Total number of input and output tokens + */ + total_tokens?: number + } +} +declare abstract class Base_Ai_Cf_Meta_Llama_Guard_3_8B { + inputs: Ai_Cf_Meta_Llama_Guard_3_8B_Input + postProcessedOutputs: Ai_Cf_Meta_Llama_Guard_3_8B_Output +} +interface AiModels { + "@cf/huggingface/distilbert-sst-2-int8": BaseAiTextClassification + "@cf/stabilityai/stable-diffusion-xl-base-1.0": BaseAiTextToImage + "@cf/runwayml/stable-diffusion-v1-5-inpainting": BaseAiTextToImage + "@cf/runwayml/stable-diffusion-v1-5-img2img": BaseAiTextToImage + "@cf/lykon/dreamshaper-8-lcm": BaseAiTextToImage + "@cf/bytedance/stable-diffusion-xl-lightning": BaseAiTextToImage + "@cf/baai/bge-base-en-v1.5": BaseAiTextEmbeddings + "@cf/baai/bge-small-en-v1.5": BaseAiTextEmbeddings + "@cf/baai/bge-large-en-v1.5": BaseAiTextEmbeddings + "@cf/microsoft/resnet-50": BaseAiImageClassification + "@cf/facebook/detr-resnet-50": BaseAiObjectDetection + "@cf/meta/llama-2-7b-chat-int8": BaseAiTextGeneration + "@cf/mistral/mistral-7b-instruct-v0.1": BaseAiTextGeneration + "@cf/meta/llama-2-7b-chat-fp16": BaseAiTextGeneration + "@hf/thebloke/llama-2-13b-chat-awq": BaseAiTextGeneration + "@hf/thebloke/mistral-7b-instruct-v0.1-awq": BaseAiTextGeneration + "@hf/thebloke/zephyr-7b-beta-awq": BaseAiTextGeneration + "@hf/thebloke/openhermes-2.5-mistral-7b-awq": BaseAiTextGeneration + "@hf/thebloke/neural-chat-7b-v3-1-awq": BaseAiTextGeneration + "@hf/thebloke/llamaguard-7b-awq": BaseAiTextGeneration + "@hf/thebloke/deepseek-coder-6.7b-base-awq": BaseAiTextGeneration + "@hf/thebloke/deepseek-coder-6.7b-instruct-awq": BaseAiTextGeneration + "@cf/deepseek-ai/deepseek-math-7b-instruct": BaseAiTextGeneration + "@cf/defog/sqlcoder-7b-2": BaseAiTextGeneration + "@cf/openchat/openchat-3.5-0106": BaseAiTextGeneration + "@cf/tiiuae/falcon-7b-instruct": BaseAiTextGeneration + "@cf/thebloke/discolm-german-7b-v1-awq": BaseAiTextGeneration + "@cf/qwen/qwen1.5-0.5b-chat": BaseAiTextGeneration + "@cf/qwen/qwen1.5-7b-chat-awq": BaseAiTextGeneration + "@cf/qwen/qwen1.5-14b-chat-awq": BaseAiTextGeneration + "@cf/tinyllama/tinyllama-1.1b-chat-v1.0": BaseAiTextGeneration + "@cf/microsoft/phi-2": BaseAiTextGeneration + "@cf/qwen/qwen1.5-1.8b-chat": BaseAiTextGeneration + "@cf/mistral/mistral-7b-instruct-v0.2-lora": BaseAiTextGeneration + "@hf/nousresearch/hermes-2-pro-mistral-7b": BaseAiTextGeneration + "@hf/nexusflow/starling-lm-7b-beta": BaseAiTextGeneration + "@hf/google/gemma-7b-it": BaseAiTextGeneration + "@cf/meta-llama/llama-2-7b-chat-hf-lora": BaseAiTextGeneration + "@cf/google/gemma-2b-it-lora": BaseAiTextGeneration + "@cf/google/gemma-7b-it-lora": BaseAiTextGeneration + "@hf/mistral/mistral-7b-instruct-v0.2": BaseAiTextGeneration + "@cf/meta/llama-3-8b-instruct": BaseAiTextGeneration + "@cf/fblgit/una-cybertron-7b-v2-bf16": BaseAiTextGeneration + "@cf/meta/llama-3-8b-instruct-awq": BaseAiTextGeneration + "@hf/meta-llama/meta-llama-3-8b-instruct": BaseAiTextGeneration + "@cf/meta/llama-3.1-8b-instruct": BaseAiTextGeneration + "@cf/meta/llama-3.1-8b-instruct-fp8": BaseAiTextGeneration + "@cf/meta/llama-3.1-8b-instruct-awq": BaseAiTextGeneration + "@cf/meta/llama-3.2-3b-instruct": BaseAiTextGeneration + "@cf/meta/llama-3.2-1b-instruct": BaseAiTextGeneration + "@cf/meta/llama-3.3-70b-instruct-fp8-fast": BaseAiTextGeneration + "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b": BaseAiTextGeneration + "@cf/meta/m2m100-1.2b": BaseAiTranslation + "@cf/facebook/bart-large-cnn": BaseAiSummarization + "@cf/llava-hf/llava-1.5-7b-hf": BaseAiImageToText + "@cf/openai/whisper": Base_Ai_Cf_Openai_Whisper + "@cf/unum/uform-gen2-qwen-500m": Base_Ai_Cf_Unum_Uform_Gen2_Qwen_500M + "@cf/openai/whisper-tiny-en": Base_Ai_Cf_Openai_Whisper_Tiny_En + "@cf/openai/whisper-large-v3-turbo": Base_Ai_Cf_Openai_Whisper_Large_V3_Turbo + "@cf/black-forest-labs/flux-1-schnell": Base_Ai_Cf_Black_Forest_Labs_Flux_1_Schnell + "@cf/meta/llama-3.2-11b-vision-instruct": Base_Ai_Cf_Meta_Llama_3_2_11B_Vision_Instruct + "@cf/meta/llama-guard-3-8b": Base_Ai_Cf_Meta_Llama_Guard_3_8B +} +type AiOptions = { + gateway?: GatewayOptions + returnRawResponse?: boolean + prefix?: string + extraHeaders?: object +} +type ConversionResponse = { + name: string + mimeType: string + format: "markdown" + tokens: number + data: string +} +type AiModelsSearchParams = { + author?: string + hide_experimental?: boolean + page?: number + per_page?: number + search?: string + source?: number + task?: string +} +type AiModelsSearchObject = { + id: string + source: number + name: string + description: string + task: { + id: string + name: string + description: string + } + tags: string[] + properties: { + property_id: string + value: string + }[] +} +interface InferenceUpstreamError extends Error {} +interface AiInternalError extends Error {} +type AiModelListType = Record +declare abstract class Ai { + aiGatewayLogId: string | null + gateway(gatewayId: string): AiGateway + run( + model: Name, + inputs: AiModelList[Name]["inputs"], + options?: Options, + ): Promise< + Options extends { + returnRawResponse: true + } + ? Response + : AiModelList[Name]["postProcessedOutputs"] + > + public models(params?: AiModelsSearchParams): Promise + public toMarkdown( + files: { + name: string + blob: Blob + }[], + options?: { + gateway?: GatewayOptions + }, + ): Promise + public toMarkdown( + files: { + name: string + blob: Blob + }, + options?: { + gateway?: GatewayOptions + }, + ): Promise +} +type GatewayOptions = { + id: string + cacheKey?: string + cacheTtl?: number + skipCache?: boolean + metadata?: Record + collectLog?: boolean +} +type AiGatewayPatchLog = { + score?: number | null + feedback?: -1 | 1 | null + metadata?: Record | null +} +type AiGatewayLog = { + id: string + provider: string + model: string + model_type?: string + path: string + duration: number + request_type?: string + request_content_type?: string + status_code: number + response_content_type?: string + success: boolean + cached: boolean + tokens_in?: number + tokens_out?: number + metadata?: Record + step?: number + cost?: number + custom_cost?: boolean + request_size: number + request_head?: string + request_head_complete: boolean + response_size: number + response_head?: string + response_head_complete: boolean + created_at: Date +} +type AIGatewayProviders = + | "workers-ai" + | "anthropic" + | "aws-bedrock" + | "azure-openai" + | "google-vertex-ai" + | "huggingface" + | "openai" + | "perplexity-ai" + | "replicate" + | "groq" + | "cohere" + | "google-ai-studio" + | "mistral" + | "grok" + | "openrouter" +type AIGatewayHeaders = { + "cf-aig-metadata": Record | string + "cf-aig-custom-cost": + | { + per_token_in?: number + per_token_out?: number + } + | { + total_cost?: number + } + | string + "cf-aig-cache-ttl": number | string + "cf-aig-skip-cache": boolean | string + "cf-aig-cache-key": string + "cf-aig-collect-log": boolean | string + Authorization: string + "Content-Type": string + [key: string]: string | number | boolean | object +} +type AIGatewayUniversalRequest = { + provider: AIGatewayProviders | string // eslint-disable-line + endpoint: string + headers: Partial + query: unknown +} +interface AiGatewayInternalError extends Error {} +interface AiGatewayLogNotFound extends Error {} +declare abstract class AiGateway { + patchLog(logId: string, data: AiGatewayPatchLog): Promise + getLog(logId: string): Promise + run(data: AIGatewayUniversalRequest | AIGatewayUniversalRequest[]): Promise +} +interface BasicImageTransformations { + /** + * Maximum width in image pixels. The value must be an integer. + */ + width?: number + /** + * Maximum height in image pixels. The value must be an integer. + */ + height?: number + /** + * Resizing mode as a string. It affects interpretation of width and height + * options: + * - scale-down: Similar to contain, but the image is never enlarged. If + * the image is larger than given width or height, it will be resized. + * Otherwise its original size will be kept. + * - contain: Resizes to maximum size that fits within the given width and + * height. If only a single dimension is given (e.g. only width), the + * image will be shrunk or enlarged to exactly match that dimension. + * Aspect ratio is always preserved. + * - cover: Resizes (shrinks or enlarges) to fill the entire area of width + * and height. If the image has an aspect ratio different from the ratio + * of width and height, it will be cropped to fit. + * - crop: The image will be shrunk and cropped to fit within the area + * specified by width and height. The image will not be enlarged. For images + * smaller than the given dimensions it's the same as scale-down. For + * images larger than the given dimensions, it's the same as cover. + * See also trim. + * - pad: Resizes to the maximum size that fits within the given width and + * height, and then fills the remaining area with a background color + * (white by default). Use of this mode is not recommended, as the same + * effect can be more efficiently achieved with the contain mode and the + * CSS object-fit: contain property. + */ + fit?: "scale-down" | "contain" | "cover" | "crop" | "pad" + /** + * When cropping with fit: "cover", this defines the side or point that should + * be left uncropped. The value is either a string + * "left", "right", "top", "bottom", "auto", or "center" (the default), + * or an object {x, y} containing focal point coordinates in the original + * image expressed as fractions ranging from 0.0 (top or left) to 1.0 + * (bottom or right), 0.5 being the center. {fit: "cover", gravity: "top"} will + * crop bottom or left and right sides as necessary, but won’t crop anything + * from the top. {fit: "cover", gravity: {x:0.5, y:0.2}} will crop each side to + * preserve as much as possible around a point at 20% of the height of the + * source image. + */ + gravity?: "left" | "right" | "top" | "bottom" | "center" | "auto" | BasicImageTransformationsGravityCoordinates + /** + * Background color to add underneath the image. Applies only to images with + * transparency (such as PNG). Accepts any CSS color (#RRGGBB, rgba(…), + * hsl(…), etc.) + */ + background?: string + /** + * Number of degrees (90, 180, 270) to rotate the image by. width and height + * options refer to axes after rotation. + */ + rotate?: 0 | 90 | 180 | 270 | 360 +} +interface BasicImageTransformationsGravityCoordinates { + x: number + y: number +} +/** + * In addition to the properties you can set in the RequestInit dict + * that you pass as an argument to the Request constructor, you can + * set certain properties of a `cf` object to control how Cloudflare + * features are applied to that new Request. + * + * Note: Currently, these properties cannot be tested in the + * playground. + */ +interface RequestInitCfProperties extends Record { + cacheEverything?: boolean + /** + * A request's cache key is what determines if two requests are + * "the same" for caching purposes. If a request has the same cache key + * as some previous request, then we can serve the same cached response for + * both. (e.g. 'some-key') + * + * Only available for Enterprise customers. + */ + cacheKey?: string + /** + * This allows you to append additional Cache-Tag response headers + * to the origin response without modifications to the origin server. + * This will allow for greater control over the Purge by Cache Tag feature + * utilizing changes only in the Workers process. + * + * Only available for Enterprise customers. + */ + cacheTags?: string[] + /** + * Force response to be cached for a given number of seconds. (e.g. 300) + */ + cacheTtl?: number + /** + * Force response to be cached for a given number of seconds based on the Origin status code. + * (e.g. { '200-299': 86400, '404': 1, '500-599': 0 }) + */ + cacheTtlByStatus?: Record + scrapeShield?: boolean + apps?: boolean + image?: RequestInitCfPropertiesImage + minify?: RequestInitCfPropertiesImageMinify + mirage?: boolean + polish?: "lossy" | "lossless" | "off" + r2?: RequestInitCfPropertiesR2 + /** + * Redirects the request to an alternate origin server. You can use this, + * for example, to implement load balancing across several origins. + * (e.g.us-east.example.com) + * + * Note - For security reasons, the hostname set in resolveOverride must + * be proxied on the same Cloudflare zone of the incoming request. + * Otherwise, the setting is ignored. CNAME hosts are allowed, so to + * resolve to a host under a different domain or a DNS only domain first + * declare a CNAME record within your own zone’s DNS mapping to the + * external hostname, set proxy on Cloudflare, then set resolveOverride + * to point to that CNAME record. + */ + resolveOverride?: string +} +interface RequestInitCfPropertiesImageDraw extends BasicImageTransformations { + /** + * Absolute URL of the image file to use for the drawing. It can be any of + * the supported file formats. For drawing of watermarks or non-rectangular + * overlays we recommend using PNG or WebP images. + */ + url: string + /** + * Floating-point number between 0 (transparent) and 1 (opaque). + * For example, opacity: 0.5 makes overlay semitransparent. + */ + opacity?: number + /** + * - If set to true, the overlay image will be tiled to cover the entire + * area. This is useful for stock-photo-like watermarks. + * - If set to "x", the overlay image will be tiled horizontally only + * (form a line). + * - If set to "y", the overlay image will be tiled vertically only + * (form a line). + */ + repeat?: true | "x" | "y" + /** + * Position of the overlay image relative to a given edge. Each property is + * an offset in pixels. 0 aligns exactly to the edge. For example, left: 10 + * positions left side of the overlay 10 pixels from the left edge of the + * image it's drawn over. bottom: 0 aligns bottom of the overlay with bottom + * of the background image. + * + * Setting both left & right, or both top & bottom is an error. + * + * If no position is specified, the image will be centered. + */ + top?: number + left?: number + bottom?: number + right?: number +} +interface RequestInitCfPropertiesImage extends BasicImageTransformations { + /** + * Device Pixel Ratio. Default 1. Multiplier for width/height that makes it + * easier to specify higher-DPI sizes in . + */ + dpr?: number + /** + * An object with four properties {left, top, right, bottom} that specify + * a number of pixels to cut off on each side. Allows removal of borders + * or cutting out a specific fragment of an image. Trimming is performed + * before resizing or rotation. Takes dpr into account. + */ + trim?: { + left?: number + top?: number + right?: number + bottom?: number + } + /** + * Quality setting from 1-100 (useful values are in 60-90 range). Lower values + * make images look worse, but load faster. The default is 85. It applies only + * to JPEG and WebP images. It doesn’t have any effect on PNG. + */ + quality?: number + /** + * Output format to generate. It can be: + * - avif: generate images in AVIF format. + * - webp: generate images in Google WebP format. Set quality to 100 to get + * the WebP-lossless format. + * - json: instead of generating an image, outputs information about the + * image, in JSON format. The JSON object will contain image size + * (before and after resizing), source image’s MIME type, file size, etc. + * - jpeg: generate images in JPEG format. + * - png: generate images in PNG format. + */ + format?: "avif" | "webp" | "json" | "jpeg" | "png" + /** + * Whether to preserve animation frames from input files. Default is true. + * Setting it to false reduces animations to still images. This setting is + * recommended when enlarging images or processing arbitrary user content, + * because large GIF animations can weigh tens or even hundreds of megabytes. + * It is also useful to set anim:false when using format:"json" to get the + * response quicker without the number of frames. + */ + anim?: boolean + /** + * What EXIF data should be preserved in the output image. Note that EXIF + * rotation and embedded color profiles are always applied ("baked in" into + * the image), and aren't affected by this option. Note that if the Polish + * feature is enabled, all metadata may have been removed already and this + * option may have no effect. + * - keep: Preserve most of EXIF metadata, including GPS location if there's + * any. + * - copyright: Only keep the copyright tag, and discard everything else. + * This is the default behavior for JPEG files. + * - none: Discard all invisible EXIF metadata. Currently WebP and PNG + * output formats always discard metadata. + */ + metadata?: "keep" | "copyright" | "none" + /** + * Strength of sharpening filter to apply to the image. Floating-point + * number between 0 (no sharpening, default) and 10 (maximum). 1.0 is a + * recommended value for downscaled images. + */ + sharpen?: number + /** + * Radius of a blur filter (approximate gaussian). Maximum supported radius + * is 250. + */ + blur?: number + /** + * Overlays are drawn in the order they appear in the array (last array + * entry is the topmost layer). + */ + draw?: RequestInitCfPropertiesImageDraw[] + /** + * Fetching image from authenticated origin. Setting this property will + * pass authentication headers (Authorization, Cookie, etc.) through to + * the origin. + */ + "origin-auth"?: "share-publicly" + /** + * Adds a border around the image. The border is added after resizing. Border + * width takes dpr into account, and can be specified either using a single + * width property, or individually for each side. + */ + border?: + | { + color: string + width: number + } + | { + color: string + top: number + right: number + bottom: number + left: number + } + /** + * Increase brightness by a factor. A value of 1.0 equals no change, a value + * of 0.5 equals half brightness, and a value of 2.0 equals twice as bright. + * 0 is ignored. + */ + brightness?: number + /** + * Increase contrast by a factor. A value of 1.0 equals no change, a value of + * 0.5 equals low contrast, and a value of 2.0 equals high contrast. 0 is + * ignored. + */ + contrast?: number + /** + * Increase exposure by a factor. A value of 1.0 equals no change, a value of + * 0.5 darkens the image, and a value of 2.0 lightens the image. 0 is ignored. + */ + gamma?: number + /** + * Slightly reduces latency on a cache miss by selecting a + * quickest-to-compress file format, at a cost of increased file size and + * lower image quality. It will usually override the format option and choose + * JPEG over WebP or AVIF. We do not recommend using this option, except in + * unusual circumstances like resizing uncacheable dynamically-generated + * images. + */ + compression?: "fast" +} +interface RequestInitCfPropertiesImageMinify { + javascript?: boolean + css?: boolean + html?: boolean +} +interface RequestInitCfPropertiesR2 { + /** + * Colo id of bucket that an object is stored in + */ + bucketColoId?: number +} +/** + * Request metadata provided by Cloudflare's edge. + */ +type IncomingRequestCfProperties = IncomingRequestCfPropertiesBase & + IncomingRequestCfPropertiesBotManagementEnterprise & + IncomingRequestCfPropertiesCloudflareForSaaSEnterprise & + IncomingRequestCfPropertiesGeographicInformation & + IncomingRequestCfPropertiesCloudflareAccessOrApiShield +interface IncomingRequestCfPropertiesBase extends Record { + /** + * [ASN](https://www.iana.org/assignments/as-numbers/as-numbers.xhtml) of the incoming request. + * + * @example 395747 + */ + asn: number + /** + * The organization which owns the ASN of the incoming request. + * + * @example "Google Cloud" + */ + asOrganization: string + /** + * The original value of the `Accept-Encoding` header if Cloudflare modified it. + * + * @example "gzip, deflate, br" + */ + clientAcceptEncoding?: string + /** + * The number of milliseconds it took for the request to reach your worker. + * + * @example 22 + */ + clientTcpRtt?: number + /** + * The three-letter [IATA](https://en.wikipedia.org/wiki/IATA_airport_code) + * airport code of the data center that the request hit. + * + * @example "DFW" + */ + colo: string + /** + * Represents the upstream's response to a + * [TCP `keepalive` message](https://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html) + * from cloudflare. + * + * For workers with no upstream, this will always be `1`. + * + * @example 3 + */ + edgeRequestKeepAliveStatus: IncomingRequestCfPropertiesEdgeRequestKeepAliveStatus + /** + * The HTTP Protocol the request used. + * + * @example "HTTP/2" + */ + httpProtocol: string + /** + * The browser-requested prioritization information in the request object. + * + * If no information was set, defaults to the empty string `""` + * + * @example "weight=192;exclusive=0;group=3;group-weight=127" + * @default "" + */ + requestPriority: string + /** + * The TLS version of the connection to Cloudflare. + * In requests served over plaintext (without TLS), this property is the empty string `""`. + * + * @example "TLSv1.3" + */ + tlsVersion: string + /** + * The cipher for the connection to Cloudflare. + * In requests served over plaintext (without TLS), this property is the empty string `""`. + * + * @example "AEAD-AES128-GCM-SHA256" + */ + tlsCipher: string + /** + * Metadata containing the [`HELLO`](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.1.2) and [`FINISHED`](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.9) messages from this request's TLS handshake. + * + * If the incoming request was served over plaintext (without TLS) this field is undefined. + */ + tlsExportedAuthenticator?: IncomingRequestCfPropertiesExportedAuthenticatorMetadata +} +interface IncomingRequestCfPropertiesBotManagementBase { + /** + * Cloudflare’s [level of certainty](https://developers.cloudflare.com/bots/concepts/bot-score/) that a request comes from a bot, + * represented as an integer percentage between `1` (almost certainly a bot) and `99` (almost certainly human). + * + * @example 54 + */ + score: number + /** + * A boolean value that is true if the request comes from a good bot, like Google or Bing. + * Most customers choose to allow this traffic. For more details, see [Traffic from known bots](https://developers.cloudflare.com/firewall/known-issues-and-faq/#how-does-firewall-rules-handle-traffic-from-known-bots). + */ + verifiedBot: boolean + /** + * A boolean value that is true if the request originates from a + * Cloudflare-verified proxy service. + */ + corporateProxy: boolean + /** + * A boolean value that's true if the request matches [file extensions](https://developers.cloudflare.com/bots/reference/static-resources/) for many types of static resources. + */ + staticResource: boolean + /** + * List of IDs that correlate to the Bot Management heuristic detections made on a request (you can have multiple heuristic detections on the same request). + */ + detectionIds: number[] +} +interface IncomingRequestCfPropertiesBotManagement { + /** + * Results of Cloudflare's Bot Management analysis + */ + botManagement: IncomingRequestCfPropertiesBotManagementBase + /** + * Duplicate of `botManagement.score`. + * + * @deprecated + */ + clientTrustScore: number +} +interface IncomingRequestCfPropertiesBotManagementEnterprise extends IncomingRequestCfPropertiesBotManagement { + /** + * Results of Cloudflare's Bot Management analysis + */ + botManagement: IncomingRequestCfPropertiesBotManagementBase & { + /** + * A [JA3 Fingerprint](https://developers.cloudflare.com/bots/concepts/ja3-fingerprint/) to help profile specific SSL/TLS clients + * across different destination IPs, Ports, and X509 certificates. + */ + ja3Hash: string + } +} +interface IncomingRequestCfPropertiesCloudflareForSaaSEnterprise { + /** + * Custom metadata set per-host in [Cloudflare for SaaS](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/). + * + * This field is only present if you have Cloudflare for SaaS enabled on your account + * and you have followed the [required steps to enable it]((https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/domain-support/custom-metadata/)). + */ + hostMetadata: HostMetadata +} +interface IncomingRequestCfPropertiesCloudflareAccessOrApiShield { + /** + * Information about the client certificate presented to Cloudflare. + * + * This is populated when the incoming request is served over TLS using + * either Cloudflare Access or API Shield (mTLS) + * and the presented SSL certificate has a valid + * [Certificate Serial Number](https://ldapwiki.com/wiki/Certificate%20Serial%20Number) + * (i.e., not `null` or `""`). + * + * Otherwise, a set of placeholder values are used. + * + * The property `certPresented` will be set to `"1"` when + * the object is populated (i.e. the above conditions were met). + */ + tlsClientAuth: IncomingRequestCfPropertiesTLSClientAuth | IncomingRequestCfPropertiesTLSClientAuthPlaceholder +} +/** + * Metadata about the request's TLS handshake + */ +interface IncomingRequestCfPropertiesExportedAuthenticatorMetadata { + /** + * The client's [`HELLO` message](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.1.2), encoded in hexadecimal + * + * @example "44372ba35fa1270921d318f34c12f155dc87b682cf36a790cfaa3ba8737a1b5d" + */ + clientHandshake: string + /** + * The server's [`HELLO` message](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.1.2), encoded in hexadecimal + * + * @example "44372ba35fa1270921d318f34c12f155dc87b682cf36a790cfaa3ba8737a1b5d" + */ + serverHandshake: string + /** + * The client's [`FINISHED` message](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.9), encoded in hexadecimal + * + * @example "084ee802fe1348f688220e2a6040a05b2199a761f33cf753abb1b006792d3f8b" + */ + clientFinished: string + /** + * The server's [`FINISHED` message](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.9), encoded in hexadecimal + * + * @example "084ee802fe1348f688220e2a6040a05b2199a761f33cf753abb1b006792d3f8b" + */ + serverFinished: string +} +/** + * Geographic data about the request's origin. + */ +interface IncomingRequestCfPropertiesGeographicInformation { + /** + * The [ISO 3166-1 Alpha 2](https://www.iso.org/iso-3166-country-codes.html) country code the request originated from. + * + * If your worker is [configured to accept TOR connections](https://support.cloudflare.com/hc/en-us/articles/203306930-Understanding-Cloudflare-Tor-support-and-Onion-Routing), this may also be `"T1"`, indicating a request that originated over TOR. + * + * If Cloudflare is unable to determine where the request originated this property is omitted. + * + * The country code `"T1"` is used for requests originating on TOR. + * + * @example "GB" + */ + country?: Iso3166Alpha2Code | "T1" + /** + * If present, this property indicates that the request originated in the EU + * + * @example "1" + */ + isEUCountry?: "1" + /** + * A two-letter code indicating the continent the request originated from. + * + * @example "AN" + */ + continent?: ContinentCode + /** + * The city the request originated from + * + * @example "Austin" + */ + city?: string + /** + * Postal code of the incoming request + * + * @example "78701" + */ + postalCode?: string + /** + * Latitude of the incoming request + * + * @example "30.27130" + */ + latitude?: string + /** + * Longitude of the incoming request + * + * @example "-97.74260" + */ + longitude?: string + /** + * Timezone of the incoming request + * + * @example "America/Chicago" + */ + timezone?: string + /** + * If known, the ISO 3166-2 name for the first level region associated with + * the IP address of the incoming request + * + * @example "Texas" + */ + region?: string + /** + * If known, the ISO 3166-2 code for the first-level region associated with + * the IP address of the incoming request + * + * @example "TX" + */ + regionCode?: string + /** + * Metro code (DMA) of the incoming request + * + * @example "635" + */ + metroCode?: string +} +/** Data about the incoming request's TLS certificate */ +interface IncomingRequestCfPropertiesTLSClientAuth { + /** Always `"1"`, indicating that the certificate was presented */ + certPresented: "1" + /** + * Result of certificate verification. + * + * @example "FAILED:self signed certificate" + */ + certVerified: Exclude + /** The presented certificate's revokation status. + * + * - A value of `"1"` indicates the certificate has been revoked + * - A value of `"0"` indicates the certificate has not been revoked + */ + certRevoked: "1" | "0" + /** + * The certificate issuer's [distinguished name](https://knowledge.digicert.com/generalinformation/INFO1745.html) + * + * @example "CN=cloudflareaccess.com, C=US, ST=Texas, L=Austin, O=Cloudflare" + */ + certIssuerDN: string + /** + * The certificate subject's [distinguished name](https://knowledge.digicert.com/generalinformation/INFO1745.html) + * + * @example "CN=*.cloudflareaccess.com, C=US, ST=Texas, L=Austin, O=Cloudflare" + */ + certSubjectDN: string + /** + * The certificate issuer's [distinguished name](https://knowledge.digicert.com/generalinformation/INFO1745.html) ([RFC 2253](https://www.rfc-editor.org/rfc/rfc2253.html) formatted) + * + * @example "CN=cloudflareaccess.com, C=US, ST=Texas, L=Austin, O=Cloudflare" + */ + certIssuerDNRFC2253: string + /** + * The certificate subject's [distinguished name](https://knowledge.digicert.com/generalinformation/INFO1745.html) ([RFC 2253](https://www.rfc-editor.org/rfc/rfc2253.html) formatted) + * + * @example "CN=*.cloudflareaccess.com, C=US, ST=Texas, L=Austin, O=Cloudflare" + */ + certSubjectDNRFC2253: string + /** The certificate issuer's distinguished name (legacy policies) */ + certIssuerDNLegacy: string + /** The certificate subject's distinguished name (legacy policies) */ + certSubjectDNLegacy: string + /** + * The certificate's serial number + * + * @example "00936EACBE07F201DF" + */ + certSerial: string + /** + * The certificate issuer's serial number + * + * @example "2489002934BDFEA34" + */ + certIssuerSerial: string + /** + * The certificate's Subject Key Identifier + * + * @example "BB:AF:7E:02:3D:FA:A6:F1:3C:84:8E:AD:EE:38:98:EC:D9:32:32:D4" + */ + certSKI: string + /** + * The certificate issuer's Subject Key Identifier + * + * @example "BB:AF:7E:02:3D:FA:A6:F1:3C:84:8E:AD:EE:38:98:EC:D9:32:32:D4" + */ + certIssuerSKI: string + /** + * The certificate's SHA-1 fingerprint + * + * @example "6b9109f323999e52259cda7373ff0b4d26bd232e" + */ + certFingerprintSHA1: string + /** + * The certificate's SHA-256 fingerprint + * + * @example "acf77cf37b4156a2708e34c4eb755f9b5dbbe5ebb55adfec8f11493438d19e6ad3f157f81fa3b98278453d5652b0c1fd1d71e5695ae4d709803a4d3f39de9dea" + */ + certFingerprintSHA256: string + /** + * The effective starting date of the certificate + * + * @example "Dec 22 19:39:00 2018 GMT" + */ + certNotBefore: string + /** + * The effective expiration date of the certificate + * + * @example "Dec 22 19:39:00 2018 GMT" + */ + certNotAfter: string +} +/** Placeholder values for TLS Client Authorization */ +interface IncomingRequestCfPropertiesTLSClientAuthPlaceholder { + certPresented: "0" + certVerified: "NONE" + certRevoked: "0" + certIssuerDN: "" + certSubjectDN: "" + certIssuerDNRFC2253: "" + certSubjectDNRFC2253: "" + certIssuerDNLegacy: "" + certSubjectDNLegacy: "" + certSerial: "" + certIssuerSerial: "" + certSKI: "" + certIssuerSKI: "" + certFingerprintSHA1: "" + certFingerprintSHA256: "" + certNotBefore: "" + certNotAfter: "" +} +/** Possible outcomes of TLS verification */ +declare type CertVerificationStatus = + /** Authentication succeeded */ + | "SUCCESS" + /** No certificate was presented */ + | "NONE" + /** Failed because the certificate was self-signed */ + | "FAILED:self signed certificate" + /** Failed because the certificate failed a trust chain check */ + | "FAILED:unable to verify the first certificate" + /** Failed because the certificate not yet valid */ + | "FAILED:certificate is not yet valid" + /** Failed because the certificate is expired */ + | "FAILED:certificate has expired" + /** Failed for another unspecified reason */ + | "FAILED" +/** + * An upstream endpoint's response to a TCP `keepalive` message from Cloudflare. + */ +declare type IncomingRequestCfPropertiesEdgeRequestKeepAliveStatus = + | 0 /** Unknown */ + | 1 /** no keepalives (not found) */ + | 2 /** no connection re-use, opening keepalive connection failed */ + | 3 /** no connection re-use, keepalive accepted and saved */ + | 4 /** connection re-use, refused by the origin server (`TCP FIN`) */ + | 5 /** connection re-use, accepted by the origin server */ +/** ISO 3166-1 Alpha-2 codes */ +declare type Iso3166Alpha2Code = + | "AD" + | "AE" + | "AF" + | "AG" + | "AI" + | "AL" + | "AM" + | "AO" + | "AQ" + | "AR" + | "AS" + | "AT" + | "AU" + | "AW" + | "AX" + | "AZ" + | "BA" + | "BB" + | "BD" + | "BE" + | "BF" + | "BG" + | "BH" + | "BI" + | "BJ" + | "BL" + | "BM" + | "BN" + | "BO" + | "BQ" + | "BR" + | "BS" + | "BT" + | "BV" + | "BW" + | "BY" + | "BZ" + | "CA" + | "CC" + | "CD" + | "CF" + | "CG" + | "CH" + | "CI" + | "CK" + | "CL" + | "CM" + | "CN" + | "CO" + | "CR" + | "CU" + | "CV" + | "CW" + | "CX" + | "CY" + | "CZ" + | "DE" + | "DJ" + | "DK" + | "DM" + | "DO" + | "DZ" + | "EC" + | "EE" + | "EG" + | "EH" + | "ER" + | "ES" + | "ET" + | "FI" + | "FJ" + | "FK" + | "FM" + | "FO" + | "FR" + | "GA" + | "GB" + | "GD" + | "GE" + | "GF" + | "GG" + | "GH" + | "GI" + | "GL" + | "GM" + | "GN" + | "GP" + | "GQ" + | "GR" + | "GS" + | "GT" + | "GU" + | "GW" + | "GY" + | "HK" + | "HM" + | "HN" + | "HR" + | "HT" + | "HU" + | "ID" + | "IE" + | "IL" + | "IM" + | "IN" + | "IO" + | "IQ" + | "IR" + | "IS" + | "IT" + | "JE" + | "JM" + | "JO" + | "JP" + | "KE" + | "KG" + | "KH" + | "KI" + | "KM" + | "KN" + | "KP" + | "KR" + | "KW" + | "KY" + | "KZ" + | "LA" + | "LB" + | "LC" + | "LI" + | "LK" + | "LR" + | "LS" + | "LT" + | "LU" + | "LV" + | "LY" + | "MA" + | "MC" + | "MD" + | "ME" + | "MF" + | "MG" + | "MH" + | "MK" + | "ML" + | "MM" + | "MN" + | "MO" + | "MP" + | "MQ" + | "MR" + | "MS" + | "MT" + | "MU" + | "MV" + | "MW" + | "MX" + | "MY" + | "MZ" + | "NA" + | "NC" + | "NE" + | "NF" + | "NG" + | "NI" + | "NL" + | "NO" + | "NP" + | "NR" + | "NU" + | "NZ" + | "OM" + | "PA" + | "PE" + | "PF" + | "PG" + | "PH" + | "PK" + | "PL" + | "PM" + | "PN" + | "PR" + | "PS" + | "PT" + | "PW" + | "PY" + | "QA" + | "RE" + | "RO" + | "RS" + | "RU" + | "RW" + | "SA" + | "SB" + | "SC" + | "SD" + | "SE" + | "SG" + | "SH" + | "SI" + | "SJ" + | "SK" + | "SL" + | "SM" + | "SN" + | "SO" + | "SR" + | "SS" + | "ST" + | "SV" + | "SX" + | "SY" + | "SZ" + | "TC" + | "TD" + | "TF" + | "TG" + | "TH" + | "TJ" + | "TK" + | "TL" + | "TM" + | "TN" + | "TO" + | "TR" + | "TT" + | "TV" + | "TW" + | "TZ" + | "UA" + | "UG" + | "UM" + | "US" + | "UY" + | "UZ" + | "VA" + | "VC" + | "VE" + | "VG" + | "VI" + | "VN" + | "VU" + | "WF" + | "WS" + | "YE" + | "YT" + | "ZA" + | "ZM" + | "ZW" +/** The 2-letter continent codes Cloudflare uses */ +declare type ContinentCode = "AF" | "AN" | "AS" | "EU" | "NA" | "OC" | "SA" +type CfProperties = IncomingRequestCfProperties | RequestInitCfProperties +interface D1Meta { + duration: number + size_after: number + rows_read: number + rows_written: number + last_row_id: number + changed_db: boolean + changes: number +} +interface D1Response { + success: true + meta: D1Meta & Record + error?: never +} +type D1Result = D1Response & { + results: T[] +} +interface D1ExecResult { + count: number + duration: number +} +declare abstract class D1Database { + prepare(query: string): D1PreparedStatement + dump(): Promise + batch(statements: D1PreparedStatement[]): Promise[]> + exec(query: string): Promise +} +declare abstract class D1PreparedStatement { + bind(...values: unknown[]): D1PreparedStatement + first(colName: string): Promise + first>(): Promise + run>(): Promise> + all>(): Promise> + raw(options: { + columnNames: true + }): Promise<[string[], ...T[]]> + raw(options?: { + columnNames?: false + }): Promise +} +// `Disposable` was added to TypeScript's standard lib types in version 5.2. +// To support older TypeScript versions, define an empty `Disposable` interface. +// Users won't be able to use `using`/`Symbol.dispose` without upgrading to 5.2, +// but this will ensure type checking on older versions still passes. +// TypeScript's interface merging will ensure our empty interface is effectively +// ignored when `Disposable` is included in the standard lib. +interface Disposable {} +/** + * An email message that can be sent from a Worker. + */ +interface EmailMessage { + /** + * Envelope From attribute of the email message. + */ + readonly from: string + /** + * Envelope To attribute of the email message. + */ + readonly to: string +} +/** + * An email message that is sent to a consumer Worker and can be rejected/forwarded. + */ +interface ForwardableEmailMessage extends EmailMessage { + /** + * Stream of the email message content. + */ + readonly raw: ReadableStream + /** + * An [Headers object](https://developer.mozilla.org/en-US/docs/Web/API/Headers). + */ + readonly headers: Headers + /** + * Size of the email message content. + */ + readonly rawSize: number + /** + * Reject this email message by returning a permanent SMTP error back to the connecting client including the given reason. + * @param reason The reject reason. + * @returns void + */ + setReject(reason: string): void + /** + * Forward this email message to a verified destination address of the account. + * @param rcptTo Verified destination address. + * @param headers A [Headers object](https://developer.mozilla.org/en-US/docs/Web/API/Headers). + * @returns A promise that resolves when the email message is forwarded. + */ + forward(rcptTo: string, headers?: Headers): Promise + /** + * Reply to the sender of this email message with a new EmailMessage object. + * @param message The reply message. + * @returns A promise that resolves when the email message is replied. + */ + reply(message: EmailMessage): Promise +} +/** + * A binding that allows a Worker to send email messages. + */ +interface SendEmail { + send(message: EmailMessage): Promise +} +declare abstract class EmailEvent extends ExtendableEvent { + readonly message: ForwardableEmailMessage +} +declare type EmailExportedHandler = ( + message: ForwardableEmailMessage, + env: Env, + ctx: ExecutionContext, +) => void | Promise +declare module "cloudflare:email" { + let _EmailMessage: { + prototype: EmailMessage + new (from: string, to: string, raw: ReadableStream | string): EmailMessage + } + export { _EmailMessage as EmailMessage } +} +interface Hyperdrive { + /** + * Connect directly to Hyperdrive as if it's your database, returning a TCP socket. + * + * Calling this method returns an idential socket to if you call + * `connect("host:port")` using the `host` and `port` fields from this object. + * Pick whichever approach works better with your preferred DB client library. + * + * Note that this socket is not yet authenticated -- it's expected that your + * code (or preferably, the client library of your choice) will authenticate + * using the information in this class's readonly fields. + */ + connect(): Socket + /** + * A valid DB connection string that can be passed straight into the typical + * client library/driver/ORM. This will typically be the easiest way to use + * Hyperdrive. + */ + readonly connectionString: string + /* + * A randomly generated hostname that is only valid within the context of the + * currently running Worker which, when passed into `connect()` function from + * the "cloudflare:sockets" module, will connect to the Hyperdrive instance + * for your database. + */ + readonly host: string + /* + * The port that must be paired the the host field when connecting. + */ + readonly port: number + /* + * The username to use when authenticating to your database via Hyperdrive. + * Unlike the host and password, this will be the same every time + */ + readonly user: string + /* + * The randomly generated password to use when authenticating to your + * database via Hyperdrive. Like the host field, this password is only valid + * within the context of the currently running Worker instance from which + * it's read. + */ + readonly password: string + /* + * The name of the database to connect to. + */ + readonly database: string +} +// Copyright (c) 2024 Cloudflare, Inc. +// Licensed under the Apache 2.0 license found in the LICENSE file or at: +// https://opensource.org/licenses/Apache-2.0 +type ImageInfoResponse = + | { + format: "image/svg+xml" + } + | { + format: string + fileSize: number + width: number + height: number + } +type ImageTransform = { + fit?: "scale-down" | "contain" | "pad" | "squeeze" | "cover" | "crop" + gravity?: + | "left" + | "right" + | "top" + | "bottom" + | "center" + | "auto" + | "entropy" + | "face" + | { + x?: number + y?: number + mode: "remainder" | "box-center" + } + trim?: { + top?: number + bottom?: number + left?: number + right?: number + width?: number + height?: number + border?: + | boolean + | { + color?: string + tolerance?: number + keep?: number + } + } + width?: number + height?: number + background?: string + rotate?: number + sharpen?: number + blur?: number + contrast?: number + brightness?: number + gamma?: number + border?: { + color?: string + width?: number + top?: number + bottom?: number + left?: number + right?: number + } + zoom?: number +} +type ImageDrawOptions = { + opacity?: number + repeat?: boolean | string + top?: number + left?: number + bottom?: number + right?: number +} +type ImageOutputOptions = { + format: "image/jpeg" | "image/png" | "image/gif" | "image/webp" | "image/avif" | "rgb" | "rgba" + quality?: number + background?: string +} +interface ImagesBinding { + /** + * Get image metadata (type, width and height) + * @throws {@link ImagesError} with code 9412 if input is not an image + * @param stream The image bytes + */ + info(stream: ReadableStream): Promise + /** + * Begin applying a series of transformations to an image + * @param stream The image bytes + * @returns A transform handle + */ + input(stream: ReadableStream): ImageTransformer +} +interface ImageTransformer { + /** + * Apply transform next, returning a transform handle. + * You can then apply more transformations, draw, or retrieve the output. + * @param transform + */ + transform(transform: ImageTransform): ImageTransformer + /** + * Draw an image on this transformer, returning a transform handle. + * You can then apply more transformations, draw, or retrieve the output. + * @param image The image (or transformer that will give the image) to draw + * @param options The options configuring how to draw the image + */ + draw(image: ReadableStream | ImageTransformer, options?: ImageDrawOptions): ImageTransformer + /** + * Retrieve the image that results from applying the transforms to the + * provided input + * @param options Options that apply to the output e.g. output format + */ + output(options: ImageOutputOptions): Promise +} +interface ImageTransformationResult { + /** + * The image as a response, ready to store in cache or return to users + */ + response(): Response + /** + * The content type of the returned image + */ + contentType(): string + /** + * The bytes of the response + */ + image(): ReadableStream +} +interface ImagesError extends Error { + readonly code: number + readonly message: string + readonly stack?: string +} +type Params

= Record +type EventContext = { + request: Request> + functionPath: string + waitUntil: (promise: Promise) => void + passThroughOnException: () => void + next: (input?: Request | string, init?: RequestInit) => Promise + env: Env & { + ASSETS: { + fetch: typeof fetch + } + } + params: Params

+ data: Data +} +type PagesFunction< + Env = unknown, + Params extends string = any, + Data extends Record = Record, +> = (context: EventContext) => Response | Promise +type EventPluginContext = { + request: Request> + functionPath: string + waitUntil: (promise: Promise) => void + passThroughOnException: () => void + next: (input?: Request | string, init?: RequestInit) => Promise + env: Env & { + ASSETS: { + fetch: typeof fetch + } + } + params: Params

+ data: Data + pluginArgs: PluginArgs +} +type PagesPluginFunction< + Env = unknown, + Params extends string = any, + Data extends Record = Record, + PluginArgs = unknown, +> = (context: EventPluginContext) => Response | Promise +declare module "assets:*" { + export const onRequest: PagesFunction +} +// Copyright (c) 2022-2023 Cloudflare, Inc. +// Licensed under the Apache 2.0 license found in the LICENSE file or at: +// https://opensource.org/licenses/Apache-2.0 +type PipelineRecord = Record +type PipelineBatchMetadata = { + pipelineId: string + pipelineName: string +} +declare abstract class PipelineTransformationEntrypoint { + /** + * run recieves an array of PipelineRecord which can be + * mutated and returned to the pipeline + * @param records Incoming records from the pipeline to be transformed + * @param metadata Information about the specific pipeline calling the transformation entrypoint + * @returns A promise containing the transformed PipelineRecord array + */ + public run(records: I[], metadata: PipelineBatchMetadata): Promise +} +interface Pipeline { + /** + * The Pipeline interface represents the type of a binding to a Pipeline + * + * @param records The records to send to the pipeline + */ + send(records: T[]): Promise +} +// PubSubMessage represents an incoming PubSub message. +// The message includes metadata about the broker, the client, and the payload +// itself. +// https://developers.cloudflare.com/pub-sub/ +interface PubSubMessage { + // Message ID + readonly mid: number + // MQTT broker FQDN in the form mqtts://BROKER.NAMESPACE.cloudflarepubsub.com:PORT + readonly broker: string + // The MQTT topic the message was sent on. + readonly topic: string + // The client ID of the client that published this message. + readonly clientId: string + // The unique identifier (JWT ID) used by the client to authenticate, if token + // auth was used. + readonly jti?: string + // A Unix timestamp (seconds from Jan 1, 1970), set when the Pub/Sub Broker + // received the message from the client. + readonly receivedAt: number + // An (optional) string with the MIME type of the payload, if set by the + // client. + readonly contentType: string + // Set to 1 when the payload is a UTF-8 string + // https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901063 + readonly payloadFormatIndicator: number + // Pub/Sub (MQTT) payloads can be UTF-8 strings, or byte arrays. + // You can use payloadFormatIndicator to inspect this before decoding. + payload: string | Uint8Array +} +// JsonWebKey extended by kid parameter +interface JsonWebKeyWithKid extends JsonWebKey { + // Key Identifier of the JWK + readonly kid: string +} +interface RateLimitOptions { + key: string +} +interface RateLimitOutcome { + success: boolean +} +interface RateLimit { + /** + * Rate limit a request based on the provided options. + * @see https://developers.cloudflare.com/workers/runtime-apis/bindings/rate-limit/ + * @returns A promise that resolves with the outcome of the rate limit. + */ + limit(options: RateLimitOptions): Promise +} +// Extend this in your apps to properly type Env +interface Env {} +// Namespace for RPC utility types. Unfortunately, we can't use a `module` here as these types need +// to referenced by `Fetcher`. This is included in the "importable" version of the types which +// strips all `module` blocks. +declare namespace Rpc { + // Branded types for identifying `WorkerEntrypoint`/`DurableObject`/`Target`s. + // TypeScript uses *structural* typing meaning anything with the same shape as type `T` is a `T`. + // For the classes exported by `cloudflare:workers` we want *nominal* typing (i.e. we only want to + // accept `WorkerEntrypoint` from `cloudflare:workers`, not any other class with the same shape) + export const __RPC_STUB_BRAND: "__RPC_STUB_BRAND" + export const __RPC_TARGET_BRAND: "__RPC_TARGET_BRAND" + export const __WORKER_ENTRYPOINT_BRAND: "__WORKER_ENTRYPOINT_BRAND" + export const __DURABLE_OBJECT_BRAND: "__DURABLE_OBJECT_BRAND" + export const __WORKFLOW_ENTRYPOINT_BRAND: "__WORKFLOW_ENTRYPOINT_BRAND" + export interface RpcTargetBranded { + [__RPC_TARGET_BRAND]: never + } + export interface WorkerEntrypointBranded { + [__WORKER_ENTRYPOINT_BRAND]: never + } + export interface DurableObjectBranded { + [__DURABLE_OBJECT_BRAND]: never + } + export interface WorkflowEntrypointBranded { + [__WORKFLOW_ENTRYPOINT_BRAND]: never + } + export type EntrypointBranded = WorkerEntrypointBranded | DurableObjectBranded | WorkflowEntrypointBranded + // Types that can be used through `Stub`s + export type Stubable = RpcTargetBranded | ((...args: any[]) => any) + // Types that can be passed over RPC + // The reason for using a generic type here is to build a serializable subset of structured + // cloneable composite types. This allows types defined with the "interface" keyword to pass the + // serializable check as well. Otherwise, only types defined with the "type" keyword would pass. + type Serializable = + // Structured cloneables + | void + | undefined + | null + | boolean + | number + | bigint + | string + | TypedArray + | ArrayBuffer + | DataView + | Date + | Error + | RegExp + // Structured cloneable composites + | Map< + T extends Map ? Serializable : never, + T extends Map ? Serializable : never + > + | Set ? Serializable : never> + | ReadonlyArray ? Serializable : never> + | { + [K in keyof T]: K extends number | string ? Serializable : never + } + // Special types + | ReadableStream + | WritableStream + | Request + | Response + | Headers + | Stub + // Serialized as stubs, see `Stubify` + | Stubable + // Base type for all RPC stubs, including common memory management methods. + // `T` is used as a marker type for unwrapping `Stub`s later. + interface StubBase extends Disposable { + [__RPC_STUB_BRAND]: T + dup(): this + } + export type Stub = Provider & StubBase + // Recursively rewrite all `Stubable` types with `Stub`s + // prettier-ignore + type Stubify = T extends Stubable + ? Stub + : T extends Map + ? Map, Stubify> + : T extends Set + ? Set> + : T extends Array + ? Array> + : T extends ReadonlyArray + ? ReadonlyArray> + : T extends { + [key: string | number]: any + } + ? { + [K in keyof T]: Stubify + } + : T + // Recursively rewrite all `Stub`s with the corresponding `T`s. + // Note we use `StubBase` instead of `Stub` here to avoid circular dependencies: + // `Stub` depends on `Provider`, which depends on `Unstubify`, which would depend on `Stub`. + // prettier-ignore + type Unstubify = T extends StubBase + ? V + : T extends Map + ? Map, Unstubify> + : T extends Set + ? Set> + : T extends Array + ? Array> + : T extends ReadonlyArray + ? ReadonlyArray> + : T extends { + [key: string | number]: unknown + } + ? { + [K in keyof T]: Unstubify + } + : T + type UnstubifyAll = { + [I in keyof A]: Unstubify + } + // Utility type for adding `Provider`/`Disposable`s to `object` types only. + // Note `unknown & T` is equivalent to `T`. + type MaybeProvider = T extends object ? Provider : unknown + type MaybeDisposable = T extends object ? Disposable : unknown + // Type for method return or property on an RPC interface. + // - Stubable types are replaced by stubs. + // - Serializable types are passed by value, with stubable types replaced by stubs + // and a top-level `Disposer`. + // Everything else can't be passed over PRC. + // Technically, we use custom thenables here, but they quack like `Promise`s. + // Intersecting with `(Maybe)Provider` allows pipelining. + // prettier-ignore + type Result = R extends Stubable + ? Promise> & Provider + : R extends Serializable + ? Promise & MaybeDisposable> & MaybeProvider + : never + // Type for method or property on an RPC interface. + // For methods, unwrap `Stub`s in parameters, and rewrite returns to be `Result`s. + // Unwrapping `Stub`s allows calling with `Stubable` arguments. + // For properties, rewrite types to be `Result`s. + // In each case, unwrap `Promise`s. + type MethodOrProperty = V extends (...args: infer P) => infer R + ? (...args: UnstubifyAll

) => Result> + : Result> + // Type for the callable part of an `Provider` if `T` is callable. + // This is intersected with methods/properties. + type MaybeCallableProvider = T extends (...args: any[]) => any ? MethodOrProperty : unknown + // Base type for all other types providing RPC-like interfaces. + // Rewrites all methods/properties to be `MethodOrProperty`s, while preserving callable types. + // `Reserved` names (e.g. stub method names like `dup()`) and symbols can't be accessed over RPC. + export type Provider = MaybeCallableProvider & { + [K in Exclude>]: MethodOrProperty + } +} +declare module "cloudflare:workers" { + export type RpcStub = Rpc.Stub + export const RpcStub: { + new (value: T): Rpc.Stub + } + export abstract class RpcTarget implements Rpc.RpcTargetBranded { + [Rpc.__RPC_TARGET_BRAND]: never + } + // `protected` fields don't appear in `keyof`s, so can't be accessed over RPC + export abstract class WorkerEntrypoint implements Rpc.WorkerEntrypointBranded { + [Rpc.__WORKER_ENTRYPOINT_BRAND]: never + protected ctx: ExecutionContext + protected env: Env + constructor(ctx: ExecutionContext, env: Env) + fetch?(request: Request): Response | Promise + tail?(events: TraceItem[]): void | Promise + trace?(traces: TraceItem[]): void | Promise + scheduled?(controller: ScheduledController): void | Promise + queue?(batch: MessageBatch): void | Promise + test?(controller: TestController): void | Promise + } + export abstract class DurableObject implements Rpc.DurableObjectBranded { + [Rpc.__DURABLE_OBJECT_BRAND]: never + protected ctx: DurableObjectState + protected env: Env + constructor(ctx: DurableObjectState, env: Env) + fetch?(request: Request): Response | Promise + alarm?(alarmInfo?: AlarmInvocationInfo): void | Promise + webSocketMessage?(ws: WebSocket, message: string | ArrayBuffer): void | Promise + webSocketClose?(ws: WebSocket, code: number, reason: string, wasClean: boolean): void | Promise + webSocketError?(ws: WebSocket, error: unknown): void | Promise + } + export type WorkflowDurationLabel = "second" | "minute" | "hour" | "day" | "week" | "month" | "year" + export type WorkflowSleepDuration = `${number} ${WorkflowDurationLabel}${"s" | ""}` | number + export type WorkflowDelayDuration = WorkflowSleepDuration + export type WorkflowTimeoutDuration = WorkflowSleepDuration + export type WorkflowBackoff = "constant" | "linear" | "exponential" + export type WorkflowStepConfig = { + retries?: { + limit: number + delay: WorkflowDelayDuration | number + backoff?: WorkflowBackoff + } + timeout?: WorkflowTimeoutDuration | number + } + export type WorkflowEvent = { + payload: Readonly + timestamp: Date + instanceId: string + } + export abstract class WorkflowStep { + do>(name: string, callback: () => Promise): Promise + do>(name: string, config: WorkflowStepConfig, callback: () => Promise): Promise + sleep: (name: string, duration: WorkflowSleepDuration) => Promise + sleepUntil: (name: string, timestamp: Date | number) => Promise + } + export abstract class WorkflowEntrypoint | unknown = unknown> + implements Rpc.WorkflowEntrypointBranded + { + [Rpc.__WORKFLOW_ENTRYPOINT_BRAND]: never + protected ctx: ExecutionContext + protected env: Env + constructor(ctx: ExecutionContext, env: Env) + run(event: Readonly>, step: WorkflowStep): Promise + } + export const env: Env +} +declare module "cloudflare:sockets" { + function _connect(address: string | SocketAddress, options?: SocketOptions): Socket + export { _connect as connect } +} +declare namespace TailStream { + interface Header { + readonly name: string + readonly value: string + } + interface FetchEventInfo { + readonly type: "fetch" + readonly method: string + readonly url: string + readonly cfJson: string + readonly headers: Header[] + } + interface JsRpcEventInfo { + readonly type: "jsrpc" + readonly methodName: string + } + interface ScheduledEventInfo { + readonly type: "scheduled" + readonly scheduledTime: Date + readonly cron: string + } + interface AlarmEventInfo { + readonly type: "alarm" + readonly scheduledTime: Date + } + interface QueueEventInfo { + readonly type: "queue" + readonly queueName: string + readonly batchSize: number + } + interface EmailEventInfo { + readonly type: "email" + readonly mailFrom: string + readonly rcptTo: string + readonly rawSize: number + } + interface TraceEventInfo { + readonly type: "trace" + readonly traces: (string | null)[] + } + interface HibernatableWebSocketEventInfoMessage { + readonly type: "message" + } + interface HibernatableWebSocketEventInfoError { + readonly type: "error" + } + interface HibernatableWebSocketEventInfoClose { + readonly type: "close" + readonly code: number + readonly wasClean: boolean + } + interface HibernatableWebSocketEventInfo { + readonly type: "hibernatableWebSocket" + readonly info: + | HibernatableWebSocketEventInfoClose + | HibernatableWebSocketEventInfoError + | HibernatableWebSocketEventInfoMessage + } + interface Resume { + readonly type: "resume" + readonly attachment?: any + } + interface CustomEventInfo { + readonly type: "custom" + } + interface FetchResponseInfo { + readonly type: "fetch" + readonly statusCode: number + } + type EventOutcome = + | "ok" + | "canceled" + | "exception" + | "unknown" + | "killSwitch" + | "daemonDown" + | "exceededCpu" + | "exceededMemory" + | "loadShed" + | "responseStreamDisconnected" + | "scriptNotFound" + interface ScriptVersion { + readonly id: string + readonly tag?: string + readonly message?: string + } + interface Trigger { + readonly traceId: string + readonly invocationId: string + readonly spanId: string + } + interface Onset { + readonly type: "onset" + readonly dispatchNamespace?: string + readonly entrypoint?: string + readonly scriptName?: string + readonly scriptTags?: string[] + readonly scriptVersion?: ScriptVersion + readonly trigger?: Trigger + readonly info: + | FetchEventInfo + | JsRpcEventInfo + | ScheduledEventInfo + | AlarmEventInfo + | QueueEventInfo + | EmailEventInfo + | TraceEventInfo + | HibernatableWebSocketEventInfo + | Resume + | CustomEventInfo + } + interface Outcome { + readonly type: "outcome" + readonly outcome: EventOutcome + readonly cpuTime: number + readonly wallTime: number + } + interface Hibernate { + readonly type: "hibernate" + } + interface SpanOpen { + readonly type: "spanOpen" + readonly op?: string + readonly info?: FetchEventInfo | JsRpcEventInfo | Attribute[] + } + interface SpanClose { + readonly type: "spanClose" + readonly outcome: EventOutcome + } + interface DiagnosticChannelEvent { + readonly type: "diagnosticChannel" + readonly channel: string + readonly message: any + } + interface Exception { + readonly type: "exception" + readonly name: string + readonly message: string + readonly stack?: string + } + interface Log { + readonly type: "log" + readonly level: "debug" | "error" | "info" | "log" | "warn" + readonly message: string + } + interface Return { + readonly type: "return" + readonly info?: FetchResponseInfo | Attribute[] + } + interface Link { + readonly type: "link" + readonly label?: string + readonly traceId: string + readonly invocationId: string + readonly spanId: string + } + interface Attribute { + readonly type: "attribute" + readonly name: string + readonly value: string | string[] | boolean | boolean[] | number | number[] + } + type Mark = DiagnosticChannelEvent | Exception | Log | Return | Link | Attribute[] + interface TailEvent { + readonly traceId: string + readonly invocationId: string + readonly spanId: string + readonly timestamp: Date + readonly sequence: number + readonly event: Onset | Outcome | Hibernate | SpanOpen | SpanClose | Mark + } + type TailEventHandler = (event: TailEvent) => void | Promise + type TailEventHandlerName = + | "onset" + | "outcome" + | "hibernate" + | "spanOpen" + | "spanClose" + | "diagnosticChannel" + | "exception" + | "log" + | "return" + | "link" + | "attribute" + type TailEventHandlerObject = Record + type TailEventHandlerType = TailEventHandler | TailEventHandlerObject +} +// Copyright (c) 2022-2023 Cloudflare, Inc. +// Licensed under the Apache 2.0 license found in the LICENSE file or at: +// https://opensource.org/licenses/Apache-2.0 +/** + * Data types supported for holding vector metadata. + */ +type VectorizeVectorMetadataValue = string | number | boolean | string[] +/** + * Additional information to associate with a vector. + */ +type VectorizeVectorMetadata = VectorizeVectorMetadataValue | Record +type VectorFloatArray = Float32Array | Float64Array +interface VectorizeError { + code?: number + error: string +} +/** + * Comparison logic/operation to use for metadata filtering. + * + * This list is expected to grow as support for more operations are released. + */ +type VectorizeVectorMetadataFilterOp = "$eq" | "$ne" +/** + * Filter criteria for vector metadata used to limit the retrieved query result set. + */ +type VectorizeVectorMetadataFilter = { + [field: string]: + | Exclude + | null + | { + [Op in VectorizeVectorMetadataFilterOp]?: Exclude | null + } +} +/** + * Supported distance metrics for an index. + * Distance metrics determine how other "similar" vectors are determined. + */ +type VectorizeDistanceMetric = "euclidean" | "cosine" | "dot-product" +/** + * Metadata return levels for a Vectorize query. + * + * Default to "none". + * + * @property all Full metadata for the vector return set, including all fields (including those un-indexed) without truncation. This is a more expensive retrieval, as it requires additional fetching & reading of un-indexed data. + * @property indexed Return all metadata fields configured for indexing in the vector return set. This level of retrieval is "free" in that no additional overhead is incurred returning this data. However, note that indexed metadata is subject to truncation (especially for larger strings). + * @property none No indexed metadata will be returned. + */ +type VectorizeMetadataRetrievalLevel = "all" | "indexed" | "none" +interface VectorizeQueryOptions { + topK?: number + namespace?: string + returnValues?: boolean + returnMetadata?: boolean | VectorizeMetadataRetrievalLevel + filter?: VectorizeVectorMetadataFilter +} +/** + * Information about the configuration of an index. + */ +type VectorizeIndexConfig = + | { + dimensions: number + metric: VectorizeDistanceMetric + } + | { + preset: string // keep this generic, as we'll be adding more presets in the future and this is only in a read capacity + } +/** + * Metadata about an existing index. + * + * This type is exclusively for the Vectorize **beta** and will be deprecated once Vectorize RC is released. + * See {@link VectorizeIndexInfo} for its post-beta equivalent. + */ +interface VectorizeIndexDetails { + /** The unique ID of the index */ + readonly id: string + /** The name of the index. */ + name: string + /** (optional) A human readable description for the index. */ + description?: string + /** The index configuration, including the dimension size and distance metric. */ + config: VectorizeIndexConfig + /** The number of records containing vectors within the index. */ + vectorsCount: number +} +/** + * Metadata about an existing index. + */ +interface VectorizeIndexInfo { + /** The number of records containing vectors within the index. */ + vectorCount: number + /** Number of dimensions the index has been configured for. */ + dimensions: number + /** ISO 8601 datetime of the last processed mutation on in the index. All changes before this mutation will be reflected in the index state. */ + processedUpToDatetime: number + /** UUIDv4 of the last mutation processed by the index. All changes before this mutation will be reflected in the index state. */ + processedUpToMutation: number +} +/** + * Represents a single vector value set along with its associated metadata. + */ +interface VectorizeVector { + /** The ID for the vector. This can be user-defined, and must be unique. It should uniquely identify the object, and is best set based on the ID of what the vector represents. */ + id: string + /** The vector values */ + values: VectorFloatArray | number[] + /** The namespace this vector belongs to. */ + namespace?: string + /** Metadata associated with the vector. Includes the values of other fields and potentially additional details. */ + metadata?: Record +} +/** + * Represents a matched vector for a query along with its score and (if specified) the matching vector information. + */ +type VectorizeMatch = Pick, "values"> & + Omit & { + /** The score or rank for similarity, when returned as a result */ + score: number + } +/** + * A set of matching {@link VectorizeMatch} for a particular query. + */ +interface VectorizeMatches { + matches: VectorizeMatch[] + count: number +} +/** + * Results of an operation that performed a mutation on a set of vectors. + * Here, `ids` is a list of vectors that were successfully processed. + * + * This type is exclusively for the Vectorize **beta** and will be deprecated once Vectorize RC is released. + * See {@link VectorizeAsyncMutation} for its post-beta equivalent. + */ +interface VectorizeVectorMutation { + /* List of ids of vectors that were successfully processed. */ + ids: string[] + /* Total count of the number of processed vectors. */ + count: number +} +/** + * Result type indicating a mutation on the Vectorize Index. + * Actual mutations are processed async where the `mutationId` is the unique identifier for the operation. + */ +interface VectorizeAsyncMutation { + /** The unique identifier for the async mutation operation containing the changeset. */ + mutationId: string +} +/** + * A Vectorize Vector Search Index for querying vectors/embeddings. + * + * This type is exclusively for the Vectorize **beta** and will be deprecated once Vectorize RC is released. + * See {@link Vectorize} for its new implementation. + */ +declare abstract class VectorizeIndex { + /** + * Get information about the currently bound index. + * @returns A promise that resolves with information about the current index. + */ + public describe(): Promise + /** + * Use the provided vector to perform a similarity search across the index. + * @param vector Input vector that will be used to drive the similarity search. + * @param options Configuration options to massage the returned data. + * @returns A promise that resolves with matched and scored vectors. + */ + public query(vector: VectorFloatArray | number[], options?: VectorizeQueryOptions): Promise + /** + * Insert a list of vectors into the index dataset. If a provided id exists, an error will be thrown. + * @param vectors List of vectors that will be inserted. + * @returns A promise that resolves with the ids & count of records that were successfully processed. + */ + public insert(vectors: VectorizeVector[]): Promise + /** + * Upsert a list of vectors into the index dataset. If a provided id exists, it will be replaced with the new values. + * @param vectors List of vectors that will be upserted. + * @returns A promise that resolves with the ids & count of records that were successfully processed. + */ + public upsert(vectors: VectorizeVector[]): Promise + /** + * Delete a list of vectors with a matching id. + * @param ids List of vector ids that should be deleted. + * @returns A promise that resolves with the ids & count of records that were successfully processed (and thus deleted). + */ + public deleteByIds(ids: string[]): Promise + /** + * Get a list of vectors with a matching id. + * @param ids List of vector ids that should be returned. + * @returns A promise that resolves with the raw unscored vectors matching the id set. + */ + public getByIds(ids: string[]): Promise +} +/** + * A Vectorize Vector Search Index for querying vectors/embeddings. + * + * Mutations in this version are async, returning a mutation id. + */ +declare abstract class Vectorize { + /** + * Get information about the currently bound index. + * @returns A promise that resolves with information about the current index. + */ + public describe(): Promise + /** + * Use the provided vector to perform a similarity search across the index. + * @param vector Input vector that will be used to drive the similarity search. + * @param options Configuration options to massage the returned data. + * @returns A promise that resolves with matched and scored vectors. + */ + public query(vector: VectorFloatArray | number[], options?: VectorizeQueryOptions): Promise + /** + * Use the provided vector-id to perform a similarity search across the index. + * @param vectorId Id for a vector in the index against which the index should be queried. + * @param options Configuration options to massage the returned data. + * @returns A promise that resolves with matched and scored vectors. + */ + public queryById(vectorId: string, options?: VectorizeQueryOptions): Promise + /** + * Insert a list of vectors into the index dataset. If a provided id exists, an error will be thrown. + * @param vectors List of vectors that will be inserted. + * @returns A promise that resolves with a unique identifier of a mutation containing the insert changeset. + */ + public insert(vectors: VectorizeVector[]): Promise + /** + * Upsert a list of vectors into the index dataset. If a provided id exists, it will be replaced with the new values. + * @param vectors List of vectors that will be upserted. + * @returns A promise that resolves with a unique identifier of a mutation containing the upsert changeset. + */ + public upsert(vectors: VectorizeVector[]): Promise + /** + * Delete a list of vectors with a matching id. + * @param ids List of vector ids that should be deleted. + * @returns A promise that resolves with a unique identifier of a mutation containing the delete changeset. + */ + public deleteByIds(ids: string[]): Promise + /** + * Get a list of vectors with a matching id. + * @param ids List of vector ids that should be returned. + * @returns A promise that resolves with the raw unscored vectors matching the id set. + */ + public getByIds(ids: string[]): Promise +} +/** + * The interface for "version_metadata" binding + * providing metadata about the Worker Version using this binding. + */ +type WorkerVersionMetadata = { + /** The ID of the Worker Version using this binding */ + id: string + /** The tag of the Worker Version using this binding */ + tag: string + /** The timestamp of when the Worker Version was uploaded */ + timestamp: string +} +interface DynamicDispatchLimits { + /** + * Limit CPU time in milliseconds. + */ + cpuMs?: number + /** + * Limit number of subrequests. + */ + subRequests?: number +} +interface DynamicDispatchOptions { + /** + * Limit resources of invoked Worker script. + */ + limits?: DynamicDispatchLimits + /** + * Arguments for outbound Worker script, if configured. + */ + outbound?: { + [key: string]: any + } +} +interface DispatchNamespace { + /** + * @param name Name of the Worker script. + * @param args Arguments to Worker script. + * @param options Options for Dynamic Dispatch invocation. + * @returns A Fetcher object that allows you to send requests to the Worker script. + * @throws If the Worker script does not exist in this dispatch namespace, an error will be thrown. + */ + get( + name: string, + args?: { + [key: string]: any + }, + options?: DynamicDispatchOptions, + ): Fetcher +} +declare module "cloudflare:workflows" { + /** + * NonRetryableError allows for a user to throw a fatal error + * that makes a Workflow instance fail immediately without triggering a retry + */ + export class NonRetryableError extends Error { + public constructor(message: string, name?: string) + } +} +declare abstract class Workflow { + /** + * Get a handle to an existing instance of the Workflow. + * @param id Id for the instance of this Workflow + * @returns A promise that resolves with a handle for the Instance + */ + public get(id: string): Promise + /** + * Create a new instance and return a handle to it. If a provided id exists, an error will be thrown. + * @param options Options when creating an instance including id and params + * @returns A promise that resolves with a handle for the Instance + */ + public create(options?: WorkflowInstanceCreateOptions): Promise +} +interface WorkflowInstanceCreateOptions { + /** + * An id for your Workflow instance. Must be unique within the Workflow. + */ + id?: string + /** + * The event payload the Workflow instance is triggered with + */ + params?: PARAMS +} +type InstanceStatus = { + status: + | "queued" // means that instance is waiting to be started (see concurrency limits) + | "running" + | "paused" + | "errored" + | "terminated" // user terminated the instance while it was running + | "complete" + | "waiting" // instance is hibernating and waiting for sleep or event to finish + | "waitingForPause" // instance is finishing the current work to pause + | "unknown" + error?: string + output?: object +} +interface WorkflowError { + code?: number + message: string +} +declare abstract class WorkflowInstance { + public id: string + /** + * Pause the instance. + */ + public pause(): Promise + /** + * Resume the instance. If it is already running, an error will be thrown. + */ + public resume(): Promise + /** + * Terminate the instance. If it is errored, terminated or complete, an error will be thrown. + */ + public terminate(): Promise + /** + * Restart the instance. + */ + public restart(): Promise + /** + * Returns the current status of the instance. + */ + public status(): Promise +} diff --git a/project/infra/install/worker.ts b/project/infra/install/worker.ts new file mode 100644 index 0000000000..d18daf5e93 --- /dev/null +++ b/project/infra/install/worker.ts @@ -0,0 +1,485 @@ +/// +/// +/// +// noinspection JSUnusedGlobalSymbols + +import { WorkerEntrypoint } from "cloudflare:workers" + +// Regex matching for a valid Elide version; versions look like `1.0.0` or +// `1.0.0-alpha1`. +const versionRegex = /^([0-9{1,2}.]{5,10})-?(alpha|beta|rc|snapshot)?([0-9{1,2}])$/ + +// Regex matching for a valid platform tag; platform tags look like\ +// `linux-amd64`. +const platformTagRegex = /^(linux|macos|windows)-(amd64|arm64)$/ + +// Special version string indicating the latest version. +const LATEST = "latest" + +// Default-latest-version if none is resolvable. +const DEFAULT_LATEST_VERSION = "1.0.0-alpha14" + +// Base URL for GitHub downloads. +const GITHUB_BASE = "https://github.com/elide-dev/elide/releases/download" + +// Cache control to return for downloads. +const DOWNLOAD_CACHE_CONTROL = "public, max-age=900, s-maxage=3600" + +/** + * Decides which backend to use for serving an Elide binary. + * + * `r2` serves the bin from R2, while `ghs` serves the bin from GitHub's release + * asset storage. + * + * R2 should be used for most cases, as it is broadly faster outside of GitHub's + * own networks. GitHub's release storage should be used when the installation + * is happening from GHA. + */ +enum ServingBackend { + // Serve the bin from R2. + r2 = "r2", + + // Serve the bin from GitHub. + ghs = "ghs", +} + +/** + * Operating systems supported by Elide. + */ +enum OperatingSystem { + linux = "linux", + macos = "macos", + windows = "windows", +} + +/** + * Architectures supported by Elide. + */ +enum Architecture { + amd64 = "amd64", + arm64 = "arm64", +} + +/** + * Archive formats supported for Elide downloads. + */ +enum ArchiveFormat { + zip = "zip", + tgz = "tgz", + txz = "txz", +} + +/** + * Parameters describing a requested Elide download. + * + * These include: + * + * - `backend` (Required): The storage backend to serve from. + * - `format` (Required): The archive format to serve. + * - `version` (Required): Specific requested version, as applicable. + * - `platform`: The requested architecture/OS pair, as applicable; this is also + * referred to as the "platform tag." Examples include: `linux-amd64`, + * `macos-amd64`, `macos-aarch64`. + */ +type ElideInstallParams = { + // Which storage backend to serve from. + backend: ServingBackend + + // The archive format to serve. + format: ArchiveFormat + + // The requested Elide version. + version: string + + // The platform string requested for this download. + platform?: string + + // The requested OS for this download. + os?: OperatingSystem + + // The requested architecture for this download. + arch?: Architecture +} + +// Default platform to serve if one cannot be inferred from the request. +const DEFAULT_PLATFORM = { + os: OperatingSystem.linux, + arch: Architecture.amd64, +} + +// Domain which should activate the GitHub backend. +const ghaDownloadDomain = "gha.elide.zip" +const ghaDownloadDomainAlt = "gha.elide.dev" + +// Determine the serving backend to use based on the subdomain or user-agent. +function servingBackend(domain: string, ua: string): ServingBackend { + switch (domain.trim().toLowerCase()) { + case ghaDownloadDomain: + return ServingBackend.ghs + case ghaDownloadDomainAlt: + return ServingBackend.ghs + default: + if (ua.trim().toLowerCase().indexOf("github") !== -1) { + return ServingBackend.ghs + } + return ServingBackend.r2 + } +} + +// Resolve the latest installable version of Elide. +async function resolveLatestVersion(): Promise { + return DEFAULT_LATEST_VERSION +} + +// Validate a requested version. +async function validateVersion(token: string): Promise { + if (token === LATEST) { + return LATEST + } + if (versionRegex.test(token)) { + return token + } + throw new Error(`Invalid version requested: ${token}; must be of the form 'x.y.z'`) +} + +// Parse a platform tag into its constituent parts, or throw. +function parsePlatformTag(tag: string): { os: OperatingSystem; arch: Architecture } { + const token = tag.trim().toLowerCase() + let os: OperatingSystem + let arch: Architecture + const portions = token.split("-") + if (portions.length !== 2) { + throw new Error(`Invalid platform tag: ${token}`) + } + + switch (portions[0].trim().toLowerCase()) { + case OperatingSystem.linux: + os = OperatingSystem.linux + break + case OperatingSystem.macos: + os = OperatingSystem.macos + break + case OperatingSystem.windows: + os = OperatingSystem.windows + break + default: + console.warn(`Could not infer OS from platform tag: ${portions[0]}`) + os = OperatingSystem.linux + break + } + switch (portions[1].trim().toLowerCase()) { + case Architecture.amd64: + case "x86_64": + case "x86-64": + arch = Architecture.amd64 + break + case Architecture.arm64: + case "aarch64": + arch = Architecture.arm64 + break + } + if (!os || !arch) { + console.warn(`Failed to parse from platform tag: '${token}'`) + return DEFAULT_PLATFORM + } + return { + os, + arch, + } +} + +// Attempt to infer a platform tag from the provided User-Agent string, or return null. +function parsePlatformFormUa(ua: string): { os: OperatingSystem; arch: Architecture } { + const token = ua.trim().toLowerCase() + let os: OperatingSystem + let arch: Architecture + if (token.indexOf("linux") !== -1) { + os = OperatingSystem.linux + } else if (token.indexOf("macos") !== -1) { + os = OperatingSystem.macos + } else if (token.indexOf("windows") !== -1) { + os = OperatingSystem.windows + } else { + console.log("Failed to infer OS from UA") + return DEFAULT_PLATFORM + } + if (token.indexOf("arm64") !== -1 || token.indexOf("aarch64") !== null) { + arch = Architecture.arm64 + } else if (token.indexOf("amd64") !== -1 || token.indexOf("x86_64") !== null) { + arch = Architecture.amd64 + } else { + console.log("Failed to infer arch from UA") + return DEFAULT_PLATFORM + } + if (!arch || !os) { + throw new Error("Failed to infer platform from UA; this should be unreachable") + } + return { + arch, + os, + } +} + +// Check installation parameters for sanity. +function checkParams(params: ElideInstallParams): ElideInstallParams { + const { version, platform, os, arch } = params + if (!version) throw new Response("Invalid version", { status: 400 }) + if (!platform) throw new Response("Invalid platform", { status: 400 }) + if (!os) throw new Response("Invalid OS", { status: 400 }) + if (!arch) throw new Response("Invalid architecture", { status: 400 }) + return params +} + +// Select the appropriate archive format to serve. +function selectFormat(url: URL, os?: OperatingSystem): ArchiveFormat { + if (os) { + switch (os) { + case OperatingSystem.windows: + return ArchiveFormat.zip + case OperatingSystem.macos: + return ArchiveFormat.txz + case OperatingSystem.linux: + return ArchiveFormat.tgz + } + } + const filename = url.pathname.split("/").pop() || "" + if (filename.endsWith(".zip")) { + return ArchiveFormat.zip + } + if (filename.endsWith(".tar.gz") || filename.endsWith(".tgz")) { + return ArchiveFormat.tgz + } + if (filename.endsWith(".tar.xz") || filename.endsWith(".txz")) { + return ArchiveFormat.txz + } +} + +// Extracts installation parameters from the parsed request URL, or throws. +async function extractParams(url: URL, request: Request): Promise { + const userAgent = request.headers.get("User-Agent") || "" + const backend = servingBackend(url.hostname, userAgent) + const segments = url.pathname.split("/") + const versionIfPresent = segments.find(it => versionRegex.test(it)) + const platformIfPresent = segments.find(it => platformTagRegex.test(it)) + + let requestedPlatform: string + let requestedVersion: string + let requestedOs: OperatingSystem + let requestedArch: Architecture + + if (versionIfPresent) { + requestedVersion = await validateVersion(versionIfPresent) + } else { + requestedVersion = await resolveLatestVersion() + } + if (platformIfPresent) { + const { os, arch } = parsePlatformTag(platformIfPresent) + requestedPlatform = platformIfPresent + requestedOs = os + requestedArch = arch + } else { + const { os, arch } = parsePlatformFormUa(userAgent) + requestedOs = os + requestedArch = arch + } + return checkParams({ + backend, + os: requestedOs, + arch: requestedArch, + version: requestedVersion, + platform: requestedPlatform, + format: selectFormat(url, requestedOs) || ArchiveFormat.tgz, + }) +} + +// Serve an Elide installation download from R2 directly, streamed through the worker. +async function serveDownloadFromR2( + env: Env, + url: URL, + request: Request, + params: ElideInstallParams, +): Promise { + const { version, platform, format } = params + // path in r2 + const path = `cli/v1/snapshot/${platform}/${version}/elide-${version}-${platform}.${format}` + console.log(`Serving download from R2: '${path}'`, { url, request }) + + // fetch and 404 if not found + const object = await env.STORAGE.get(path) + if (object === null) { + console.warn(`Path '${path}' not found in R2; returning 404`) + return new Response("Not Found", { status: 404 }) + } + + // write caching headers, etag, and other metadata from r2 + const headers = new Headers() + object.writeHttpMetadata(headers) + headers.set("ETag", object.httpEtag) + headers.set("Cache-Control", DOWNLOAD_CACHE_CONTROL) + headers.set("Content-Disposition", `attachment; filename="elide-${version}-${platform}.${format}"`) + + return new Response(object.body, { + headers, + }) +} + +// Serve an Elide installation download from GitHub, via a redirect. +async function serveDownloadFromGitHub(url: URL, request: Request, params: ElideInstallParams): Promise { + const { version, platform, format } = params + const sampleUrl = `${GITHUB_BASE}/${version}/elide-${version}-${platform}.${format}` + console.log(`Serving redirect to GitHub download: '${sampleUrl}'`, { url, request }) + const headers = new Headers() + headers.set("Location", sampleUrl) + headers.set("Cache-Control", DOWNLOAD_CACHE_CONTROL) + + return new Response(null, { + status: 302, // Found + statusText: "Found", + headers, + }) +} + +// Satisfy checked download parameters. +async function serveOrSendDownload( + env: Env, + url: URL, + request: Request, + params: ElideInstallParams, +): Promise { + const { backend } = params + if (backend === ServingBackend.ghs) { + return serveDownloadFromGitHub(url, request, params) + } + return serveDownloadFromR2(env, url, request, params) +} + +// Record request/response stats to Analytics Engine. +async function record( + env: Env, + start: number, + url: URL, + request: Request, + response: Promise | Response, + success: boolean, + cached: boolean, + params?: ElideInstallParams, +): Promise { + const end = performance.now() + const duration = end - start + const resp = response instanceof Response ? response : await response + const status = resp ? resp.status : 500 + + console.log(`Completed with status ${status}; duration: ${duration}ms`, { + success, + cached, + url, + request, + }) + + const version = params?.version || "version-unknown" + const platform = params?.platform || "platform-unknown" + const backend = params?.backend || ServingBackend.r2 + + env.ANALYTICS.writeDataPoint({ + "indexes": [version], + "doubles": [duration], + "blobs": [ + platform, + backend, + success ? "success" : "fail", + cached ? "cached" : "fresh" + ], + }) +} + +// Entrypoint for the worker. +export default class extends WorkerEntrypoint { + constructor( + ctx: ExecutionContext, + private workerEnv: Env, + ) { + super(ctx, workerEnv) + } + + async fetch(request: Request): Promise { + // 0. take a timestamp. + const start = performance.now() + + // 1. always parse the URL. + const url = new URL(request.url) + + // special case: if the pathname starts with `/cli/`, let it through, it is + // a legacy download URL. + if (url.pathname.startsWith("/cli/")) { + const obj = await this.env.STORAGE.get(url.pathname.slice(1)) + if (obj === null) { + console.warn(`Storage URL not found: '${url.pathname}'; returning 404`) + return new Response("Not Found", { status: 404 }) + } + + const headers = new Headers() + obj.writeHttpMetadata(headers) + headers.set("ETag", obj.httpEtag) + const resp = new Response(obj.body, { headers }) + this.ctx.waitUntil(record( + this.env, + start, + url, + request, + resp, + true, + false, + )) + return resp + } + + // 2. try to match against the http cache. + // (not implemented yet) + const cache = await caches.open("default") + const cached = await cache.match(request.url) + + // 3. if the http cache matched, serve it directly. + if (cached) { + console.log("Match cached response; returning", { url, request }) + this.ctx.waitUntil(record( + this.env, + start, + url, + request, + cached, + true, + true, + )) + return cached + } + + try { + // 4. try to extract URL params, or fall back to the UA, or throw. this + // will resolve the "latest" version of elide if needed. + const params = await extractParams(url, request) + + // 5. serve the download or a redirect. + console.log("Serving download", params) + const response = await serveOrSendDownload(this.workerEnv, url, request, params) + + if (response && response.status < 400) { + // 6. successful responses should be cached. + console.log("Enqueuing for cached access") + this.ctx.waitUntil(cache.put(url, response.clone())) + } + // 7. all responses should be recorded for metrics. + this.ctx.waitUntil( + record(this.env, start, url, request, response, true, false, params) + ) + return response + } catch (err) { + if (err instanceof Response) { + this.ctx.waitUntil( + record(this.env, start, url, request, err, false, false) + ) + return err + } + throw err + } + } +} diff --git a/project/infra/install/wrangler.toml b/project/infra/install/wrangler.toml new file mode 100644 index 0000000000..7ee2a22439 --- /dev/null +++ b/project/infra/install/wrangler.toml @@ -0,0 +1,22 @@ +name = "elide-install" +main = "worker.ts" +compatibility_date = "2025-03-14" + +routes = [ + { pattern = "gha.elide.dev", custom_domain = true }, + { pattern = "dl.elide.dev", custom_domain = true }, + { pattern = "dl2.elide.dev", custom_domain = true }, + { pattern = "elide.zip", custom_domain = true }, + { pattern = "gha.elide.zip", custom_domain = true }, +] + +r2_buckets = [ + { binding = "STORAGE", bucket_name = "elide-tools" }, +] + +analytics_engine_datasets = [ + { binding = "ANALYTICS", dataset = "elide_install_v1" }, +] + +[observability.logs] +enabled = true diff --git a/runtime b/runtime deleted file mode 160000 index d342a1b17f..0000000000 --- a/runtime +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d342a1b17f25888e08460e5ea9dc76f5750096b3 diff --git a/settings-gradle.lockfile b/settings-gradle.lockfile deleted file mode 100644 index 709a43f74f..0000000000 --- a/settings-gradle.lockfile +++ /dev/null @@ -1,4 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -empty=incomingCatalogForLibs0 diff --git a/settings.gradle.kts b/settings.gradle.kts index 8913f43e31..e8cf4f30b0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -234,7 +234,7 @@ if (enableNativeTransport == "true") { if (buildBenchmarks == "true") { include( - ":benchmarks:bench-graalvm", + ":tools:benchmarks:bench-graalvm", ) } @@ -261,6 +261,10 @@ if (gradle.startParameter.taskNames.size == 1 && gradle.startParameter.taskNames // force-disable gradle.startParameter.isBuildCacheEnabled = false +} else { + buildCache { + local.isEnabled = true + } } // diff --git a/third_party/Makefile b/third_party/Makefile index 3f6a19bce2..f6ce375a26 100644 --- a/third_party/Makefile +++ b/third_party/Makefile @@ -275,11 +275,10 @@ $(TARGET_ROOT)/lib/libz.a: && $(ZLIB_PREFIX) $(MAKE) install SQLITE3_CONFIGURE ?=--enable-all -SQLITE3_CONFIGURE += --enable-memsys5 -SQLITE3_CONFIGURE += --enable-update-limit SQLITE3_CONFIGURE += --disable-debug SQLITE3_CONFIGURE += --enable-static SQLITE3_CONFIGURE += --enable-shared +SQLITE3_CONFIGURE += --disable-math SQLITE3_FLAGS =SQLITE_CORE=1 SQLITE3_FLAGS += SQLITE_DEFAULT_FILE_PERMISSIONS=0666 @@ -304,7 +303,7 @@ SQLITE3_FLAGS += SQLITE_MAX_MMAP_SIZE=1099511627776 SQLITE3_FLAGS += SQLITE_MAX_PAGE_COUNT=4294967294 SQLITE3_FLAGS += SQLITE_MAX_SQL_LENGTH=1073741824 SQLITE3_FLAGS += SQLITE_MAX_VARIABLE_NUMBER=250000 -SQLITE3_FLAGS += SQLITE_THREADSAFE=1 +SQLITE3_FLAGS += SQLITE_THREADSAFE=0 SQLITE3_SETTINGS ?=$(foreach flag,$(SQLITE3_FLAGS),-D$(flag)) diff --git a/third_party/oracle/graaljs.jar b/third_party/oracle/graaljs.jar deleted file mode 100644 index 41cae51696..0000000000 Binary files a/third_party/oracle/graaljs.jar and /dev/null differ diff --git a/third_party/oracle/truffle-api.jar b/third_party/oracle/truffle-api.jar deleted file mode 100644 index 8e5c9bf585..0000000000 Binary files a/third_party/oracle/truffle-api.jar and /dev/null differ diff --git a/benchmarks/README.md b/tools/benchmarks/README.md similarity index 100% rename from benchmarks/README.md rename to tools/benchmarks/README.md diff --git a/benchmarks/bench-graalvm/build.gradle.kts b/tools/benchmarks/bench-graalvm/build.gradle.kts similarity index 100% rename from benchmarks/bench-graalvm/build.gradle.kts rename to tools/benchmarks/bench-graalvm/build.gradle.kts diff --git a/benchmarks/bench-graalvm/jmh/src/benchmarks/context/InjectionContextBenchmark.kt b/tools/benchmarks/bench-graalvm/jmh/src/benchmarks/context/InjectionContextBenchmark.kt similarity index 100% rename from benchmarks/bench-graalvm/jmh/src/benchmarks/context/InjectionContextBenchmark.kt rename to tools/benchmarks/bench-graalvm/jmh/src/benchmarks/context/InjectionContextBenchmark.kt diff --git a/benchmarks/bench-graalvm/jmh/src/benchmarks/entry/EntryBenchmark.kt b/tools/benchmarks/bench-graalvm/jmh/src/benchmarks/entry/EntryBenchmark.kt similarity index 100% rename from benchmarks/bench-graalvm/jmh/src/benchmarks/entry/EntryBenchmark.kt rename to tools/benchmarks/bench-graalvm/jmh/src/benchmarks/entry/EntryBenchmark.kt diff --git a/benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/GuestVMDispatchBenchmark.kt b/tools/benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/GuestVMDispatchBenchmark.kt similarity index 93% rename from benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/GuestVMDispatchBenchmark.kt rename to tools/benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/GuestVMDispatchBenchmark.kt index 42cb1000a0..50dca8582c 100644 --- a/benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/GuestVMDispatchBenchmark.kt +++ b/tools/benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/GuestVMDispatchBenchmark.kt @@ -16,11 +16,18 @@ ExperimentalCoroutinesApi::class ) +@file:Suppress( + "unused", + "TooGenericExceptionCaught", + "PrintStackTrace", + "MagicNumber", + "ForEachOnRange", +) + package benchmarks.gvm import com.lmax.disruptor.EventFactory import com.lmax.disruptor.EventHandler -import com.lmax.disruptor.WorkHandler import com.lmax.disruptor.dsl.Disruptor import com.lmax.disruptor.util.DaemonThreadFactory import org.openjdk.jmh.annotations.* @@ -90,7 +97,7 @@ class GuestVMDispatchBenchmark { private val disruptor: Disruptor = Disruptor( eventFactory, 1024, - executor, + DaemonThreadFactory.INSTANCE, ) private val contextLock = Mutex() private val contextLock2 = Mutex() @@ -182,21 +189,13 @@ class GuestVMDispatchBenchmark { private class DisruptorTestHandler ( val context: VMContext, val target: Value, - ) : EventHandler, WorkHandler { + ) : EventHandler { // Whether the worker is executing. private var locked: Boolean = false // Processed event count. private var processed: Long = 0 - override fun onEvent(event: DisruptorGuestInvocationEvent) { - processed += 1 - context.enter() - val result = target.execute(42, 43).asString() - context.leave() - event.respond(result) - } - override fun onEvent(event: DisruptorGuestInvocationEvent, sequence: Long, endOfBatch: Boolean) { if (!locked) { locked = true @@ -228,7 +227,7 @@ class GuestVMDispatchBenchmark { executor.shutdown() Dispatchers.resetMain() mainThreadSurrogate.close() - } catch (err: Throwable) { + } catch (_: Throwable) { // ignore } } @@ -244,7 +243,7 @@ class GuestVMDispatchBenchmark { for (i in 0..workloadFactor) { assert("{\"x\":42,\"y\":43}" == json.execute(42, 43).asString()) } - } catch (ise: IllegalStateException) { + } catch (_: IllegalStateException) { hadException.set(true) } finally { ctx.leave() @@ -273,13 +272,13 @@ class GuestVMDispatchBenchmark { try { val buf = disruptor.ringBuffer - for (i in 0..workloadFactor) { + repeat(workloadFactor) { buf.publishEvent { event, _ -> event.set(42, 43, validator) } } waiter.await() - } catch (ixe: InterruptedException) { + } catch (_: InterruptedException) { Thread.interrupted() } } catch (err: Throwable) { diff --git a/benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/SQLiteBenchmark.kt b/tools/benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/SQLiteBenchmark.kt similarity index 100% rename from benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/SQLiteBenchmark.kt rename to tools/benchmarks/bench-graalvm/jmh/src/benchmarks/gvm/SQLiteBenchmark.kt diff --git a/benchmarks/bench-graalvm/jmh/src/benchmarks/node/NodePathsBenchmark.kt b/tools/benchmarks/bench-graalvm/jmh/src/benchmarks/node/NodePathsBenchmark.kt similarity index 100% rename from benchmarks/bench-graalvm/jmh/src/benchmarks/node/NodePathsBenchmark.kt rename to tools/benchmarks/bench-graalvm/jmh/src/benchmarks/node/NodePathsBenchmark.kt diff --git a/benchmarks/core/build.gradle.kts b/tools/benchmarks/core/build.gradle.kts similarity index 100% rename from benchmarks/core/build.gradle.kts rename to tools/benchmarks/core/build.gradle.kts diff --git a/benchmarks/server/build.gradle.kts b/tools/benchmarks/server/build.gradle.kts similarity index 100% rename from benchmarks/server/build.gradle.kts rename to tools/benchmarks/server/build.gradle.kts diff --git a/benchmarks/server/jmh/resources/application.yml b/tools/benchmarks/server/jmh/resources/application.yml similarity index 100% rename from benchmarks/server/jmh/resources/application.yml rename to tools/benchmarks/server/jmh/resources/application.yml diff --git a/benchmarks/server/jmh/resources/assets/app.assets.pb b/tools/benchmarks/server/jmh/resources/assets/app.assets.pb similarity index 100% rename from benchmarks/server/jmh/resources/assets/app.assets.pb rename to tools/benchmarks/server/jmh/resources/assets/app.assets.pb diff --git a/benchmarks/server/jmh/resources/logback.xml b/tools/benchmarks/server/jmh/resources/logback.xml similarity index 100% rename from benchmarks/server/jmh/resources/logback.xml rename to tools/benchmarks/server/jmh/resources/logback.xml diff --git a/benchmarks/server/jmh/resources/manifests/app.assets.pb b/tools/benchmarks/server/jmh/resources/manifests/app.assets.pb similarity index 100% rename from benchmarks/server/jmh/resources/manifests/app.assets.pb rename to tools/benchmarks/server/jmh/resources/manifests/app.assets.pb diff --git a/benchmarks/server/jmh/resources/manifests/app.assets.pb.json b/tools/benchmarks/server/jmh/resources/manifests/app.assets.pb.json similarity index 100% rename from benchmarks/server/jmh/resources/manifests/app.assets.pb.json rename to tools/benchmarks/server/jmh/resources/manifests/app.assets.pb.json diff --git a/benchmarks/server/jmh/resources/manifests/app.assets.pb.txt b/tools/benchmarks/server/jmh/resources/manifests/app.assets.pb.txt similarity index 100% rename from benchmarks/server/jmh/resources/manifests/app.assets.pb.txt rename to tools/benchmarks/server/jmh/resources/manifests/app.assets.pb.txt diff --git a/benchmarks/server/jmh/resources/static/something.txt b/tools/benchmarks/server/jmh/resources/static/something.txt similarity index 100% rename from benchmarks/server/jmh/resources/static/something.txt rename to tools/benchmarks/server/jmh/resources/static/something.txt diff --git a/benchmarks/server/jmh/src/elide/benchmarks/server/PageBenchmarkDirect.kt b/tools/benchmarks/server/jmh/src/elide/benchmarks/server/PageBenchmarkDirect.kt similarity index 100% rename from benchmarks/server/jmh/src/elide/benchmarks/server/PageBenchmarkDirect.kt rename to tools/benchmarks/server/jmh/src/elide/benchmarks/server/PageBenchmarkDirect.kt diff --git a/benchmarks/server/jmh/src/elide/benchmarks/server/PageBenchmarkHttp.kt b/tools/benchmarks/server/jmh/src/elide/benchmarks/server/PageBenchmarkHttp.kt similarity index 100% rename from benchmarks/server/jmh/src/elide/benchmarks/server/PageBenchmarkHttp.kt rename to tools/benchmarks/server/jmh/src/elide/benchmarks/server/PageBenchmarkHttp.kt diff --git a/tools/biome.jsonc b/tools/biome.jsonc new file mode 100644 index 0000000000..3974095225 --- /dev/null +++ b/tools/biome.jsonc @@ -0,0 +1,4 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", + "extends": ["../config/biome.jsonc"] +} diff --git a/tools/elide-build/build.gradle.kts b/tools/elide-build/build.gradle.kts index af403704bc..7822faf6cd 100644 --- a/tools/elide-build/build.gradle.kts +++ b/tools/elide-build/build.gradle.kts @@ -90,6 +90,8 @@ tasks.withType().configureEach { dependencies { implementation(gradleApi()) + api(libs.asm.core) + api(libs.asm.tree) // included plugins and dependencies implementation(libs.bouncycastle) @@ -104,7 +106,6 @@ dependencies { implementation(libs.plugin.dokka.base) implementation(libs.plugin.dokka.versioning) implementation(libs.plugin.dokka.templating) - implementation(libs.plugin.dokka.kotlinAsJava) implementation(libs.plugin.dokka.mermaid) implementation(libs.plugin.graalvm) implementation(libs.plugin.kotlin) @@ -132,6 +133,10 @@ dependencies { implementation(libs.plugin.kotlin.jsObjects) implementation(libs.plugin.kotlinx.serialization) implementation(libs.plugin.kotlinx.atomicfu) + implementation(libs.plugin.kotlinx.abiValidator) { + exclude(group = "org.objectweb.asm", module = "asm") + exclude(group = "org.objectweb.asm", module = "asm-tree") + } } // Plugin: Test Logger @@ -212,3 +217,13 @@ configurations.all { } } } + +configurations.all { + resolutionStrategy.eachDependency { + val asm = libs.asm.core.get() + if (requested.group == asm.group && requested.name == asm.name) { + useVersion(libs.versions.asm.get()) + because("need better bytecode support") + } + } +} diff --git a/tools/elide-build/gradle.lockfile b/tools/elide-build/gradle.lockfile index 301bb7e8b7..3f1f0ff1f8 100644 --- a/tools/elide-build/gradle.lockfile +++ b/tools/elide-build/gradle.lockfile @@ -24,16 +24,16 @@ com.glureau:html-mermaid-dokka-plugin:0.6.0=compileClasspath,runtimeClasspath com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath com.google.code.gson:gson:2.11.0=runtimeClasspath com.google.code.gson:gson:2.8.9=compileClasspath -com.google.devtools.ksp:symbol-processing-api:2.1.20-RC-1.0.30=runtimeClasspath -com.google.devtools.ksp:symbol-processing-common-deps:2.1.20-RC-1.0.30=runtimeClasspath -com.google.devtools.ksp:symbol-processing-gradle-plugin:2.1.20-RC-1.0.30=compileClasspath,runtimeClasspath +com.google.devtools.ksp:symbol-processing-api:2.1.20-RC2-1.0.31=runtimeClasspath +com.google.devtools.ksp:symbol-processing-common-deps:2.1.20-RC2-1.0.31=runtimeClasspath +com.google.devtools.ksp:symbol-processing-gradle-plugin:2.1.20-RC2-1.0.31=compileClasspath,runtimeClasspath com.google.errorprone:error_prone_annotations:2.36.0=compileClasspath,runtimeClasspath com.google.guava:failureaccess:1.0.3-jpms=compileClasspath,runtimeClasspath com.google.guava:guava:33.4.0-jre-jpms=compileClasspath,runtimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=compileClasspath,runtimeClasspath com.google.j2objc:j2objc-annotations:3.0.0=compileClasspath,runtimeClasspath -com.google.protobuf:protobuf-java-util:3.25.2=compileClasspath,runtimeClasspath -com.google.protobuf:protobuf-java:3.25.2=compileClasspath,runtimeClasspath +com.google.protobuf:protobuf-java-util:4.28.2=compileClasspath,runtimeClasspath +com.google.protobuf:protobuf-java:4.28.2=compileClasspath,runtimeClasspath com.googlecode.concurrent-trees:concurrent-trees:2.6.1=runtimeClasspath com.googlecode.javaewah:JavaEWAH:1.2.3=compileClasspath,runtimeClasspath com.h2database:h2:2.3.232=compileClasspath,runtimeClasspath @@ -47,6 +47,7 @@ commons-io:commons-io:2.11.0=runtimeClasspath dev.equo.ide:solstice:1.7.5=runtimeClasspath dev.sigstore:sigstore-gradle-sign-base-plugin:0.7.0=compileClasspath,runtimeClasspath dev.sigstore:sigstore-gradle-sign-plugin:0.7.0=compileClasspath,runtimeClasspath +io.github.java-diff-utils:java-diff-utils:4.12=runtimeClasspath io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.8=compileClasspath,runtimeClasspath jakarta.activation:jakarta.activation-api:1.2.1=runtimeClasspath jakarta.xml.bind:jakarta.xml.bind-api:2.3.2=runtimeClasspath @@ -77,38 +78,39 @@ org.jetbrains.dokka:dokka-gradle-plugin:2.0.0=compileClasspath,runtimeClasspath org.jetbrains.dokka:kotlin-as-java-plugin:2.0.0=compileClasspath,runtimeClasspath org.jetbrains.dokka:templating-plugin:2.0.0=compileClasspath,runtimeClasspath org.jetbrains.dokka:versioning-plugin:2.0.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:atomicfu:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:compose-compiler-gradle-plugin:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:fus-statistics-gradle-plugin:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:js-plain-objects:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-allopen:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:atomicfu:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:compose-compiler-gradle-plugin:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:fus-statistics-gradle-plugin:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:js-plain-objects:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-allopen:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-bom:2.0.21=runtimeClasspath -org.jetbrains.kotlin:kotlin-build-statistics:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-build-tools-api:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-compiler-runner:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-daemon-client:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-api:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin-model:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-gradle-plugins-bom:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-klib-commonizer-api:2.1.20-RC=runtimeClasspath +org.jetbrains.kotlin:kotlin-build-statistics:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-build-tools-api:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-compiler-runner:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-daemon-client:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-api:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin-model:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-gradle-plugins-bom:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-klib-commonizer-api:2.1.20-RC2=runtimeClasspath org.jetbrains.kotlin:kotlin-metadata-jvm:2.1.0=runtimeClasspath -org.jetbrains.kotlin:kotlin-native-utils:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-noarg:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-power-assert:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-native-utils:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-noarg:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-power-assert:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-serialization:2.1.20-RC=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-serialization:2.1.20-RC2=compileClasspath,runtimeClasspath org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0=runtimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=runtimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=runtimeClasspath org.jetbrains.kotlin:kotlin-stdlib:2.1.0=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-tooling-core:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-util-io:2.1.20-RC=compileClasspath,runtimeClasspath -org.jetbrains.kotlin:kotlin-util-klib-metadata:2.1.20-RC=runtimeClasspath -org.jetbrains.kotlin:kotlin-util-klib:2.1.20-RC=runtimeClasspath +org.jetbrains.kotlin:kotlin-tooling-core:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-util-io:2.1.20-RC2=compileClasspath,runtimeClasspath +org.jetbrains.kotlin:kotlin-util-klib-metadata:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlin:kotlin-util-klib:2.1.20-RC2=runtimeClasspath +org.jetbrains.kotlinx:binary-compatibility-validator:0.17.0=compileClasspath,runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.8.0=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=runtimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0=runtimeClasspath @@ -125,9 +127,9 @@ org.jspecify:jspecify:1.0.0=compileClasspath,runtimeClasspath org.mozilla:rhino:1.7.10=runtimeClasspath org.ow2.asm:asm-analysis:9.7=runtimeClasspath org.ow2.asm:asm-commons:9.7=runtimeClasspath -org.ow2.asm:asm-tree:9.7=runtimeClasspath +org.ow2.asm:asm-tree:9.7.1=compileClasspath,runtimeClasspath org.ow2.asm:asm-util:9.7=runtimeClasspath -org.ow2.asm:asm:9.7=runtimeClasspath +org.ow2.asm:asm:9.7.1=compileClasspath,runtimeClasspath org.slf4j:slf4j-api:1.7.36=compileClasspath org.slf4j:slf4j-api:1.8.0-alpha2=runtimeClasspath org.slf4j:slf4j-simple:1.8.0-alpha2=runtimeClasspath diff --git a/tools/elide-build/gradle.properties b/tools/elide-build/gradle.properties index d45ac2754c..b2f8fdcc15 100644 --- a/tools/elide-build/gradle.properties +++ b/tools/elide-build/gradle.properties @@ -11,7 +11,7 @@ # License for the specific language governing permissions and limitations under the License. # -kotlinVersion = 2.1.20-RC +kotlinVersion = 2.1.20-RC3 elide.atomicFu = false elide.publish.repo.maven = s3://elide-maven diff --git a/tools/elide-build/settings.gradle.kts b/tools/elide-build/settings.gradle.kts index a131ee9440..a2be347cde 100644 --- a/tools/elide-build/settings.gradle.kts +++ b/tools/elide-build/settings.gradle.kts @@ -82,3 +82,7 @@ gradleEnterprise { termsOfServiceAgree = "yes" } } + +buildCache { + local.isEnabled = true +} diff --git a/tools/elide-build/src/main/kotlin/elide/internal/conventions/Constants.kt b/tools/elide-build/src/main/kotlin/elide/internal/conventions/Constants.kt index 874564690c..52fb12dcb8 100644 --- a/tools/elide-build/src/main/kotlin/elide/internal/conventions/Constants.kt +++ b/tools/elide-build/src/main/kotlin/elide/internal/conventions/Constants.kt @@ -84,7 +84,7 @@ public object Constants { const val KOTLIN = "versions.kotlin.language" /** Constant: default Kotlin SDK version if no other version is defined. */ - const val KOTLIN_SDK_PIN = "2.1.20-RC" + const val KOTLIN_SDK_PIN = "2.1.20-RC3" /** Constant: pinned version of Kotlin Coroutines. */ const val COROUTINES = "1.10.1" @@ -111,10 +111,10 @@ public object Constants { const val JVM_TARGET = "versions.java.target" /** Property: JVM bytecode target if no other version is specified. */ - const val JVM_DEFAULT = "21" + const val JVM_DEFAULT = "23" /** GraalVM metadata repository version. */ - const val GRAALVM_METADATA = "0.3.8" + const val GRAALVM_METADATA = "0.3.16" /** Version to pin for Diktat. */ const val DIKTAT = "2.0.0" @@ -207,7 +207,7 @@ public object Constants { private const val MAJOR_VERSION = "1.0.0" /** Major library version tag. */ - private const val VERSION_TAG = "alpha14" + private const val VERSION_TAG = "beta1" /** Version string for the library. */ public const val VERSION: String = "$MAJOR_VERSION-$VERSION_TAG" diff --git a/tools/elide-build/src/main/kotlin/elide/internal/conventions/ElideBuildExtension.kt b/tools/elide-build/src/main/kotlin/elide/internal/conventions/ElideBuildExtension.kt index 3cc81fe840..bc294024d7 100644 --- a/tools/elide-build/src/main/kotlin/elide/internal/conventions/ElideBuildExtension.kt +++ b/tools/elide-build/src/main/kotlin/elide/internal/conventions/ElideBuildExtension.kt @@ -160,13 +160,13 @@ public class ElideBuildExtension internal constructor(internal val project: Proj public var spotless: Boolean = true /** Whether to enable Checkstyle. */ - public var checkstyle: Boolean = true + public var checkstyle: Boolean = false /** Whether to enable experimental checks. */ public var experimental: Boolean = false /** Whether to enable PMD. */ - public var pmd: Boolean = true + public var pmd: Boolean = false /** Whether to enforce formatting/linting on `check`. */ public var enforceCheck: Boolean = false diff --git a/tools/elide-build/src/main/kotlin/elide/internal/conventions/docs/DokkaConventionsPlugin.kt b/tools/elide-build/src/main/kotlin/elide/internal/conventions/docs/DokkaConventionsPlugin.kt index 0d4581fe28..26a94e9faf 100644 --- a/tools/elide-build/src/main/kotlin/elide/internal/conventions/docs/DokkaConventionsPlugin.kt +++ b/tools/elide-build/src/main/kotlin/elide/internal/conventions/docs/DokkaConventionsPlugin.kt @@ -30,17 +30,17 @@ import elide.internal.conventions.ElideBuildExtension private fun DokkaTask.configureDokkaForProject(conventions: ElideBuildExtension, target: Project) { if (conventions.docs.requested && conventions.docs.enabled) { val docAsset: (String) -> File = { - target.rootProject.layout.projectDirectory.file("docs/$it").asFile + target.rootProject.layout.projectDirectory.file("project/docs/$it").asFile } val creativeAsset: (String) -> File = { - target.rootProject.layout.projectDirectory.file("creative/$it").asFile + target.rootProject.layout.projectDirectory.file("project/creative/$it").asFile } pluginConfiguration { moduleName = "Elide API" moduleVersion = project.version as String - footerMessage = "© 2023—2024 Elide Technologies, Inc." - templatesDir = target.rootProject.layout.projectDirectory.dir("docs/templates").asFile + footerMessage = "© 2023—2025 Elide Technologies, Inc." + templatesDir = target.rootProject.layout.projectDirectory.dir("project/docs/templates").asFile customAssets = listOf( creativeAsset("logo/logo-wide-1200-w-r2.png"), creativeAsset("logo/gray-elide-symbol-lg.png"), @@ -54,9 +54,9 @@ private fun DokkaTask.configureDokkaForProject(conventions: ElideBuildExtension, val projectVersion = project.version as String pluginConfiguration { version = projectVersion - versionsOrdering = listOf("1.0.0-alpha8") - olderVersionsDir = project.file("docs/versions") - olderVersions = listOf(project.file("docs/versions/1.0.0-alpha8")) + versionsOrdering = listOf("1.0.0-beta1") + olderVersionsDir = project.file("project/docs/versions") + olderVersions = emptyList() renderVersionsNavigationOnAllPages = true } } diff --git a/tools/elide-build/src/main/kotlin/elide/internal/conventions/jvm/JavaConventions.kt b/tools/elide-build/src/main/kotlin/elide/internal/conventions/jvm/JavaConventions.kt index 73806094ba..4f234b9765 100644 --- a/tools/elide-build/src/main/kotlin/elide/internal/conventions/jvm/JavaConventions.kt +++ b/tools/elide-build/src/main/kotlin/elide/internal/conventions/jvm/JavaConventions.kt @@ -41,7 +41,7 @@ import elide.internal.conventions.publishing.publishSourcesJar import elide.internal.transforms.AutomaticModuleTransform import elide.internal.transforms.JarMinifier -private val enableTransforms = false +private const val enableTransforms = false internal val lockedConfigurations = sortedSetOf( "classpath", diff --git a/tools/elide-build/src/main/kotlin/elide/internal/conventions/native/NativeBuildConventions.kt b/tools/elide-build/src/main/kotlin/elide/internal/conventions/native/NativeBuildConventions.kt index f89272a5fc..463bd6ea7e 100644 --- a/tools/elide-build/src/main/kotlin/elide/internal/conventions/native/NativeBuildConventions.kt +++ b/tools/elide-build/src/main/kotlin/elide/internal/conventions/native/NativeBuildConventions.kt @@ -71,7 +71,6 @@ internal fun Project.configureNativeBuild( version.set(Versions.GRAALVM_METADATA) } - // shared libraries and apps have test support enabled (not applied to native samples) testSupport.set(target == LIB || target == APP) diff --git a/tools/images/base-alpine/Dockerfile b/tools/images/base-alpine/Dockerfile index a0ed60566e..1ba93602e9 100644 --- a/tools/images/base-alpine/Dockerfile +++ b/tools/images/base-alpine/Dockerfile @@ -6,7 +6,7 @@ FROM alpine:${ALPINE_VERSION}${ALPINE_HASH} LABEL org.opencontainers.image.vendor=Elide LABEL org.opencontainers.image.title="Elide Base (Alpine)" LABEL org.opencontainers.image.description="Base image for Elide apps and tools built on top of musl-libc" -LABEL org.opencontainers.image.version=v1.0.0-alpha14 +LABEL org.opencontainers.image.version=v1.0.0-beta1 LABEL org.opencontainers.image.url=https://github.com/elide-dev/elide LABEL org.opencontainers.image.base.name=alpine:${ALPINE_VERSION} LABEL org.opencontainers.image.source=https://github.com/elide-dev/elide/blob/main/tools/images/base-alpine/Dockerfile diff --git a/tools/images/base/Dockerfile b/tools/images/base/Dockerfile index 5b72a7de3a..48b3c097ac 100644 --- a/tools/images/base/Dockerfile +++ b/tools/images/base/Dockerfile @@ -6,7 +6,7 @@ FROM ubuntu:${UBUNTU_VERSION}${UBUNTU_HASH} LABEL org.opencontainers.image.vendor=Elide LABEL org.opencontainers.image.title="Elide Base" LABEL org.opencontainers.image.description="Base image for Elide apps and tools" -LABEL org.opencontainers.image.version=v1.0.0-alpha14 +LABEL org.opencontainers.image.version=v1.0.0-beta1 LABEL org.opencontainers.image.url=https://github.com/elide-dev/elide LABEL org.opencontainers.image.base.name=ubuntu:${UBUNTU_VERSION} LABEL org.opencontainers.image.source=https://github.com/elide-dev/elide/blob/main/tools/images/base/Dockerfile diff --git a/tools/images/bash/Dockerfile b/tools/images/bash/Dockerfile index 24e08c9e8d..19ccb956ee 100644 --- a/tools/images/bash/Dockerfile +++ b/tools/images/bash/Dockerfile @@ -3,7 +3,7 @@ FROM --platform=linux/amd64 debian:stable-slim AS base LABEL org.opencontainers.image.vendor=Elide LABEL org.opencontainers.image.title="Elide Runtime with Bash" LABEL org.opencontainers.image.description="Elide runtime CLI as a container image, with Bash and several tools" -LABEL org.opencontainers.image.version=1.0.0-alpha14 +LABEL org.opencontainers.image.version=1.0.0-beta1 LABEL org.opencontainers.image.url=https://github.com/elide-dev/elide LABEL org.opencontainers.image.base.name=ghcr.io/elide-dev/base LABEL org.opencontainers.image.base.digest=sha256:ce2fe9474ca168eebfd35b0c7682db11045b0f10418ec46ae9b0c7610c295913 diff --git a/tools/images/bench/Dockerfile b/tools/images/bench/Dockerfile index 7936a6390c..93dc9f21a0 100644 --- a/tools/images/bench/Dockerfile +++ b/tools/images/bench/Dockerfile @@ -3,7 +3,7 @@ FROM --platform=linux/amd64 debian:stable-slim AS runtime LABEL org.opencontainers.image.vendor=Elide LABEL org.opencontainers.image.title="Elide Runtime" LABEL org.opencontainers.image.description="Elide bench container image" -LABEL org.opencontainers.image.version=1.0.0-alpha14-bench1 +LABEL org.opencontainers.image.version=1.0.0-beta1-bench1 LABEL org.opencontainers.image.url=https://github.com/elide-dev/elide LABEL org.opencontainers.image.base.name=ghcr.io/elide-dev/base LABEL org.opencontainers.image.base.digest=sha256:ce2fe9474ca168eebfd35b0c7682db11045b0f10418ec46ae9b0c7610c295913 diff --git a/tools/images/builder/Dockerfile b/tools/images/builder/Dockerfile index 76dbcd6345..cc6cd19644 100644 --- a/tools/images/builder/Dockerfile +++ b/tools/images/builder/Dockerfile @@ -16,7 +16,7 @@ ARG GRADLE_DIST=bin LABEL org.opencontainers.image.vendor=Elide LABEL org.opencontainers.image.title="Elide Builder" LABEL org.opencontainers.image.description="Builder image for Elide apps and tools" -LABEL org.opencontainers.image.version=v1.0.0-alpha14 +LABEL org.opencontainers.image.version=v1.0.0-beta1 LABEL org.opencontainers.image.url=https://github.com/elide-dev/elide LABEL org.opencontainers.image.base.name=us-docker.pkg.dev/elide-fw/tools/base LABEL org.opencontainers.image.source=https://github.com/elide-dev/elide/blob/main/tools/images/builder/Dockerfile diff --git a/tools/images/codespace/Dockerfile b/tools/images/codespace/Dockerfile index 5193bd1d34..43763705d2 100644 --- a/tools/images/codespace/Dockerfile +++ b/tools/images/codespace/Dockerfile @@ -6,7 +6,7 @@ ARG IBAZEL_VERSION=v0.15.10 ARG NODE_VERSION="23" ARG YARN_VERSION="berry" ARG GRADLE_VERSION=8.12 -ARG KOTLIN_VERSION=2.1.20-RC +ARG KOTLIN_VERSION=2.1.20-RC3 ARG LLVM_VERSION=18 ARG GRADLE_DIST=bin ARG INSTALL_ZSH="true" diff --git a/tools/images/elide/Dockerfile b/tools/images/elide/Dockerfile index db089a2c66..fe5944730e 100644 --- a/tools/images/elide/Dockerfile +++ b/tools/images/elide/Dockerfile @@ -18,7 +18,7 @@ FROM --platform=linux/amd64 debian:stable-slim AS runtime LABEL org.opencontainers.image.vendor=Elide LABEL org.opencontainers.image.title="Elide Runtime" LABEL org.opencontainers.image.description="Elide runtime CLI as a container image" -LABEL org.opencontainers.image.version=1.0.0-alpha14 +LABEL org.opencontainers.image.version=1.0.0-beta1 LABEL org.opencontainers.image.url=https://github.com/elide-dev/elide LABEL org.opencontainers.image.base.name=ghcr.io/elide-dev/base LABEL org.opencontainers.image.base.digest=sha256:ce2fe9474ca168eebfd35b0c7682db11045b0f10418ec46ae9b0c7610c295913 diff --git a/tools/images/native-alpine/Dockerfile b/tools/images/native-alpine/Dockerfile index 67d63c99c0..e19017bbf1 100644 --- a/tools/images/native-alpine/Dockerfile +++ b/tools/images/native-alpine/Dockerfile @@ -6,7 +6,7 @@ FROM ghcr.io/elide-dev/base/alpine${BASE_VERSION}${BASE_HASH} LABEL org.opencontainers.image.vendor=Elide LABEL org.opencontainers.image.title="Elide Base (Native/Alpine)" LABEL org.opencontainers.image.description="Base image for native Elide server apps on Alpine Linux" -LABEL org.opencontainers.image.version=v1.0.0-alpha14 +LABEL org.opencontainers.image.version=v1.0.0-beta1 LABEL org.opencontainers.image.url=https://github.com/elide-dev/elide LABEL org.opencontainers.image.base.name=ghcr.io/elide-dev/base/alpine LABEL org.opencontainers.image.source=https://github.com/elide-dev/elide/blob/main/tools/images/native-alpine/Dockerfile diff --git a/tools/images/native/Dockerfile b/tools/images/native/Dockerfile index e37c59c74d..657164e7a6 100644 --- a/tools/images/native/Dockerfile +++ b/tools/images/native/Dockerfile @@ -6,7 +6,7 @@ FROM ghcr.io/elide-dev/base${BASE_VERSION}${BASE_HASH} LABEL org.opencontainers.image.vendor=Elide LABEL org.opencontainers.image.title="Elide Base (Native)" LABEL org.opencontainers.image.description="Base image for native Elide server apps" -LABEL org.opencontainers.image.version=v1.0.0-alpha14 +LABEL org.opencontainers.image.version=v1.0.0-beta1 LABEL org.opencontainers.image.url=https://github.com/elide-dev/elide LABEL org.opencontainers.image.base.name=ghcr.io/elide-dev/base LABEL org.opencontainers.image.source=https://github.com/elide-dev/elide/blob/main/tools/images/native/Dockerfile diff --git a/tools/runtime b/tools/runtime new file mode 160000 index 0000000000..950c45a3bd --- /dev/null +++ b/tools/runtime @@ -0,0 +1 @@ +Subproject commit 950c45a3bd086730584c18075aa58cfbedd177c7 diff --git a/tools/scripts/fs-async.mjs b/tools/scripts/fs-async.mjs new file mode 100644 index 0000000000..e50337f7d0 --- /dev/null +++ b/tools/scripts/fs-async.mjs @@ -0,0 +1,17 @@ +import { ok } from "node:assert" +import { readFile } from "node:fs" +import { join } from "node:path" + +ok(true) + +const joined = join(process.cwd(), ".", "README.md") + +console.info("Reading:", joined) + +readFile(joined, { encoding: "utf-8" }, (err, contents) => { + if (err) { + console.error(err) + return + } + console.info("First line of contents (async)", contents.split("\n")[0]) +}) diff --git a/tools/scripts/fs-promises.mjs b/tools/scripts/fs-promises.mjs index b1b36f0bce..1036796b79 100644 --- a/tools/scripts/fs-promises.mjs +++ b/tools/scripts/fs-promises.mjs @@ -2,15 +2,15 @@ import { ok } from "node:assert" import fs from "node:fs/promises" import path from "node:path" -const joined = path.resolve(path.join(".", "README.md")) +const joined = path.resolve(path.join(process.cwd(), "README.md")) console.info("Reading:", joined) fs.readFile(joined, { encoding: "utf-8" }).then( contents => { - ok(contents) - console.info(`we got type: ${typeof contents}`) + console.info(`we got type: (${typeof contents}) ${contents}`) console.info("First line of contents", contents.split("\n")[0]) + ok(contents) }, err => { console.error(err) diff --git a/tools/scripts/fs.mjs b/tools/scripts/fs.mjs index aaf5e93a1a..cf10786e93 100644 --- a/tools/scripts/fs.mjs +++ b/tools/scripts/fs.mjs @@ -1,19 +1,13 @@ import { ok } from "node:assert" -import fs from "node:fs" -import path from "node:path" +import { readFileSync } from "node:fs" +import { join } from "node:path" -const joined = path.resolve(path.join(".", "README.md")) +ok(true) + +const joined = join(process.cwd(), ".", "README.md") console.info("Reading:", joined) -const contents = fs.readFileSync(joined, { encoding: "utf-8" }) +const contents = readFileSync(joined, { encoding: "utf-8" }) ok(contents) console.info("First line of contents", contents.split("\n")[0]) - -fs.readFile(joined, { encoding: "utf-8" }, (err, contents) => { - if (err) { - console.error(err) - return - } - console.info("First line of contents (async)", contents.split("\n")[0]) -}) diff --git a/tools/scripts/hello-fn.mjs b/tools/scripts/hello-fn.mjs new file mode 100644 index 0000000000..e27dd84805 --- /dev/null +++ b/tools/scripts/hello-fn.mjs @@ -0,0 +1,3 @@ +export function sayHello(name) { + return `Hello, ${name}!` +} diff --git a/tools/scripts/hello-fn.mts b/tools/scripts/hello-fn.mts new file mode 100644 index 0000000000..e94bb317eb --- /dev/null +++ b/tools/scripts/hello-fn.mts @@ -0,0 +1,3 @@ +export function sayHello(name: string): string { + return `Hello, ${name}!` +} diff --git a/tools/scripts/hello-import-js.mts b/tools/scripts/hello-import-js.mts new file mode 100644 index 0000000000..4665a044e2 --- /dev/null +++ b/tools/scripts/hello-import-js.mts @@ -0,0 +1,3 @@ +import { sayHello } from "./hello-fn.mjs" + +console.log(sayHello("Elide")) diff --git a/tools/scripts/hello-import.mjs b/tools/scripts/hello-import.mjs new file mode 100644 index 0000000000..4665a044e2 --- /dev/null +++ b/tools/scripts/hello-import.mjs @@ -0,0 +1,3 @@ +import { sayHello } from "./hello-fn.mjs" + +console.log(sayHello("Elide")) diff --git a/tools/scripts/hello-import.mts b/tools/scripts/hello-import.mts new file mode 100644 index 0000000000..bef3a8c000 --- /dev/null +++ b/tools/scripts/hello-import.mts @@ -0,0 +1,3 @@ +import { sayHello } from "./hello-fn.mts" + +console.log(sayHello("Elide")) diff --git a/tools/scripts/paths-default.mjs b/tools/scripts/paths-default.mjs new file mode 100644 index 0000000000..ae9741a7a5 --- /dev/null +++ b/tools/scripts/paths-default.mjs @@ -0,0 +1,8 @@ +import path from "node:path" + +const cwd = process.cwd() +console.log("cwd: ", cwd) +const this_plus_dev = path.join(cwd, ".dev", "cool", "..") +console.log("dev: ", this_plus_dev) +const actually_just_dev = path.resolve(this_plus_dev) +console.log("path: ", actually_just_dev) diff --git a/tools/scripts/say_hello.mts b/tools/scripts/say_hello.mts new file mode 100644 index 0000000000..aa9ea019f2 --- /dev/null +++ b/tools/scripts/say_hello.mts @@ -0,0 +1,5 @@ +import mod from "./say_hello.py" + +// this line exists to show that this is typescript lol +const msg: () => string = () => `${mod.say_hello()} + TypeScript!` +console.log(JSON.stringify({ x: msg() })) diff --git a/tools/scripts/say_hello.py b/tools/scripts/say_hello.py new file mode 100644 index 0000000000..4d659dc761 --- /dev/null +++ b/tools/scripts/say_hello.py @@ -0,0 +1,12 @@ +default_name = "Python" + +def say_hello(name = default_name): + return f"Hello from {name}" + +def goodbye(name = default_name): + return f"Goodbye from {name}" + +def message(leaving = False): + if leaving: + return goodbye + return say_hello diff --git a/tools/scripts/say_hello_raw.mts b/tools/scripts/say_hello_raw.mts new file mode 100644 index 0000000000..aec8f19ce8 --- /dev/null +++ b/tools/scripts/say_hello_raw.mts @@ -0,0 +1,9 @@ +import { join } from "node:path" + +const pyfile = join(process.cwd(), "tools", "scripts", "say_hello_raw.py") +Polyglot.evalFile("python", pyfile) +const sayHello = Polyglot.import("say_hello") + +// this line exists to show that this is typescript lol +const msg: () => string = () => `${sayHello()} + TypeScript!` +console.log(JSON.stringify({ x: msg() })) diff --git a/tools/scripts/say_hello_raw.py b/tools/scripts/say_hello_raw.py new file mode 100644 index 0000000000..dd5675b878 --- /dev/null +++ b/tools/scripts/say_hello_raw.py @@ -0,0 +1,8 @@ +import polyglot + +def say_hello(name = "Python"): + return f"Hello from {name}" + + +polyglot.export_value("say_hello", say_hello) + diff --git a/tools/umbrella/Cargo.toml b/tools/umbrella/Cargo.toml index b82b47497c..64f42061f2 100644 --- a/tools/umbrella/Cargo.toml +++ b/tools/umbrella/Cargo.toml @@ -8,7 +8,7 @@ license = "MIT" [lib] name = "umbrella" -crate-type = ["lib", "cdylib"] +crate-type = ["lib", "staticlib", "cdylib"] [features] default = [ @@ -18,7 +18,7 @@ default = [ "oro", ] allocator = [ - "jemalloc", + "allocator_mimalloc", ] allocator_mimalloc = ["mimalloc/default"] all = [