From 083bc67e826f1f663a02bb2994e413224cc87fcf Mon Sep 17 00:00:00 2001 From: Jiwon Kwon Date: Wed, 4 Mar 2026 16:52:23 +0900 Subject: [PATCH 1/7] Add interoperability smoke tests for Mastodon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an end-to-end smoke test suite that spins up a Mastodon instance via Docker Compose and verifies that Fedify can correctly exchange ActivityPub messages with it. The suite includes a lightweight Fedify test harness that runs inside the Docker network alongside Mastodon, and an orchestrator that drives six scenarios through the Mastodon API and harness backdoor endpoints: - Mastodon → Fedify (Follow) - Fedify → Mastodon (Follow) - Fedify → Mastodon (Create Note) - Mastodon → Fedify (Reply) - Mastodon → Fedify (Unfollow) - Fedify → Mastodon (Unfollow) Each follow scenario includes precondition checks (ensureNotFollowing / assertNotFollowing) to verify the relationship starts clean. Mastodon-specific files live in test/smoke/mastodon/ to support adding other server targets (e.g. Misskey) in sibling directories later. See: https://github.com/fedify-dev/fedify/issues/481 Co-Authored-By: Claude Opus 4.6 --- .github/workflows/smoke-mastodon.yml | 95 + .gitignore | 3 + deno.json | 3 +- deno.lock | 2096 ++++++++-------------- test/smoke/harness/backdoor.ts | 162 ++ test/smoke/harness/deno.json | 1 + test/smoke/harness/federation.ts | 98 + test/smoke/harness/main.ts | 20 + test/smoke/harness/store.ts | 22 + test/smoke/mastodon/disable_force_ssl.rb | 3 + test/smoke/mastodon/docker-compose.yml | 91 + test/smoke/mastodon/mastodon.env | 24 + test/smoke/mastodon/provision.sh | 127 ++ test/smoke/orchestrator.ts | 337 ++++ 14 files changed, 1688 insertions(+), 1394 deletions(-) create mode 100644 .github/workflows/smoke-mastodon.yml create mode 100644 test/smoke/harness/backdoor.ts create mode 100644 test/smoke/harness/deno.json create mode 100644 test/smoke/harness/federation.ts create mode 100644 test/smoke/harness/main.ts create mode 100644 test/smoke/harness/store.ts create mode 100644 test/smoke/mastodon/disable_force_ssl.rb create mode 100644 test/smoke/mastodon/docker-compose.yml create mode 100644 test/smoke/mastodon/mastodon.env create mode 100755 test/smoke/mastodon/provision.sh create mode 100644 test/smoke/orchestrator.ts diff --git a/.github/workflows/smoke-mastodon.yml b/.github/workflows/smoke-mastodon.yml new file mode 100644 index 000000000..79dcf3db7 --- /dev/null +++ b/.github/workflows/smoke-mastodon.yml @@ -0,0 +1,95 @@ +# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json +# +# Interoperability smoke tests. +# Spins up a Mastodon instance via Docker Compose and verifies that Fedify +# can correctly exchange ActivityPub messages with it. +# See: https://github.com/fedify-dev/fedify/issues/481 +name: smoke-mastodon + +on: + push: + branches: + - main + - next + - "*.*-maintenance" + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + smoke: + runs-on: ubuntu-latest + timeout-minutes: 25 + + steps: + - uses: actions/checkout@v4 + + # Only need mise for Deno (orchestrator); skip full workspace build + - uses: jdx/mise-action@v2 + with: + version: 2025.12.12 + install: true + + - name: Generate Mastodon secrets + run: | + IMAGE=ghcr.io/mastodon/mastodon:v4.3.9 + docker pull "$IMAGE" + + SECRET1=$(docker run --rm "$IMAGE" bundle exec rails secret) + SECRET2=$(docker run --rm "$IMAGE" bundle exec rails secret) + + { + echo "SECRET_KEY_BASE=$SECRET1" + echo "OTP_SECRET=$SECRET2" + docker run --rm "$IMAGE" bundle exec rails mastodon:webpush:generate_vapid_key \ + | grep -E '^[A-Z_]+=.+' + docker run --rm "$IMAGE" bundle exec rails db:encryption:init \ + | grep -E '^[A-Z_]+=.+' + } >> test/smoke/mastodon/mastodon.env + + - name: Start database and redis + run: | + docker compose -f test/smoke/mastodon/docker-compose.yml up -d db redis + docker compose -f test/smoke/mastodon/docker-compose.yml exec -T db \ + sh -c 'until pg_isready -U mastodon; do sleep 1; done' + + - name: Run DB setup and migrations + run: | + docker compose -f test/smoke/mastodon/docker-compose.yml run --rm -T \ + mastodon-web bundle exec rails db:setup + timeout-minutes: 5 + + - name: Start Mastodon stack + run: docker compose -f test/smoke/mastodon/docker-compose.yml up --wait + timeout-minutes: 12 + + - name: Provision Mastodon + run: bash test/smoke/mastodon/provision.sh + + - name: Verify connectivity + run: | + echo "=== Harness health (from mastodon-web) ===" + docker compose -f test/smoke/mastodon/docker-compose.yml exec -T mastodon-web \ + curl -sf http://fedify-harness:3001/_test/health && echo " OK" || echo " FAIL" + + echo "=== Harness health (from mastodon-sidekiq) ===" + docker compose -f test/smoke/mastodon/docker-compose.yml exec -T mastodon-sidekiq \ + curl -sf http://fedify-harness:3001/_test/health && echo " OK" || echo " FAIL" + + - name: Run smoke tests + run: | + set -a && source test/smoke/.env.test && set +a + deno run --allow-net --allow-env --unstable-temporal \ + test/smoke/orchestrator.ts + + - name: Collect logs on failure + if: failure() + run: | + echo "=== Docker Compose logs ===" + docker compose -f test/smoke/mastodon/docker-compose.yml logs --tail=500 + + - name: Teardown + if: always() + run: docker compose -f test/smoke/mastodon/docker-compose.yml down -v diff --git a/.gitignore b/.gitignore index 3c36dafdb..e2b18b38a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ dist/ node_modules/ package-lock.json repomix-output.xml +test/smoke/.env.test +test/smoke/mastodon/mastodon.env +smoke.log t.ts t2.ts plan.md diff --git a/deno.json b/deno.json index f51641b02..a893e5d53 100644 --- a/deno.json +++ b/deno.json @@ -29,7 +29,8 @@ "./packages/webfinger", "./examples/astro", "./examples/fresh", - "./examples/hono-sample" + "./examples/hono-sample", + "./test/smoke/harness" ], "imports": { "@cloudflare/workers-types": "npm:@cloudflare/workers-types@^4.20250529.0", diff --git a/deno.lock b/deno.lock index 9608d537f..440ef9db4 100644 --- a/deno.lock +++ b/deno.lock @@ -1,179 +1,105 @@ { "version": "5", "specifiers": { - "jsr:@alinea/suite@~0.6.3": "0.6.3", "jsr:@david/console-static-text@0.3": "0.3.0", "jsr:@david/dax@~0.43.2": "0.43.2", "jsr:@david/path@0.2": "0.2.0", "jsr:@david/which@~0.4.1": "0.4.1", - "jsr:@deno/esbuild-plugin@^1.2.0": "1.2.1", - "jsr:@deno/loader@~0.3.10": "0.3.12", - "jsr:@deno/loader@~0.3.2": "0.3.12", - "jsr:@fresh/build-id@1": "1.0.1", - "jsr:@fresh/core@2": "2.2.0", - "jsr:@fresh/core@^2.1.4": "2.2.0", - "jsr:@fresh/core@^2.2.0": "2.2.0", - "jsr:@fresh/plugin-vite@^1.0.7": "1.0.8", - "jsr:@hongminhee/localtunnel@0.3": "0.3.0", - "jsr:@hono/hono@^4.7.1": "4.12.0", - "jsr:@hono/hono@^4.8.3": "4.12.0", - "jsr:@logtape/file@2": "2.0.2", - "jsr:@logtape/logtape@2": "2.0.2", - "jsr:@logtape/logtape@^1.0.4": "1.3.7", - "jsr:@logtape/logtape@^2.0.2": "2.0.2", - "jsr:@optique/config@~0.10.6": "0.10.6", - "jsr:@optique/core@~0.10.6": "0.10.6", - "jsr:@optique/run@~0.10.6": "0.10.6", - "jsr:@std/assert@*": "1.0.18", - "jsr:@std/assert@0.224": "0.224.0", - "jsr:@std/assert@0.226": "0.226.0", - "jsr:@std/assert@^1.0.13": "1.0.18", - "jsr:@std/async@0.224": "0.224.2", - "jsr:@std/async@^1.0.13": "1.0.16", + "jsr:@logtape/logtape@2": "2.0.4", "jsr:@std/bytes@^1.0.6": "1.0.6", - "jsr:@std/data-structures@0.224": "0.224.1", - "jsr:@std/dotenv@~0.225.5": "0.225.6", - "jsr:@std/encoding@^1.0.10": "1.0.10", - "jsr:@std/fmt@0.224": "0.224.0", "jsr:@std/fmt@1": "1.0.9", - "jsr:@std/fmt@^1.0.7": "1.0.9", - "jsr:@std/fmt@^1.0.8": "1.0.9", - "jsr:@std/fs@0.224": "0.224.0", - "jsr:@std/fs@1": "1.0.22", - "jsr:@std/fs@^1.0.19": "1.0.22", - "jsr:@std/fs@^1.0.3": "1.0.22", - "jsr:@std/html@^1.0.5": "1.0.5", - "jsr:@std/http@^1.0.21": "1.0.24", - "jsr:@std/internal@0.224": "0.224.0", - "jsr:@std/internal@1": "1.0.12", + "jsr:@std/fs@1": "1.0.23", "jsr:@std/internal@^1.0.12": "1.0.12", - "jsr:@std/internal@^1.0.6": "1.0.12", "jsr:@std/io@0.225": "0.225.3", - "jsr:@std/json@^1.0.2": "1.0.2", - "jsr:@std/jsonc@^1.0.2": "1.0.2", - "jsr:@std/media-types@^1.1.0": "1.1.0", - "jsr:@std/path@0.224": "0.224.0", "jsr:@std/path@1": "1.1.4", - "jsr:@std/path@^1.0.4": "1.1.4", - "jsr:@std/path@^1.0.6": "1.1.4", - "jsr:@std/path@^1.1.0": "1.1.4", - "jsr:@std/path@^1.1.1": "1.1.4", - "jsr:@std/path@^1.1.2": "1.1.4", "jsr:@std/path@^1.1.4": "1.1.4", - "jsr:@std/semver@^1.0.6": "1.0.8", - "jsr:@std/testing@0.224": "0.224.0", - "jsr:@std/testing@0.224.0": "0.224.0", - "jsr:@std/url@~0.225.1": "0.225.1", - "jsr:@std/uuid@^1.0.9": "1.1.0", - "jsr:@std/yaml@^1.0.8": "1.0.10", - "jsr:@valibot/valibot@^1.2.0": "1.2.0", "npm:@alinea/suite@~0.6.3": "0.6.3", - "npm:@astrojs/node@^9.5.4": "9.5.4_astro@5.17.3__rollup@4.57.1__ioredis@5.9.2__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__vite@6.4.1___@types+node@22.19.10___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__zod@3.25.76_rollup@4.57.1_ioredis@5.9.2_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2", - "npm:@babel/core@^7.28.0": "7.29.0", - "npm:@babel/preset-react@^7.27.1": "7.28.5_@babel+core@7.29.0", + "npm:@astrojs/node@^9.5.4": "9.5.5_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.0__tsx@4.21.0__typescript@5.9.3__yaml@2.8.2_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2", "npm:@cfworker/json-schema@^4.1.1": "4.1.1", - "npm:@cloudflare/vitest-pool-workers@~0.8.31": "0.8.71_@vitest+runner@3.2.4_@vitest+snapshot@3.2.4_vitest@3.2.4__@types+node@22.19.10__vite@7.3.1___@types+node@22.19.10___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__tsx@4.21.0__yaml@2.8.2_@types+node@22.19.10_@cloudflare+workers-types@4.20260210.0_tsx@4.21.0_yaml@2.8.2", - "npm:@cloudflare/workers-types@^4.20250529.0": "4.20260210.0", - "npm:@cloudflare/workers-types@^4.20250906.0": "4.20260210.0", - "npm:@deno/astro-adapter@~0.3.2": "0.3.2_@opentelemetry+api@1.9.0_astro@5.17.3__rollup@4.57.1__ioredis@5.9.2__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__vite@6.4.1___@types+node@22.19.10___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__zod@3.25.76_rollup@4.57.1_ioredis@5.9.2_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2", - "npm:@fxts/core@^1.21.1": "1.25.0", + "npm:@cloudflare/vitest-pool-workers@~0.8.31": "0.8.71_@vitest+runner@3.2.4_@vitest+snapshot@3.2.4_vitest@3.2.4__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@cloudflare+workers-types@4.20260317.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", + "npm:@cloudflare/workers-types@^4.20250529.0": "4.20260317.1", + "npm:@cloudflare/workers-types@^4.20250906.0": "4.20260317.1", + "npm:@deno/astro-adapter@~0.3.2": "0.3.2_@opentelemetry+api@1.9.0_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.0__tsx@4.21.0__typescript@5.9.3__yaml@2.8.2_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2", + "npm:@fxts/core@^1.21.1": "1.26.0", "npm:@hongminhee/localtunnel@0.3": "0.3.0", - "npm:@inquirer/prompts@^7.8.4": "7.10.1_@types+node@22.19.10", + "npm:@inquirer/prompts@^7.8.4": "7.10.1_@types+node@24.12.0", "npm:@jimp/core@^1.6.0": "1.6.0", "npm:@jimp/wasm-webp@^1.6.0": "1.6.0", "npm:@js-temporal/polyfill@~0.5.1": "0.5.1", "npm:@jsr/std__assert@0.226": "0.226.0", - "npm:@mjackson/node-fetch-server@0.7": "0.7.0", "npm:@multiformats/base-x@^4.0.1": "4.0.1", - "npm:@nestjs/common@^11.0.1": "11.1.13_reflect-metadata@0.2.2_rxjs@7.8.2", + "npm:@nestjs/common@^11.0.1": "11.1.17_reflect-metadata@0.2.2_rxjs@7.8.2", "npm:@opentelemetry/api@^1.9.0": "1.9.0", - "npm:@opentelemetry/context-async-hooks@^2.5.0": "2.5.0_@opentelemetry+api@1.9.0", - "npm:@opentelemetry/core@^2.5.0": "2.5.0_@opentelemetry+api@1.9.0", - "npm:@opentelemetry/sdk-trace-base@^2.5.0": "2.5.0_@opentelemetry+api@1.9.0", - "npm:@opentelemetry/semantic-conventions@^1.39.0": "1.39.0", + "npm:@opentelemetry/context-async-hooks@^2.5.0": "2.6.0_@opentelemetry+api@1.9.0", + "npm:@opentelemetry/core@^2.5.0": "2.6.0_@opentelemetry+api@1.9.0", + "npm:@opentelemetry/sdk-trace-base@^2.5.0": "2.6.0_@opentelemetry+api@1.9.0", + "npm:@opentelemetry/semantic-conventions@^1.39.0": "1.40.0", "npm:@poppanator/http-constants@^1.1.1": "1.1.1", - "npm:@preact/signals@^2.2.1": "2.7.1_preact@10.19.6", - "npm:@preact/signals@^2.3.2": "2.7.1_preact@10.19.6", - "npm:@prefresh/vite@^2.4.8": "2.4.11_preact@10.19.6_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2", - "npm:@standard-schema/spec@^1.1.0": "1.1.0", - "npm:@sveltejs/kit@2": "2.50.2_@opentelemetry+api@1.9.0_@sveltejs+vite-plugin-svelte@6.2.4__svelte@5.50.1___acorn@8.15.0__vite@7.3.1___@types+node@22.19.10___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2_svelte@5.50.1__acorn@8.15.0_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_acorn@8.15.0_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2", - "npm:@types/amqplib@*": "0.10.8", - "npm:@types/amqplib@~0.10.7": "0.10.8", + "npm:@preact/signals@^2.3.2": "2.8.2_preact@10.29.0", + "npm:@sveltejs/kit@2": "2.55.0_@opentelemetry+api@1.9.0_@sveltejs+vite-plugin-svelte@7.0.0__svelte@5.53.12__vite@7.3.1___@types+node@24.12.0___tsx@4.21.0___yaml@2.8.2__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_svelte@5.53.12_typescript@5.9.3_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", "npm:@types/eslint@9": "9.6.1", "npm:@types/estree@^1.0.8": "1.0.8", - "npm:@types/node@^22.16.0": "22.19.10", - "npm:@types/node@^24.2.1": "24.10.12", - "npm:@typescript-eslint/parser@^8.49.0": "8.55.0_eslint@9.39.2_typescript@5.9.3", - "npm:@typescript-eslint/utils@8": "8.55.0_eslint@9.39.2_typescript@5.9.3", + "npm:@types/node@^22.16.0": "22.19.15", + "npm:@types/node@^24.2.1": "24.12.0", + "npm:@typescript-eslint/parser@^8.49.0": "8.57.1_eslint@9.39.4_typescript@5.9.3", + "npm:@typescript-eslint/utils@8": "8.57.1_eslint@9.39.4_typescript@5.9.3", "npm:amqplib@~0.10.9": "0.10.9", "npm:asn1js@^3.0.6": "3.0.7", "npm:asn1js@^3.0.7": "3.0.7", - "npm:astro@*": "5.17.3_rollup@4.57.1_ioredis@5.9.2_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_vite@6.4.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_zod@3.25.76", - "npm:astro@^5.17.3": "5.17.3_rollup@4.57.1_ioredis@5.9.2_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_vite@6.4.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_zod@3.25.76", + "npm:astro@^5.17.3": "5.18.1_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2", "npm:byte-encodings@^1.0.11": "1.0.11", "npm:chalk@^5.6.2": "5.6.2", "npm:cli-highlight@^2.1.11": "2.1.11", "npm:cli-table3@~0.6.5": "0.6.5", "npm:enquirer@^2.4.1": "2.4.1", - "npm:es-toolkit@^1.30.0": "1.44.0", - "npm:es-toolkit@^1.31.0": "1.44.0", - "npm:es-toolkit@^1.39.10": "1.44.0", - "npm:es-toolkit@^1.42.0": "1.44.0", - "npm:es-toolkit@^1.43.0": "1.44.0", - "npm:esbuild-wasm@~0.25.11": "0.25.12", - "npm:esbuild@0.25.7": "0.25.7", - "npm:esbuild@~0.25.5": "0.25.12", - "npm:eslint@9": "9.39.2", + "npm:es-toolkit@^1.30.0": "1.45.1", + "npm:es-toolkit@^1.31.0": "1.45.1", + "npm:es-toolkit@^1.39.10": "1.45.1", + "npm:es-toolkit@^1.42.0": "1.45.1", + "npm:es-toolkit@^1.43.0": "1.45.1", + "npm:eslint@9": "9.39.4", "npm:express@4": "4.22.1", "npm:fast-check@^3.22.0": "3.23.2", "npm:fastify-plugin@^5.0.1": "5.1.0", - "npm:fastify@^5.2.0": "5.7.4", + "npm:fastify@^5.2.0": "5.8.2", "npm:fetch-mock@^12.5.2": "12.6.0", "npm:fetch-mock@^12.5.4": "12.6.0", - "npm:h3@^1.15.0": "1.15.5", - "npm:hono@^4.8.3": "4.11.3", - "npm:html-to-text@^9.0.5": "9.0.5", - "npm:icojs@~0.19.5": "0.19.5", + "npm:h3@^1.15.0": "1.15.6", + "npm:hono@^4.8.3": "4.12.8", + "npm:icojs@~0.19.5": "0.19.5_@jimp+custom@0.22.12", "npm:inquirer-toggle@^1.0.1": "1.0.1", - "npm:inquirer@^12.9.4": "12.11.1_@types+node@22.19.10", - "npm:ioredis@^5.8.2": "5.9.2", + "npm:inquirer@^12.9.4": "12.11.1_@types+node@24.12.0", + "npm:ioredis@^5.8.2": "5.10.0", "npm:jimp@^1.6.0": "1.6.0", "npm:json-canon@^1.0.1": "1.0.1", "npm:json-preserve-indent@^1.1.3": "1.1.3", "npm:jsonld@9": "9.0.0", - "npm:koa@2": "2.16.3", - "npm:miniflare@^4.20250523.0": "4.20250906.0", + "npm:koa@2": "2.16.4", + "npm:miniflare@^4.20250523.0": "4.20260312.1", "npm:multicodec@^3.2.1": "3.2.1", - "npm:mysql2@^3.18.0": "3.18.2_@types+node@22.19.10", + "npm:mysql2@^3.18.0": "3.20.0_@types+node@24.12.0", "npm:ora@^8.2.0": "8.2.0", "npm:pkijs@^3.2.5": "3.3.3", "npm:pkijs@^3.3.3": "3.3.3", "npm:postgres@^3.4.7": "3.4.8", - "npm:preact-render-to-string@^6.6.3": "6.6.5_preact@10.19.6", "npm:preact@10.19.6": "10.19.6", - "npm:preact@^10.27.0": "10.28.3", - "npm:preact@^10.27.2": "10.28.3", - "npm:rollup@^4.50.0": "4.57.1", + "npm:preact@^10.27.2": "10.29.0", "npm:shiki@^1.6.4": "1.29.2", "npm:smol-toml@^1.6.0": "1.6.0", "npm:srvx@~0.8.7": "0.8.16", "npm:structured-field-values@^2.0.4": "2.0.4", - "npm:tsdown@~0.18.4": "0.18.4_rolldown@1.0.0-beta.57", + "npm:tsdown@~0.18.4": "0.18.4_typescript@5.9.3", "npm:tsx@^4.19.4": "4.21.0", "npm:uri-template-router@1": "1.0.0", "npm:url-template@^3.1.1": "3.1.1", - "npm:valibot@^1.2.0": "1.2.0", - "npm:vite@^7.1.3": "7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3", - "npm:vite@^7.1.4": "7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3", - "npm:vitest@3.2": "3.2.4_@types+node@22.19.10_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_tsx@4.21.0_yaml@2.8.2", - "npm:wrangler@^4.17.0": "4.35.0_@cloudflare+workers-types@4.20260210.0_unenv@2.0.0-rc.21_workerd@1.20250906.0", - "npm:wrangler@^4.21.1": "4.35.0_@cloudflare+workers-types@4.20260210.0_unenv@2.0.0-rc.21_workerd@1.20250906.0", + "npm:valibot@^1.2.0": "1.3.0_typescript@5.9.3", + "npm:vite@^7.1.3": "7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", + "npm:vitest@3.2": "3.2.4_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", + "npm:wrangler@^4.17.0": "4.35.0_@cloudflare+workers-types@4.20260317.1", + "npm:wrangler@^4.21.1": "4.35.0_@cloudflare+workers-types@4.20260317.1", "npm:yaml@^2.8.1": "2.8.2" }, "jsr": { - "@alinea/suite@0.6.3": { - "integrity": "7d24a38729663b84d8a263d64ff7e3f8c72ac7cbb1db8ec5f414d0416b6b72e2" - }, "@david/console-static-text@0.3.0": { "integrity": "2dfb46ecee525755f7989f94ece30bba85bd8ffe3e8666abc1bf926e1ee0698d" }, @@ -183,8 +109,8 @@ "jsr:@david/console-static-text", "jsr:@david/path", "jsr:@david/which", - "jsr:@std/fmt@1", - "jsr:@std/fs@1", + "jsr:@std/fmt", + "jsr:@std/fs", "jsr:@std/io", "jsr:@std/path@1" ] @@ -192,204 +118,29 @@ "@david/path@0.2.0": { "integrity": "f2d7aa7f02ce5a55e27c09f9f1381794acb09d328f8d3c8a2e3ab3ffc294dccd", "dependencies": [ - "jsr:@std/fs@1", + "jsr:@std/fs", "jsr:@std/path@1" ] }, "@david/which@0.4.1": { "integrity": "896a682b111f92ab866cc70c5b4afab2f5899d2f9bde31ed00203b9c250f225e" }, - "@deno/esbuild-plugin@1.2.1": { - "integrity": "df629467913adc1f960149fdfa3a3430ba8c20381c310fba096db244e6c3c9f6", - "dependencies": [ - "jsr:@deno/loader@~0.3.10", - "jsr:@std/path@^1.1.1", - "npm:esbuild@~0.25.5" - ] - }, - "@deno/loader@0.3.12": { - "integrity": "52d3b3be0a32192efe07b0a4f1b3047077d2f2bba0f693e32f47421507f9fdb6" - }, - "@fresh/build-id@1.0.1": { - "integrity": "12a2ec25fd52ae9ec68c26848a5696cd1c9b537f7c983c7e56e4fb1e7e816c20", - "dependencies": [ - "jsr:@std/encoding" - ] - }, - "@fresh/core@2.2.0": { - "integrity": "b3c00f82288a2c4c8ec85e4abb67b080b366ec5971860f2f2898eb281ea1a80f", - "dependencies": [ - "jsr:@deno/esbuild-plugin", - "jsr:@fresh/build-id", - "jsr:@std/encoding", - "jsr:@std/fmt@^1.0.8", - "jsr:@std/fs@^1.0.19", - "jsr:@std/html", - "jsr:@std/http", - "jsr:@std/jsonc", - "jsr:@std/media-types", - "jsr:@std/path@^1.1.2", - "jsr:@std/semver", - "jsr:@std/uuid", - "npm:@opentelemetry/api", - "npm:@preact/signals@^2.2.1", - "npm:esbuild-wasm", - "npm:esbuild@0.25.7", - "npm:preact-render-to-string", - "npm:preact@^10.27.0", - "npm:preact@^10.27.2" - ] - }, - "@fresh/plugin-vite@1.0.8": { - "integrity": "5780d842ed82e4cbccd93dd8ba2d54bf59dff5aee65921134aab15a4cd457c56", - "dependencies": [ - "jsr:@deno/loader@~0.3.2", - "jsr:@fresh/core@2", - "jsr:@fresh/core@^2.2.0", - "jsr:@std/dotenv", - "jsr:@std/fmt@^1.0.7", - "jsr:@std/path@1", - "npm:@babel/core", - "npm:@babel/preset-react", - "npm:@mjackson/node-fetch-server", - "npm:@prefresh/vite", - "npm:rollup", - "npm:vite@^7.1.4" - ] - }, - "@hongminhee/localtunnel@0.3.0": { - "integrity": "4ad858acd963b5fad45b188d54cf751ac8fbe0aae495e1d3ce607e3730270ff4", - "dependencies": [ - "jsr:@logtape/logtape@^1.0.4" - ] - }, - "@hono/hono@4.11.3": { - "integrity": "de7f245516a970c60c6f4bf5b0f1585efbee38ee4e01171994c2b9d69d035d70" - }, - "@hono/hono@4.11.4": { - "integrity": "aaf7b9d5a6b2422b0778c091b712ee1f018bc7e82138067d21eb27d7c2e1f5be" - }, - "@hono/hono@4.11.9": { - "integrity": "c82c6b846abc3c1879d921d8365287d77cdef8073019f509ff80bf53033bdcba" - }, - "@hono/hono@4.11.10": { - "integrity": "a5a6dac87ab5a8bcf3f92aeaca22417128d584c2732860c20bbf6fdb3cafbcc5" - }, - "@hono/hono@4.12.0": { - "integrity": "a09c74c4a15539f159ea386b5804fd88d984805aa74e4d847a136ba42487412b" - }, - "@logtape/file@2.0.2": { - "integrity": "a912459fe0d27213e05c95e6fadf716000f27eafa27e67c2737820ba24097fdc", - "dependencies": [ - "jsr:@logtape/logtape@^2.0.2", - "jsr:@std/path@^1.1.0" - ] - }, - "@logtape/logtape@1.3.5": { - "integrity": "a5cdb130daf1a9d384006b0f850cc4443bfc2e163dadc6fa667875e79770beb3" - }, - "@logtape/logtape@1.3.6": { - "integrity": "d9a038ed8f85981d7c1cd43d931402ef52bc036cfd14bc9be5bdfc7ec8136b6f" - }, - "@logtape/logtape@1.3.7": { - "integrity": "d9dc1f8c7e2e1e4e3998006ea84eaf4054e40ad39325b056b3f517c013286bed" - }, - "@logtape/logtape@2.0.2": { - "integrity": "546fcd514e66f2b841c6f261fa3a3d905b52d876dc1bba8ffe1a087d9275c4c9" - }, - "@optique/config@0.10.6": { - "integrity": "ac216f6fc6ebe124fc17baa7a0a7cde13a6565942e6a2ec0c34d947299c7577d", - "dependencies": [ - "jsr:@optique/core", - "npm:@standard-schema/spec" - ] - }, - "@optique/core@0.10.0-dev.333+076fceae": { - "integrity": "1ebe1782740f08d568ae0c5258786933a8502d1e137feb49b2d8ab06d204b11a" - }, - "@optique/core@0.10.6": { - "integrity": "a3ba44f15f9512856f4716362ef3731b711285ed2327c372ce6cc575be9d3072" - }, - "@optique/run@0.10.6": { - "integrity": "6c045917057b9657baae320c2e80bcc46f05572a8698d80e233da1e34915db1a", - "dependencies": [ - "jsr:@optique/core" - ] - }, - "@std/assert@0.224.0": { - "integrity": "8643233ec7aec38a940a8264a6e3eed9bfa44e7a71cc6b3c8874213ff401967f", - "dependencies": [ - "jsr:@std/fmt@0.224", - "jsr:@std/internal@0.224" - ] - }, - "@std/assert@0.226.0": { - "integrity": "0dfb5f7c7723c18cec118e080fec76ce15b4c31154b15ad2bd74822603ef75b3", - "dependencies": [ - "jsr:@std/internal@1" - ] - }, - "@std/assert@1.0.18": { - "integrity": "270245e9c2c13b446286de475131dc688ca9abcd94fc5db41d43a219b34d1c78", - "dependencies": [ - "jsr:@std/internal@^1.0.12" - ] - }, - "@std/async@0.224.2": { - "integrity": "4d277d6e165df43d5e061ba0ef3edfddb8e8d558f5b920e3e6b1d2614b44d074" - }, - "@std/async@1.0.16": { - "integrity": "6c9e43035313b67b5de43e2b3ee3eadb39a488a0a0a3143097f112e025d3ee9a" - }, - "@std/async@1.1.1": { - "integrity": "8a79beb3378cc229ce65ba2c746cfd03e4855ddd891d1eb6b9e32128e0d5339c" + "@logtape/logtape@2.0.4": { + "integrity": "d4b6e85d82954f3d58014d85e4c0f93d6a836181ef4fbb4a852da7ed47979acb" }, "@std/bytes@1.0.6": { "integrity": "f6ac6adbd8ccd99314045f5703e23af0a68d7f7e58364b47d2c7f408aeb5820a" }, - "@std/data-structures@0.224.1": { - "integrity": "266365f90014e5c52bccf1eadd65f7782a2af2c84e4052ef8316698a3572cac3" - }, - "@std/dotenv@0.225.6": { - "integrity": "1d6f9db72f565bd26790fa034c26e45ecb260b5245417be76c2279e5734c421b" - }, - "@std/encoding@1.0.10": { - "integrity": "8783c6384a2d13abd5e9e87a7ae0520a30e9f56aeeaa3bdf910a3eaaf5c811a1" - }, - "@std/fmt@0.224.0": { - "integrity": "e20e9a2312a8b5393272c26191c0a68eda8d2c4b08b046bad1673148f1d69851" - }, "@std/fmt@1.0.9": { "integrity": "2487343e8899fb2be5d0e3d35013e54477ada198854e52dd05ed0422eddcabe0" }, - "@std/fs@0.224.0": { - "integrity": "52a5ec89731ac0ca8f971079339286f88c571a4d61686acf75833f03a89d8e69", + "@std/fs@1.0.23": { + "integrity": "3ecbae4ce4fee03b180fa710caff36bb5adb66631c46a6460aaad49515565a37", "dependencies": [ - "jsr:@std/path@0.224" - ] - }, - "@std/fs@1.0.22": { - "integrity": "de0f277a58a867147a8a01bc1b181d0dfa80bfddba8c9cf2bacd6747bcec9308", - "dependencies": [ - "jsr:@std/internal@^1.0.12", + "jsr:@std/internal", "jsr:@std/path@^1.1.4" ] }, - "@std/html@1.0.5": { - "integrity": "4e2d693f474cae8c16a920fa5e15a3b72267b94b84667f11a50c6dd1cb18d35e" - }, - "@std/http@1.0.24": { - "integrity": "4dd59afd7cfd6e2e96e175b67a5a829b449ae55f08575721ec691e5d85d886d4", - "dependencies": [ - "jsr:@std/encoding" - ] - }, - "@std/internal@0.224.0": { - "integrity": "afc50644f9cdf4495eeb80523a8f6d27226b4b36c45c7c195dfccad4b8509291", - "dependencies": [ - "jsr:@std/fmt@0.224" - ] - }, "@std/internal@1.0.12": { "integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027" }, @@ -399,58 +150,11 @@ "jsr:@std/bytes" ] }, - "@std/json@1.0.2": { - "integrity": "d9e5497801c15fb679f55a2c01c7794ad7a5dfda4dd1bebab5e409cb5e0d34d4" - }, - "@std/jsonc@1.0.2": { - "integrity": "909605dae3af22bd75b1cbda8d64a32cf1fd2cf6efa3f9e224aba6d22c0f44c7", - "dependencies": [ - "jsr:@std/json" - ] - }, - "@std/media-types@1.1.0": { - "integrity": "c9d093f0c05c3512932b330e3cc1fe1d627b301db33a4c2c2185c02471d6eaa4" - }, - "@std/path@0.224.0": { - "integrity": "55bca6361e5a6d158b9380e82d4981d82d338ec587de02951e2b7c3a24910ee6" - }, "@std/path@1.1.4": { "integrity": "1d2d43f39efb1b42f0b1882a25486647cb851481862dc7313390b2bb044314b5", "dependencies": [ - "jsr:@std/internal@^1.0.12" - ] - }, - "@std/semver@1.0.8": { - "integrity": "dc830e8b8b6a380c895d53fbfd1258dc253704ca57bbe1629ac65fd7830179b7" - }, - "@std/testing@0.224.0": { - "integrity": "371b8a929aa7132240d5dd766a439be8f780ef5c176ab194e0bcab72370c761e", - "dependencies": [ - "jsr:@std/assert@0.224", - "jsr:@std/async@0.224", - "jsr:@std/data-structures", - "jsr:@std/fmt@0.224", - "jsr:@std/fs@0.224", - "jsr:@std/path@0.224" - ] - }, - "@std/url@0.225.1": { - "integrity": "7961f62f0a3cd2c7aa5b785822874132760b50bbf5ed0ccfded8668f203e7a95", - "dependencies": [ - "jsr:@std/path@^1.0.4" - ] - }, - "@std/uuid@1.1.0": { - "integrity": "6268db2ccf172849c9be80763354ca305d49ef4af41fe995623d44fcc3f7457c", - "dependencies": [ - "jsr:@std/bytes" + "jsr:@std/internal" ] - }, - "@std/yaml@1.0.10": { - "integrity": "245706ea3511cc50c8c6d00339c23ea2ffa27bd2c7ea5445338f8feff31fa58e" - }, - "@valibot/valibot@1.2.0": { - "integrity": "61c118a4d027ed55912caf381c78f0a178f335f46ad0c4bcb136498dc1ef2285" } }, "npm": { @@ -460,11 +164,11 @@ "@astrojs/compiler@2.13.1": { "integrity": "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==" }, - "@astrojs/internal-helpers@0.7.5": { - "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==" + "@astrojs/internal-helpers@0.7.6": { + "integrity": "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q==" }, - "@astrojs/markdown-remark@6.3.10": { - "integrity": "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==", + "@astrojs/markdown-remark@6.3.11": { + "integrity": "sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ==", "dependencies": [ "@astrojs/internal-helpers", "@astrojs/prism", @@ -480,7 +184,7 @@ "remark-parse", "remark-rehype", "remark-smartypants", - "shiki@3.22.0", + "shiki@3.23.0", "smol-toml", "unified", "unist-util-remove-position", @@ -489,8 +193,8 @@ "vfile" ] }, - "@astrojs/node@9.5.4_astro@5.17.3__rollup@4.57.1__ioredis@5.9.2__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__vite@6.4.1___@types+node@22.19.10___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__zod@3.25.76_rollup@4.57.1_ioredis@5.9.2_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-AbPSZsMGu8hXPR2XxV79RaKy8h6wijhtoqZGeUf4OXg2w1mxXlx4VnIc1D+QvtsgauSz7P5PLhmvf6w/J41GJg==", + "@astrojs/node@9.5.5_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.0__tsx@4.21.0__typescript@5.9.3__yaml@2.8.2_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2": { + "integrity": "sha512-rtU2BGU5u3SfGURpANfMxVzCIoR86MkaN05ncza9rbtuMKJ/XnRJt/BbyVknDbOJ71hoci0SIsJwKcJR8vvi/A==", "dependencies": [ "@astrojs/internal-helpers", "astro", @@ -516,37 +220,6 @@ "which-pm-runs" ] }, - "@babel/code-frame@7.29.0": { - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dependencies": [ - "@babel/helper-validator-identifier", - "js-tokens@4.0.0", - "picocolors" - ] - }, - "@babel/compat-data@7.29.0": { - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==" - }, - "@babel/core@7.29.0": { - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dependencies": [ - "@babel/code-frame", - "@babel/generator", - "@babel/helper-compilation-targets", - "@babel/helper-module-transforms", - "@babel/helpers", - "@babel/parser", - "@babel/template", - "@babel/traverse", - "@babel/types", - "@jridgewell/remapping", - "convert-source-map", - "debug@4.4.3", - "gensync", - "json5", - "semver@6.3.1" - ] - }, "@babel/generator@7.29.1": { "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dependencies": [ @@ -557,139 +230,19 @@ "jsesc" ] }, - "@babel/helper-annotate-as-pure@7.27.3": { - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", - "dependencies": [ - "@babel/types" - ] - }, - "@babel/helper-compilation-targets@7.28.6": { - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dependencies": [ - "@babel/compat-data", - "@babel/helper-validator-option", - "browserslist", - "lru-cache@5.1.1", - "semver@6.3.1" - ] - }, - "@babel/helper-globals@7.28.0": { - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==" - }, - "@babel/helper-module-imports@7.28.6": { - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dependencies": [ - "@babel/traverse", - "@babel/types" - ] - }, - "@babel/helper-module-transforms@7.28.6_@babel+core@7.29.0": { - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dependencies": [ - "@babel/core", - "@babel/helper-module-imports", - "@babel/helper-validator-identifier", - "@babel/traverse" - ] - }, - "@babel/helper-plugin-utils@7.28.6": { - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==" - }, "@babel/helper-string-parser@7.27.1": { "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" }, "@babel/helper-validator-identifier@7.28.5": { "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==" }, - "@babel/helper-validator-option@7.27.1": { - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==" - }, - "@babel/helpers@7.28.6": { - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", - "dependencies": [ - "@babel/template", - "@babel/types" - ] - }, - "@babel/parser@7.29.0": { - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "@babel/parser@7.29.2": { + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dependencies": [ "@babel/types" ], "bin": true }, - "@babel/plugin-syntax-jsx@7.28.6_@babel+core@7.29.0": { - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", - "dependencies": [ - "@babel/core", - "@babel/helper-plugin-utils" - ] - }, - "@babel/plugin-transform-react-display-name@7.28.0_@babel+core@7.29.0": { - "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", - "dependencies": [ - "@babel/core", - "@babel/helper-plugin-utils" - ] - }, - "@babel/plugin-transform-react-jsx-development@7.27.1_@babel+core@7.29.0": { - "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", - "dependencies": [ - "@babel/core", - "@babel/plugin-transform-react-jsx" - ] - }, - "@babel/plugin-transform-react-jsx@7.28.6_@babel+core@7.29.0": { - "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", - "dependencies": [ - "@babel/core", - "@babel/helper-annotate-as-pure", - "@babel/helper-module-imports", - "@babel/helper-plugin-utils", - "@babel/plugin-syntax-jsx", - "@babel/types" - ] - }, - "@babel/plugin-transform-react-pure-annotations@7.27.1_@babel+core@7.29.0": { - "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", - "dependencies": [ - "@babel/core", - "@babel/helper-annotate-as-pure", - "@babel/helper-plugin-utils" - ] - }, - "@babel/preset-react@7.28.5_@babel+core@7.29.0": { - "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", - "dependencies": [ - "@babel/core", - "@babel/helper-plugin-utils", - "@babel/helper-validator-option", - "@babel/plugin-transform-react-display-name", - "@babel/plugin-transform-react-jsx", - "@babel/plugin-transform-react-jsx-development", - "@babel/plugin-transform-react-pure-annotations" - ] - }, - "@babel/template@7.28.6": { - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dependencies": [ - "@babel/code-frame", - "@babel/parser", - "@babel/types" - ] - }, - "@babel/traverse@7.29.0": { - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "dependencies": [ - "@babel/code-frame", - "@babel/generator", - "@babel/helper-globals", - "@babel/parser", - "@babel/template", - "@babel/types", - "debug@4.4.3" - ] - }, "@babel/types@7.29.0": { "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dependencies": [ @@ -697,8 +250,8 @@ "@babel/helper-validator-identifier" ] }, - "@borewit/text-codec@0.2.1": { - "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==" + "@borewit/text-codec@0.2.2": { + "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==" }, "@canvas/image-data@1.1.0": { "integrity": "sha512-QdObRRjRbcXGmM1tmJ+MrHcaz1MftF2+W7YI+MsphnsCrmtyfS0d5qJbk0MeSbUeyM/jCb0hmnkXPsy026L7dA==" @@ -722,13 +275,13 @@ "integrity": "sha512-tsQQagBKjvpd9baa6nWVIv399ejiqcrUBBW6SZx6Z22+ymm+Odv5+cFimyuCsD/fC1fQTwfRmwXBNpzvHSeGCw==", "dependencies": [ "unenv", - "workerd" + "workerd@1.20250906.0" ], "optionalPeers": [ - "workerd" + "workerd@1.20250906.0" ] }, - "@cloudflare/vitest-pool-workers@0.8.71_@vitest+runner@3.2.4_@vitest+snapshot@3.2.4_vitest@3.2.4__@types+node@22.19.10__vite@7.3.1___@types+node@22.19.10___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__tsx@4.21.0__yaml@2.8.2_@types+node@22.19.10_@cloudflare+workers-types@4.20260210.0_tsx@4.21.0_yaml@2.8.2": { + "@cloudflare/vitest-pool-workers@0.8.71_@vitest+runner@3.2.4_@vitest+snapshot@3.2.4_vitest@3.2.4__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@cloudflare+workers-types@4.20260317.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-keu2HCLQfRNwbmLBCDXJgCFpANTaYnQpE01fBOo4CNwiWHUT7SZGN7w64RKiSWRHyYppStXBuE5Ng7F42+flpg==", "dependencies": [ "@vitest/runner", @@ -736,8 +289,8 @@ "birpc@0.2.14", "cjs-module-lexer", "devalue", - "miniflare", - "semver@7.7.4", + "miniflare@4.20250906.0", + "semver", "vitest", "wrangler", "zod@3.25.76" @@ -748,28 +301,53 @@ "os": ["darwin"], "cpu": ["x64"] }, + "@cloudflare/workerd-darwin-64@1.20260312.1": { + "integrity": "sha512-HUAtDWaqUduS6yasV6+NgsK7qBpP1qGU49ow/Wb117IHjYp+PZPUGReDYocpB4GOMRoQlvdd4L487iFxzdARpw==", + "os": ["darwin"], + "cpu": ["x64"] + }, "@cloudflare/workerd-darwin-arm64@1.20250906.0": { "integrity": "sha512-X5apsZ1SFW4FYTM19ISHf8005FJMPfrcf4U5rO0tdj+TeJgQgXuZ57IG0WeW7SpLVeBo8hM6WC8CovZh41AfnA==", "os": ["darwin"], "cpu": ["arm64"] }, + "@cloudflare/workerd-darwin-arm64@1.20260312.1": { + "integrity": "sha512-DOn7TPTHSxJYfi4m4NYga/j32wOTqvJf/pY4Txz5SDKWIZHSTXFyGz2K4B+thoPWLop/KZxGoyTv7db0mk/qyw==", + "os": ["darwin"], + "cpu": ["arm64"] + }, "@cloudflare/workerd-linux-64@1.20250906.0": { "integrity": "sha512-rlKzWgsLnlQ5Nt9W69YBJKcmTmZbOGu0edUsenXPmc6wzULUxoQpi7ZE9k3TfTonJx4WoQsQlzCUamRYFsX+0Q==", "os": ["linux"], "cpu": ["x64"] }, + "@cloudflare/workerd-linux-64@1.20260312.1": { + "integrity": "sha512-TdkIh3WzPXYHuvz7phAtFEEvAxvFd30tHrm4gsgpw0R0F5b8PtoM3hfL2uY7EcBBWVYUBtkY2ahDYFfufnXw/g==", + "os": ["linux"], + "cpu": ["x64"] + }, "@cloudflare/workerd-linux-arm64@1.20250906.0": { "integrity": "sha512-DdedhiQ+SeLzpg7BpcLrIPEZ33QKioJQ1wvL4X7nuLzEB9rWzS37NNNahQzc1+44rhG4fyiHbXBPOeox4B9XVA==", "os": ["linux"], "cpu": ["arm64"] }, + "@cloudflare/workerd-linux-arm64@1.20260312.1": { + "integrity": "sha512-kNauZhL569Iy94t844OMwa1zP6zKFiL3xiJ4tGLS+TFTEfZ3pZsRH6lWWOtkXkjTyCmBEOog0HSEKjIV4oAffw==", + "os": ["linux"], + "cpu": ["arm64"] + }, "@cloudflare/workerd-windows-64@1.20250906.0": { "integrity": "sha512-Q8Qjfs8jGVILnZL6vUpQ90q/8MTCYaGR3d1LGxZMBqte8Vr7xF3KFHPEy7tFs0j0mMjnqCYzlofmPNY+9ZaDRg==", "os": ["win32"], "cpu": ["x64"] }, - "@cloudflare/workers-types@4.20260210.0": { - "integrity": "sha512-zHaF0RZVYUQwNCJCECnNAJdMur72Lk3FMiD6wU78Dx3Bv7DQRcuXNmPNuJmsGnosVZCcWintHlPTQ/4BEiDG5w==" + "@cloudflare/workerd-windows-64@1.20260312.1": { + "integrity": "sha512-5dBrlSK+nMsZy5bYQpj8t9iiQNvCRlkm9GGvswJa9vVU/1BNO4BhJMlqOLWT24EmFyApZ+kaBiPJMV8847NDTg==", + "os": ["win32"], + "cpu": ["x64"] + }, + "@cloudflare/workers-types@4.20260317.1": { + "integrity": "sha512-+G4eVwyCpm8Au1ex8vQBCuA9wnwqetz4tPNRoB/53qvktERWBRMQnrtvC1k584yRE3emMThtuY0gWshvSJ++PQ==" }, "@colors/colors@1.5.0": { "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" @@ -780,7 +358,7 @@ "@jridgewell/trace-mapping@0.3.9" ] }, - "@deno/astro-adapter@0.3.2_@opentelemetry+api@1.9.0_astro@5.17.3__rollup@4.57.1__ioredis@5.9.2__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__vite@6.4.1___@types+node@22.19.10___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__zod@3.25.76_rollup@4.57.1_ioredis@5.9.2_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2": { + "@deno/astro-adapter@0.3.2_@opentelemetry+api@1.9.0_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.0__tsx@4.21.0__typescript@5.9.3__yaml@2.8.2_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2": { "integrity": "sha512-nN0kQGobRs2XE3R+O/DWYQanEWpteJNsIf5TD65787qFEw2CrqkFNcNolZFJiKUF/2Y/TKyOLRjMS3F6auECVg==", "dependencies": [ "@opentelemetry/api", @@ -790,28 +368,28 @@ "@opentelemetry/api" ] }, - "@digitalbazaar/http-client@4.2.0": { - "integrity": "sha512-OGju/GYp0V72qlZ/Pd4jGEwqBwT/Za/tw+Z3AC7lgMheGqsbhTZrtc5iLz9z59G/Q53QyE2fnjHV8N9wjBpiWA==", + "@digitalbazaar/http-client@4.3.0": { + "integrity": "sha512-6lMpxpt9BOmqHKGs9Xm6DP4LlZTBFer/ZjHvP3FcW3IaUWYIWC7dw5RFZnvw4fP57kAVcm1dp3IF+Y50qhBvAw==", "dependencies": [ "ky", - "undici@6.23.0" + "undici@6.24.1" ] }, - "@emnapi/core@1.8.1": { - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "@emnapi/core@1.9.0": { + "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", "dependencies": [ "@emnapi/wasi-threads", "tslib" ] }, - "@emnapi/runtime@1.8.1": { - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "@emnapi/runtime@1.9.0": { + "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", "dependencies": [ "tslib" ] }, - "@emnapi/wasi-threads@1.1.0": { - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "@emnapi/wasi-threads@1.2.0": { + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", "dependencies": [ "tslib" ] @@ -826,13 +404,8 @@ "os": ["aix"], "cpu": ["ppc64"] }, - "@esbuild/aix-ppc64@0.25.7": { - "integrity": "sha512-uD0kKFHh6ETr8TqEtaAcV+dn/2qnYbH/+8wGEdY70Qf7l1l/jmBUbrmQqwiPKAQE6cOQ7dTj6Xr0HzQDGHyceQ==", - "os": ["aix"], - "cpu": ["ppc64"] - }, - "@esbuild/aix-ppc64@0.27.3": { - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "@esbuild/aix-ppc64@0.27.4": { + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", "os": ["aix"], "cpu": ["ppc64"] }, @@ -846,13 +419,8 @@ "os": ["android"], "cpu": ["arm64"] }, - "@esbuild/android-arm64@0.25.7": { - "integrity": "sha512-p0ohDnwyIbAtztHTNUTzN5EGD/HJLs1bwysrOPgSdlIA6NDnReoVfoCyxG6W1d85jr2X80Uq5KHftyYgaK9LPQ==", - "os": ["android"], - "cpu": ["arm64"] - }, - "@esbuild/android-arm64@0.27.3": { - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "@esbuild/android-arm64@0.27.4": { + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", "os": ["android"], "cpu": ["arm64"] }, @@ -866,13 +434,8 @@ "os": ["android"], "cpu": ["arm"] }, - "@esbuild/android-arm@0.25.7": { - "integrity": "sha512-Jhuet0g1k9rAJHrXGIh7sFknFuT4sfytYZpZpuZl7YKDhnPByVAm5oy2LEBmMbuYf3ejWVYCc2seX81Mk+madA==", - "os": ["android"], - "cpu": ["arm"] - }, - "@esbuild/android-arm@0.27.3": { - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "@esbuild/android-arm@0.27.4": { + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", "os": ["android"], "cpu": ["arm"] }, @@ -886,13 +449,8 @@ "os": ["android"], "cpu": ["x64"] }, - "@esbuild/android-x64@0.25.7": { - "integrity": "sha512-mMxIJFlSgVK23HSsII3ZX9T2xKrBCDGyk0qiZnIW10LLFFtZLkFD6imZHu7gUo2wkNZwS9Yj3mOtZD3ZPcjCcw==", - "os": ["android"], - "cpu": ["x64"] - }, - "@esbuild/android-x64@0.27.3": { - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "@esbuild/android-x64@0.27.4": { + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", "os": ["android"], "cpu": ["x64"] }, @@ -906,13 +464,8 @@ "os": ["darwin"], "cpu": ["arm64"] }, - "@esbuild/darwin-arm64@0.25.7": { - "integrity": "sha512-jyOFLGP2WwRwxM8F1VpP6gcdIJc8jq2CUrURbbTouJoRO7XCkU8GdnTDFIHdcifVBT45cJlOYsZ1kSlfbKjYUQ==", - "os": ["darwin"], - "cpu": ["arm64"] - }, - "@esbuild/darwin-arm64@0.27.3": { - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "@esbuild/darwin-arm64@0.27.4": { + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", "os": ["darwin"], "cpu": ["arm64"] }, @@ -926,13 +479,8 @@ "os": ["darwin"], "cpu": ["x64"] }, - "@esbuild/darwin-x64@0.25.7": { - "integrity": "sha512-m9bVWqZCwQ1BthruifvG64hG03zzz9gE2r/vYAhztBna1/+qXiHyP9WgnyZqHgGeXoimJPhAmxfbeU+nMng6ZA==", - "os": ["darwin"], - "cpu": ["x64"] - }, - "@esbuild/darwin-x64@0.27.3": { - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "@esbuild/darwin-x64@0.27.4": { + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", "os": ["darwin"], "cpu": ["x64"] }, @@ -946,13 +494,8 @@ "os": ["freebsd"], "cpu": ["arm64"] }, - "@esbuild/freebsd-arm64@0.25.7": { - "integrity": "sha512-Bss7P4r6uhr3kDzRjPNEnTm/oIBdTPRNQuwaEFWT/uvt6A1YzK/yn5kcx5ZxZ9swOga7LqeYlu7bDIpDoS01bA==", - "os": ["freebsd"], - "cpu": ["arm64"] - }, - "@esbuild/freebsd-arm64@0.27.3": { - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "@esbuild/freebsd-arm64@0.27.4": { + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", "os": ["freebsd"], "cpu": ["arm64"] }, @@ -966,13 +509,8 @@ "os": ["freebsd"], "cpu": ["x64"] }, - "@esbuild/freebsd-x64@0.25.7": { - "integrity": "sha512-S3BFyjW81LXG7Vqmr37ddbThrm3A84yE7ey/ERBlK9dIiaWgrjRlre3pbG7txh1Uaxz8N7wGGQXmC9zV+LIpBQ==", - "os": ["freebsd"], - "cpu": ["x64"] - }, - "@esbuild/freebsd-x64@0.27.3": { - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "@esbuild/freebsd-x64@0.27.4": { + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", "os": ["freebsd"], "cpu": ["x64"] }, @@ -986,13 +524,8 @@ "os": ["linux"], "cpu": ["arm64"] }, - "@esbuild/linux-arm64@0.25.7": { - "integrity": "sha512-HfQZQqrNOfS1Okn7PcsGUqHymL1cWGBslf78dGvtrj8q7cN3FkapFgNA4l/a5lXDwr7BqP2BSO6mz9UremNPbg==", - "os": ["linux"], - "cpu": ["arm64"] - }, - "@esbuild/linux-arm64@0.27.3": { - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "@esbuild/linux-arm64@0.27.4": { + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", "os": ["linux"], "cpu": ["arm64"] }, @@ -1006,13 +539,8 @@ "os": ["linux"], "cpu": ["arm"] }, - "@esbuild/linux-arm@0.25.7": { - "integrity": "sha512-JZMIci/1m5vfQuhKoFXogCKVYVfYQmoZJg8vSIMR4TUXbF+0aNlfXH3DGFEFMElT8hOTUF5hisdZhnrZO/bkDw==", - "os": ["linux"], - "cpu": ["arm"] - }, - "@esbuild/linux-arm@0.27.3": { - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "@esbuild/linux-arm@0.27.4": { + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", "os": ["linux"], "cpu": ["arm"] }, @@ -1026,13 +554,8 @@ "os": ["linux"], "cpu": ["ia32"] }, - "@esbuild/linux-ia32@0.25.7": { - "integrity": "sha512-9Jex4uVpdeofiDxnwHRgen+j6398JlX4/6SCbbEFEXN7oMO2p0ueLN+e+9DdsdPLUdqns607HmzEFnxwr7+5wQ==", - "os": ["linux"], - "cpu": ["ia32"] - }, - "@esbuild/linux-ia32@0.27.3": { - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "@esbuild/linux-ia32@0.27.4": { + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", "os": ["linux"], "cpu": ["ia32"] }, @@ -1046,13 +569,8 @@ "os": ["linux"], "cpu": ["loong64"] }, - "@esbuild/linux-loong64@0.25.7": { - "integrity": "sha512-TG1KJqjBlN9IHQjKVUYDB0/mUGgokfhhatlay8aZ/MSORMubEvj/J1CL8YGY4EBcln4z7rKFbsH+HeAv0d471w==", - "os": ["linux"], - "cpu": ["loong64"] - }, - "@esbuild/linux-loong64@0.27.3": { - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "@esbuild/linux-loong64@0.27.4": { + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", "os": ["linux"], "cpu": ["loong64"] }, @@ -1066,13 +584,8 @@ "os": ["linux"], "cpu": ["mips64el"] }, - "@esbuild/linux-mips64el@0.25.7": { - "integrity": "sha512-Ty9Hj/lx7ikTnhOfaP7ipEm/ICcBv94i/6/WDg0OZ3BPBHhChsUbQancoWYSO0WNkEiSW5Do4febTTy4x1qYQQ==", - "os": ["linux"], - "cpu": ["mips64el"] - }, - "@esbuild/linux-mips64el@0.27.3": { - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "@esbuild/linux-mips64el@0.27.4": { + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", "os": ["linux"], "cpu": ["mips64el"] }, @@ -1086,13 +599,8 @@ "os": ["linux"], "cpu": ["ppc64"] }, - "@esbuild/linux-ppc64@0.25.7": { - "integrity": "sha512-MrOjirGQWGReJl3BNQ58BLhUBPpWABnKrnq8Q/vZWWwAB1wuLXOIxS2JQ1LT3+5T+3jfPh0tyf5CpbyQHqnWIQ==", - "os": ["linux"], - "cpu": ["ppc64"] - }, - "@esbuild/linux-ppc64@0.27.3": { - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "@esbuild/linux-ppc64@0.27.4": { + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", "os": ["linux"], "cpu": ["ppc64"] }, @@ -1106,13 +614,8 @@ "os": ["linux"], "cpu": ["riscv64"] }, - "@esbuild/linux-riscv64@0.25.7": { - "integrity": "sha512-9pr23/pqzyqIZEZmQXnFyqp3vpa+KBk5TotfkzGMqpw089PGm0AIowkUppHB9derQzqniGn3wVXgck19+oqiOw==", - "os": ["linux"], - "cpu": ["riscv64"] - }, - "@esbuild/linux-riscv64@0.27.3": { - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "@esbuild/linux-riscv64@0.27.4": { + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", "os": ["linux"], "cpu": ["riscv64"] }, @@ -1126,13 +629,8 @@ "os": ["linux"], "cpu": ["s390x"] }, - "@esbuild/linux-s390x@0.25.7": { - "integrity": "sha512-4dP11UVGh9O6Y47m8YvW8eoA3r8qL2toVZUbBKyGta8j6zdw1cn9F/Rt59/Mhv0OgY68pHIMjGXWOUaykCnx+w==", - "os": ["linux"], - "cpu": ["s390x"] - }, - "@esbuild/linux-s390x@0.27.3": { - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "@esbuild/linux-s390x@0.27.4": { + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", "os": ["linux"], "cpu": ["s390x"] }, @@ -1146,13 +644,8 @@ "os": ["linux"], "cpu": ["x64"] }, - "@esbuild/linux-x64@0.25.7": { - "integrity": "sha512-ghJMAJTdw/0uhz7e7YnpdX1xVn7VqA0GrWrAO2qKMuqbvgHT2VZiBv1BQ//VcHsPir4wsL3P2oPggfKPzTKoCA==", - "os": ["linux"], - "cpu": ["x64"] - }, - "@esbuild/linux-x64@0.27.3": { - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "@esbuild/linux-x64@0.27.4": { + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", "os": ["linux"], "cpu": ["x64"] }, @@ -1166,13 +659,8 @@ "os": ["netbsd"], "cpu": ["arm64"] }, - "@esbuild/netbsd-arm64@0.25.7": { - "integrity": "sha512-bwXGEU4ua45+u5Ci/a55B85KWaDSRS8NPOHtxy2e3etDjbz23wlry37Ffzapz69JAGGc4089TBo+dGzydQmydg==", - "os": ["netbsd"], - "cpu": ["arm64"] - }, - "@esbuild/netbsd-arm64@0.27.3": { - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "@esbuild/netbsd-arm64@0.27.4": { + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", "os": ["netbsd"], "cpu": ["arm64"] }, @@ -1186,13 +674,8 @@ "os": ["netbsd"], "cpu": ["x64"] }, - "@esbuild/netbsd-x64@0.25.7": { - "integrity": "sha512-tUZRvLtgLE5OyN46sPSYlgmHoBS5bx2URSrgZdW1L1teWPYVmXh+QN/sKDqkzBo/IHGcKcHLKDhBeVVkO7teEA==", - "os": ["netbsd"], - "cpu": ["x64"] - }, - "@esbuild/netbsd-x64@0.27.3": { - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "@esbuild/netbsd-x64@0.27.4": { + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", "os": ["netbsd"], "cpu": ["x64"] }, @@ -1206,13 +689,8 @@ "os": ["openbsd"], "cpu": ["arm64"] }, - "@esbuild/openbsd-arm64@0.25.7": { - "integrity": "sha512-bTJ50aoC+WDlDGBReWYiObpYvQfMjBNlKztqoNUL0iUkYtwLkBQQeEsTq/I1KyjsKA5tyov6VZaPb8UdD6ci6Q==", - "os": ["openbsd"], - "cpu": ["arm64"] - }, - "@esbuild/openbsd-arm64@0.27.3": { - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "@esbuild/openbsd-arm64@0.27.4": { + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", "os": ["openbsd"], "cpu": ["arm64"] }, @@ -1226,13 +704,8 @@ "os": ["openbsd"], "cpu": ["x64"] }, - "@esbuild/openbsd-x64@0.25.7": { - "integrity": "sha512-TA9XfJrgzAipFUU895jd9j2SyDh9bbNkK2I0gHcvqb/o84UeQkBpi/XmYX3cO1q/9hZokdcDqQxIi6uLVrikxg==", - "os": ["openbsd"], - "cpu": ["x64"] - }, - "@esbuild/openbsd-x64@0.27.3": { - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "@esbuild/openbsd-x64@0.27.4": { + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", "os": ["openbsd"], "cpu": ["x64"] }, @@ -1241,13 +714,8 @@ "os": ["openharmony"], "cpu": ["arm64"] }, - "@esbuild/openharmony-arm64@0.25.7": { - "integrity": "sha512-5VTtExUrWwHHEUZ/N+rPlHDwVFQ5aME7vRJES8+iQ0xC/bMYckfJ0l2n3yGIfRoXcK/wq4oXSItZAz5wslTKGw==", - "os": ["openharmony"], - "cpu": ["arm64"] - }, - "@esbuild/openharmony-arm64@0.27.3": { - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "@esbuild/openharmony-arm64@0.27.4": { + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", "os": ["openharmony"], "cpu": ["arm64"] }, @@ -1261,13 +729,8 @@ "os": ["sunos"], "cpu": ["x64"] }, - "@esbuild/sunos-x64@0.25.7": { - "integrity": "sha512-umkbn7KTxsexhv2vuuJmj9kggd4AEtL32KodkJgfhNOHMPtQ55RexsaSrMb+0+jp9XL4I4o2y91PZauVN4cH3A==", - "os": ["sunos"], - "cpu": ["x64"] - }, - "@esbuild/sunos-x64@0.27.3": { - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "@esbuild/sunos-x64@0.27.4": { + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", "os": ["sunos"], "cpu": ["x64"] }, @@ -1281,13 +744,8 @@ "os": ["win32"], "cpu": ["arm64"] }, - "@esbuild/win32-arm64@0.25.7": { - "integrity": "sha512-j20JQGP/gz8QDgzl5No5Gr4F6hurAZvtkFxAKhiv2X49yi/ih8ECK4Y35YnjlMogSKJk931iNMcd35BtZ4ghfw==", - "os": ["win32"], - "cpu": ["arm64"] - }, - "@esbuild/win32-arm64@0.27.3": { - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "@esbuild/win32-arm64@0.27.4": { + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", "os": ["win32"], "cpu": ["arm64"] }, @@ -1301,13 +759,8 @@ "os": ["win32"], "cpu": ["ia32"] }, - "@esbuild/win32-ia32@0.25.7": { - "integrity": "sha512-4qZ6NUfoiiKZfLAXRsvFkA0hoWVM+1y2bSHXHkpdLAs/+r0LgwqYohmfZCi985c6JWHhiXP30mgZawn/XrqAkQ==", - "os": ["win32"], - "cpu": ["ia32"] - }, - "@esbuild/win32-ia32@0.27.3": { - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "@esbuild/win32-ia32@0.27.4": { + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", "os": ["win32"], "cpu": ["ia32"] }, @@ -1321,17 +774,12 @@ "os": ["win32"], "cpu": ["x64"] }, - "@esbuild/win32-x64@0.25.7": { - "integrity": "sha512-FaPsAHTwm+1Gfvn37Eg3E5HIpfR3i6x1AIcla/MkqAIupD4BW3MrSeUqfoTzwwJhk3WE2/KqUn4/eenEJC76VA==", - "os": ["win32"], - "cpu": ["x64"] - }, - "@esbuild/win32-x64@0.27.3": { - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "@esbuild/win32-x64@0.27.4": { + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", "os": ["win32"], "cpu": ["x64"] }, - "@eslint-community/eslint-utils@4.9.1_eslint@9.39.2": { + "@eslint-community/eslint-utils@4.9.1_eslint@9.39.4": { "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dependencies": [ "eslint", @@ -1341,12 +789,12 @@ "@eslint-community/regexpp@4.12.2": { "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==" }, - "@eslint/config-array@0.21.1": { - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "@eslint/config-array@0.21.2": { + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dependencies": [ "@eslint/object-schema", "debug@4.4.3", - "minimatch@3.1.2" + "minimatch@3.1.5" ] }, "@eslint/config-helpers@0.4.2": { @@ -1361,22 +809,22 @@ "@types/json-schema" ] }, - "@eslint/eslintrc@3.3.3": { - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "@eslint/eslintrc@3.3.5": { + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "dependencies": [ - "ajv@6.12.6", + "ajv@6.14.0", "debug@4.4.3", "espree", "globals", "ignore", "import-fresh", "js-yaml", - "minimatch@3.1.2", + "minimatch@3.1.5", "strip-json-comments" ] }, - "@eslint/js@9.39.2": { - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==" + "@eslint/js@9.39.4": { + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==" }, "@eslint/object-schema@2.1.7": { "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==" @@ -1388,10 +836,10 @@ "levn" ] }, - "@fastify/ajv-compiler@4.0.5_ajv@8.17.1": { + "@fastify/ajv-compiler@4.0.5": { "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", "dependencies": [ - "ajv@8.17.1", + "ajv@8.18.0", "ajv-formats", "fast-uri" ] @@ -1421,8 +869,8 @@ "ipaddr.js@2.3.0" ] }, - "@fxts/core@1.25.0": { - "integrity": "sha512-olXPKT/LuNCVwKfVmE4G0lDFMndv+jl7k3mQkBv8ZbXqQvdQJq3nCi2wiUaZHms4eeCimWeZ5uLemW0thlnVUw==", + "@fxts/core@1.26.0": { + "integrity": "sha512-ONaza1CGr8dLKmJ0HQgi0h4XuyDJMr0P70M7o/My/YeeRxuYoSANHjE2nSY7xO4WHgxUD5ojd5dpxlFOzAEJsA==", "dependencies": [ "tslib" ] @@ -1449,8 +897,8 @@ "@humanwhocodes/retry@0.4.3": { "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==" }, - "@img/colour@1.0.0": { - "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==" + "@img/colour@1.1.0": { + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==" }, "@img/sharp-darwin-arm64@0.33.5": { "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", @@ -1728,38 +1176,38 @@ "@inquirer/ansi@1.0.2": { "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==" }, - "@inquirer/checkbox@4.3.2_@types+node@22.19.10": { + "@inquirer/checkbox@4.3.2_@types+node@24.12.0": { "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dependencies": [ "@inquirer/ansi", - "@inquirer/core@10.3.2_@types+node@22.19.10", + "@inquirer/core@10.3.2_@types+node@24.12.0", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@inquirer/confirm@5.1.21_@types+node@22.19.10": { + "@inquirer/confirm@5.1.21_@types+node@24.12.0": { "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@22.19.10", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10" + "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@inquirer/core@10.3.2_@types+node@22.19.10": { + "@inquirer/core@10.3.2_@types+node@24.12.0": { "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dependencies": [ "@inquirer/ansi", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0", "cli-width", "mute-stream@2.0.0", "signal-exit", @@ -1767,7 +1215,7 @@ "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, "@inquirer/core@8.2.4": { @@ -1776,7 +1224,7 @@ "@inquirer/figures", "@inquirer/type@1.5.5", "@types/mute-stream", - "@types/node@20.19.33", + "@types/node@20.19.37", "@types/wrap-ansi", "ansi-escapes", "cli-spinners", @@ -1788,79 +1236,79 @@ "wrap-ansi@6.2.0" ] }, - "@inquirer/editor@4.2.23_@types+node@22.19.10": { + "@inquirer/editor@4.2.23_@types+node@24.12.0": { "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@22.19.10", + "@inquirer/core@10.3.2_@types+node@24.12.0", "@inquirer/external-editor", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10" + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@inquirer/expand@4.0.23_@types+node@22.19.10": { + "@inquirer/expand@4.0.23_@types+node@24.12.0": { "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@22.19.10", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10", + "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@inquirer/external-editor@1.0.3_@types+node@22.19.10": { + "@inquirer/external-editor@1.0.3_@types+node@24.12.0": { "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dependencies": [ - "@types/node@22.19.10", + "@types/node@24.12.0", "chardet", "iconv-lite@0.7.2" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, "@inquirer/figures@1.0.15": { "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==" }, - "@inquirer/input@4.3.1_@types+node@22.19.10": { + "@inquirer/input@4.3.1_@types+node@24.12.0": { "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@22.19.10", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10" + "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@inquirer/number@3.0.23_@types+node@22.19.10": { + "@inquirer/number@3.0.23_@types+node@24.12.0": { "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@22.19.10", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10" + "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@inquirer/password@4.0.23_@types+node@22.19.10": { + "@inquirer/password@4.0.23_@types+node@24.12.0": { "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dependencies": [ "@inquirer/ansi", - "@inquirer/core@10.3.2_@types+node@22.19.10", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10" + "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@inquirer/prompts@7.10.1_@types+node@22.19.10": { + "@inquirer/prompts@7.10.1_@types+node@24.12.0": { "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", "dependencies": [ "@inquirer/checkbox", @@ -1873,49 +1321,49 @@ "@inquirer/rawlist", "@inquirer/search", "@inquirer/select", - "@types/node@22.19.10" + "@types/node@24.12.0" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@inquirer/rawlist@4.1.11_@types+node@22.19.10": { + "@inquirer/rawlist@4.1.11_@types+node@24.12.0": { "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@22.19.10", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10", + "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@inquirer/search@3.2.2_@types+node@22.19.10": { + "@inquirer/search@3.2.2_@types+node@24.12.0": { "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@22.19.10", + "@inquirer/core@10.3.2_@types+node@24.12.0", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@inquirer/select@4.4.2_@types+node@22.19.10": { + "@inquirer/select@4.4.2_@types+node@24.12.0": { "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dependencies": [ "@inquirer/ansi", - "@inquirer/core@10.3.2_@types+node@22.19.10", + "@inquirer/core@10.3.2_@types+node@24.12.0", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, "@inquirer/type@1.5.5": { @@ -1924,17 +1372,17 @@ "mute-stream@1.0.0" ] }, - "@inquirer/type@3.0.10_@types+node@22.19.10": { + "@inquirer/type@3.0.10_@types+node@24.12.0": { "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dependencies": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "@ioredis/commands@1.5.0": { - "integrity": "sha512-eUgLqrMf8nJkZxT24JvVRrQya1vZkQh8BBeYNwGDqa5I0VUi8ACx7uFvAaLxintokpTenkK6DASvo/bvNbBGow==" + "@ioredis/commands@1.5.1": { + "integrity": "sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==" }, "@jimp/bmp@0.22.12_@jimp+custom@0.22.12": { "integrity": "sha512-aeI64HD0npropd+AR76MCcvvRaa+Qck6loCOS03CkkxGHN5/r336qTM5HPUdHKMDOGzqknuVPA8+kK1t03z12g==", @@ -2277,15 +1725,12 @@ "integrity": "sha512-6xReMW9p+paJgqoFRpOE2nogJFvzPfaLHLIlyADYjKMUcwDyjKZxryIbgcU+gxiTygn8yCjld1HoI0ET4/iZeA==", "tarball": "https://npm.jsr.io/~/11/@jsr/std__internal/1.0.12.tgz" }, - "@logtape/logtape@1.3.6": { - "integrity": "sha512-OaK8eal8zcjB0GZbllXKgUC2T9h/GyNLQyQXjJkf1yum7SZKTWs9gs/t8NMS0kVVaSnA7bhU0Sjws/Iy4e0/IQ==" + "@logtape/logtape@1.3.7": { + "integrity": "sha512-YgF+q9op97oLLPwc7TcTNIllTArVtTwkwyKky6XVzAXQcBrvFXXtMuwJSryONAyOUSItrx994O/HABOrszZyFg==" }, "@lukeed/csprng@1.1.0": { "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==" }, - "@mjackson/node-fetch-server@0.7.0": { - "integrity": "sha512-un8diyEBKU3BTVj3GzlTPA1kIjCkGdD+AMYQy31Gf9JCkfoZzwgJ79GUtHrF2BN3XPNMLpubbzPcxys+a3uZEw==" - }, "@multiformats/base-x@4.0.1": { "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" }, @@ -2297,10 +1742,10 @@ "@tybys/wasm-util" ] }, - "@nestjs/common@11.1.13_reflect-metadata@0.2.2_rxjs@7.8.2": { - "integrity": "sha512-ieqWtipT+VlyDWLz5Rvz0f3E5rXcVAnaAi+D53DEHLjc1kmFxCgZ62qVfTX2vwkywwqNkTNXvBgGR72hYqV//Q==", + "@nestjs/common@11.1.17_reflect-metadata@0.2.2_rxjs@7.8.2": { + "integrity": "sha512-hLODw5Abp8OQgA+mUO4tHou4krKgDtUcM9j5Ihxncst9XeyxYBTt2bwZm4e4EQr5E352S4Fyy6V3iFx9ggxKAg==", "dependencies": [ - "file-type@21.3.0", + "file-type@21.3.2", "iterare", "load-esm", "reflect-metadata", @@ -2315,29 +1760,29 @@ "@opentelemetry/api@1.9.0": { "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, - "@opentelemetry/context-async-hooks@2.5.0_@opentelemetry+api@1.9.0": { - "integrity": "sha512-uOXpVX0ZjO7heSVjhheW2XEPrhQAWr2BScDPoZ9UDycl5iuHG+Usyc3AIfG6kZeC1GyLpMInpQ6X5+9n69yOFw==", + "@opentelemetry/context-async-hooks@2.6.0_@opentelemetry+api@1.9.0": { + "integrity": "sha512-L8UyDwqpTcbkIK5cgwDRDYDoEhQoj8wp8BwsO19w3LB1Z41yEQm2VJyNfAi9DrLP/YTqXqWpKHyZfR9/tFYo1Q==", "dependencies": [ "@opentelemetry/api" ] }, - "@opentelemetry/core@2.5.0_@opentelemetry+api@1.9.0": { - "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", + "@opentelemetry/core@2.6.0_@opentelemetry+api@1.9.0": { + "integrity": "sha512-HLM1v2cbZ4TgYN6KEOj+Bbj8rAKriOdkF9Ed3tG25FoprSiQl7kYc+RRT6fUZGOvx0oMi5U67GoFdT+XUn8zEg==", "dependencies": [ "@opentelemetry/api", "@opentelemetry/semantic-conventions" ] }, - "@opentelemetry/resources@2.5.0_@opentelemetry+api@1.9.0": { - "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", + "@opentelemetry/resources@2.6.0_@opentelemetry+api@1.9.0": { + "integrity": "sha512-D4y/+OGe3JSuYUCBxtH5T9DSAWNcvCb/nQWIga8HNtXTVPQn59j0nTBAgaAXxUVBDl40mG3Tc76b46wPlZaiJQ==", "dependencies": [ "@opentelemetry/api", "@opentelemetry/core", "@opentelemetry/semantic-conventions" ] }, - "@opentelemetry/sdk-trace-base@2.5.0_@opentelemetry+api@1.9.0": { - "integrity": "sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ==", + "@opentelemetry/sdk-trace-base@2.6.0_@opentelemetry+api@1.9.0": { + "integrity": "sha512-g/OZVkqlxllgFM7qMKqbPV9c1DUPhQ7d4n3pgZFcrnrNft9eJXZM2TNHTPYREJBrtNdRytYyvwjgL5geDKl3EQ==", "dependencies": [ "@opentelemetry/api", "@opentelemetry/core", @@ -2345,8 +1790,8 @@ "@opentelemetry/semantic-conventions" ] }, - "@opentelemetry/semantic-conventions@1.39.0": { - "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==" + "@opentelemetry/semantic-conventions@1.40.0": { + "integrity": "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==" }, "@oslojs/encoding@1.1.0": { "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==" @@ -2354,8 +1799,8 @@ "@oxc-project/types@0.103.0": { "integrity": "sha512-bkiYX5kaXWwUessFRSoXFkGIQTmc6dLGdxuRTrC+h8PSnIdZyuXHHlLAeTmOue5Br/a0/a7dHH0Gca6eXn9MKg==" }, - "@oxc-project/types@0.112.0": { - "integrity": "sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ==" + "@oxc-project/types@0.115.0": { + "integrity": "sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==" }, "@pinojs/redact@0.4.0": { "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==" @@ -2383,38 +1828,14 @@ "@poppinss/exception@1.2.3": { "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==" }, - "@preact/signals-core@1.13.0": { - "integrity": "sha512-slT6XeTCAbdql61GVLlGU4x7XHI7kCZV5Um5uhE4zLX4ApgiiXc0UYFvVOKq06xcovzp7p+61l68oPi563ARKg==" + "@preact/signals-core@1.14.0": { + "integrity": "sha512-AowtCcCU/33lFlh1zRFf/u+12rfrhtNakj7UpaGEsmMwUKpKWMVvcktOGcwBBNiB4lWrZWc01LhiyyzVklJyaQ==" }, - "@preact/signals@2.7.1_preact@10.19.6": { - "integrity": "sha512-mP2+wMYHqDXVKFGzjqkL6CiHj3okB8eVTTJUZBrSVGozi/XfA+zZRCEALKKZYRoSoqLyT4J6qM4lhwT9155s1Q==", + "@preact/signals@2.8.2_preact@10.29.0": { + "integrity": "sha512-gym5yoa64c+0w2kL7zRAAjY548qzWXbbuOfjsK9F1nWrEqooDwyWnih5SNdonjhQSp27zUqYh7UrxIRnkCyFCA==", "dependencies": [ "@preact/signals-core", - "preact@10.19.6" - ] - }, - "@prefresh/babel-plugin@0.5.2": { - "integrity": "sha512-AOl4HG6dAxWkJ5ndPHBgBa49oo/9bOiJuRDKHLSTyH+Fd9x00shTXpdiTj1W41l6oQIwUOAgJeHMn4QwIDpHkA==" - }, - "@prefresh/core@1.5.9_preact@10.19.6": { - "integrity": "sha512-IKBKCPaz34OFVC+adiQ2qaTF5qdztO2/4ZPf4KsRTgjKosWqxVXmEbxCiUydYZRY8GVie+DQlKzQr9gt6HQ+EQ==", - "dependencies": [ - "preact@10.19.6" - ] - }, - "@prefresh/utils@1.2.1": { - "integrity": "sha512-vq/sIuN5nYfYzvyayXI4C2QkprfNaHUQ9ZX+3xLD8nL3rWyzpxOm1+K7RtMbhd+66QcaISViK7amjnheQ/4WZw==" - }, - "@prefresh/vite@2.4.11_preact@10.19.6_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-/XjURQqdRiCG3NpMmWqE9kJwrg9IchIOWHzulCfqg2sRe/8oQ1g5De7xrk9lbqPIQLn7ntBkKdqWXIj4E9YXyg==", - "dependencies": [ - "@babel/core", - "@prefresh/babel-plugin", - "@prefresh/core", - "@prefresh/utils", - "@rollup/pluginutils@4.2.1", - "preact@10.19.6", - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" + "preact@10.29.0" ] }, "@quansync/fs@1.0.0": { @@ -2428,8 +1849,8 @@ "os": ["android"], "cpu": ["arm64"] }, - "@rolldown/binding-android-arm64@1.0.0-rc.3": { - "integrity": "sha512-0T1k9FinuBZ/t7rZ8jN6OpUKPnUjNdYHoj/cESWrQ3ZraAJ4OMm6z7QjSfCxqj8mOp9kTKc1zHK3kGz5vMu+nQ==", + "@rolldown/binding-android-arm64@1.0.0-rc.9": { + "integrity": "sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==", "os": ["android"], "cpu": ["arm64"] }, @@ -2438,8 +1859,8 @@ "os": ["darwin"], "cpu": ["arm64"] }, - "@rolldown/binding-darwin-arm64@1.0.0-rc.3": { - "integrity": "sha512-JWWLzvcmc/3pe7qdJqPpuPk91SoE/N+f3PcWx/6ZwuyDVyungAEJPvKm/eEldiDdwTmaEzWfIR+HORxYWrCi1A==", + "@rolldown/binding-darwin-arm64@1.0.0-rc.9": { + "integrity": "sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==", "os": ["darwin"], "cpu": ["arm64"] }, @@ -2448,8 +1869,8 @@ "os": ["darwin"], "cpu": ["x64"] }, - "@rolldown/binding-darwin-x64@1.0.0-rc.3": { - "integrity": "sha512-MTakBxfx3tde5WSmbHxuqlDsIW0EzQym+PJYGF4P6lG2NmKzi128OGynoFUqoD5ryCySEY85dug4v+LWGBElIw==", + "@rolldown/binding-darwin-x64@1.0.0-rc.9": { + "integrity": "sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==", "os": ["darwin"], "cpu": ["x64"] }, @@ -2458,8 +1879,8 @@ "os": ["freebsd"], "cpu": ["x64"] }, - "@rolldown/binding-freebsd-x64@1.0.0-rc.3": { - "integrity": "sha512-jje3oopyOLs7IwfvXoS6Lxnmie5JJO7vW29fdGFu5YGY1EDbVDhD+P9vDihqS5X6fFiqL3ZQZCMBg6jyHkSVww==", + "@rolldown/binding-freebsd-x64@1.0.0-rc.9": { + "integrity": "sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==", "os": ["freebsd"], "cpu": ["x64"] }, @@ -2468,8 +1889,8 @@ "os": ["linux"], "cpu": ["arm"] }, - "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.3": { - "integrity": "sha512-A0n8P3hdLAaqzSFrQoA42p23ZKBYQOw+8EH5r15Sa9X1kD9/JXe0YT2gph2QTWvdr0CVK2BOXiK6ENfy6DXOag==", + "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9": { + "integrity": "sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==", "os": ["linux"], "cpu": ["arm"] }, @@ -2478,8 +1899,8 @@ "os": ["linux"], "cpu": ["arm64"] }, - "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.3": { - "integrity": "sha512-kWXkoxxarYISBJ4bLNf5vFkEbb4JvccOwxWDxuK9yee8lg5XA7OpvlTptfRuwEvYcOZf+7VS69Uenpmpyo5Bjw==", + "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9": { + "integrity": "sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==", "os": ["linux"], "cpu": ["arm64"] }, @@ -2488,18 +1909,28 @@ "os": ["linux"], "cpu": ["arm64"] }, - "@rolldown/binding-linux-arm64-musl@1.0.0-rc.3": { - "integrity": "sha512-Z03/wrqau9Bicfgb3Dbs6SYTHliELk2PM2LpG2nFd+cGupTMF5kanLEcj2vuuJLLhptNyS61rtk7SOZ+lPsTUA==", + "@rolldown/binding-linux-arm64-musl@1.0.0-rc.9": { + "integrity": "sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==", "os": ["linux"], "cpu": ["arm64"] }, + "@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9": { + "integrity": "sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==", + "os": ["linux"], + "cpu": ["ppc64"] + }, + "@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9": { + "integrity": "sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==", + "os": ["linux"], + "cpu": ["s390x"] + }, "@rolldown/binding-linux-x64-gnu@1.0.0-beta.57": { "integrity": "sha512-E199LPijo98yrLjPCmETx8EF43sZf9t3guSrLee/ej1rCCc3zDVTR4xFfN9BRAapGVl7/8hYqbbiQPTkv73kUg==", "os": ["linux"], "cpu": ["x64"] }, - "@rolldown/binding-linux-x64-gnu@1.0.0-rc.3": { - "integrity": "sha512-iSXXZsQp08CSilff/DCTFZHSVEpEwdicV3W8idHyrByrcsRDVh9sGC3sev6d8BygSGj3vt8GvUKBPCoyMA4tgQ==", + "@rolldown/binding-linux-x64-gnu@1.0.0-rc.9": { + "integrity": "sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==", "os": ["linux"], "cpu": ["x64"] }, @@ -2508,8 +1939,8 @@ "os": ["linux"], "cpu": ["x64"] }, - "@rolldown/binding-linux-x64-musl@1.0.0-rc.3": { - "integrity": "sha512-qaj+MFudtdCv9xZo9znFvkgoajLdc+vwf0Kz5N44g+LU5XMe+IsACgn3UG7uTRlCCvhMAGXm1XlpEA5bZBrOcw==", + "@rolldown/binding-linux-x64-musl@1.0.0-rc.9": { + "integrity": "sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==", "os": ["linux"], "cpu": ["x64"] }, @@ -2518,8 +1949,8 @@ "os": ["openharmony"], "cpu": ["arm64"] }, - "@rolldown/binding-openharmony-arm64@1.0.0-rc.3": { - "integrity": "sha512-U662UnMETyjT65gFmG9ma+XziENrs7BBnENi/27swZPYagubfHRirXHG2oMl+pEax2WvO7Kb9gHZmMakpYqBHQ==", + "@rolldown/binding-openharmony-arm64@1.0.0-rc.9": { + "integrity": "sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==", "os": ["openharmony"], "cpu": ["arm64"] }, @@ -2530,8 +1961,8 @@ ], "cpu": ["wasm32"] }, - "@rolldown/binding-wasm32-wasi@1.0.0-rc.3": { - "integrity": "sha512-gekrQ3Q2HiC1T5njGyuUJoGpK/l6B/TNXKed3fZXNf9YRTJn3L5MOZsFBn4bN2+UX+8+7hgdlTcEsexX988G4g==", + "@rolldown/binding-wasm32-wasi@1.0.0-rc.9": { + "integrity": "sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==", "dependencies": [ "@napi-rs/wasm-runtime" ], @@ -2542,8 +1973,8 @@ "os": ["win32"], "cpu": ["arm64"] }, - "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.3": { - "integrity": "sha512-85y5JifyMgs8m5K2XzR/VDsapKbiFiohl7s5lEj7nmNGO0pkTXE7q6TQScei96BNAsoK7JC3pA7ukA8WRHVJpg==", + "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9": { + "integrity": "sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==", "os": ["win32"], "cpu": ["arm64"] }, @@ -2552,171 +1983,153 @@ "os": ["win32"], "cpu": ["x64"] }, - "@rolldown/binding-win32-x64-msvc@1.0.0-rc.3": { - "integrity": "sha512-a4VUQZH7LxGbUJ3qJ/TzQG8HxdHvf+jOnqf7B7oFx1TEBm+j2KNL2zr5SQ7wHkNAcaPevF6gf9tQnVBnC4mD+A==", + "@rolldown/binding-win32-x64-msvc@1.0.0-rc.9": { + "integrity": "sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==", "os": ["win32"], "cpu": ["x64"] }, "@rolldown/pluginutils@1.0.0-beta.57": { "integrity": "sha512-aQNelgx14tGA+n2tNSa9x6/jeoCL9fkDeCei7nOKnHx0fEFRRMu5ReiITo+zZD5TzWDGGRjbSYCs93IfRIyTuQ==" }, - "@rolldown/pluginutils@1.0.0-rc.3": { - "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==" - }, - "@rollup/pluginutils@4.2.1": { - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "dependencies": [ - "estree-walker@2.0.2", - "picomatch@2.3.1" - ] + "@rolldown/pluginutils@1.0.0-rc.9": { + "integrity": "sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==" }, - "@rollup/pluginutils@5.3.0_rollup@4.57.1": { + "@rollup/pluginutils@5.3.0": { "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", "dependencies": [ "@types/estree", "estree-walker@2.0.2", - "picomatch@4.0.3", - "rollup" - ], - "optionalPeers": [ - "rollup" + "picomatch@4.0.3" ] }, - "@rollup/rollup-android-arm-eabi@4.57.1": { - "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "@rollup/rollup-android-arm-eabi@4.59.0": { + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", "os": ["android"], "cpu": ["arm"] }, - "@rollup/rollup-android-arm64@4.57.1": { - "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "@rollup/rollup-android-arm64@4.59.0": { + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", "os": ["android"], "cpu": ["arm64"] }, - "@rollup/rollup-darwin-arm64@4.57.1": { - "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "@rollup/rollup-darwin-arm64@4.59.0": { + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", "os": ["darwin"], "cpu": ["arm64"] }, - "@rollup/rollup-darwin-x64@4.57.1": { - "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "@rollup/rollup-darwin-x64@4.59.0": { + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", "os": ["darwin"], "cpu": ["x64"] }, - "@rollup/rollup-freebsd-arm64@4.57.1": { - "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "@rollup/rollup-freebsd-arm64@4.59.0": { + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", "os": ["freebsd"], "cpu": ["arm64"] }, - "@rollup/rollup-freebsd-x64@4.57.1": { - "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "@rollup/rollup-freebsd-x64@4.59.0": { + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", "os": ["freebsd"], "cpu": ["x64"] }, - "@rollup/rollup-linux-arm-gnueabihf@4.57.1": { - "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "@rollup/rollup-linux-arm-gnueabihf@4.59.0": { + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", "os": ["linux"], "cpu": ["arm"] }, - "@rollup/rollup-linux-arm-musleabihf@4.57.1": { - "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "@rollup/rollup-linux-arm-musleabihf@4.59.0": { + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", "os": ["linux"], "cpu": ["arm"] }, - "@rollup/rollup-linux-arm64-gnu@4.57.1": { - "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "@rollup/rollup-linux-arm64-gnu@4.59.0": { + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", "os": ["linux"], "cpu": ["arm64"] }, - "@rollup/rollup-linux-arm64-musl@4.57.1": { - "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "@rollup/rollup-linux-arm64-musl@4.59.0": { + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", "os": ["linux"], "cpu": ["arm64"] }, - "@rollup/rollup-linux-loong64-gnu@4.57.1": { - "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "@rollup/rollup-linux-loong64-gnu@4.59.0": { + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", "os": ["linux"], "cpu": ["loong64"] }, - "@rollup/rollup-linux-loong64-musl@4.57.1": { - "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "@rollup/rollup-linux-loong64-musl@4.59.0": { + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", "os": ["linux"], "cpu": ["loong64"] }, - "@rollup/rollup-linux-ppc64-gnu@4.57.1": { - "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "@rollup/rollup-linux-ppc64-gnu@4.59.0": { + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", "os": ["linux"], "cpu": ["ppc64"] }, - "@rollup/rollup-linux-ppc64-musl@4.57.1": { - "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "@rollup/rollup-linux-ppc64-musl@4.59.0": { + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", "os": ["linux"], "cpu": ["ppc64"] }, - "@rollup/rollup-linux-riscv64-gnu@4.57.1": { - "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "@rollup/rollup-linux-riscv64-gnu@4.59.0": { + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", "os": ["linux"], "cpu": ["riscv64"] }, - "@rollup/rollup-linux-riscv64-musl@4.57.1": { - "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "@rollup/rollup-linux-riscv64-musl@4.59.0": { + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", "os": ["linux"], "cpu": ["riscv64"] }, - "@rollup/rollup-linux-s390x-gnu@4.57.1": { - "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "@rollup/rollup-linux-s390x-gnu@4.59.0": { + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", "os": ["linux"], "cpu": ["s390x"] }, - "@rollup/rollup-linux-x64-gnu@4.57.1": { - "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "@rollup/rollup-linux-x64-gnu@4.59.0": { + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", "os": ["linux"], "cpu": ["x64"] }, - "@rollup/rollup-linux-x64-musl@4.57.1": { - "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "@rollup/rollup-linux-x64-musl@4.59.0": { + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", "os": ["linux"], "cpu": ["x64"] }, - "@rollup/rollup-openbsd-x64@4.57.1": { - "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "@rollup/rollup-openbsd-x64@4.59.0": { + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", "os": ["openbsd"], "cpu": ["x64"] }, - "@rollup/rollup-openharmony-arm64@4.57.1": { - "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "@rollup/rollup-openharmony-arm64@4.59.0": { + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", "os": ["openharmony"], "cpu": ["arm64"] }, - "@rollup/rollup-win32-arm64-msvc@4.57.1": { - "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "@rollup/rollup-win32-arm64-msvc@4.59.0": { + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", "os": ["win32"], "cpu": ["arm64"] }, - "@rollup/rollup-win32-ia32-msvc@4.57.1": { - "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "@rollup/rollup-win32-ia32-msvc@4.59.0": { + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", "os": ["win32"], "cpu": ["ia32"] }, - "@rollup/rollup-win32-x64-gnu@4.57.1": { - "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "@rollup/rollup-win32-x64-gnu@4.59.0": { + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", "os": ["win32"], "cpu": ["x64"] }, - "@rollup/rollup-win32-x64-msvc@4.57.1": { - "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "@rollup/rollup-win32-x64-msvc@4.59.0": { + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", "os": ["win32"], "cpu": ["x64"] }, "@sec-ant/readable-stream@0.4.1": { "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==" }, - "@selderee/plugin-htmlparser2@0.11.0": { - "integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==", - "dependencies": [ - "domhandler", - "selderee" - ] - }, "@shikijs/core@1.29.2": { "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", "dependencies": [ @@ -2728,10 +2141,10 @@ "hast-util-to-html" ] }, - "@shikijs/core@3.22.0": { - "integrity": "sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==", + "@shikijs/core@3.23.0": { + "integrity": "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==", "dependencies": [ - "@shikijs/types@3.22.0", + "@shikijs/types@3.23.0", "@shikijs/vscode-textmate", "@types/hast", "hast-util-to-html" @@ -2745,12 +2158,12 @@ "oniguruma-to-es@2.3.0" ] }, - "@shikijs/engine-javascript@3.22.0": { - "integrity": "sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==", + "@shikijs/engine-javascript@3.23.0": { + "integrity": "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==", "dependencies": [ - "@shikijs/types@3.22.0", + "@shikijs/types@3.23.0", "@shikijs/vscode-textmate", - "oniguruma-to-es@4.3.4" + "oniguruma-to-es@4.3.5" ] }, "@shikijs/engine-oniguruma@1.29.2": { @@ -2760,10 +2173,10 @@ "@shikijs/vscode-textmate" ] }, - "@shikijs/engine-oniguruma@3.22.0": { - "integrity": "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==", + "@shikijs/engine-oniguruma@3.23.0": { + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", "dependencies": [ - "@shikijs/types@3.22.0", + "@shikijs/types@3.23.0", "@shikijs/vscode-textmate" ] }, @@ -2773,10 +2186,10 @@ "@shikijs/types@1.29.2" ] }, - "@shikijs/langs@3.22.0": { - "integrity": "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==", + "@shikijs/langs@3.23.0": { + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", "dependencies": [ - "@shikijs/types@3.22.0" + "@shikijs/types@3.23.0" ] }, "@shikijs/themes@1.29.2": { @@ -2785,10 +2198,10 @@ "@shikijs/types@1.29.2" ] }, - "@shikijs/themes@3.22.0": { - "integrity": "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==", + "@shikijs/themes@3.23.0": { + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", "dependencies": [ - "@shikijs/types@3.22.0" + "@shikijs/types@3.23.0" ] }, "@shikijs/types@1.29.2": { @@ -2798,8 +2211,8 @@ "@types/hast" ] }, - "@shikijs/types@3.22.0": { - "integrity": "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==", + "@shikijs/types@3.23.0": { + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", "dependencies": [ "@shikijs/vscode-textmate", "@types/hast" @@ -2817,57 +2230,48 @@ "@standard-schema/spec@1.1.0": { "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==" }, - "@sveltejs/acorn-typescript@1.0.8_acorn@8.15.0": { - "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", + "@sveltejs/acorn-typescript@1.0.9_acorn@8.16.0": { + "integrity": "sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==", "dependencies": [ - "acorn@8.15.0" + "acorn@8.16.0" ] }, - "@sveltejs/kit@2.50.2_@opentelemetry+api@1.9.0_@sveltejs+vite-plugin-svelte@6.2.4__svelte@5.50.1___acorn@8.15.0__vite@7.3.1___@types+node@22.19.10___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2_svelte@5.50.1__acorn@8.15.0_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_acorn@8.15.0_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-875hTUkEbz+MyJIxWbQjfMaekqdmEKUUfR7JyKcpfMRZqcGyrO9Gd+iS1D/Dx8LpE5FEtutWGOtlAh4ReSAiOA==", + "@sveltejs/kit@2.55.0_@opentelemetry+api@1.9.0_@sveltejs+vite-plugin-svelte@7.0.0__svelte@5.53.12__vite@7.3.1___@types+node@24.12.0___tsx@4.21.0___yaml@2.8.2__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_svelte@5.53.12_typescript@5.9.3_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-MdFRjevVxmAknf2NbaUkDF16jSIzXMWd4Nfah0Qp8TtQVoSp3bV4jKt8mX7z7qTUTWvgSaxtR0EG5WJf53gcuA==", "dependencies": [ "@opentelemetry/api", "@standard-schema/spec", "@sveltejs/acorn-typescript", "@sveltejs/vite-plugin-svelte", "@types/cookie", - "acorn@8.15.0", + "acorn@8.16.0", "cookie@0.6.0", "devalue", "esm-env", "kleur@4.1.5", "magic-string", "mrmime", - "sade", "set-cookie-parser@3.0.1", "sirv", "svelte", - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" + "typescript", + "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" ], "optionalPeers": [ - "@opentelemetry/api" + "@opentelemetry/api", + "typescript" ], "bin": true }, - "@sveltejs/vite-plugin-svelte-inspector@5.0.2_@sveltejs+vite-plugin-svelte@6.2.4__svelte@5.50.1___acorn@8.15.0__vite@7.3.1___@types+node@22.19.10___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2_svelte@5.50.1__acorn@8.15.0_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==", - "dependencies": [ - "@sveltejs/vite-plugin-svelte", - "obug", - "svelte", - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" - ] - }, - "@sveltejs/vite-plugin-svelte@6.2.4_svelte@5.50.1__acorn@8.15.0_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==", + "@sveltejs/vite-plugin-svelte@7.0.0_svelte@5.53.12_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-ILXmxC7HAsnkK2eslgPetrqqW1BKSL7LktsFgqzNj83MaivMGZzluWq32m25j2mDOjmSKX7GGWahePhuEs7P/g==", "dependencies": [ - "@sveltejs/vite-plugin-svelte-inspector", "deepmerge", "magic-string", "obug", "svelte", - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3", - "vitefu@1.1.1_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2" + "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", + "vitefu@1.1.2_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" ] }, "@tokenizer/inflate@0.4.1": { @@ -2886,12 +2290,6 @@ "tslib" ] }, - "@types/amqplib@0.10.8": { - "integrity": "sha512-vtDp8Pk1wsE/AuQ8/Rgtm6KUZYqcnTgNvEHwzCkX8rL7AGsC6zqAfKAAJhUZXFhM/Pp++tbnUHiam/8vVpPztA==", - "dependencies": [ - "@types/node@24.10.12" - ] - }, "@types/chai@5.2.3": { "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dependencies": [ @@ -2945,7 +2343,7 @@ "@types/mute-stream@0.0.4": { "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", "dependencies": [ - "@types/node@24.10.12" + "@types/node@24.12.0" ] }, "@types/nlcst@2.0.3": { @@ -2957,32 +2355,35 @@ "@types/node@16.9.1": { "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" }, - "@types/node@20.19.33": { - "integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==", + "@types/node@20.19.37": { + "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", "dependencies": [ "undici-types@6.21.0" ] }, - "@types/node@22.19.10": { - "integrity": "sha512-tF5VOugLS/EuDlTBijk0MqABfP8UxgYazTLo3uIn3b4yJgg26QRbVYJYsDtHrjdDUIRfP70+VfhTTc+CE1yskw==", + "@types/node@22.19.15": { + "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", "dependencies": [ "undici-types@6.21.0" ] }, - "@types/node@24.10.12": { - "integrity": "sha512-68e+T28EbdmLSTkPgs3+UacC6rzmqrcWFPQs1C8mwJhI/r5Uxr0yEuQotczNRROd1gq30NGxee+fo0rSIxpyAw==", + "@types/node@24.12.0": { + "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", "dependencies": [ "undici-types@7.16.0" ] }, + "@types/trusted-types@2.0.7": { + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, "@types/unist@3.0.3": { "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "@types/wrap-ansi@3.0.0": { "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==" }, - "@typescript-eslint/parser@8.55.0_eslint@9.39.2_typescript@5.9.3": { - "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", + "@typescript-eslint/parser@8.57.1_eslint@9.39.4_typescript@5.9.3": { + "integrity": "sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==", "dependencies": [ "@typescript-eslint/scope-manager", "@typescript-eslint/types", @@ -2993,8 +2394,8 @@ "typescript" ] }, - "@typescript-eslint/project-service@8.55.0_typescript@5.9.3": { - "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", + "@typescript-eslint/project-service@8.57.1_typescript@5.9.3": { + "integrity": "sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==", "dependencies": [ "@typescript-eslint/tsconfig-utils", "@typescript-eslint/types", @@ -3002,39 +2403,39 @@ "typescript" ] }, - "@typescript-eslint/scope-manager@8.55.0": { - "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", + "@typescript-eslint/scope-manager@8.57.1": { + "integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==", "dependencies": [ "@typescript-eslint/types", "@typescript-eslint/visitor-keys" ] }, - "@typescript-eslint/tsconfig-utils@8.55.0_typescript@5.9.3": { - "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", + "@typescript-eslint/tsconfig-utils@8.57.1_typescript@5.9.3": { + "integrity": "sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==", "dependencies": [ "typescript" ] }, - "@typescript-eslint/types@8.55.0": { - "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==" + "@typescript-eslint/types@8.57.1": { + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==" }, - "@typescript-eslint/typescript-estree@8.55.0_typescript@5.9.3": { - "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", + "@typescript-eslint/typescript-estree@8.57.1_typescript@5.9.3": { + "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==", "dependencies": [ "@typescript-eslint/project-service", "@typescript-eslint/tsconfig-utils", "@typescript-eslint/types", "@typescript-eslint/visitor-keys", "debug@4.4.3", - "minimatch@9.0.5", - "semver@7.7.4", + "minimatch@10.2.4", + "semver", "tinyglobby", "ts-api-utils", "typescript" ] }, - "@typescript-eslint/utils@8.55.0_eslint@9.39.2_typescript@5.9.3": { - "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", + "@typescript-eslint/utils@8.57.1_eslint@9.39.4_typescript@5.9.3": { + "integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==", "dependencies": [ "@eslint-community/eslint-utils", "@typescript-eslint/scope-manager", @@ -3044,11 +2445,11 @@ "typescript" ] }, - "@typescript-eslint/visitor-keys@8.55.0": { - "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", + "@typescript-eslint/visitor-keys@8.57.1": { + "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==", "dependencies": [ "@typescript-eslint/types", - "eslint-visitor-keys@4.2.1" + "eslint-visitor-keys@5.0.1" ] }, "@ungap/structured-clone@1.3.0": { @@ -3064,16 +2465,16 @@ "tinyrainbow" ] }, - "@vitest/mocker@3.2.4_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2": { + "@vitest/mocker@3.2.4_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dependencies": [ "@vitest/spy", "estree-walker@3.0.3", "magic-string", - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" + "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" ], "optionalPeers": [ - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" + "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" ] }, "@vitest/pretty-format@3.2.4": { @@ -3128,10 +2529,10 @@ "negotiator" ] }, - "acorn-jsx@5.3.2_acorn@8.15.0": { + "acorn-jsx@5.3.2_acorn@8.16.0": { "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dependencies": [ - "acorn@8.15.0" + "acorn@8.16.0" ] }, "acorn-walk@8.3.2": { @@ -3141,21 +2542,21 @@ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "bin": true }, - "acorn@8.15.0": { - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "acorn@8.16.0": { + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "bin": true }, - "ajv-formats@3.0.1_ajv@8.17.1": { + "ajv-formats@3.0.1_ajv@8.18.0": { "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dependencies": [ - "ajv@8.17.1" + "ajv@8.18.0" ], "optionalPeers": [ - "ajv@8.17.1" + "ajv@8.18.0" ] }, - "ajv@6.12.6": { - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "ajv@6.14.0": { + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dependencies": [ "fast-deep-equal", "fast-json-stable-stringify", @@ -3163,8 +2564,8 @@ "uri-js" ] }, - "ajv@8.17.1": { - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "ajv@8.18.0": { + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dependencies": [ "fast-deep-equal", "fast-uri", @@ -3228,6 +2629,9 @@ "argparse@2.0.1": { "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "aria-query@5.3.1": { + "integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==" + }, "aria-query@5.3.2": { "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==" }, @@ -3255,8 +2659,8 @@ "pathe" ] }, - "astro@5.17.3_rollup@4.57.1_ioredis@5.9.2_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_vite@6.4.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_zod@3.25.76": { - "integrity": "sha512-69dcfPe8LsHzklwj+hl+vunWUbpMB6pmg35mACjetxbJeUNNys90JaBM8ZiwsPK689SAj/4Zqb1ayaANls9/MA==", + "astro@5.18.1_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2": { + "integrity": "sha512-m4VWilWZ+Xt6NPoYzC4CgGZim/zQUO7WFL0RHCH0AiEavF1153iC3+me2atDvXpf/yX4PyGUeD8wZLq1cirT3g==", "dependencies": [ "@astrojs/compiler", "@astrojs/internal-helpers", @@ -3264,9 +2668,9 @@ "@astrojs/telemetry", "@capsizecss/unpack", "@oslojs/encoding", - "@rollup/pluginutils@5.3.0_rollup@4.57.1", - "acorn@8.15.0", - "aria-query", + "@rollup/pluginutils", + "acorn@8.16.0", + "aria-query@5.3.2", "axobject-query", "boxen", "ci-info", @@ -3281,7 +2685,7 @@ "dlv", "dset", "es-module-lexer", - "esbuild@0.27.3", + "esbuild@0.27.4", "estree-walker@3.0.3", "flattie", "fontace", @@ -3301,11 +2705,11 @@ "picomatch@4.0.3", "prompts", "rehype", - "semver@7.7.4", - "shiki@3.22.0", + "semver", + "shiki@3.23.0", "smol-toml", "svgo", - "tinyexec@1.0.2", + "tinyexec@1.0.4", "tinyglobby", "tsconfck", "ultrahtml", @@ -3313,8 +2717,8 @@ "unist-util-visit", "unstorage", "vfile", - "vite@6.4.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3", - "vitefu@1.1.1_vite@6.4.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2", + "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", + "vitefu@1.1.2_vite@6.4.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", "xxhash-wasm", "yargs-parser@21.1.1", "yocto-spinner", @@ -3330,8 +2734,8 @@ "atomic-sleep@1.0.0": { "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" }, - "avvio@9.1.0": { - "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", + "avvio@9.2.0": { + "integrity": "sha512-2t/sy01ArdHHE0vRH5Hsay+RtCZt3dLPji7W7/MMOCEgze5b7SNDC4j5H6FnVgPkI1MTNFGzHdHrVXDDl7QSSQ==", "dependencies": [ "@fastify/error", "fastq" @@ -3352,16 +2756,15 @@ "balanced-match@1.0.2": { "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "balanced-match@4.0.4": { + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==" + }, "base-64@1.0.0": { "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" }, "base64-js@1.5.1": { "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "baseline-browser-mapping@2.9.19": { - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", - "bin": true - }, "birpc@0.2.14": { "integrity": "sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==" }, @@ -3413,27 +2816,16 @@ "brace-expansion@1.1.12": { "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dependencies": [ - "balanced-match", + "balanced-match@1.0.2", "concat-map" ] }, - "brace-expansion@2.0.2": { - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "brace-expansion@5.0.4": { + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dependencies": [ - "balanced-match" + "balanced-match@4.0.4" ] }, - "browserslist@4.28.1": { - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "dependencies": [ - "baseline-browser-mapping", - "caniuse-lite", - "electron-to-chromium", - "node-releases", - "update-browserslist-db" - ], - "bin": true - }, "buffer-more-ints@1.0.0": { "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==" }, @@ -3490,9 +2882,6 @@ "camelcase@8.0.0": { "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==" }, - "caniuse-lite@1.0.30001769": { - "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==" - }, "canonicalize@2.1.0": { "integrity": "sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==", "bin": true @@ -3644,9 +3033,6 @@ "content-type@1.0.5": { "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, - "convert-source-map@2.0.0": { - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, "cookie-es@1.2.2": { "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==" }, @@ -3700,10 +3086,10 @@ "source-map-js" ] }, - "css-tree@3.1.0": { - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "css-tree@3.2.1": { + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", "dependencies": [ - "mdn-data@2.12.2", + "mdn-data@2.27.1", "source-map-js" ] }, @@ -3798,8 +3184,8 @@ "base-64" ] }, - "devalue@5.6.2": { - "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==" + "devalue@5.6.4": { + "integrity": "sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==" }, "devlop@1.1.0": { "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", @@ -3855,9 +3241,6 @@ "ee-first@1.1.1": { "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, - "electron-to-chromium@1.5.286": { - "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==" - }, "emoji-regex-xs@1.0.0": { "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" }, @@ -3907,12 +3290,8 @@ "es-errors" ] }, - "es-toolkit@1.44.0": { - "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==" - }, - "esbuild-wasm@0.25.12": { - "integrity": "sha512-rZqkjL3Y6FwLpSHzLnaEy8Ps6veCNo1kZa9EOfJvmWtBq5dJH4iVjfmOO6Mlkv9B0tt9WFPFmb/VxlgJOnueNg==", - "bin": true + "es-toolkit@1.45.1": { + "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==" }, "esbuild@0.25.12": { "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", @@ -3979,68 +3358,35 @@ "scripts": true, "bin": true }, - "esbuild@0.25.7": { - "integrity": "sha512-daJB0q2dmTzo90L9NjRaohhRWrCzYxWNFTjEi72/h+p5DcY3yn4MacWfDakHmaBaDzDiuLJsCh0+6LK/iX+c+Q==", - "optionalDependencies": [ - "@esbuild/aix-ppc64@0.25.7", - "@esbuild/android-arm@0.25.7", - "@esbuild/android-arm64@0.25.7", - "@esbuild/android-x64@0.25.7", - "@esbuild/darwin-arm64@0.25.7", - "@esbuild/darwin-x64@0.25.7", - "@esbuild/freebsd-arm64@0.25.7", - "@esbuild/freebsd-x64@0.25.7", - "@esbuild/linux-arm@0.25.7", - "@esbuild/linux-arm64@0.25.7", - "@esbuild/linux-ia32@0.25.7", - "@esbuild/linux-loong64@0.25.7", - "@esbuild/linux-mips64el@0.25.7", - "@esbuild/linux-ppc64@0.25.7", - "@esbuild/linux-riscv64@0.25.7", - "@esbuild/linux-s390x@0.25.7", - "@esbuild/linux-x64@0.25.7", - "@esbuild/netbsd-arm64@0.25.7", - "@esbuild/netbsd-x64@0.25.7", - "@esbuild/openbsd-arm64@0.25.7", - "@esbuild/openbsd-x64@0.25.7", - "@esbuild/openharmony-arm64@0.25.7", - "@esbuild/sunos-x64@0.25.7", - "@esbuild/win32-arm64@0.25.7", - "@esbuild/win32-ia32@0.25.7", - "@esbuild/win32-x64@0.25.7" - ], - "scripts": true, - "bin": true - }, - "esbuild@0.27.3": { - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "esbuild@0.27.4": { + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", "optionalDependencies": [ - "@esbuild/aix-ppc64@0.27.3", - "@esbuild/android-arm@0.27.3", - "@esbuild/android-arm64@0.27.3", - "@esbuild/android-x64@0.27.3", - "@esbuild/darwin-arm64@0.27.3", - "@esbuild/darwin-x64@0.27.3", - "@esbuild/freebsd-arm64@0.27.3", - "@esbuild/freebsd-x64@0.27.3", - "@esbuild/linux-arm@0.27.3", - "@esbuild/linux-arm64@0.27.3", - "@esbuild/linux-ia32@0.27.3", - "@esbuild/linux-loong64@0.27.3", - "@esbuild/linux-mips64el@0.27.3", - "@esbuild/linux-ppc64@0.27.3", - "@esbuild/linux-riscv64@0.27.3", - "@esbuild/linux-s390x@0.27.3", - "@esbuild/linux-x64@0.27.3", - "@esbuild/netbsd-arm64@0.27.3", - "@esbuild/netbsd-x64@0.27.3", - "@esbuild/openbsd-arm64@0.27.3", - "@esbuild/openbsd-x64@0.27.3", - "@esbuild/openharmony-arm64@0.27.3", - "@esbuild/sunos-x64@0.27.3", - "@esbuild/win32-arm64@0.27.3", - "@esbuild/win32-ia32@0.27.3", - "@esbuild/win32-x64@0.27.3" + "@esbuild/aix-ppc64@0.27.4", + "@esbuild/android-arm@0.27.4", + "@esbuild/android-arm64@0.27.4", + "@esbuild/android-x64@0.27.4", + "@esbuild/darwin-arm64@0.27.4", + "@esbuild/darwin-x64@0.27.4", + "@esbuild/freebsd-arm64@0.27.4", + "@esbuild/freebsd-x64@0.27.4", + "@esbuild/linux-arm@0.27.4", + "@esbuild/linux-arm64@0.27.4", + "@esbuild/linux-ia32@0.27.4", + "@esbuild/linux-loong64@0.27.4", + "@esbuild/linux-mips64el@0.27.4", + "@esbuild/linux-ppc64@0.27.4", + "@esbuild/linux-riscv64@0.27.4", + "@esbuild/linux-s390x@0.27.4", + "@esbuild/linux-x64@0.27.4", + "@esbuild/netbsd-arm64@0.27.4", + "@esbuild/netbsd-x64@0.27.4", + "@esbuild/openbsd-arm64@0.27.4", + "@esbuild/openbsd-x64@0.27.4", + "@esbuild/openharmony-arm64@0.27.4", + "@esbuild/sunos-x64@0.27.4", + "@esbuild/win32-arm64@0.27.4", + "@esbuild/win32-ia32@0.27.4", + "@esbuild/win32-x64@0.27.4" ], "scripts": true, "bin": true @@ -4070,8 +3416,11 @@ "eslint-visitor-keys@4.2.1": { "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==" }, - "eslint@9.39.2": { - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "eslint-visitor-keys@5.0.1": { + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==" + }, + "eslint@9.39.4": { + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dependencies": [ "@eslint-community/eslint-utils", "@eslint-community/regexpp", @@ -4085,7 +3434,7 @@ "@humanwhocodes/module-importer", "@humanwhocodes/retry", "@types/estree", - "ajv@6.12.6", + "ajv@6.14.0", "chalk@4.1.2", "cross-spawn", "debug@4.4.3", @@ -4104,7 +3453,7 @@ "is-glob", "json-stable-stringify-without-jsonify", "lodash.merge", - "minimatch@3.1.2", + "minimatch@3.1.5", "natural-compare", "optionator" ], @@ -4113,10 +3462,10 @@ "esm-env@1.2.2": { "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" }, - "espree@10.4.0_acorn@8.15.0": { + "espree@10.4.0": { "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dependencies": [ - "acorn@8.15.0", + "acorn@8.16.0", "acorn-jsx", "eslint-visitor-keys@4.2.1" ] @@ -4127,10 +3476,11 @@ "estraverse" ] }, - "esrap@2.2.3": { - "integrity": "sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==", + "esrap@2.2.4": { + "integrity": "sha512-suICpxAmZ9A8bzJjEl/+rLJiDKC0X4gYWUxT6URAWBLvlXmtbZd5ySMu/N2ZGEtMCAmflUDPSehrP9BQcsGcSg==", "dependencies": [ - "@jridgewell/sourcemap-codec" + "@jridgewell/sourcemap-codec", + "@typescript-eslint/types" ] }, "esrecurse@4.3.0": { @@ -4232,11 +3582,11 @@ "fast-json-stable-stringify@2.1.0": { "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "fast-json-stringify@6.3.0_ajv@8.17.1": { + "fast-json-stringify@6.3.0": { "integrity": "sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==", "dependencies": [ "@fastify/merge-json-schemas", - "ajv@8.17.1", + "ajv@8.18.0", "ajv-formats", "fast-uri", "json-schema-ref-resolver", @@ -4258,8 +3608,8 @@ "fastify-plugin@5.1.0": { "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==" }, - "fastify@5.7.4": { - "integrity": "sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA==", + "fastify@5.8.2": { + "integrity": "sha512-lZmt3navvZG915IE+f7/TIVamxIwmBd+OMB+O9WBzcpIwOo6F0LTh0sluoMFk5VkrKTvvrwIaoJPkir4Z+jtAg==", "dependencies": [ "@fastify/ajv-compiler", "@fastify/error", @@ -4274,7 +3624,7 @@ "process-warning@5.0.0", "rfdc", "secure-json-parse", - "semver@7.7.4", + "semver", "toad-cache" ] }, @@ -4325,8 +3675,8 @@ "uint8array-extras" ] }, - "file-type@21.3.0": { - "integrity": "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==", + "file-type@21.3.2": { + "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", "dependencies": [ "@tokenizer/inflate", "strtok3@10.3.4", @@ -4346,8 +3696,8 @@ "unpipe" ] }, - "find-my-way@9.4.0": { - "integrity": "sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==", + "find-my-way@9.5.0": { + "integrity": "sha512-VW2RfnmscZO5KgBY5XVyKREMW5nMZcxDy+buTOsL+zIPnBlbKm+00sgzoQzq1EVh4aALZLfKdwv6atBGcjvjrQ==", "dependencies": [ "fast-deep-equal", "fast-querystring", @@ -4368,8 +3718,8 @@ "keyv" ] }, - "flatted@3.3.3": { - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==" + "flatted@3.4.1": { + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==" }, "flattie@1.1.1": { "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==" @@ -4380,8 +3730,8 @@ "fontkitten" ] }, - "fontkitten@1.0.2": { - "integrity": "sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==", + "fontkitten@1.0.3": { + "integrity": "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==", "dependencies": [ "tiny-inflate" ] @@ -4412,14 +3762,11 @@ "generator-function@2.0.1": { "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==" }, - "gensync@1.0.0-beta.2": { - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, "get-caller-file@2.0.5": { "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "get-east-asian-width@1.4.0": { - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==" + "get-east-asian-width@1.5.0": { + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==" }, "get-intrinsic@1.3.0": { "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", @@ -4481,8 +3828,8 @@ "gopd@1.2.0": { "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, - "h3@1.15.5": { - "integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==", + "h3@1.15.6": { + "integrity": "sha512-oi15ESLW5LRthZ+qPCi5GNasY/gvynSKUQxgiovrY63bPAtG59wtM+LSrlcwvOHAXzGrXVLnI97brbkdPF9WoQ==", "dependencies": [ "cookie-es", "crossws", @@ -4623,37 +3970,18 @@ "highlight.js@10.7.3": { "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" }, - "hono@4.11.3": { - "integrity": "sha512-PmQi306+M/ct/m5s66Hrg+adPnkD5jiO6IjA7WhWw0gSBSo1EcRegwuI1deZ+wd5pzCGynCcn2DprnE4/yEV4w==" + "hono@4.12.8": { + "integrity": "sha512-VJCEvtrezO1IAR+kqEYnxUOoStaQPGrCmX3j4wDTNOcD1uRPFpGlwQUIW8niPuvHXaTUxeOUl5MMDGrl+tmO9A==" }, - "hookable@6.0.1": { - "integrity": "sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw==" + "hookable@6.1.0": { + "integrity": "sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==" }, "html-escaper@3.0.3": { "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==" }, - "html-to-text@9.0.5": { - "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==", - "dependencies": [ - "@selderee/plugin-htmlparser2", - "deepmerge", - "dom-serializer", - "htmlparser2", - "selderee" - ] - }, "html-void-elements@3.0.0": { "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==" }, - "htmlparser2@8.0.2": { - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dependencies": [ - "domelementtype", - "domhandler", - "domutils", - "entities@4.5.0" - ] - }, "http-assert@1.5.0": { "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", "dependencies": [ @@ -4684,7 +4012,7 @@ "toidentifier" ] }, - "icojs@0.19.5": { + "icojs@0.19.5_@jimp+custom@0.22.12": { "integrity": "sha512-4RnOvFpl7HNgUYLmmLKzhCk/DCNS81sXSC8ENp+mUonMHn3m9dsE+oQLnmoznjwr2bV9n1IapfSpdxopDzYBXA==", "dependencies": [ "@jimp/bmp", @@ -4744,24 +4072,24 @@ "@inquirer/core@8.2.4" ] }, - "inquirer@12.11.1_@types+node@22.19.10": { + "inquirer@12.11.1_@types+node@24.12.0": { "integrity": "sha512-9VF7mrY+3OmsAfjH3yKz/pLbJ5z22E23hENKw3/LNSaA/sAt3v49bDRY+Ygct1xwuKT+U+cBfTzjCPySna69Qw==", "dependencies": [ "@inquirer/ansi", - "@inquirer/core@10.3.2_@types+node@22.19.10", + "@inquirer/core@10.3.2_@types+node@24.12.0", "@inquirer/prompts", - "@inquirer/type@3.0.10_@types+node@22.19.10", - "@types/node@22.19.10", + "@inquirer/type@3.0.10_@types+node@24.12.0", + "@types/node@24.12.0", "mute-stream@2.0.0", "run-async", "rxjs" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ] }, - "ioredis@5.9.2": { - "integrity": "sha512-tAAg/72/VxOUW7RQSX1pIxJVucYKcjFjfvj60L57jrZpYCHC3XN0WCQ3sNYL4Gmvv+7GPvTAjc+KSdeNuE8oWQ==", + "ioredis@5.10.0": { + "integrity": "sha512-HVBe9OFuqs+Z6n64q09PQvP1/R4Bm+30PAyyD4wIEqssh3v9L21QjCVk4kRLucMBcDokJTcLjsGeVRlq/nH6DA==", "dependencies": [ "@ioredis/commands", "cluster-key-slot", @@ -4906,9 +4234,6 @@ "jpeg-js@0.4.4": { "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" }, - "js-tokens@4.0.0": { - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, "js-tokens@9.0.1": { "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==" }, @@ -4953,10 +4278,6 @@ "json-stable-stringify-without-jsonify@1.0.1": { "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, - "json5@2.2.3": { - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": true - }, "jsonld@9.0.0": { "integrity": "sha512-pjMIdkXfC1T2wrX9B9i2uXhGdyCmgec3qgMht+TDj+S0qX3bjWMQUfL7NeqEhuRTi8G5ESzmL9uGlST7nzSEWg==", "dependencies": [ @@ -4994,8 +4315,8 @@ "koa-compose" ] }, - "koa@2.16.3": { - "integrity": "sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g==", + "koa@2.16.4": { + "integrity": "sha512-3An0GCLDSR34tsCO4H8Tef8Pp2ngtaZDAZnsWJYelqXUK5wyiHvGItgK/xcSkmHLSTn1Jcho1mRQs2ehRzvKKw==", "dependencies": [ "accepts", "cache-content-type", @@ -5022,11 +4343,8 @@ "vary" ] }, - "ky@1.14.2": { - "integrity": "sha512-q3RBbsO5A5zrPhB6CaCS8ZUv+NWCXv6JJT4Em0i264G9W0fdPB8YRfnnEi7Dm7X7omAkBIPojzYJ2D1oHTHqug==" - }, - "leac@0.6.0": { - "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==" + "ky@1.14.3": { + "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==" }, "levn@0.4.1": { "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", @@ -5064,8 +4382,8 @@ "lodash.merge@4.6.2": { "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "lodash@4.17.21": { - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "lodash@4.17.23": { + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==" }, "log-symbols@6.0.0": { "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", @@ -5083,19 +4401,13 @@ "loupe@3.2.1": { "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==" }, - "lru-cache@11.2.6": { - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==" - }, - "lru-cache@5.1.1": { - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": [ - "yallist@3.1.1" - ] + "lru-cache@11.2.7": { + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==" }, "lru-cache@6.0.0": { "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": [ - "yallist@4.0.0" + "yallist" ] }, "lru.min@1.1.4": { @@ -5258,8 +4570,8 @@ "mdn-data@2.0.28": { "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" }, - "mdn-data@2.12.2": { - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==" + "mdn-data@2.27.1": { + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==" }, "media-typer@0.3.0": { "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" @@ -5551,27 +4863,36 @@ "sharp@0.33.5", "stoppable", "undici@7.18.2", - "workerd", + "workerd@1.20250906.0", "ws", "youch", "zod@3.22.3" ], "bin": true }, - "minimatch@3.1.2": { - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "miniflare@4.20260312.1": { + "integrity": "sha512-YSWxec9ssisqkQgaCgcIQxZlB41E9hMiq1nxUgxXHRrE9NsfyC6ptSt8yfgBobsKIseAVKLTB/iEDpMumBv8oA==", "dependencies": [ - "brace-expansion@1.1.12" - ] + "@cspotcode/source-map-support", + "sharp@0.34.5", + "undici@7.18.2", + "workerd@1.20260312.1", + "ws", + "youch" + ], + "bin": true }, - "minimatch@9.0.5": { - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "minimatch@10.2.4": { + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dependencies": [ - "brace-expansion@2.0.2" + "brace-expansion@5.0.4" ] }, - "mri@1.2.0": { - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + "minimatch@3.1.5": { + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dependencies": [ + "brace-expansion@1.1.12" + ] }, "mrmime@2.0.1": { "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==" @@ -5599,10 +4920,10 @@ "mute-stream@2.0.0": { "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==" }, - "mysql2@3.18.2_@types+node@22.19.10": { - "integrity": "sha512-UfEShBFAZZEAKjySnTUuE7BgqkYT4mx+RjoJ5aqtmwSSvNcJ/QxQPXz/y3jSxNiVRedPfgccmuBtiPCSiEEytw==", + "mysql2@3.20.0_@types+node@24.12.0": { + "integrity": "sha512-eCLUs7BNbgA6nf/MZXsaBO1SfGs0LtLVrJD3WeWq+jPLDWkSufTD+aGMwykfUVPdZnblaUK1a8G/P63cl9FkKg==", "dependencies": [ - "@types/node@22.19.10", + "@types/node@24.12.0", "aws-ssl-profiles", "denque", "generate-function", @@ -5658,9 +4979,6 @@ "node-mock-http@1.0.4": { "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==" }, - "node-releases@2.0.27": { - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==" - }, "normalize-path@3.0.0": { "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, @@ -5719,8 +5037,8 @@ "regex-recursion@5.1.1" ] }, - "oniguruma-to-es@4.3.4": { - "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", + "oniguruma-to-es@4.3.5": { + "integrity": "sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==", "dependencies": [ "oniguruma-parser", "regex@6.1.0", @@ -5752,7 +5070,7 @@ "log-symbols", "stdin-discarder", "string-width@7.2.0", - "strip-ansi@7.1.2" + "strip-ansi@7.2.0" ] }, "p-limit@3.1.0": { @@ -5837,13 +5155,6 @@ "entities@6.0.1" ] }, - "parseley@0.12.1": { - "integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==", - "dependencies": [ - "leac", - "peberminta" - ] - }, "parseurl@1.3.3": { "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, @@ -5865,9 +5176,6 @@ "pathval@2.0.1": { "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==" }, - "peberminta@0.9.0": { - "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==" - }, "peek-readable@4.1.0": { "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" }, @@ -5946,8 +5254,8 @@ "pngjs@7.0.0": { "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==" }, - "postcss@8.5.6": { - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "postcss@8.5.8": { + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "dependencies": [ "nanoid", "picocolors", @@ -5957,17 +5265,11 @@ "postgres@3.4.8": { "integrity": "sha512-d+JFcLM17njZaOLkv6SCev7uoLaBtfK86vMUXhW1Z4glPWh4jozno9APvW/XKFJ3CCxVoC7OL38BqRydtu5nGg==" }, - "preact-render-to-string@6.6.5_preact@10.19.6": { - "integrity": "sha512-O6MHzYNIKYaiSX3bOw0gGZfEbOmlIDtDfWwN1JJdc/T3ihzRT6tGGSEWE088dWrEDGa1u7101q+6fzQnO9XCPA==", - "dependencies": [ - "preact@10.19.6" - ] - }, "preact@10.19.6": { "integrity": "sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==" }, - "preact@10.28.3": { - "integrity": "sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==" + "preact@10.29.0": { + "integrity": "sha512-wSAGyk2bYR1c7t3SZ3jHcM6xy0lcBcDel6lODcs9ME6Th++Dx2KU+6D3HD8wMMKGA8Wpw7OMd3/4RGzYRpzwRg==" }, "prelude-ls@1.2.1": { "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" @@ -6016,8 +5318,8 @@ "pvutils@1.1.5": { "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==" }, - "qs@6.14.1": { - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "qs@6.14.2": { + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dependencies": [ "side-channel" ] @@ -6264,7 +5566,7 @@ "rfdc@1.4.1": { "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" }, - "rolldown-plugin-dts@0.20.0_rolldown@1.0.0-beta.57": { + "rolldown-plugin-dts@0.20.0_rolldown@1.0.0-beta.57_typescript@5.9.3": { "integrity": "sha512-cLAY1kN2ilTYMfZcFlGWbXnu6Nb+8uwUBsi+Mjbh4uIx7IN8uMOmJ7RxrrRgPsO4H7eSz3E+JwGoL1gyugiyUA==", "dependencies": [ "@babel/generator", @@ -6275,7 +5577,11 @@ "dts-resolver", "get-tsconfig", "obug", - "rolldown@1.0.0-beta.57" + "rolldown@1.0.0-beta.57", + "typescript" + ], + "optionalPeers": [ + "typescript" ] }, "rolldown@1.0.0-beta.57": { @@ -6301,31 +5607,33 @@ ], "bin": true }, - "rolldown@1.0.0-rc.3": { - "integrity": "sha512-Po/YZECDOqVXjIXrtC5h++a5NLvKAQNrd9ggrIG3sbDfGO5BqTUsrI6l8zdniKRp3r5Tp/2JTrXqx4GIguFCMw==", + "rolldown@1.0.0-rc.9": { + "integrity": "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==", "dependencies": [ - "@oxc-project/types@0.112.0", - "@rolldown/pluginutils@1.0.0-rc.3" + "@oxc-project/types@0.115.0", + "@rolldown/pluginutils@1.0.0-rc.9" ], "optionalDependencies": [ - "@rolldown/binding-android-arm64@1.0.0-rc.3", - "@rolldown/binding-darwin-arm64@1.0.0-rc.3", - "@rolldown/binding-darwin-x64@1.0.0-rc.3", - "@rolldown/binding-freebsd-x64@1.0.0-rc.3", - "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.3", - "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.3", - "@rolldown/binding-linux-arm64-musl@1.0.0-rc.3", - "@rolldown/binding-linux-x64-gnu@1.0.0-rc.3", - "@rolldown/binding-linux-x64-musl@1.0.0-rc.3", - "@rolldown/binding-openharmony-arm64@1.0.0-rc.3", - "@rolldown/binding-wasm32-wasi@1.0.0-rc.3", - "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.3", - "@rolldown/binding-win32-x64-msvc@1.0.0-rc.3" + "@rolldown/binding-android-arm64@1.0.0-rc.9", + "@rolldown/binding-darwin-arm64@1.0.0-rc.9", + "@rolldown/binding-darwin-x64@1.0.0-rc.9", + "@rolldown/binding-freebsd-x64@1.0.0-rc.9", + "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9", + "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9", + "@rolldown/binding-linux-arm64-musl@1.0.0-rc.9", + "@rolldown/binding-linux-ppc64-gnu", + "@rolldown/binding-linux-s390x-gnu", + "@rolldown/binding-linux-x64-gnu@1.0.0-rc.9", + "@rolldown/binding-linux-x64-musl@1.0.0-rc.9", + "@rolldown/binding-openharmony-arm64@1.0.0-rc.9", + "@rolldown/binding-wasm32-wasi@1.0.0-rc.9", + "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9", + "@rolldown/binding-win32-x64-msvc@1.0.0-rc.9" ], "bin": true }, - "rollup@4.57.1": { - "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "rollup@4.59.0": { + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "dependencies": [ "@types/estree" ], @@ -6368,12 +5676,6 @@ "tslib" ] }, - "sade@1.8.1": { - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dependencies": [ - "mri" - ] - }, "safe-buffer@5.2.1": { "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, @@ -6385,11 +5687,12 @@ "is-regex" ] }, - "safe-regex2@5.0.0": { - "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "safe-regex2@5.1.0": { + "integrity": "sha512-pNHAuBW7TrcleFHsxBr5QMi/Iyp0ENjUKz7GCcX1UO7cMh+NmVK6HxQckNL1tJp1XAJVjG6B8OKIPqodqj9rtw==", "dependencies": [ "ret" - ] + ], + "bin": true }, "safe-stable-stringify@2.5.0": { "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==" @@ -6397,22 +5700,12 @@ "safer-buffer@2.1.2": { "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sax@1.4.4": { - "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==" + "sax@1.6.0": { + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==" }, "secure-json-parse@4.1.0": { "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==" }, - "selderee@0.11.0": { - "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==", - "dependencies": [ - "parseley" - ] - }, - "semver@6.3.1": { - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": true - }, "semver@7.7.4": { "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "bin": true @@ -6480,7 +5773,7 @@ "dependencies": [ "color", "detect-libc", - "semver@7.7.4" + "semver" ], "optionalDependencies": [ "@img/sharp-darwin-arm64@0.33.5", @@ -6510,7 +5803,7 @@ "dependencies": [ "@img/colour", "detect-libc", - "semver@7.7.4" + "semver" ], "optionalDependencies": [ "@img/sharp-darwin-arm64@0.34.5", @@ -6562,15 +5855,15 @@ "@types/hast" ] }, - "shiki@3.22.0": { - "integrity": "sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==", + "shiki@3.23.0": { + "integrity": "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==", "dependencies": [ - "@shikijs/core@3.22.0", - "@shikijs/engine-javascript@3.22.0", - "@shikijs/engine-oniguruma@3.22.0", - "@shikijs/langs@3.22.0", - "@shikijs/themes@3.22.0", - "@shikijs/types@3.22.0", + "@shikijs/core@3.23.0", + "@shikijs/engine-javascript@3.23.0", + "@shikijs/engine-oniguruma@3.23.0", + "@shikijs/langs@3.23.0", + "@shikijs/themes@3.23.0", + "@shikijs/types@3.23.0", "@shikijs/vscode-textmate", "@types/hast" ] @@ -6640,8 +5933,8 @@ "smol-toml@1.6.0": { "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==" }, - "sonic-boom@4.2.0": { - "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "sonic-boom@4.2.1": { + "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==", "dependencies": [ "atomic-sleep" ] @@ -6696,7 +5989,7 @@ "dependencies": [ "emoji-regex@10.6.0", "get-east-asian-width", - "strip-ansi@7.1.2" + "strip-ansi@7.2.0" ] }, "string_decoder@1.3.0": { @@ -6718,8 +6011,8 @@ "ansi-regex@5.0.1" ] }, - "strip-ansi@7.1.2": { - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "strip-ansi@7.2.0": { + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dependencies": [ "ansi-regex@6.2.2" ] @@ -6730,7 +6023,7 @@ "strip-literal@3.1.0": { "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", "dependencies": [ - "js-tokens@9.0.1" + "js-tokens" ] }, "strtok3@10.3.4": { @@ -6765,15 +6058,16 @@ "has-flag" ] }, - "svelte@5.50.1_acorn@8.15.0": { - "integrity": "sha512-/Jlom4ddkISyVHXpM2O5dXP9pYnaiFrVQzPbIL1/pEoOa77ZunCb6nDgUCTNCQ/X3t64z9ukrK6R+BbB3kPR3A==", + "svelte@5.53.12": { + "integrity": "sha512-4x/uk4rQe/d7RhfvS8wemTfNjQ0bJbKvamIzRBfTe2eHHjzBZ7PZicUQrC2ryj83xxEacfA1zHKd1ephD1tAxA==", "dependencies": [ "@jridgewell/remapping", "@jridgewell/sourcemap-codec", "@sveltejs/acorn-typescript", "@types/estree", - "acorn@8.15.0", - "aria-query", + "@types/trusted-types", + "acorn@8.16.0", + "aria-query@5.3.1", "axobject-query", "clsx", "devalue", @@ -6785,12 +6079,12 @@ "zimmerframe" ] }, - "svgo@4.0.0": { - "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", + "svgo@4.0.1": { + "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", "dependencies": [ "commander", "css-select", - "css-tree@3.1.0", + "css-tree@3.2.1", "css-what", "csso", "picocolors", @@ -6828,10 +6122,10 @@ "tinyexec@0.3.2": { "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" }, - "tinyexec@1.0.2": { - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==" + "tinyexec@1.0.4": { + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==" }, - "tinyglobby@0.2.15_picomatch@4.0.3": { + "tinyglobby@0.2.15": { "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dependencies": [ "fdir", @@ -6896,11 +6190,17 @@ "typescript" ] }, - "tsconfck@3.1.6": { + "tsconfck@3.1.6_typescript@5.9.3": { "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", + "dependencies": [ + "typescript" + ], + "optionalPeers": [ + "typescript" + ], "bin": true }, - "tsdown@0.18.4_rolldown@1.0.0-beta.57": { + "tsdown@0.18.4_typescript@5.9.3": { "integrity": "sha512-J/tRS6hsZTkvqmt4+xdELUCkQYDuUCXgBv0fw3ImV09WPGbEKfsPD65E+WUjSu3E7Z6tji9XZ1iWs8rbGqB/ZA==", "dependencies": [ "ansis", @@ -6913,13 +6213,17 @@ "picomatch@4.0.3", "rolldown@1.0.0-beta.57", "rolldown-plugin-dts", - "semver@7.7.4", - "tinyexec@1.0.2", + "semver", + "tinyexec@1.0.4", "tinyglobby", "tree-kill", + "typescript", "unconfig-core", "unrun" ], + "optionalPeers": [ + "typescript" + ], "bin": true }, "tslib@2.8.1": { @@ -6931,7 +6235,7 @@ "tsx@4.21.0": { "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dependencies": [ - "esbuild@0.27.3", + "esbuild@0.27.4", "get-tsconfig" ], "optionalDependencies": [ @@ -6983,8 +6287,8 @@ "ultrahtml@1.6.0": { "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==" }, - "unconfig-core@7.4.2": { - "integrity": "sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg==", + "unconfig-core@7.5.0": { + "integrity": "sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==", "dependencies": [ "@quansync/fs", "quansync" @@ -6999,8 +6303,8 @@ "undici-types@7.16.0": { "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==" }, - "undici@6.23.0": { - "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==" + "undici@6.24.1": { + "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==" }, "undici@7.18.2": { "integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==" @@ -7030,7 +6334,7 @@ "unifont@0.7.4": { "integrity": "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==", "dependencies": [ - "css-tree@3.1.0", + "css-tree@3.2.1", "ofetch", "ohash" ] @@ -7098,14 +6402,14 @@ "unpipe@1.0.0": { "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, - "unrun@0.2.27": { - "integrity": "sha512-Mmur1UJpIbfxasLOhPRvox/QS4xBiDii71hMP7smfRthGcwFL2OAmYRgduLANOAU4LUkvVamuP+02U+c90jlrw==", + "unrun@0.2.32": { + "integrity": "sha512-opd3z6791rf281JdByf0RdRQrpcc7WyzqittqIXodM/5meNWdTwrVxeyzbaCp4/Rgls/um14oUaif1gomO8YGg==", "dependencies": [ - "rolldown@1.0.0-rc.3" + "rolldown@1.0.0-rc.9" ], "bin": true }, - "unstorage@1.17.4_ioredis@5.9.2": { + "unstorage@1.17.4_ioredis@5.10.0": { "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", "dependencies": [ "anymatch", @@ -7113,7 +6417,7 @@ "destr", "h3", "ioredis", - "lru-cache@11.2.6", + "lru-cache@11.2.7", "node-fetch-native", "ofetch", "ufo" @@ -7122,15 +6426,6 @@ "ioredis" ] }, - "update-browserslist-db@1.2.3_browserslist@4.28.1": { - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dependencies": [ - "browserslist", - "escalade", - "picocolors" - ], - "bin": true - }, "uri-js@4.4.1": { "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": [ @@ -7159,8 +6454,14 @@ "utils-merge@1.0.1": { "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, - "valibot@1.2.0": { - "integrity": "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==" + "valibot@1.3.0_typescript@5.9.3": { + "integrity": "sha512-SItIaOFnWYho/AcRU5gOtyfkTsuDTC3tRv+jy4/py8xERPnvHdM+ybD1iIqWTATVWG1nZetOfwZKq5upBjSqzw==", + "dependencies": [ + "typescript" + ], + "optionalPeers": [ + "typescript" + ] }, "varint@6.0.0": { "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" @@ -7189,21 +6490,21 @@ "vfile-message" ] }, - "vite-node@3.2.4_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2": { + "vite-node@3.2.4_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dependencies": [ "cac", "debug@4.4.3", "es-module-lexer", "pathe", - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" + "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" ], "bin": true }, - "vite@6.4.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3": { + "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dependencies": [ - "@types/node@22.19.10", + "@types/node@24.12.0", "esbuild@0.25.12", "fdir", "picomatch@4.0.3", @@ -7217,17 +6518,17 @@ "fsevents" ], "optionalPeers": [ - "@types/node@22.19.10", + "@types/node@24.12.0", "tsx", "yaml" ], "bin": true }, - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3": { + "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dependencies": [ - "@types/node@22.19.10", - "esbuild@0.27.3", + "@types/node@24.12.0", + "esbuild@0.27.4", "fdir", "picomatch@4.0.3", "postcss", @@ -7240,35 +6541,35 @@ "fsevents" ], "optionalPeers": [ - "@types/node@22.19.10", + "@types/node@24.12.0", "tsx", "yaml" ], "bin": true }, - "vitefu@1.1.1_vite@6.4.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "vitefu@1.1.2_vite@6.4.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==", "dependencies": [ - "vite@6.4.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" + "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" ], "optionalPeers": [ - "vite@6.4.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" + "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" ] }, - "vitefu@1.1.1_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "vitefu@1.1.2_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==", "dependencies": [ - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" + "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" ], "optionalPeers": [ - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" + "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" ] }, - "vitest@3.2.4_@types+node@22.19.10_vite@7.3.1__@types+node@22.19.10__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_tsx@4.21.0_yaml@2.8.2": { + "vitest@3.2.4_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dependencies": [ "@types/chai", - "@types/node@22.19.10", + "@types/node@24.12.0", "@vitest/expect", "@vitest/mocker", "@vitest/pretty-format", @@ -7288,12 +6589,12 @@ "tinyglobby", "tinypool", "tinyrainbow", - "vite@7.3.1_@types+node@22.19.10_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3", + "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", "vite-node", "why-is-node-running" ], "optionalPeers": [ - "@types/node@22.19.10" + "@types/node@24.12.0" ], "bin": true }, @@ -7346,16 +6647,28 @@ "workerd@1.20250906.0": { "integrity": "sha512-ryVyEaqXPPsr/AxccRmYZZmDAkfQVjhfRqrNTlEeN8aftBk6Ca1u7/VqmfOayjCXrA+O547TauebU+J3IpvFXw==", "optionalDependencies": [ - "@cloudflare/workerd-darwin-64", - "@cloudflare/workerd-darwin-arm64", - "@cloudflare/workerd-linux-64", - "@cloudflare/workerd-linux-arm64", - "@cloudflare/workerd-windows-64" + "@cloudflare/workerd-darwin-64@1.20250906.0", + "@cloudflare/workerd-darwin-arm64@1.20250906.0", + "@cloudflare/workerd-linux-64@1.20250906.0", + "@cloudflare/workerd-linux-arm64@1.20250906.0", + "@cloudflare/workerd-windows-64@1.20250906.0" ], "scripts": true, "bin": true }, - "wrangler@4.35.0_@cloudflare+workers-types@4.20260210.0_unenv@2.0.0-rc.21_workerd@1.20250906.0": { + "workerd@1.20260312.1": { + "integrity": "sha512-nNpPkw9jaqo79B+iBCOiksx+N62xC+ETIfyzofUEdY3cSOHJg6oNnVSHm7vHevzVblfV76c8Gr0cXHEapYMBEg==", + "optionalDependencies": [ + "@cloudflare/workerd-darwin-64@1.20260312.1", + "@cloudflare/workerd-darwin-arm64@1.20260312.1", + "@cloudflare/workerd-linux-64@1.20260312.1", + "@cloudflare/workerd-linux-arm64@1.20260312.1", + "@cloudflare/workerd-windows-64@1.20260312.1" + ], + "scripts": true, + "bin": true + }, + "wrangler@4.35.0_@cloudflare+workers-types@4.20260317.1": { "integrity": "sha512-HbyXtbrh4Fi3mU8ussY85tVdQ74qpVS1vctUgaPc+bPrXBTqfDLkZ6VRtHAVF/eBhz4SFmhJtCQpN1caY2Ak8A==", "dependencies": [ "@cloudflare/kv-asset-handler", @@ -7363,10 +6676,10 @@ "@cloudflare/workers-types", "blake3-wasm", "esbuild@0.25.4", - "miniflare", + "miniflare@4.20250906.0", "path-to-regexp@6.3.0", "unenv", - "workerd" + "workerd@1.20250906.0" ], "optionalDependencies": [ "fsevents" @@ -7397,7 +6710,7 @@ "dependencies": [ "ansi-styles@6.2.3", "string-width@7.2.0", - "strip-ansi@7.1.2" + "strip-ansi@7.2.0" ] }, "ws@8.18.0": { @@ -7422,9 +6735,6 @@ "y18n@5.0.8": { "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, - "yallist@3.1.1": { - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, "yallist@4.0.0": { "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, diff --git a/test/smoke/harness/backdoor.ts b/test/smoke/harness/backdoor.ts new file mode 100644 index 000000000..96ac63b89 --- /dev/null +++ b/test/smoke/harness/backdoor.ts @@ -0,0 +1,162 @@ +import type { Federation } from "@fedify/fedify/federation"; +import { Create, Follow, Note, Undo } from "@fedify/vocab"; +import { store } from "./store.ts"; + +function json(data: unknown, status = 200): Response { + return new Response(JSON.stringify(data), { + status, + headers: { "Content-Type": "application/json" }, + }); +} + +export async function handleBackdoor( + request: Request, + federation: Federation, +): Promise { + const url = new URL(request.url); + + if (url.pathname === "/_test/health") { + return new Response("OK"); + } + + if (url.pathname === "/_test/reset" && request.method === "POST") { + store.clear(); + return json({ ok: true }); + } + + if (url.pathname === "/_test/inbox") { + return json(store.all()); + } + + if (url.pathname === "/_test/inbox/latest") { + const item = store.latest(); + if (item == null) return json(null, 404); + return json(item); + } + + if (url.pathname === "/_test/create-note" && request.method === "POST") { + const body = await request.json(); + const { to, content } = body as { to: string; content: string }; + + const ctx = federation.createContext( + new URL(request.url), + undefined as void, + ); + + // Build the recipient manually — Mastodon's WebFinger requires HTTPS + // but we only have HTTP. Parse the handle (user@domain) to construct + // the actor URI and inbox URL directly. + const [user, domain] = to.split("@"); + const inboxUrl = new URL(`http://${domain}/users/${user}/inbox`); + // Mastodon generates https:// actor URIs; use that as the canonical id + const actorId = new URL(`https://${domain}/users/${user}`); + const recipient = { id: actorId, inboxId: inboxUrl }; + + const noteId = crypto.randomUUID(); + const note = new Note({ + id: new URL(`${ctx.canonicalOrigin}/notes/${noteId}`), + attribution: ctx.getActorUri("testuser"), + content, + to: new URL("https://www.w3.org/ns/activitystreams#Public"), + ccs: [actorId], + }); + + const activity = new Create({ + id: new URL(`${ctx.canonicalOrigin}/activities/${noteId}`), + actor: ctx.getActorUri("testuser"), + object: note, + to: new URL("https://www.w3.org/ns/activitystreams#Public"), + ccs: [actorId], + }); + + try { + await ctx.sendActivity( + { identifier: "testuser" }, + recipient, + activity, + { immediate: true }, + ); + } catch (e) { + return json({ error: `Failed to send: ${e}` }, 500); + } + + return json({ ok: true, noteId }); + } + + if (url.pathname === "/_test/follow" && request.method === "POST") { + const body = await request.json(); + const { target } = body as { target: string }; + + const ctx = federation.createContext( + new URL(request.url), + undefined as void, + ); + + const [user, domain] = target.split("@"); + const inboxUrl = new URL(`http://${domain}/users/${user}/inbox`); + const actorId = new URL(`https://${domain}/users/${user}`); + const recipient = { id: actorId, inboxId: inboxUrl }; + + const follow = new Follow({ + id: new URL( + `${ctx.canonicalOrigin}/activities/${crypto.randomUUID()}`, + ), + actor: ctx.getActorUri("testuser"), + object: actorId, + }); + + try { + await ctx.sendActivity( + { identifier: "testuser" }, + recipient, + follow, + { immediate: true }, + ); + } catch (e) { + return json({ error: `Failed to send: ${e}` }, 500); + } + + return json({ ok: true }); + } + + if (url.pathname === "/_test/unfollow" && request.method === "POST") { + const body = await request.json(); + const { target } = body as { target: string }; + + const ctx = federation.createContext( + new URL(request.url), + undefined as void, + ); + + const [user, domain] = target.split("@"); + const inboxUrl = new URL(`http://${domain}/users/${user}/inbox`); + const actorId = new URL(`https://${domain}/users/${user}`); + const recipient = { id: actorId, inboxId: inboxUrl }; + + const undo = new Undo({ + id: new URL( + `${ctx.canonicalOrigin}/activities/${crypto.randomUUID()}`, + ), + actor: ctx.getActorUri("testuser"), + object: new Follow({ + actor: ctx.getActorUri("testuser"), + object: actorId, + }), + }); + + try { + await ctx.sendActivity( + { identifier: "testuser" }, + recipient, + undo, + { immediate: true }, + ); + } catch (e) { + return json({ error: `Failed to send: ${e}` }, 500); + } + + return json({ ok: true }); + } + + return new Response("Not Found", { status: 404 }); +} diff --git a/test/smoke/harness/deno.json b/test/smoke/harness/deno.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/test/smoke/harness/deno.json @@ -0,0 +1 @@ +{} diff --git a/test/smoke/harness/federation.ts b/test/smoke/harness/federation.ts new file mode 100644 index 000000000..baac0f982 --- /dev/null +++ b/test/smoke/harness/federation.ts @@ -0,0 +1,98 @@ +import { createFederation, MemoryKvStore } from "@fedify/fedify/federation"; +import { generateCryptoKeyPair } from "@fedify/fedify/sig"; +import { Accept, Activity, Create, Follow, Person } from "@fedify/vocab"; +import { store } from "./store.ts"; + +const ORIGIN = Deno.env.get("HARNESS_ORIGIN") ?? + "http://fedify-harness:3001"; + +const rsaKeyPair = await generateCryptoKeyPair("RSASSA-PKCS1-v1_5"); + +const federation = createFederation({ + kv: new MemoryKvStore(), + origin: ORIGIN, + allowPrivateAddress: true, + skipSignatureVerification: true, +}); + +federation + .setActorDispatcher("/users/{identifier}", async (ctx, identifier) => { + if (identifier !== "testuser") return null; + const keys = await ctx.getActorKeyPairs(identifier); + return new Person({ + id: ctx.getActorUri(identifier), + preferredUsername: identifier, + name: "Fedify Smoke Test User", + inbox: ctx.getInboxUri(identifier), + outbox: ctx.getOutboxUri(identifier), + followers: ctx.getFollowersUri(identifier), + url: ctx.getActorUri(identifier), + publicKey: keys[0].cryptographicKey, + assertionMethods: keys.map((k) => k.multikey), + }); + }) + .setKeyPairsDispatcher((_ctx, identifier) => { + if (identifier !== "testuser") return []; + return [rsaKeyPair]; + }); + +federation + .setInboxListeners("/users/{identifier}/inbox", "/inbox") + .on(Follow, async (ctx, follow) => { + const followerUri = follow.actorId; + store.push({ + id: follow.id?.href ?? crypto.randomUUID(), + type: "Follow", + receivedAt: new Date().toISOString(), + }); + if (!ctx.recipient || !followerUri) return; + + // Build the recipient manually instead of calling getActor(), because + // Mastodon generates https:// actor URIs but only serves HTTP. + // Rewrite the scheme so sendActivity POSTs over plain HTTP. + const httpActorUri = followerUri.href.replace(/^https:\/\//, "http://"); + const recipient = { + id: followerUri, + inboxId: new URL(`${httpActorUri}/inbox`), + }; + + const accept = new Accept({ + actor: ctx.getActorUri(ctx.recipient), + object: follow, + }); + await ctx.sendActivity( + { identifier: ctx.recipient }, + recipient, + accept, + { immediate: true }, + ); + }) + .on(Create, (_ctx, create) => { + store.push({ + id: create.id?.href ?? crypto.randomUUID(), + type: "Create", + receivedAt: new Date().toISOString(), + }); + }) + .on(Activity, (_ctx, activity) => { + // Don't double-store Create or Follow activities (already handled above) + if (!(activity instanceof Create) && !(activity instanceof Follow)) { + store.push({ + id: activity.id?.href ?? crypto.randomUUID(), + type: activity.constructor.name, + receivedAt: new Date().toISOString(), + }); + } + }); + +federation.setOutboxDispatcher( + "/users/{identifier}/outbox", + (_ctx, _identifier, _cursor) => ({ items: [] }), +); + +federation.setFollowersDispatcher( + "/users/{identifier}/followers", + (_ctx, _identifier, _cursor) => ({ items: [] }), +); + +export { federation }; diff --git a/test/smoke/harness/main.ts b/test/smoke/harness/main.ts new file mode 100644 index 000000000..d7eb8c0d1 --- /dev/null +++ b/test/smoke/harness/main.ts @@ -0,0 +1,20 @@ +import { federation } from "./federation.ts"; +import { handleBackdoor } from "./backdoor.ts"; + +const PORT = parseInt(Deno.env.get("HARNESS_PORT") ?? "3001"); + +Deno.serve({ port: PORT, hostname: "0.0.0.0" }, async (request: Request) => { + const url = new URL(request.url); + + // Backdoor test-control routes + if (url.pathname.startsWith("/_test/")) { + return await handleBackdoor(request, federation); + } + + // Federation routes (actor, inbox, webfinger, etc.) + return await federation.fetch(request, { + contextData: undefined, + onNotFound: () => new Response("Not Found", { status: 404 }), + onNotAcceptable: () => new Response("Not Acceptable", { status: 406 }), + }); +}); diff --git a/test/smoke/harness/store.ts b/test/smoke/harness/store.ts new file mode 100644 index 000000000..19de3402f --- /dev/null +++ b/test/smoke/harness/store.ts @@ -0,0 +1,22 @@ +export interface ReceivedActivity { + id: string; + type: string; + receivedAt: string; +} + +const inbox: ReceivedActivity[] = []; + +export const store = { + push(a: ReceivedActivity): void { + inbox.push(a); + }, + latest(): ReceivedActivity | null { + return inbox.at(-1) ?? null; + }, + all(): ReceivedActivity[] { + return [...inbox]; + }, + clear(): void { + inbox.splice(0); + }, +}; diff --git a/test/smoke/mastodon/disable_force_ssl.rb b/test/smoke/mastodon/disable_force_ssl.rb new file mode 100644 index 000000000..0fbfaee42 --- /dev/null +++ b/test/smoke/mastodon/disable_force_ssl.rb @@ -0,0 +1,3 @@ +# Disable force_ssl for smoke tests so HTTP works without HTTPS proxy. +# Mastodon production mode enables force_ssl regardless of LOCAL_HTTPS. +Rails.application.config.force_ssl = false diff --git a/test/smoke/mastodon/docker-compose.yml b/test/smoke/mastodon/docker-compose.yml new file mode 100644 index 000000000..1fe3042b8 --- /dev/null +++ b/test/smoke/mastodon/docker-compose.yml @@ -0,0 +1,91 @@ +volumes: + harness-node-modules: + +networks: + smoke: + driver: bridge + +services: + db: + image: postgres:15-alpine + environment: + POSTGRES_DB: mastodon + POSTGRES_USER: mastodon + POSTGRES_PASSWORD: mastodon + networks: [smoke] + healthcheck: + test: ["CMD", "pg_isready", "-U", "mastodon"] + interval: 5s + retries: 10 + + redis: + image: redis:7-alpine + networks: [smoke] + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + retries: 10 + + # Fedify test harness — runs inside the Docker network so Mastodon's + # Resolv::DNS can resolve "fedify-harness" natively via Docker DNS. + fedify-harness: + image: denoland/deno:latest + working_dir: /workspace + volumes: + - ../../../:/workspace + - harness-node-modules:/workspace/node_modules + command: + - run + - --allow-net + - --allow-env + - --allow-read + - --allow-write + - --unstable-temporal + - test/smoke/harness/main.ts + environment: + HARNESS_ORIGIN: "http://fedify-harness:3001" + networks: [smoke] + ports: ["3001:3001"] + healthcheck: + test: + [ + "CMD", + "deno", + "eval", + "const r = await fetch('http://localhost:3001/_test/health'); if (!r.ok) Deno.exit(1);", + ] + interval: 5s + retries: 30 + + mastodon-web: + image: ghcr.io/mastodon/mastodon:v4.3.9 + command: bundle exec rails s -p 3000 -b 0.0.0.0 + env_file: mastodon.env + volumes: + - ./disable_force_ssl.rb:/opt/mastodon/config/initializers/zz_disable_force_ssl.rb:ro + networks: + smoke: + aliases: [mastodon] + ports: ["3000:3000"] + depends_on: + db: { condition: service_healthy } + redis: { condition: service_healthy } + healthcheck: + test: + [ + "CMD-SHELL", + "curl -sf http://localhost:3000/health | grep -q OK", + ] + interval: 10s + retries: 18 + + mastodon-sidekiq: + image: ghcr.io/mastodon/mastodon:v4.3.9 + command: bundle exec sidekiq -q ingress -q default -q push + env_file: mastodon.env + volumes: + - ./disable_force_ssl.rb:/opt/mastodon/config/initializers/zz_disable_force_ssl.rb:ro + networks: [smoke] + depends_on: + mastodon-web: { condition: service_healthy } + fedify-harness: { condition: service_healthy } diff --git a/test/smoke/mastodon/mastodon.env b/test/smoke/mastodon/mastodon.env new file mode 100644 index 000000000..10fdaeaaf --- /dev/null +++ b/test/smoke/mastodon/mastodon.env @@ -0,0 +1,24 @@ +# Mastodon configuration for smoke tests. +# SECRET_KEY_BASE, OTP_SECRET, VAPID_*, and ACTIVE_RECORD_ENCRYPTION_* +# are appended by CI (see .github/workflows/smoke.yml). + +LOCAL_DOMAIN=mastodon:3000 +ALTERNATE_DOMAINS=localhost:3000 +LOCAL_HTTPS=false +RAILS_ENV=production +DB_HOST=db +DB_PORT=5432 +DB_NAME=mastodon +DB_USER=mastodon +DB_PASS=mastodon +REDIS_HOST=redis +REDIS_PORT=6379 +SMTP_SERVER=localhost +SMTP_PORT=25 +SMTP_FROM_ADDRESS=noreply@localhost +SMTP_AUTH_METHOD=none +SMTP_OPENSSL_VERIFY_MODE=none +SMTP_DELIVERY_METHOD=none +ES_ENABLED=false +RAILS_LOG_TO_STDOUT=true +ALLOWED_PRIVATE_ADDRESSES=0.0.0.0/0 diff --git a/test/smoke/mastodon/provision.sh b/test/smoke/mastodon/provision.sh new file mode 100755 index 000000000..31cc0b7eb --- /dev/null +++ b/test/smoke/mastodon/provision.sh @@ -0,0 +1,127 @@ +#!/usr/bin/env bash +set -euo pipefail + +COMPOSE="docker compose -f test/smoke/mastodon/docker-compose.yml" + +echo "→ Creating test user..." +$COMPOSE exec -T mastodon-web bin/tootctl accounts create \ + testuser --email=test@localhost --confirmed \ + || true # may already exist on re-run + +echo "→ Approving and activating test user..." +$COMPOSE exec -T mastodon-web bin/rails runner - <<'RUBY' +user = Account.find_local('testuser').user +user.update!(approved: true, confirmed_at: Time.now.utc) +user.approve! if user.respond_to?(:approve!) +RUBY + +echo "→ Generating API token via Rails..." +# Use a unique marker so we can extract just the token from rails runner +# output, which may include deprecation warnings or other noise on stdout. +RAW=$($COMPOSE exec -T mastodon-web bin/rails runner - <<'RUBY' 2>&1 | tr -d '\r' +user = Account.find_local('testuser').user +app = Doorkeeper::Application.find_or_create_by!(name: 'smoke-test') do |a| + a.redirect_uri = 'urn:ietf:wg:oauth:2.0:oob' + a.scopes = 'read write follow' +end +token = Doorkeeper::AccessToken.find_or_create_for( + application: app, + resource_owner: user, + scopes: Doorkeeper::OAuth::Scopes.from_string('read write follow'), + expires_in: nil, + use_refresh_token: false +) +print "SMOKE_TOKEN=#{token.token}" +RUBY +) + +TOKEN=$(echo "$RAW" | grep -oP 'SMOKE_TOKEN=\K\S+' | tail -1) + +if [ -z "$TOKEN" ]; then + echo "✗ Failed to generate API token" + exit 1 +fi + +# Verify token works with a simple API call +echo "→ Verifying token..." +HTTP_CODE=$(curl -s -o /dev/null -w '%{http_code}' \ + -H "Authorization: Bearer $TOKEN" \ + http://localhost:3000/api/v1/accounts/verify_credentials) +echo " verify_credentials → HTTP $HTTP_CODE" +if [ "$HTTP_CODE" != "200" ]; then + echo "✗ Token verification failed (HTTP $HTTP_CODE)" + exit 1 +fi + +echo "→ Pre-registering Fedify remote account in Mastodon..." +# Mastodon's WebFinger resolution hardcodes HTTPS, but our harness is HTTP. +# Insert the remote account directly into Mastodon's database with values +# matching the harness actor dispatcher configuration. +HARNESS_ORIGIN="http://fedify-harness:3001" +$COMPOSE exec -T mastodon-web bin/rails runner - < test/smoke/.env.test <( + label: string, + fn: () => Promise, +): Promise { + const deadline = Date.now() + POLL_TIMEOUT_MS; + while (Date.now() < deadline) { + const result = await fn(); + if (result !== null) return result; + await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS)); + } + throw new Error(`Timed out waiting for: ${label}`); +} + +async function serverGet(path: string): Promise { + const res = await fetch(`${SERVER_URL}${path}`, { + headers: { Authorization: `Bearer ${SERVER_TOKEN}` }, + }); + if (!res.ok) { + const body = await res.text(); + throw new Error(`Server GET ${path} → ${res.status}: ${body}`); + } + return res.json(); +} + +async function serverPost( + path: string, + body?: Record, +): Promise { + const res = await fetch(`${SERVER_URL}${path}`, { + method: "POST", + headers: { + Authorization: `Bearer ${SERVER_TOKEN}`, + "Content-Type": body ? "application/json" : "text/plain", + }, + body: body ? JSON.stringify(body) : undefined, + }); + if (!res.ok) { + const text = await res.text(); + throw new Error(`Server POST ${path} → ${res.status}: ${text}`); + } + return res.json(); +} + +async function harnessPost( + path: string, + body?: Record, +): Promise { + const res = await fetch(`${HARNESS_URL}${path}`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: body ? JSON.stringify(body) : undefined, + }); + if (!res.ok) { + const text = await res.text(); + throw new Error(`Harness POST ${path} → ${res.status}: ${text}`); + } + return res.json(); +} + +// --------------------------------------------------------------------------- +// Shared types +// --------------------------------------------------------------------------- + +type RemoteAccount = { id: string; acct: string }; +type Relationship = { + id: string; + following: boolean; + followed_by: boolean; +}; + +// Resolved once by the first follow scenario and reused by later scenarios. +let fedifyAccountId: string | undefined; + +async function lookupFedifyAccount(): Promise { + if (fedifyAccountId) return fedifyAccountId; + + const handle = `testuser@fedify-harness:3001`; + + const searchResult = await poll("Fedify user resolvable", async () => { + const results = await serverGet( + `/api/v1/accounts/search?q=${ + encodeURIComponent(`@${handle}`) + }&resolve=false&limit=5`, + ) as RemoteAccount[]; + const match = results?.find((a) => + a.acct === handle || a.acct === `@${handle}` + ); + return match ?? null; + }); + + fedifyAccountId = searchResult.id; + return fedifyAccountId; +} + +async function assertNotFollowing( + accountId: string, + direction: "following" | "followed_by", +): Promise { + const rels = await serverGet( + `/api/v1/accounts/relationships?id[]=${accountId}`, + ) as Relationship[]; + const rel = rels.find((r) => r.id === accountId); + if (rel && rel[direction]) { + throw new Error( + `Expected ${direction} to be false, but it was true (account ${accountId})`, + ); + } +} + +async function ensureNotFollowing( + accountId: string, + direction: "following" | "followed_by", +): Promise { + const rels = await serverGet( + `/api/v1/accounts/relationships?id[]=${accountId}`, + ) as Relationship[]; + const rel = rels.find((r) => r.id === accountId); + if (rel?.[direction]) { + if (direction === "following") { + await serverPost(`/api/v1/accounts/${accountId}/unfollow`); + } else { + // Ask the harness to send Undo Follow to clear followed_by + await harnessPost("/_test/unfollow", { + target: `testuser@${SERVER_INTERNAL_HOST}`, + }); + } + // Wait for the relationship to actually clear + await poll(`${direction} cleared`, async () => { + const updated = await serverGet( + `/api/v1/accounts/relationships?id[]=${accountId}`, + ) as Relationship[]; + const r = updated.find((r) => r.id === accountId); + return r && !r[direction] ? r : null; + }); + } +} + +// --------------------------------------------------------------------------- +// Scenario: Mastodon → Fedify (Follow) +// --------------------------------------------------------------------------- + +async function testFollowMastodonToFedify(): Promise { + await harnessPost("/_test/reset"); + const accountId = await lookupFedifyAccount(); + await ensureNotFollowing(accountId, "following"); + await assertNotFollowing(accountId, "following"); + await serverPost(`/api/v1/accounts/${accountId}/follow`); + + await poll("Follow in harness inbox", async () => { + const res = await fetch(`${HARNESS_URL}/_test/inbox`); + const items = await res.json() as { type: string; id: string }[]; + return items.find((a) => a.type === "Follow") ?? null; + }); + + await poll("follow accepted", async () => { + const rels = await serverGet( + `/api/v1/accounts/relationships?id[]=${accountId}`, + ) as Relationship[]; + const rel = rels.find((r) => r.id === accountId); + return rel?.following ? rel : null; + }); +} + +// --------------------------------------------------------------------------- +// Scenario: Fedify → Mastodon (Follow) +// --------------------------------------------------------------------------- + +async function testFollowFedifyToMastodon(): Promise { + await harnessPost("/_test/reset"); + const accountId = await lookupFedifyAccount(); + await ensureNotFollowing(accountId, "followed_by"); + await assertNotFollowing(accountId, "followed_by"); + + await harnessPost("/_test/follow", { + target: `testuser@${SERVER_INTERNAL_HOST}`, + }); + + await poll("followed_by on Mastodon", async () => { + const rels = await serverGet( + `/api/v1/accounts/relationships?id[]=${accountId}`, + ) as Relationship[]; + const rel = rels.find((r) => r.id === accountId); + return rel?.followed_by ? rel : null; + }); + + await poll("Accept in harness inbox", async () => { + const res = await fetch(`${HARNESS_URL}/_test/inbox`); + const items = await res.json() as { type: string; id: string }[]; + return items.find((a) => a.type === "Accept") ?? null; + }); +} + +// --------------------------------------------------------------------------- +// Scenario: Fedify → Mastodon (Create Note) +// --------------------------------------------------------------------------- + +async function testCreateNote(): Promise { + await harnessPost("/_test/reset"); + + const content = `Smoke test ${Date.now()}`; + await harnessPost("/_test/create-note", { + to: `testuser@${SERVER_INTERNAL_HOST}`, + content, + }); + + type Status = { id: string; content: string }; + + await poll("note on Mastodon timeline", async () => { + const statuses = await serverGet( + "/api/v1/timelines/home?limit=20", + ) as Status[]; + return statuses.find((s) => s.content.includes(content)) ?? null; + }); +} + +// --------------------------------------------------------------------------- +// Scenario: Mastodon → Fedify (Reply) +// --------------------------------------------------------------------------- + +async function testReply(): Promise { + await harnessPost("/_test/reset"); + + const handle = `@testuser@fedify-harness:3001`; + const replyContent = `Reply smoke test ${Date.now()} ${handle}`; + + await serverPost("/api/v1/statuses", { + status: replyContent, + }); + + await poll("Create in harness inbox", async () => { + const res = await fetch(`${HARNESS_URL}/_test/inbox`); + const items = await res.json() as { type: string; id: string }[]; + return items.find((a) => a.type === "Create") ?? null; + }); +} + +// --------------------------------------------------------------------------- +// Scenario: Mastodon → Fedify (Unfollow) +// --------------------------------------------------------------------------- + +async function testUnfollowMastodonFromFedify(): Promise { + await harnessPost("/_test/reset"); + + const accountId = await lookupFedifyAccount(); + await serverPost(`/api/v1/accounts/${accountId}/unfollow`); + + await poll("Undo in harness inbox", async () => { + const res = await fetch(`${HARNESS_URL}/_test/inbox`); + const items = await res.json() as { type: string; id: string }[]; + return items.find((a) => a.type === "Undo") ?? null; + }); + + await poll("unfollow confirmed", async () => { + const rels = await serverGet( + `/api/v1/accounts/relationships?id[]=${accountId}`, + ) as Relationship[]; + const rel = rels.find((r) => r.id === accountId); + return rel && !rel.following ? rel : null; + }); +} + +// --------------------------------------------------------------------------- +// Scenario: Fedify → Mastodon (Unfollow) +// --------------------------------------------------------------------------- + +async function testUnfollowFedifyFromMastodon(): Promise { + await harnessPost("/_test/reset"); + + const accountId = await lookupFedifyAccount(); + + await harnessPost("/_test/unfollow", { + target: `testuser@${SERVER_INTERNAL_HOST}`, + }); + + await poll("unfollow confirmed on Mastodon", async () => { + const rels = await serverGet( + `/api/v1/accounts/relationships?id[]=${accountId}`, + ) as Relationship[]; + const rel = rels.find((r) => r.id === accountId); + return rel && !rel.followed_by ? rel : null; + }); +} + +// --------------------------------------------------------------------------- +// Entry point +// --------------------------------------------------------------------------- + +try { + const scenarios: [string, () => Promise][] = [ + ["Mastodon → Fedify (Follow)", testFollowMastodonToFedify], + ["Fedify → Mastodon (Follow)", testFollowFedifyToMastodon], + ["Fedify → Mastodon (Create Note)", testCreateNote], + ["Mastodon → Fedify (Reply)", testReply], + ["Mastodon → Fedify (Unfollow)", testUnfollowMastodonFromFedify], + ["Fedify → Mastodon (Unfollow)", testUnfollowFedifyFromMastodon], + ]; + + let failed = false; + for (const [name, fn] of scenarios) { + try { + await fn(); + console.log(`✓ ${name}`); + } catch (err) { + console.error(`✗ ${name}:`, err); + failed = true; + } + } + + Deno.exit(failed ? 1 : 0); +} catch (err) { + console.error("\n✗ Unexpected error:", err); + Deno.exit(1); +} From 1931be9deaaae39f5715038e1640bb86397067ac Mon Sep 17 00:00:00 2001 From: Jiwon Kwon Date: Wed, 4 Mar 2026 18:27:01 +0900 Subject: [PATCH 2/7] Harden smoke test orchestrator and provisioning - Use shared setup-mise action instead of inlining jdx/mise-action - Validate required env vars at startup with clear error messages - Derive harness host from HARNESS_ORIGIN instead of hardcoding - Pass HARNESS_ORIGIN as env var in provision.sh to avoid shell expansion in Ruby heredoc Co-Authored-By: Claude Opus 4.6 --- .github/workflows/smoke-mastodon.yml | 6 +----- test/smoke/mastodon/provision.sh | 16 +++++++++------- test/smoke/orchestrator.ts | 21 +++++++++++++++------ 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/.github/workflows/smoke-mastodon.yml b/.github/workflows/smoke-mastodon.yml index 79dcf3db7..3a9286816 100644 --- a/.github/workflows/smoke-mastodon.yml +++ b/.github/workflows/smoke-mastodon.yml @@ -26,11 +26,7 @@ jobs: steps: - uses: actions/checkout@v4 - # Only need mise for Deno (orchestrator); skip full workspace build - - uses: jdx/mise-action@v2 - with: - version: 2025.12.12 - install: true + - uses: ./.github/actions/setup-mise - name: Generate Mastodon secrets run: | diff --git a/test/smoke/mastodon/provision.sh b/test/smoke/mastodon/provision.sh index 31cc0b7eb..112576bbc 100755 --- a/test/smoke/mastodon/provision.sh +++ b/test/smoke/mastodon/provision.sh @@ -58,19 +58,21 @@ echo "→ Pre-registering Fedify remote account in Mastodon..." # Insert the remote account directly into Mastodon's database with values # matching the harness actor dispatcher configuration. HARNESS_ORIGIN="http://fedify-harness:3001" -$COMPOSE exec -T mastodon-web bin/rails runner - < { if (fedifyAccountId) return fedifyAccountId; - const handle = `testuser@fedify-harness:3001`; + const handle = `testuser@${HARNESS_HOST}`; const searchResult = await poll("Fedify user resolvable", async () => { const results = await serverGet( @@ -244,7 +253,7 @@ async function testCreateNote(): Promise { async function testReply(): Promise { await harnessPost("/_test/reset"); - const handle = `@testuser@fedify-harness:3001`; + const handle = `@testuser@${HARNESS_HOST}`; const replyContent = `Reply smoke test ${Date.now()} ${handle}`; await serverPost("/api/v1/statuses", { From 3600fea3cc09c4de0704933e5cf52bbf7a376c6e Mon Sep 17 00:00:00 2001 From: Jiwon Kwon Date: Thu, 5 Mar 2026 15:45:28 +0900 Subject: [PATCH 3/7] Address review feedback on smoke test suite - Extract parseRecipient helper in backdoor.ts to reduce duplication - Extract pollHarnessInbox helper in orchestrator.ts to reduce duplication and centralize inbox polling - Make poll() catch transient errors and retry instead of aborting, include last error message on timeout - Fix workflow name reference in mastodon.env comment - Pin Deno Docker image to 2.7.1 to match mise.toml Co-Authored-By: Claude Opus 4.6 --- test/smoke/harness/backdoor.ts | 32 ++++++++--------- test/smoke/mastodon/docker-compose.yml | 2 +- test/smoke/mastodon/mastodon.env | 2 +- test/smoke/orchestrator.ts | 48 ++++++++++++++------------ 4 files changed, 43 insertions(+), 41 deletions(-) diff --git a/test/smoke/harness/backdoor.ts b/test/smoke/harness/backdoor.ts index 96ac63b89..42b576877 100644 --- a/test/smoke/harness/backdoor.ts +++ b/test/smoke/harness/backdoor.ts @@ -9,6 +9,19 @@ function json(data: unknown, status = 200): Response { }); } +// Build recipient manually — Mastodon's WebFinger requires HTTPS but our +// harness only has HTTP. Parse the handle (user@domain) to construct the +// actor URI and inbox URL directly. +function parseRecipient( + handle: string, +): { id: URL; inboxId: URL; actorId: URL } { + const [user, domain] = handle.split("@"); + const inboxId = new URL(`http://${domain}/users/${user}/inbox`); + // Mastodon generates https:// actor URIs; use that as the canonical id + const actorId = new URL(`https://${domain}/users/${user}`); + return { id: actorId, inboxId, actorId }; +} + export async function handleBackdoor( request: Request, federation: Federation, @@ -43,14 +56,7 @@ export async function handleBackdoor( undefined as void, ); - // Build the recipient manually — Mastodon's WebFinger requires HTTPS - // but we only have HTTP. Parse the handle (user@domain) to construct - // the actor URI and inbox URL directly. - const [user, domain] = to.split("@"); - const inboxUrl = new URL(`http://${domain}/users/${user}/inbox`); - // Mastodon generates https:// actor URIs; use that as the canonical id - const actorId = new URL(`https://${domain}/users/${user}`); - const recipient = { id: actorId, inboxId: inboxUrl }; + const { actorId, ...recipient } = parseRecipient(to); const noteId = crypto.randomUUID(); const note = new Note({ @@ -92,10 +98,7 @@ export async function handleBackdoor( undefined as void, ); - const [user, domain] = target.split("@"); - const inboxUrl = new URL(`http://${domain}/users/${user}/inbox`); - const actorId = new URL(`https://${domain}/users/${user}`); - const recipient = { id: actorId, inboxId: inboxUrl }; + const { actorId, ...recipient } = parseRecipient(target); const follow = new Follow({ id: new URL( @@ -128,10 +131,7 @@ export async function handleBackdoor( undefined as void, ); - const [user, domain] = target.split("@"); - const inboxUrl = new URL(`http://${domain}/users/${user}/inbox`); - const actorId = new URL(`https://${domain}/users/${user}`); - const recipient = { id: actorId, inboxId: inboxUrl }; + const { actorId, ...recipient } = parseRecipient(target); const undo = new Undo({ id: new URL( diff --git a/test/smoke/mastodon/docker-compose.yml b/test/smoke/mastodon/docker-compose.yml index 1fe3042b8..b3ecd9cc3 100644 --- a/test/smoke/mastodon/docker-compose.yml +++ b/test/smoke/mastodon/docker-compose.yml @@ -29,7 +29,7 @@ services: # Fedify test harness — runs inside the Docker network so Mastodon's # Resolv::DNS can resolve "fedify-harness" natively via Docker DNS. fedify-harness: - image: denoland/deno:latest + image: denoland/deno:2.7.1 working_dir: /workspace volumes: - ../../../:/workspace diff --git a/test/smoke/mastodon/mastodon.env b/test/smoke/mastodon/mastodon.env index 10fdaeaaf..16fee3a2c 100644 --- a/test/smoke/mastodon/mastodon.env +++ b/test/smoke/mastodon/mastodon.env @@ -1,6 +1,6 @@ # Mastodon configuration for smoke tests. # SECRET_KEY_BASE, OTP_SECRET, VAPID_*, and ACTIVE_RECORD_ENCRYPTION_* -# are appended by CI (see .github/workflows/smoke.yml). +# are appended by CI (see .github/workflows/smoke-mastodon.yml). LOCAL_DOMAIN=mastodon:3000 ALTERNATE_DOMAINS=localhost:3000 diff --git a/test/smoke/orchestrator.ts b/test/smoke/orchestrator.ts index 68d07624e..446bf8df5 100644 --- a/test/smoke/orchestrator.ts +++ b/test/smoke/orchestrator.ts @@ -36,12 +36,30 @@ async function poll( fn: () => Promise, ): Promise { const deadline = Date.now() + POLL_TIMEOUT_MS; + let lastError: unknown = null; while (Date.now() < deadline) { - const result = await fn(); - if (result !== null) return result; + try { + const result = await fn(); + if (result !== null) return result; + } catch (err) { + lastError = err; + } await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS)); } - throw new Error(`Timed out waiting for: ${label}`); + const suffix = lastError instanceof Error + ? ` (last error: ${lastError.message})` + : ""; + throw new Error(`Timed out waiting for: ${label}${suffix}`); +} + +function pollHarnessInbox( + activityType: string, +): Promise<{ type: string; id: string }> { + return poll(`${activityType} in harness inbox`, async () => { + const res = await fetch(`${HARNESS_URL}/_test/inbox`); + const items = await res.json() as { type: string; id: string }[]; + return items.find((a) => a.type === activityType) ?? null; + }); } async function serverGet(path: string): Promise { @@ -179,11 +197,7 @@ async function testFollowMastodonToFedify(): Promise { await assertNotFollowing(accountId, "following"); await serverPost(`/api/v1/accounts/${accountId}/follow`); - await poll("Follow in harness inbox", async () => { - const res = await fetch(`${HARNESS_URL}/_test/inbox`); - const items = await res.json() as { type: string; id: string }[]; - return items.find((a) => a.type === "Follow") ?? null; - }); + await pollHarnessInbox("Follow"); await poll("follow accepted", async () => { const rels = await serverGet( @@ -216,11 +230,7 @@ async function testFollowFedifyToMastodon(): Promise { return rel?.followed_by ? rel : null; }); - await poll("Accept in harness inbox", async () => { - const res = await fetch(`${HARNESS_URL}/_test/inbox`); - const items = await res.json() as { type: string; id: string }[]; - return items.find((a) => a.type === "Accept") ?? null; - }); + await pollHarnessInbox("Accept"); } // --------------------------------------------------------------------------- @@ -260,11 +270,7 @@ async function testReply(): Promise { status: replyContent, }); - await poll("Create in harness inbox", async () => { - const res = await fetch(`${HARNESS_URL}/_test/inbox`); - const items = await res.json() as { type: string; id: string }[]; - return items.find((a) => a.type === "Create") ?? null; - }); + await pollHarnessInbox("Create"); } // --------------------------------------------------------------------------- @@ -277,11 +283,7 @@ async function testUnfollowMastodonFromFedify(): Promise { const accountId = await lookupFedifyAccount(); await serverPost(`/api/v1/accounts/${accountId}/unfollow`); - await poll("Undo in harness inbox", async () => { - const res = await fetch(`${HARNESS_URL}/_test/inbox`); - const items = await res.json() as { type: string; id: string }[]; - return items.find((a) => a.type === "Undo") ?? null; - }); + await pollHarnessInbox("Undo"); await poll("unfollow confirmed", async () => { const rels = await serverGet( From c2ea95f0d53d922f450fc80a031f8a9c1d57419a Mon Sep 17 00:00:00 2001 From: Jiwon Kwon Date: Thu, 5 Mar 2026 15:57:08 +0900 Subject: [PATCH 4/7] Update deno.lock Co-Authored-By: Claude Opus 4.6 --- deno.lock | 2003 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 1311 insertions(+), 692 deletions(-) diff --git a/deno.lock b/deno.lock index 440ef9db4..d2ef21b72 100644 --- a/deno.lock +++ b/deno.lock @@ -1,105 +1,174 @@ { "version": "5", "specifiers": { + "jsr:@alinea/suite@~0.6.3": "0.6.3", "jsr:@david/console-static-text@0.3": "0.3.0", "jsr:@david/dax@~0.43.2": "0.43.2", "jsr:@david/path@0.2": "0.2.0", "jsr:@david/which@~0.4.1": "0.4.1", - "jsr:@logtape/logtape@2": "2.0.4", + "jsr:@deno/esbuild-plugin@^1.2.0": "1.2.0", + "jsr:@deno/loader@~0.3.2": "0.3.9", + "jsr:@deno/loader@~0.3.3": "0.3.9", + "jsr:@fresh/build-id@1": "1.0.1", + "jsr:@fresh/core@2": "2.2.0", + "jsr:@fresh/core@^2.1.4": "2.2.0", + "jsr:@fresh/plugin-vite@^1.0.7": "1.0.7", + "jsr:@hongminhee/localtunnel@0.3": "0.3.0", + "jsr:@hono/hono@^4.7.1": "4.11.4", + "jsr:@hono/hono@^4.8.3": "4.11.4", + "jsr:@logtape/file@2": "2.0.0", + "jsr:@logtape/logtape@2": "2.0.0", + "jsr:@logtape/logtape@^1.0.4": "1.3.6", + "jsr:@optique/config@~0.10.6": "0.10.7", + "jsr:@optique/core@~0.10.6": "0.10.7", + "jsr:@optique/core@~0.10.7": "0.10.7", + "jsr:@optique/run@~0.10.6": "0.10.7", + "jsr:@std/assert@0.224": "0.224.0", + "jsr:@std/assert@0.226": "0.226.0", + "jsr:@std/assert@^1.0.13": "1.0.16", + "jsr:@std/async@0.224": "0.224.2", + "jsr:@std/async@^1.0.13": "1.0.16", + "jsr:@std/bytes@^1.0.5": "1.0.6", "jsr:@std/bytes@^1.0.6": "1.0.6", - "jsr:@std/fmt@1": "1.0.9", - "jsr:@std/fs@1": "1.0.23", + "jsr:@std/data-structures@0.224": "0.224.1", + "jsr:@std/dotenv@~0.225.5": "0.225.6", + "jsr:@std/encoding@^1.0.10": "1.0.10", + "jsr:@std/fmt@0.224": "0.224.0", + "jsr:@std/fmt@1": "1.0.8", + "jsr:@std/fmt@^1.0.7": "1.0.8", + "jsr:@std/fmt@^1.0.8": "1.0.8", + "jsr:@std/fs@0.224": "0.224.0", + "jsr:@std/fs@1": "1.0.21", + "jsr:@std/fs@^1.0.19": "1.0.21", + "jsr:@std/fs@^1.0.3": "1.0.21", + "jsr:@std/html@^1.0.5": "1.0.5", + "jsr:@std/http@^1.0.21": "1.0.23", + "jsr:@std/internal@0.224": "0.224.0", + "jsr:@std/internal@1": "1.0.12", "jsr:@std/internal@^1.0.12": "1.0.12", - "jsr:@std/io@0.225": "0.225.3", + "jsr:@std/io@0.225": "0.225.2", + "jsr:@std/json@^1.0.2": "1.0.2", + "jsr:@std/jsonc@^1.0.2": "1.0.2", + "jsr:@std/media-types@^1.1.0": "1.1.0", + "jsr:@std/path@0.224": "0.224.0", "jsr:@std/path@1": "1.1.4", + "jsr:@std/path@^1.0.4": "1.1.4", + "jsr:@std/path@^1.0.6": "1.1.4", + "jsr:@std/path@^1.1.0": "1.1.4", + "jsr:@std/path@^1.1.1": "1.1.4", + "jsr:@std/path@^1.1.2": "1.1.4", "jsr:@std/path@^1.1.4": "1.1.4", + "jsr:@std/semver@^1.0.6": "1.0.7", + "jsr:@std/testing@0.224": "0.224.0", + "jsr:@std/url@~0.225.1": "0.225.1", + "jsr:@std/uuid@^1.0.9": "1.1.0", + "jsr:@std/yaml@^1.0.8": "1.0.10", + "jsr:@valibot/valibot@^1.2.0": "1.2.0", "npm:@alinea/suite@~0.6.3": "0.6.3", - "npm:@astrojs/node@^9.5.4": "9.5.5_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.0__tsx@4.21.0__typescript@5.9.3__yaml@2.8.2_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2", + "npm:@astrojs/node@^9.5.4": "9.5.4_astro@5.18.0__rollup@4.55.1__ioredis@5.9.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__vite@6.4.1___@types+node@22.19.3___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__zod@3.25.76_rollup@4.55.1_ioredis@5.9.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2", + "npm:@babel/core@^7.28.0": "7.28.6", + "npm:@babel/preset-react@^7.27.1": "7.28.5_@babel+core@7.28.6", "npm:@cfworker/json-schema@^4.1.1": "4.1.1", - "npm:@cloudflare/vitest-pool-workers@~0.8.31": "0.8.71_@vitest+runner@3.2.4_@vitest+snapshot@3.2.4_vitest@3.2.4__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@cloudflare+workers-types@4.20260317.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", - "npm:@cloudflare/workers-types@^4.20250529.0": "4.20260317.1", - "npm:@cloudflare/workers-types@^4.20250906.0": "4.20260317.1", - "npm:@deno/astro-adapter@~0.3.2": "0.3.2_@opentelemetry+api@1.9.0_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.0__tsx@4.21.0__typescript@5.9.3__yaml@2.8.2_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2", - "npm:@fxts/core@^1.21.1": "1.26.0", + "npm:@cloudflare/vitest-pool-workers@~0.8.31": "0.8.71_@vitest+runner@3.2.4_@vitest+snapshot@3.2.4_vitest@3.2.4__@types+node@22.19.3__vite@7.3.1___@types+node@22.19.3___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__tsx@4.21.0__yaml@2.8.2_@types+node@22.19.3_@cloudflare+workers-types@4.20260109.0_tsx@4.21.0_yaml@2.8.2", + "npm:@cloudflare/workers-types@^4.20250529.0": "4.20260109.0", + "npm:@cloudflare/workers-types@^4.20250906.0": "4.20260109.0", + "npm:@deno/astro-adapter@~0.3.2": "0.3.2_@opentelemetry+api@1.9.0_astro@5.18.0__rollup@4.55.1__ioredis@5.9.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__vite@6.4.1___@types+node@22.19.3___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__zod@3.25.76_rollup@4.55.1_ioredis@5.9.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2", + "npm:@fxts/core@^1.21.1": "1.23.0", "npm:@hongminhee/localtunnel@0.3": "0.3.0", - "npm:@inquirer/prompts@^7.8.4": "7.10.1_@types+node@24.12.0", + "npm:@inquirer/prompts@^7.8.4": "7.10.1_@types+node@22.19.3", "npm:@jimp/core@^1.6.0": "1.6.0", "npm:@jimp/wasm-webp@^1.6.0": "1.6.0", "npm:@js-temporal/polyfill@~0.5.1": "0.5.1", "npm:@jsr/std__assert@0.226": "0.226.0", + "npm:@mjackson/node-fetch-server@0.7": "0.7.0", "npm:@multiformats/base-x@^4.0.1": "4.0.1", - "npm:@nestjs/common@^11.0.1": "11.1.17_reflect-metadata@0.2.2_rxjs@7.8.2", + "npm:@nestjs/common@^11.0.1": "11.1.11_reflect-metadata@0.2.2_rxjs@7.8.2", "npm:@opentelemetry/api@^1.9.0": "1.9.0", "npm:@opentelemetry/context-async-hooks@^2.5.0": "2.6.0_@opentelemetry+api@1.9.0", "npm:@opentelemetry/core@^2.5.0": "2.6.0_@opentelemetry+api@1.9.0", "npm:@opentelemetry/sdk-trace-base@^2.5.0": "2.6.0_@opentelemetry+api@1.9.0", "npm:@opentelemetry/semantic-conventions@^1.39.0": "1.40.0", "npm:@poppanator/http-constants@^1.1.1": "1.1.1", - "npm:@preact/signals@^2.3.2": "2.8.2_preact@10.29.0", - "npm:@sveltejs/kit@2": "2.55.0_@opentelemetry+api@1.9.0_@sveltejs+vite-plugin-svelte@7.0.0__svelte@5.53.12__vite@7.3.1___@types+node@24.12.0___tsx@4.21.0___yaml@2.8.2__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_svelte@5.53.12_typescript@5.9.3_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", + "npm:@preact/signals@^2.2.1": "2.5.1_preact@10.19.6", + "npm:@preact/signals@^2.3.2": "2.5.1_preact@10.19.6", + "npm:@prefresh/vite@^2.4.8": "2.4.11_preact@10.19.6_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2", + "npm:@standard-schema/spec@^1.1.0": "1.1.0", + "npm:@sveltejs/kit@2": "2.49.4_@opentelemetry+api@1.9.0_@sveltejs+vite-plugin-svelte@6.2.3__svelte@5.46.1___acorn@8.15.0__vite@7.3.1___@types+node@22.19.3___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2_svelte@5.46.1__acorn@8.15.0_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_acorn@8.15.0_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2", + "npm:@types/amqplib@*": "0.10.8", + "npm:@types/amqplib@~0.10.7": "0.10.8", "npm:@types/eslint@9": "9.6.1", "npm:@types/estree@^1.0.8": "1.0.8", - "npm:@types/node@^22.16.0": "22.19.15", - "npm:@types/node@^24.2.1": "24.12.0", - "npm:@typescript-eslint/parser@^8.49.0": "8.57.1_eslint@9.39.4_typescript@5.9.3", - "npm:@typescript-eslint/utils@8": "8.57.1_eslint@9.39.4_typescript@5.9.3", + "npm:@types/node@^22.16.0": "22.19.3", + "npm:@types/node@^24.2.1": "24.10.4", + "npm:@typescript-eslint/parser@^8.49.0": "8.52.0_eslint@9.39.2_typescript@5.9.3", + "npm:@typescript-eslint/utils@8": "8.52.0_eslint@9.39.2_typescript@5.9.3", "npm:amqplib@~0.10.9": "0.10.9", "npm:asn1js@^3.0.6": "3.0.7", "npm:asn1js@^3.0.7": "3.0.7", - "npm:astro@^5.17.3": "5.18.1_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2", + "npm:astro@^5.17.3": "5.18.0_rollup@4.55.1_ioredis@5.9.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_vite@6.4.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_zod@3.25.76", "npm:byte-encodings@^1.0.11": "1.0.11", "npm:chalk@^5.6.2": "5.6.2", "npm:cli-highlight@^2.1.11": "2.1.11", "npm:cli-table3@~0.6.5": "0.6.5", "npm:enquirer@^2.4.1": "2.4.1", - "npm:es-toolkit@^1.30.0": "1.45.1", - "npm:es-toolkit@^1.31.0": "1.45.1", - "npm:es-toolkit@^1.39.10": "1.45.1", - "npm:es-toolkit@^1.42.0": "1.45.1", - "npm:es-toolkit@^1.43.0": "1.45.1", - "npm:eslint@9": "9.39.4", + "npm:es-toolkit@^1.30.0": "1.43.0", + "npm:es-toolkit@^1.31.0": "1.43.0", + "npm:es-toolkit@^1.39.10": "1.43.0", + "npm:es-toolkit@^1.42.0": "1.43.0", + "npm:es-toolkit@^1.43.0": "1.43.0", + "npm:esbuild-wasm@~0.25.11": "0.25.12", + "npm:esbuild@0.25.7": "0.25.7", + "npm:esbuild@~0.25.5": "0.25.12", + "npm:eslint@9": "9.39.2", "npm:express@4": "4.22.1", "npm:fast-check@^3.22.0": "3.23.2", "npm:fastify-plugin@^5.0.1": "5.1.0", - "npm:fastify@^5.2.0": "5.8.2", + "npm:fastify@^5.2.0": "5.6.2", "npm:fetch-mock@^12.5.2": "12.6.0", "npm:fetch-mock@^12.5.4": "12.6.0", - "npm:h3@^1.15.0": "1.15.6", - "npm:hono@^4.8.3": "4.12.8", - "npm:icojs@~0.19.5": "0.19.5_@jimp+custom@0.22.12", + "npm:h3@^1.15.0": "1.15.5", + "npm:hono@^4.8.3": "4.11.3", + "npm:icojs@~0.19.5": "0.19.5", "npm:inquirer-toggle@^1.0.1": "1.0.1", - "npm:inquirer@^12.9.4": "12.11.1_@types+node@24.12.0", - "npm:ioredis@^5.8.2": "5.10.0", + "npm:inquirer@^12.9.4": "12.11.1_@types+node@22.19.3", + "npm:ioredis@^5.8.2": "5.9.1", "npm:jimp@^1.6.0": "1.6.0", "npm:json-canon@^1.0.1": "1.0.1", "npm:json-preserve-indent@^1.1.3": "1.1.3", "npm:jsonld@9": "9.0.0", - "npm:koa@2": "2.16.4", - "npm:miniflare@^4.20250523.0": "4.20260312.1", + "npm:koa@2": "2.16.3", + "npm:miniflare@^4.20250523.0": "4.20250906.0", "npm:multicodec@^3.2.1": "3.2.1", - "npm:mysql2@^3.18.0": "3.20.0_@types+node@24.12.0", + "npm:mysql2@^3.18.0": "3.18.2_@types+node@22.19.3", "npm:ora@^8.2.0": "8.2.0", "npm:pkijs@^3.2.5": "3.3.3", "npm:pkijs@^3.3.3": "3.3.3", "npm:postgres@^3.4.7": "3.4.8", + "npm:preact-render-to-string@^6.6.3": "6.6.5_preact@10.19.6", "npm:preact@10.19.6": "10.19.6", - "npm:preact@^10.27.2": "10.29.0", + "npm:preact@^10.27.0": "10.28.2", + "npm:preact@^10.27.2": "10.28.2", + "npm:rollup@^4.50.0": "4.55.1", "npm:shiki@^1.6.4": "1.29.2", "npm:smol-toml@^1.6.0": "1.6.0", "npm:srvx@~0.8.7": "0.8.16", "npm:structured-field-values@^2.0.4": "2.0.4", - "npm:tsdown@~0.18.4": "0.18.4_typescript@5.9.3", + "npm:tsdown@~0.18.4": "0.18.4_rolldown@1.0.0-beta.57", "npm:tsx@^4.19.4": "4.21.0", "npm:uri-template-router@1": "1.0.0", "npm:url-template@^3.1.1": "3.1.1", - "npm:valibot@^1.2.0": "1.3.0_typescript@5.9.3", - "npm:vite@^7.1.3": "7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", - "npm:vitest@3.2": "3.2.4_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", - "npm:wrangler@^4.17.0": "4.35.0_@cloudflare+workers-types@4.20260317.1", - "npm:wrangler@^4.21.1": "4.35.0_@cloudflare+workers-types@4.20260317.1", + "npm:valibot@^1.2.0": "1.2.0", + "npm:vite@^7.1.3": "7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3", + "npm:vite@^7.1.4": "7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3", + "npm:vitest@3.2": "3.2.4_@types+node@22.19.3_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_tsx@4.21.0_yaml@2.8.2", + "npm:wrangler@^4.17.0": "4.35.0_@cloudflare+workers-types@4.20260109.0_unenv@2.0.0-rc.21_workerd@1.20250906.0", + "npm:wrangler@^4.21.1": "4.35.0_@cloudflare+workers-types@4.20260109.0_unenv@2.0.0-rc.21_workerd@1.20250906.0", "npm:yaml@^2.8.1": "2.8.2" }, "jsr": { + "@alinea/suite@0.6.3": { + "integrity": "7d24a38729663b84d8a263d64ff7e3f8c72ac7cbb1db8ec5f414d0416b6b72e2" + }, "@david/console-static-text@0.3.0": { "integrity": "2dfb46ecee525755f7989f94ece30bba85bd8ffe3e8666abc1bf926e1ee0698d" }, @@ -109,8 +178,8 @@ "jsr:@david/console-static-text", "jsr:@david/path", "jsr:@david/which", - "jsr:@std/fmt", - "jsr:@std/fs", + "jsr:@std/fmt@1", + "jsr:@std/fs@1", "jsr:@std/io", "jsr:@std/path@1" ] @@ -118,43 +187,247 @@ "@david/path@0.2.0": { "integrity": "f2d7aa7f02ce5a55e27c09f9f1381794acb09d328f8d3c8a2e3ab3ffc294dccd", "dependencies": [ - "jsr:@std/fs", + "jsr:@std/fs@1", "jsr:@std/path@1" ] }, "@david/which@0.4.1": { "integrity": "896a682b111f92ab866cc70c5b4afab2f5899d2f9bde31ed00203b9c250f225e" }, - "@logtape/logtape@2.0.4": { - "integrity": "d4b6e85d82954f3d58014d85e4c0f93d6a836181ef4fbb4a852da7ed47979acb" + "@deno/esbuild-plugin@1.2.0": { + "integrity": "04ddd0fca9416d8a2866263928a53b9d5ed08dfca064d64504a0aaf9800c709e", + "dependencies": [ + "jsr:@deno/loader@~0.3.3", + "jsr:@std/path@^1.1.1", + "npm:esbuild@~0.25.5" + ] + }, + "@deno/loader@0.3.9": { + "integrity": "703d44656f7da0fa4a4a7f8a5105b5b41320821286508c2967b4252a00a2506f" + }, + "@fresh/build-id@1.0.1": { + "integrity": "12a2ec25fd52ae9ec68c26848a5696cd1c9b537f7c983c7e56e4fb1e7e816c20", + "dependencies": [ + "jsr:@std/encoding" + ] + }, + "@fresh/core@2.2.0": { + "integrity": "b3c00f82288a2c4c8ec85e4abb67b080b366ec5971860f2f2898eb281ea1a80f", + "dependencies": [ + "jsr:@deno/esbuild-plugin", + "jsr:@fresh/build-id", + "jsr:@std/encoding", + "jsr:@std/fmt@^1.0.8", + "jsr:@std/fs@^1.0.19", + "jsr:@std/html", + "jsr:@std/http", + "jsr:@std/jsonc", + "jsr:@std/media-types", + "jsr:@std/path@^1.1.2", + "jsr:@std/semver", + "jsr:@std/uuid", + "npm:@opentelemetry/api", + "npm:@preact/signals@^2.2.1", + "npm:esbuild-wasm", + "npm:esbuild@0.25.7", + "npm:preact-render-to-string", + "npm:preact@^10.27.0", + "npm:preact@^10.27.2" + ] + }, + "@fresh/plugin-vite@1.0.7": { + "integrity": "0dd7048f7c5d5cf7f62b29b4653a18cfa4dc81e074c4c0ab9e8166cce639cbeb", + "dependencies": [ + "jsr:@deno/loader@~0.3.2", + "jsr:@fresh/core@2", + "jsr:@fresh/core@^2.1.4", + "jsr:@std/dotenv", + "jsr:@std/fmt@^1.0.7", + "jsr:@std/path@1", + "npm:@babel/core", + "npm:@babel/preset-react", + "npm:@mjackson/node-fetch-server", + "npm:@prefresh/vite", + "npm:rollup", + "npm:vite@^7.1.4" + ] + }, + "@hongminhee/localtunnel@0.3.0": { + "integrity": "4ad858acd963b5fad45b188d54cf751ac8fbe0aae495e1d3ce607e3730270ff4", + "dependencies": [ + "jsr:@logtape/logtape@^1.0.4" + ] + }, + "@hono/hono@4.11.3": { + "integrity": "de7f245516a970c60c6f4bf5b0f1585efbee38ee4e01171994c2b9d69d035d70" + }, + "@hono/hono@4.11.4": { + "integrity": "aaf7b9d5a6b2422b0778c091b712ee1f018bc7e82138067d21eb27d7c2e1f5be" + }, + "@logtape/file@2.0.0": { + "integrity": "beb77f53a5792f4a3e22a8cbdb0f78d2c92c62700ccbff42eac7cf42cb3dac42", + "dependencies": [ + "jsr:@logtape/logtape@2", + "jsr:@std/path@^1.1.0" + ] + }, + "@logtape/logtape@1.3.5": { + "integrity": "a5cdb130daf1a9d384006b0f850cc4443bfc2e163dadc6fa667875e79770beb3" + }, + "@logtape/logtape@1.3.6": { + "integrity": "d9a038ed8f85981d7c1cd43d931402ef52bc036cfd14bc9be5bdfc7ec8136b6f" + }, + "@logtape/logtape@2.0.0": { + "integrity": "c4f2d7684a8239ad9b3fc2fd4ade6eec9f04cdb3a1741bae83f370b4b34253b2" + }, + "@optique/config@0.10.7": { + "integrity": "2b5faae72106c2158e07e2b9b3c34ef595708a004798914059657b91851a3680", + "dependencies": [ + "jsr:@optique/core@~0.10.7", + "npm:@standard-schema/spec" + ] + }, + "@optique/core@0.10.7": { + "integrity": "7669bbf1840c356526634d205c8803fa286147d2b112c67aa1057a9e60f1da3d" + }, + "@optique/run@0.10.7": { + "integrity": "1529119beac780f219608dd59367c523f9e6c9ab711b15b6c6cb76e91b36851c", + "dependencies": [ + "jsr:@optique/core@~0.10.7" + ] + }, + "@std/assert@0.224.0": { + "integrity": "8643233ec7aec38a940a8264a6e3eed9bfa44e7a71cc6b3c8874213ff401967f", + "dependencies": [ + "jsr:@std/fmt@0.224", + "jsr:@std/internal@0.224" + ] + }, + "@std/assert@0.226.0": { + "integrity": "0dfb5f7c7723c18cec118e080fec76ce15b4c31154b15ad2bd74822603ef75b3", + "dependencies": [ + "jsr:@std/internal@1" + ] + }, + "@std/assert@1.0.16": { + "integrity": "6a7272ed1eaa77defe76e5ff63ca705d9c495077e2d5fd0126d2b53fc5bd6532", + "dependencies": [ + "jsr:@std/internal@^1.0.12" + ] + }, + "@std/async@0.224.2": { + "integrity": "4d277d6e165df43d5e061ba0ef3edfddb8e8d558f5b920e3e6b1d2614b44d074" + }, + "@std/async@1.0.16": { + "integrity": "6c9e43035313b67b5de43e2b3ee3eadb39a488a0a0a3143097f112e025d3ee9a" }, "@std/bytes@1.0.6": { "integrity": "f6ac6adbd8ccd99314045f5703e23af0a68d7f7e58364b47d2c7f408aeb5820a" }, - "@std/fmt@1.0.9": { - "integrity": "2487343e8899fb2be5d0e3d35013e54477ada198854e52dd05ed0422eddcabe0" + "@std/data-structures@0.224.1": { + "integrity": "266365f90014e5c52bccf1eadd65f7782a2af2c84e4052ef8316698a3572cac3" + }, + "@std/dotenv@0.225.6": { + "integrity": "1d6f9db72f565bd26790fa034c26e45ecb260b5245417be76c2279e5734c421b" }, - "@std/fs@1.0.23": { - "integrity": "3ecbae4ce4fee03b180fa710caff36bb5adb66631c46a6460aaad49515565a37", + "@std/encoding@1.0.10": { + "integrity": "8783c6384a2d13abd5e9e87a7ae0520a30e9f56aeeaa3bdf910a3eaaf5c811a1" + }, + "@std/fmt@0.224.0": { + "integrity": "e20e9a2312a8b5393272c26191c0a68eda8d2c4b08b046bad1673148f1d69851" + }, + "@std/fmt@1.0.8": { + "integrity": "71e1fc498787e4434d213647a6e43e794af4fd393ef8f52062246e06f7e372b7" + }, + "@std/fs@0.224.0": { + "integrity": "52a5ec89731ac0ca8f971079339286f88c571a4d61686acf75833f03a89d8e69", + "dependencies": [ + "jsr:@std/path@0.224" + ] + }, + "@std/fs@1.0.21": { + "integrity": "d720fe1056d78d43065a4d6e0eeb2b19f34adb8a0bc7caf3a4dbf1d4178252cd", "dependencies": [ - "jsr:@std/internal", + "jsr:@std/internal@^1.0.12", "jsr:@std/path@^1.1.4" ] }, + "@std/html@1.0.5": { + "integrity": "4e2d693f474cae8c16a920fa5e15a3b72267b94b84667f11a50c6dd1cb18d35e" + }, + "@std/http@1.0.23": { + "integrity": "6634e9e034c589bf35101c1b5ee5bbf052a5987abca20f903e58bdba85c80dee", + "dependencies": [ + "jsr:@std/encoding" + ] + }, + "@std/internal@0.224.0": { + "integrity": "afc50644f9cdf4495eeb80523a8f6d27226b4b36c45c7c195dfccad4b8509291", + "dependencies": [ + "jsr:@std/fmt@0.224" + ] + }, "@std/internal@1.0.12": { "integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027" }, - "@std/io@0.225.3": { - "integrity": "27b07b591384d12d7b568f39e61dff966b8230559122df1e9fd11cc068f7ddd1", + "@std/io@0.225.2": { + "integrity": "3c740cd4ee4c082e6cfc86458f47e2ab7cb353dc6234d5e9b1f91a2de5f4d6c7", + "dependencies": [ + "jsr:@std/bytes@^1.0.5" + ] + }, + "@std/json@1.0.2": { + "integrity": "d9e5497801c15fb679f55a2c01c7794ad7a5dfda4dd1bebab5e409cb5e0d34d4" + }, + "@std/jsonc@1.0.2": { + "integrity": "909605dae3af22bd75b1cbda8d64a32cf1fd2cf6efa3f9e224aba6d22c0f44c7", "dependencies": [ - "jsr:@std/bytes" + "jsr:@std/json" ] }, + "@std/media-types@1.1.0": { + "integrity": "c9d093f0c05c3512932b330e3cc1fe1d627b301db33a4c2c2185c02471d6eaa4" + }, + "@std/path@0.224.0": { + "integrity": "55bca6361e5a6d158b9380e82d4981d82d338ec587de02951e2b7c3a24910ee6" + }, "@std/path@1.1.4": { "integrity": "1d2d43f39efb1b42f0b1882a25486647cb851481862dc7313390b2bb044314b5", "dependencies": [ - "jsr:@std/internal" + "jsr:@std/internal@^1.0.12" + ] + }, + "@std/semver@1.0.7": { + "integrity": "7d5f65391762dc4358abde80fc3354086ddb40101f140295e60f290c138887d0" + }, + "@std/testing@0.224.0": { + "integrity": "371b8a929aa7132240d5dd766a439be8f780ef5c176ab194e0bcab72370c761e", + "dependencies": [ + "jsr:@std/assert@0.224", + "jsr:@std/async@0.224", + "jsr:@std/data-structures", + "jsr:@std/fmt@0.224", + "jsr:@std/fs@0.224", + "jsr:@std/path@0.224" + ] + }, + "@std/url@0.225.1": { + "integrity": "7961f62f0a3cd2c7aa5b785822874132760b50bbf5ed0ccfded8668f203e7a95", + "dependencies": [ + "jsr:@std/path@^1.0.4" ] + }, + "@std/uuid@1.1.0": { + "integrity": "6268db2ccf172849c9be80763354ca305d49ef4af41fe995623d44fcc3f7457c", + "dependencies": [ + "jsr:@std/bytes@^1.0.6" + ] + }, + "@std/yaml@1.0.10": { + "integrity": "245706ea3511cc50c8c6d00339c23ea2ffa27bd2c7ea5445338f8feff31fa58e" + }, + "@valibot/valibot@1.2.0": { + "integrity": "61c118a4d027ed55912caf381c78f0a178f335f46ad0c4bcb136498dc1ef2285" } }, "npm": { @@ -164,11 +437,11 @@ "@astrojs/compiler@2.13.1": { "integrity": "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==" }, - "@astrojs/internal-helpers@0.7.6": { - "integrity": "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q==" + "@astrojs/internal-helpers@0.7.5": { + "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==" }, - "@astrojs/markdown-remark@6.3.11": { - "integrity": "sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ==", + "@astrojs/markdown-remark@6.3.10": { + "integrity": "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==", "dependencies": [ "@astrojs/internal-helpers", "@astrojs/prism", @@ -193,8 +466,8 @@ "vfile" ] }, - "@astrojs/node@9.5.5_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.0__tsx@4.21.0__typescript@5.9.3__yaml@2.8.2_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2": { - "integrity": "sha512-rtU2BGU5u3SfGURpANfMxVzCIoR86MkaN05ncza9rbtuMKJ/XnRJt/BbyVknDbOJ71hoci0SIsJwKcJR8vvi/A==", + "@astrojs/node@9.5.4_astro@5.18.0__rollup@4.55.1__ioredis@5.9.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__vite@6.4.1___@types+node@22.19.3___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__zod@3.25.76_rollup@4.55.1_ioredis@5.9.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-AbPSZsMGu8hXPR2XxV79RaKy8h6wijhtoqZGeUf4OXg2w1mxXlx4VnIc1D+QvtsgauSz7P5PLhmvf6w/J41GJg==", "dependencies": [ "@astrojs/internal-helpers", "astro", @@ -220,8 +493,39 @@ "which-pm-runs" ] }, - "@babel/generator@7.29.1": { - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "@babel/code-frame@7.28.6": { + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "dependencies": [ + "@babel/helper-validator-identifier", + "js-tokens@4.0.0", + "picocolors" + ] + }, + "@babel/compat-data@7.28.6": { + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==" + }, + "@babel/core@7.28.6": { + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", + "dependencies": [ + "@babel/code-frame", + "@babel/generator", + "@babel/helper-compilation-targets", + "@babel/helper-module-transforms", + "@babel/helpers", + "@babel/parser", + "@babel/template", + "@babel/traverse", + "@babel/types", + "@jridgewell/remapping", + "convert-source-map", + "debug@4.4.3", + "gensync", + "json5", + "semver@6.3.1" + ] + }, + "@babel/generator@7.28.6": { + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "dependencies": [ "@babel/parser", "@babel/types", @@ -230,19 +534,139 @@ "jsesc" ] }, + "@babel/helper-annotate-as-pure@7.27.3": { + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dependencies": [ + "@babel/types" + ] + }, + "@babel/helper-compilation-targets@7.28.6": { + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dependencies": [ + "@babel/compat-data", + "@babel/helper-validator-option", + "browserslist", + "lru-cache@5.1.1", + "semver@6.3.1" + ] + }, + "@babel/helper-globals@7.28.0": { + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==" + }, + "@babel/helper-module-imports@7.28.6": { + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dependencies": [ + "@babel/traverse", + "@babel/types" + ] + }, + "@babel/helper-module-transforms@7.28.6_@babel+core@7.28.6": { + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dependencies": [ + "@babel/core", + "@babel/helper-module-imports", + "@babel/helper-validator-identifier", + "@babel/traverse" + ] + }, + "@babel/helper-plugin-utils@7.28.6": { + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==" + }, "@babel/helper-string-parser@7.27.1": { "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" }, "@babel/helper-validator-identifier@7.28.5": { "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==" }, - "@babel/parser@7.29.2": { - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "@babel/helper-validator-option@7.27.1": { + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==" + }, + "@babel/helpers@7.28.6": { + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dependencies": [ + "@babel/template", + "@babel/types" + ] + }, + "@babel/parser@7.29.0": { + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dependencies": [ "@babel/types" ], "bin": true }, + "@babel/plugin-syntax-jsx@7.28.6_@babel+core@7.28.6": { + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "dependencies": [ + "@babel/core", + "@babel/helper-plugin-utils" + ] + }, + "@babel/plugin-transform-react-display-name@7.28.0_@babel+core@7.28.6": { + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "dependencies": [ + "@babel/core", + "@babel/helper-plugin-utils" + ] + }, + "@babel/plugin-transform-react-jsx-development@7.27.1_@babel+core@7.28.6": { + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "dependencies": [ + "@babel/core", + "@babel/plugin-transform-react-jsx" + ] + }, + "@babel/plugin-transform-react-jsx@7.28.6_@babel+core@7.28.6": { + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "dependencies": [ + "@babel/core", + "@babel/helper-annotate-as-pure", + "@babel/helper-module-imports", + "@babel/helper-plugin-utils", + "@babel/plugin-syntax-jsx", + "@babel/types" + ] + }, + "@babel/plugin-transform-react-pure-annotations@7.27.1_@babel+core@7.28.6": { + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "dependencies": [ + "@babel/core", + "@babel/helper-annotate-as-pure", + "@babel/helper-plugin-utils" + ] + }, + "@babel/preset-react@7.28.5_@babel+core@7.28.6": { + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "dependencies": [ + "@babel/core", + "@babel/helper-plugin-utils", + "@babel/helper-validator-option", + "@babel/plugin-transform-react-display-name", + "@babel/plugin-transform-react-jsx", + "@babel/plugin-transform-react-jsx-development", + "@babel/plugin-transform-react-pure-annotations" + ] + }, + "@babel/template@7.28.6": { + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dependencies": [ + "@babel/code-frame", + "@babel/parser", + "@babel/types" + ] + }, + "@babel/traverse@7.28.6": { + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", + "dependencies": [ + "@babel/code-frame", + "@babel/generator", + "@babel/helper-globals", + "@babel/parser", + "@babel/template", + "@babel/types", + "debug@4.4.3" + ] + }, "@babel/types@7.29.0": { "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dependencies": [ @@ -250,8 +674,8 @@ "@babel/helper-validator-identifier" ] }, - "@borewit/text-codec@0.2.2": { - "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==" + "@borewit/text-codec@0.2.1": { + "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==" }, "@canvas/image-data@1.1.0": { "integrity": "sha512-QdObRRjRbcXGmM1tmJ+MrHcaz1MftF2+W7YI+MsphnsCrmtyfS0d5qJbk0MeSbUeyM/jCb0hmnkXPsy026L7dA==" @@ -275,13 +699,13 @@ "integrity": "sha512-tsQQagBKjvpd9baa6nWVIv399ejiqcrUBBW6SZx6Z22+ymm+Odv5+cFimyuCsD/fC1fQTwfRmwXBNpzvHSeGCw==", "dependencies": [ "unenv", - "workerd@1.20250906.0" + "workerd" ], "optionalPeers": [ - "workerd@1.20250906.0" + "workerd" ] }, - "@cloudflare/vitest-pool-workers@0.8.71_@vitest+runner@3.2.4_@vitest+snapshot@3.2.4_vitest@3.2.4__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@cloudflare+workers-types@4.20260317.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { + "@cloudflare/vitest-pool-workers@0.8.71_@vitest+runner@3.2.4_@vitest+snapshot@3.2.4_vitest@3.2.4__@types+node@22.19.3__vite@7.3.1___@types+node@22.19.3___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__tsx@4.21.0__yaml@2.8.2_@types+node@22.19.3_@cloudflare+workers-types@4.20260109.0_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-keu2HCLQfRNwbmLBCDXJgCFpANTaYnQpE01fBOo4CNwiWHUT7SZGN7w64RKiSWRHyYppStXBuE5Ng7F42+flpg==", "dependencies": [ "@vitest/runner", @@ -289,8 +713,8 @@ "birpc@0.2.14", "cjs-module-lexer", "devalue", - "miniflare@4.20250906.0", - "semver", + "miniflare", + "semver@7.7.3", "vitest", "wrangler", "zod@3.25.76" @@ -301,53 +725,28 @@ "os": ["darwin"], "cpu": ["x64"] }, - "@cloudflare/workerd-darwin-64@1.20260312.1": { - "integrity": "sha512-HUAtDWaqUduS6yasV6+NgsK7qBpP1qGU49ow/Wb117IHjYp+PZPUGReDYocpB4GOMRoQlvdd4L487iFxzdARpw==", - "os": ["darwin"], - "cpu": ["x64"] - }, "@cloudflare/workerd-darwin-arm64@1.20250906.0": { "integrity": "sha512-X5apsZ1SFW4FYTM19ISHf8005FJMPfrcf4U5rO0tdj+TeJgQgXuZ57IG0WeW7SpLVeBo8hM6WC8CovZh41AfnA==", "os": ["darwin"], "cpu": ["arm64"] }, - "@cloudflare/workerd-darwin-arm64@1.20260312.1": { - "integrity": "sha512-DOn7TPTHSxJYfi4m4NYga/j32wOTqvJf/pY4Txz5SDKWIZHSTXFyGz2K4B+thoPWLop/KZxGoyTv7db0mk/qyw==", - "os": ["darwin"], - "cpu": ["arm64"] - }, "@cloudflare/workerd-linux-64@1.20250906.0": { "integrity": "sha512-rlKzWgsLnlQ5Nt9W69YBJKcmTmZbOGu0edUsenXPmc6wzULUxoQpi7ZE9k3TfTonJx4WoQsQlzCUamRYFsX+0Q==", "os": ["linux"], "cpu": ["x64"] }, - "@cloudflare/workerd-linux-64@1.20260312.1": { - "integrity": "sha512-TdkIh3WzPXYHuvz7phAtFEEvAxvFd30tHrm4gsgpw0R0F5b8PtoM3hfL2uY7EcBBWVYUBtkY2ahDYFfufnXw/g==", - "os": ["linux"], - "cpu": ["x64"] - }, "@cloudflare/workerd-linux-arm64@1.20250906.0": { "integrity": "sha512-DdedhiQ+SeLzpg7BpcLrIPEZ33QKioJQ1wvL4X7nuLzEB9rWzS37NNNahQzc1+44rhG4fyiHbXBPOeox4B9XVA==", "os": ["linux"], "cpu": ["arm64"] }, - "@cloudflare/workerd-linux-arm64@1.20260312.1": { - "integrity": "sha512-kNauZhL569Iy94t844OMwa1zP6zKFiL3xiJ4tGLS+TFTEfZ3pZsRH6lWWOtkXkjTyCmBEOog0HSEKjIV4oAffw==", - "os": ["linux"], - "cpu": ["arm64"] - }, "@cloudflare/workerd-windows-64@1.20250906.0": { "integrity": "sha512-Q8Qjfs8jGVILnZL6vUpQ90q/8MTCYaGR3d1LGxZMBqte8Vr7xF3KFHPEy7tFs0j0mMjnqCYzlofmPNY+9ZaDRg==", "os": ["win32"], "cpu": ["x64"] }, - "@cloudflare/workerd-windows-64@1.20260312.1": { - "integrity": "sha512-5dBrlSK+nMsZy5bYQpj8t9iiQNvCRlkm9GGvswJa9vVU/1BNO4BhJMlqOLWT24EmFyApZ+kaBiPJMV8847NDTg==", - "os": ["win32"], - "cpu": ["x64"] - }, - "@cloudflare/workers-types@4.20260317.1": { - "integrity": "sha512-+G4eVwyCpm8Au1ex8vQBCuA9wnwqetz4tPNRoB/53qvktERWBRMQnrtvC1k584yRE3emMThtuY0gWshvSJ++PQ==" + "@cloudflare/workers-types@4.20260109.0": { + "integrity": "sha512-90vx2lVm+fhQyE8FKqNhT8JBI8GuY0biAwxTzvzeRIdWVo2ArCpUfYMYq4kzaGTfA6NwCmXmBFSgnqfG6OFxLw==" }, "@colors/colors@1.5.0": { "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" @@ -358,7 +757,7 @@ "@jridgewell/trace-mapping@0.3.9" ] }, - "@deno/astro-adapter@0.3.2_@opentelemetry+api@1.9.0_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.0__tsx@4.21.0__typescript@5.9.3__yaml@2.8.2_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2": { + "@deno/astro-adapter@0.3.2_@opentelemetry+api@1.9.0_astro@5.18.0__rollup@4.55.1__ioredis@5.9.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__vite@6.4.1___@types+node@22.19.3___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__zod@3.25.76_rollup@4.55.1_ioredis@5.9.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-nN0kQGobRs2XE3R+O/DWYQanEWpteJNsIf5TD65787qFEw2CrqkFNcNolZFJiKUF/2Y/TKyOLRjMS3F6auECVg==", "dependencies": [ "@opentelemetry/api", @@ -368,28 +767,28 @@ "@opentelemetry/api" ] }, - "@digitalbazaar/http-client@4.3.0": { - "integrity": "sha512-6lMpxpt9BOmqHKGs9Xm6DP4LlZTBFer/ZjHvP3FcW3IaUWYIWC7dw5RFZnvw4fP57kAVcm1dp3IF+Y50qhBvAw==", + "@digitalbazaar/http-client@4.2.0": { + "integrity": "sha512-OGju/GYp0V72qlZ/Pd4jGEwqBwT/Za/tw+Z3AC7lgMheGqsbhTZrtc5iLz9z59G/Q53QyE2fnjHV8N9wjBpiWA==", "dependencies": [ "ky", - "undici@6.24.1" + "undici@6.23.0" ] }, - "@emnapi/core@1.9.0": { - "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", + "@emnapi/core@1.8.1": { + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", "dependencies": [ "@emnapi/wasi-threads", "tslib" ] }, - "@emnapi/runtime@1.9.0": { - "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", + "@emnapi/runtime@1.8.1": { + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", "dependencies": [ "tslib" ] }, - "@emnapi/wasi-threads@1.2.0": { - "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", + "@emnapi/wasi-threads@1.1.0": { + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "dependencies": [ "tslib" ] @@ -404,8 +803,13 @@ "os": ["aix"], "cpu": ["ppc64"] }, - "@esbuild/aix-ppc64@0.27.4": { - "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "@esbuild/aix-ppc64@0.25.7": { + "integrity": "sha512-uD0kKFHh6ETr8TqEtaAcV+dn/2qnYbH/+8wGEdY70Qf7l1l/jmBUbrmQqwiPKAQE6cOQ7dTj6Xr0HzQDGHyceQ==", + "os": ["aix"], + "cpu": ["ppc64"] + }, + "@esbuild/aix-ppc64@0.27.3": { + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", "os": ["aix"], "cpu": ["ppc64"] }, @@ -419,8 +823,13 @@ "os": ["android"], "cpu": ["arm64"] }, - "@esbuild/android-arm64@0.27.4": { - "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "@esbuild/android-arm64@0.25.7": { + "integrity": "sha512-p0ohDnwyIbAtztHTNUTzN5EGD/HJLs1bwysrOPgSdlIA6NDnReoVfoCyxG6W1d85jr2X80Uq5KHftyYgaK9LPQ==", + "os": ["android"], + "cpu": ["arm64"] + }, + "@esbuild/android-arm64@0.27.3": { + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", "os": ["android"], "cpu": ["arm64"] }, @@ -434,8 +843,13 @@ "os": ["android"], "cpu": ["arm"] }, - "@esbuild/android-arm@0.27.4": { - "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "@esbuild/android-arm@0.25.7": { + "integrity": "sha512-Jhuet0g1k9rAJHrXGIh7sFknFuT4sfytYZpZpuZl7YKDhnPByVAm5oy2LEBmMbuYf3ejWVYCc2seX81Mk+madA==", + "os": ["android"], + "cpu": ["arm"] + }, + "@esbuild/android-arm@0.27.3": { + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", "os": ["android"], "cpu": ["arm"] }, @@ -449,8 +863,13 @@ "os": ["android"], "cpu": ["x64"] }, - "@esbuild/android-x64@0.27.4": { - "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "@esbuild/android-x64@0.25.7": { + "integrity": "sha512-mMxIJFlSgVK23HSsII3ZX9T2xKrBCDGyk0qiZnIW10LLFFtZLkFD6imZHu7gUo2wkNZwS9Yj3mOtZD3ZPcjCcw==", + "os": ["android"], + "cpu": ["x64"] + }, + "@esbuild/android-x64@0.27.3": { + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", "os": ["android"], "cpu": ["x64"] }, @@ -464,8 +883,13 @@ "os": ["darwin"], "cpu": ["arm64"] }, - "@esbuild/darwin-arm64@0.27.4": { - "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "@esbuild/darwin-arm64@0.25.7": { + "integrity": "sha512-jyOFLGP2WwRwxM8F1VpP6gcdIJc8jq2CUrURbbTouJoRO7XCkU8GdnTDFIHdcifVBT45cJlOYsZ1kSlfbKjYUQ==", + "os": ["darwin"], + "cpu": ["arm64"] + }, + "@esbuild/darwin-arm64@0.27.3": { + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", "os": ["darwin"], "cpu": ["arm64"] }, @@ -479,8 +903,13 @@ "os": ["darwin"], "cpu": ["x64"] }, - "@esbuild/darwin-x64@0.27.4": { - "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "@esbuild/darwin-x64@0.25.7": { + "integrity": "sha512-m9bVWqZCwQ1BthruifvG64hG03zzz9gE2r/vYAhztBna1/+qXiHyP9WgnyZqHgGeXoimJPhAmxfbeU+nMng6ZA==", + "os": ["darwin"], + "cpu": ["x64"] + }, + "@esbuild/darwin-x64@0.27.3": { + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", "os": ["darwin"], "cpu": ["x64"] }, @@ -494,8 +923,13 @@ "os": ["freebsd"], "cpu": ["arm64"] }, - "@esbuild/freebsd-arm64@0.27.4": { - "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "@esbuild/freebsd-arm64@0.25.7": { + "integrity": "sha512-Bss7P4r6uhr3kDzRjPNEnTm/oIBdTPRNQuwaEFWT/uvt6A1YzK/yn5kcx5ZxZ9swOga7LqeYlu7bDIpDoS01bA==", + "os": ["freebsd"], + "cpu": ["arm64"] + }, + "@esbuild/freebsd-arm64@0.27.3": { + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", "os": ["freebsd"], "cpu": ["arm64"] }, @@ -509,8 +943,13 @@ "os": ["freebsd"], "cpu": ["x64"] }, - "@esbuild/freebsd-x64@0.27.4": { - "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "@esbuild/freebsd-x64@0.25.7": { + "integrity": "sha512-S3BFyjW81LXG7Vqmr37ddbThrm3A84yE7ey/ERBlK9dIiaWgrjRlre3pbG7txh1Uaxz8N7wGGQXmC9zV+LIpBQ==", + "os": ["freebsd"], + "cpu": ["x64"] + }, + "@esbuild/freebsd-x64@0.27.3": { + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", "os": ["freebsd"], "cpu": ["x64"] }, @@ -524,8 +963,13 @@ "os": ["linux"], "cpu": ["arm64"] }, - "@esbuild/linux-arm64@0.27.4": { - "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "@esbuild/linux-arm64@0.25.7": { + "integrity": "sha512-HfQZQqrNOfS1Okn7PcsGUqHymL1cWGBslf78dGvtrj8q7cN3FkapFgNA4l/a5lXDwr7BqP2BSO6mz9UremNPbg==", + "os": ["linux"], + "cpu": ["arm64"] + }, + "@esbuild/linux-arm64@0.27.3": { + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", "os": ["linux"], "cpu": ["arm64"] }, @@ -539,8 +983,13 @@ "os": ["linux"], "cpu": ["arm"] }, - "@esbuild/linux-arm@0.27.4": { - "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "@esbuild/linux-arm@0.25.7": { + "integrity": "sha512-JZMIci/1m5vfQuhKoFXogCKVYVfYQmoZJg8vSIMR4TUXbF+0aNlfXH3DGFEFMElT8hOTUF5hisdZhnrZO/bkDw==", + "os": ["linux"], + "cpu": ["arm"] + }, + "@esbuild/linux-arm@0.27.3": { + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", "os": ["linux"], "cpu": ["arm"] }, @@ -554,8 +1003,13 @@ "os": ["linux"], "cpu": ["ia32"] }, - "@esbuild/linux-ia32@0.27.4": { - "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "@esbuild/linux-ia32@0.25.7": { + "integrity": "sha512-9Jex4uVpdeofiDxnwHRgen+j6398JlX4/6SCbbEFEXN7oMO2p0ueLN+e+9DdsdPLUdqns607HmzEFnxwr7+5wQ==", + "os": ["linux"], + "cpu": ["ia32"] + }, + "@esbuild/linux-ia32@0.27.3": { + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", "os": ["linux"], "cpu": ["ia32"] }, @@ -569,8 +1023,13 @@ "os": ["linux"], "cpu": ["loong64"] }, - "@esbuild/linux-loong64@0.27.4": { - "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "@esbuild/linux-loong64@0.25.7": { + "integrity": "sha512-TG1KJqjBlN9IHQjKVUYDB0/mUGgokfhhatlay8aZ/MSORMubEvj/J1CL8YGY4EBcln4z7rKFbsH+HeAv0d471w==", + "os": ["linux"], + "cpu": ["loong64"] + }, + "@esbuild/linux-loong64@0.27.3": { + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", "os": ["linux"], "cpu": ["loong64"] }, @@ -584,8 +1043,13 @@ "os": ["linux"], "cpu": ["mips64el"] }, - "@esbuild/linux-mips64el@0.27.4": { - "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "@esbuild/linux-mips64el@0.25.7": { + "integrity": "sha512-Ty9Hj/lx7ikTnhOfaP7ipEm/ICcBv94i/6/WDg0OZ3BPBHhChsUbQancoWYSO0WNkEiSW5Do4febTTy4x1qYQQ==", + "os": ["linux"], + "cpu": ["mips64el"] + }, + "@esbuild/linux-mips64el@0.27.3": { + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", "os": ["linux"], "cpu": ["mips64el"] }, @@ -599,8 +1063,13 @@ "os": ["linux"], "cpu": ["ppc64"] }, - "@esbuild/linux-ppc64@0.27.4": { - "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "@esbuild/linux-ppc64@0.25.7": { + "integrity": "sha512-MrOjirGQWGReJl3BNQ58BLhUBPpWABnKrnq8Q/vZWWwAB1wuLXOIxS2JQ1LT3+5T+3jfPh0tyf5CpbyQHqnWIQ==", + "os": ["linux"], + "cpu": ["ppc64"] + }, + "@esbuild/linux-ppc64@0.27.3": { + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", "os": ["linux"], "cpu": ["ppc64"] }, @@ -614,8 +1083,13 @@ "os": ["linux"], "cpu": ["riscv64"] }, - "@esbuild/linux-riscv64@0.27.4": { - "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "@esbuild/linux-riscv64@0.25.7": { + "integrity": "sha512-9pr23/pqzyqIZEZmQXnFyqp3vpa+KBk5TotfkzGMqpw089PGm0AIowkUppHB9derQzqniGn3wVXgck19+oqiOw==", + "os": ["linux"], + "cpu": ["riscv64"] + }, + "@esbuild/linux-riscv64@0.27.3": { + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", "os": ["linux"], "cpu": ["riscv64"] }, @@ -629,8 +1103,13 @@ "os": ["linux"], "cpu": ["s390x"] }, - "@esbuild/linux-s390x@0.27.4": { - "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "@esbuild/linux-s390x@0.25.7": { + "integrity": "sha512-4dP11UVGh9O6Y47m8YvW8eoA3r8qL2toVZUbBKyGta8j6zdw1cn9F/Rt59/Mhv0OgY68pHIMjGXWOUaykCnx+w==", + "os": ["linux"], + "cpu": ["s390x"] + }, + "@esbuild/linux-s390x@0.27.3": { + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", "os": ["linux"], "cpu": ["s390x"] }, @@ -644,8 +1123,13 @@ "os": ["linux"], "cpu": ["x64"] }, - "@esbuild/linux-x64@0.27.4": { - "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", + "@esbuild/linux-x64@0.25.7": { + "integrity": "sha512-ghJMAJTdw/0uhz7e7YnpdX1xVn7VqA0GrWrAO2qKMuqbvgHT2VZiBv1BQ//VcHsPir4wsL3P2oPggfKPzTKoCA==", + "os": ["linux"], + "cpu": ["x64"] + }, + "@esbuild/linux-x64@0.27.3": { + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", "os": ["linux"], "cpu": ["x64"] }, @@ -659,8 +1143,13 @@ "os": ["netbsd"], "cpu": ["arm64"] }, - "@esbuild/netbsd-arm64@0.27.4": { - "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "@esbuild/netbsd-arm64@0.25.7": { + "integrity": "sha512-bwXGEU4ua45+u5Ci/a55B85KWaDSRS8NPOHtxy2e3etDjbz23wlry37Ffzapz69JAGGc4089TBo+dGzydQmydg==", + "os": ["netbsd"], + "cpu": ["arm64"] + }, + "@esbuild/netbsd-arm64@0.27.3": { + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", "os": ["netbsd"], "cpu": ["arm64"] }, @@ -674,8 +1163,13 @@ "os": ["netbsd"], "cpu": ["x64"] }, - "@esbuild/netbsd-x64@0.27.4": { - "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "@esbuild/netbsd-x64@0.25.7": { + "integrity": "sha512-tUZRvLtgLE5OyN46sPSYlgmHoBS5bx2URSrgZdW1L1teWPYVmXh+QN/sKDqkzBo/IHGcKcHLKDhBeVVkO7teEA==", + "os": ["netbsd"], + "cpu": ["x64"] + }, + "@esbuild/netbsd-x64@0.27.3": { + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", "os": ["netbsd"], "cpu": ["x64"] }, @@ -689,8 +1183,13 @@ "os": ["openbsd"], "cpu": ["arm64"] }, - "@esbuild/openbsd-arm64@0.27.4": { - "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "@esbuild/openbsd-arm64@0.25.7": { + "integrity": "sha512-bTJ50aoC+WDlDGBReWYiObpYvQfMjBNlKztqoNUL0iUkYtwLkBQQeEsTq/I1KyjsKA5tyov6VZaPb8UdD6ci6Q==", + "os": ["openbsd"], + "cpu": ["arm64"] + }, + "@esbuild/openbsd-arm64@0.27.3": { + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", "os": ["openbsd"], "cpu": ["arm64"] }, @@ -704,8 +1203,13 @@ "os": ["openbsd"], "cpu": ["x64"] }, - "@esbuild/openbsd-x64@0.27.4": { - "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", + "@esbuild/openbsd-x64@0.25.7": { + "integrity": "sha512-TA9XfJrgzAipFUU895jd9j2SyDh9bbNkK2I0gHcvqb/o84UeQkBpi/XmYX3cO1q/9hZokdcDqQxIi6uLVrikxg==", + "os": ["openbsd"], + "cpu": ["x64"] + }, + "@esbuild/openbsd-x64@0.27.3": { + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", "os": ["openbsd"], "cpu": ["x64"] }, @@ -714,8 +1218,13 @@ "os": ["openharmony"], "cpu": ["arm64"] }, - "@esbuild/openharmony-arm64@0.27.4": { - "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", + "@esbuild/openharmony-arm64@0.25.7": { + "integrity": "sha512-5VTtExUrWwHHEUZ/N+rPlHDwVFQ5aME7vRJES8+iQ0xC/bMYckfJ0l2n3yGIfRoXcK/wq4oXSItZAz5wslTKGw==", + "os": ["openharmony"], + "cpu": ["arm64"] + }, + "@esbuild/openharmony-arm64@0.27.3": { + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", "os": ["openharmony"], "cpu": ["arm64"] }, @@ -729,8 +1238,13 @@ "os": ["sunos"], "cpu": ["x64"] }, - "@esbuild/sunos-x64@0.27.4": { - "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", + "@esbuild/sunos-x64@0.25.7": { + "integrity": "sha512-umkbn7KTxsexhv2vuuJmj9kggd4AEtL32KodkJgfhNOHMPtQ55RexsaSrMb+0+jp9XL4I4o2y91PZauVN4cH3A==", + "os": ["sunos"], + "cpu": ["x64"] + }, + "@esbuild/sunos-x64@0.27.3": { + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", "os": ["sunos"], "cpu": ["x64"] }, @@ -744,8 +1258,13 @@ "os": ["win32"], "cpu": ["arm64"] }, - "@esbuild/win32-arm64@0.27.4": { - "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", + "@esbuild/win32-arm64@0.25.7": { + "integrity": "sha512-j20JQGP/gz8QDgzl5No5Gr4F6hurAZvtkFxAKhiv2X49yi/ih8ECK4Y35YnjlMogSKJk931iNMcd35BtZ4ghfw==", + "os": ["win32"], + "cpu": ["arm64"] + }, + "@esbuild/win32-arm64@0.27.3": { + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", "os": ["win32"], "cpu": ["arm64"] }, @@ -759,8 +1278,13 @@ "os": ["win32"], "cpu": ["ia32"] }, - "@esbuild/win32-ia32@0.27.4": { - "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", + "@esbuild/win32-ia32@0.25.7": { + "integrity": "sha512-4qZ6NUfoiiKZfLAXRsvFkA0hoWVM+1y2bSHXHkpdLAs/+r0LgwqYohmfZCi985c6JWHhiXP30mgZawn/XrqAkQ==", + "os": ["win32"], + "cpu": ["ia32"] + }, + "@esbuild/win32-ia32@0.27.3": { + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", "os": ["win32"], "cpu": ["ia32"] }, @@ -774,12 +1298,17 @@ "os": ["win32"], "cpu": ["x64"] }, - "@esbuild/win32-x64@0.27.4": { - "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", + "@esbuild/win32-x64@0.25.7": { + "integrity": "sha512-FaPsAHTwm+1Gfvn37Eg3E5HIpfR3i6x1AIcla/MkqAIupD4BW3MrSeUqfoTzwwJhk3WE2/KqUn4/eenEJC76VA==", + "os": ["win32"], + "cpu": ["x64"] + }, + "@esbuild/win32-x64@0.27.3": { + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", "os": ["win32"], "cpu": ["x64"] }, - "@eslint-community/eslint-utils@4.9.1_eslint@9.39.4": { + "@eslint-community/eslint-utils@4.9.1_eslint@9.39.2": { "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dependencies": [ "eslint", @@ -789,12 +1318,12 @@ "@eslint-community/regexpp@4.12.2": { "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==" }, - "@eslint/config-array@0.21.2": { - "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "@eslint/config-array@0.21.1": { + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dependencies": [ "@eslint/object-schema", "debug@4.4.3", - "minimatch@3.1.5" + "minimatch@3.1.2" ] }, "@eslint/config-helpers@0.4.2": { @@ -809,22 +1338,22 @@ "@types/json-schema" ] }, - "@eslint/eslintrc@3.3.5": { - "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "@eslint/eslintrc@3.3.3": { + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dependencies": [ - "ajv@6.14.0", + "ajv@6.12.6", "debug@4.4.3", "espree", "globals", "ignore", "import-fresh", "js-yaml", - "minimatch@3.1.5", + "minimatch@3.1.2", "strip-json-comments" ] }, - "@eslint/js@9.39.4": { - "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==" + "@eslint/js@9.39.2": { + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==" }, "@eslint/object-schema@2.1.7": { "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==" @@ -836,10 +1365,10 @@ "levn" ] }, - "@fastify/ajv-compiler@4.0.5": { + "@fastify/ajv-compiler@4.0.5_ajv@8.17.1": { "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", "dependencies": [ - "ajv@8.18.0", + "ajv@8.17.1", "ajv-formats", "fast-uri" ] @@ -869,8 +1398,8 @@ "ipaddr.js@2.3.0" ] }, - "@fxts/core@1.26.0": { - "integrity": "sha512-ONaza1CGr8dLKmJ0HQgi0h4XuyDJMr0P70M7o/My/YeeRxuYoSANHjE2nSY7xO4WHgxUD5ojd5dpxlFOzAEJsA==", + "@fxts/core@1.23.0": { + "integrity": "sha512-URaV1oAhU64s4zfhzMIAB444aDB1fyLHcS7tEw3TrHll7YExbks/FimjrJN2MXrHVB0jXBtGeTTpW5k40R7NXg==", "dependencies": [ "tslib" ] @@ -1176,38 +1705,38 @@ "@inquirer/ansi@1.0.2": { "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==" }, - "@inquirer/checkbox@4.3.2_@types+node@24.12.0": { + "@inquirer/checkbox@4.3.2_@types+node@22.19.3": { "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dependencies": [ "@inquirer/ansi", - "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/core@10.3.2_@types+node@22.19.3", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@inquirer/confirm@5.1.21_@types+node@24.12.0": { + "@inquirer/confirm@5.1.21_@types+node@22.19.3": { "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@24.12.0", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0" + "@inquirer/core@10.3.2_@types+node@22.19.3", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@inquirer/core@10.3.2_@types+node@24.12.0": { + "@inquirer/core@10.3.2_@types+node@22.19.3": { "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dependencies": [ "@inquirer/ansi", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3", "cli-width", "mute-stream@2.0.0", "signal-exit", @@ -1215,7 +1744,7 @@ "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, "@inquirer/core@8.2.4": { @@ -1224,7 +1753,7 @@ "@inquirer/figures", "@inquirer/type@1.5.5", "@types/mute-stream", - "@types/node@20.19.37", + "@types/node@20.19.27", "@types/wrap-ansi", "ansi-escapes", "cli-spinners", @@ -1236,79 +1765,79 @@ "wrap-ansi@6.2.0" ] }, - "@inquirer/editor@4.2.23_@types+node@24.12.0": { + "@inquirer/editor@4.2.23_@types+node@22.19.3": { "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/core@10.3.2_@types+node@22.19.3", "@inquirer/external-editor", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0" + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@inquirer/expand@4.0.23_@types+node@24.12.0": { + "@inquirer/expand@4.0.23_@types+node@22.19.3": { "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@24.12.0", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/core@10.3.2_@types+node@22.19.3", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@inquirer/external-editor@1.0.3_@types+node@24.12.0": { + "@inquirer/external-editor@1.0.3_@types+node@22.19.3": { "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dependencies": [ - "@types/node@24.12.0", + "@types/node@22.19.3", "chardet", "iconv-lite@0.7.2" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, "@inquirer/figures@1.0.15": { "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==" }, - "@inquirer/input@4.3.1_@types+node@24.12.0": { + "@inquirer/input@4.3.1_@types+node@22.19.3": { "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@24.12.0", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0" + "@inquirer/core@10.3.2_@types+node@22.19.3", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@inquirer/number@3.0.23_@types+node@24.12.0": { + "@inquirer/number@3.0.23_@types+node@22.19.3": { "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@24.12.0", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0" + "@inquirer/core@10.3.2_@types+node@22.19.3", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@inquirer/password@4.0.23_@types+node@24.12.0": { + "@inquirer/password@4.0.23_@types+node@22.19.3": { "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dependencies": [ "@inquirer/ansi", - "@inquirer/core@10.3.2_@types+node@24.12.0", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0" + "@inquirer/core@10.3.2_@types+node@22.19.3", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@inquirer/prompts@7.10.1_@types+node@24.12.0": { + "@inquirer/prompts@7.10.1_@types+node@22.19.3": { "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", "dependencies": [ "@inquirer/checkbox", @@ -1321,49 +1850,49 @@ "@inquirer/rawlist", "@inquirer/search", "@inquirer/select", - "@types/node@24.12.0" + "@types/node@22.19.3" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@inquirer/rawlist@4.1.11_@types+node@24.12.0": { + "@inquirer/rawlist@4.1.11_@types+node@22.19.3": { "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@24.12.0", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/core@10.3.2_@types+node@22.19.3", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@inquirer/search@3.2.2_@types+node@24.12.0": { + "@inquirer/search@3.2.2_@types+node@22.19.3": { "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/core@10.3.2_@types+node@22.19.3", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@inquirer/select@4.4.2_@types+node@24.12.0": { + "@inquirer/select@4.4.2_@types+node@22.19.3": { "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dependencies": [ "@inquirer/ansi", - "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/core@10.3.2_@types+node@22.19.3", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, "@inquirer/type@1.5.5": { @@ -1372,17 +1901,17 @@ "mute-stream@1.0.0" ] }, - "@inquirer/type@3.0.10_@types+node@24.12.0": { + "@inquirer/type@3.0.10_@types+node@22.19.3": { "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dependencies": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "@ioredis/commands@1.5.1": { - "integrity": "sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==" + "@ioredis/commands@1.5.0": { + "integrity": "sha512-eUgLqrMf8nJkZxT24JvVRrQya1vZkQh8BBeYNwGDqa5I0VUi8ACx7uFvAaLxintokpTenkK6DASvo/bvNbBGow==" }, "@jimp/bmp@0.22.12_@jimp+custom@0.22.12": { "integrity": "sha512-aeI64HD0npropd+AR76MCcvvRaa+Qck6loCOS03CkkxGHN5/r336qTM5HPUdHKMDOGzqknuVPA8+kK1t03z12g==", @@ -1725,12 +2254,15 @@ "integrity": "sha512-6xReMW9p+paJgqoFRpOE2nogJFvzPfaLHLIlyADYjKMUcwDyjKZxryIbgcU+gxiTygn8yCjld1HoI0ET4/iZeA==", "tarball": "https://npm.jsr.io/~/11/@jsr/std__internal/1.0.12.tgz" }, - "@logtape/logtape@1.3.7": { - "integrity": "sha512-YgF+q9op97oLLPwc7TcTNIllTArVtTwkwyKky6XVzAXQcBrvFXXtMuwJSryONAyOUSItrx994O/HABOrszZyFg==" + "@logtape/logtape@1.3.6": { + "integrity": "sha512-OaK8eal8zcjB0GZbllXKgUC2T9h/GyNLQyQXjJkf1yum7SZKTWs9gs/t8NMS0kVVaSnA7bhU0Sjws/Iy4e0/IQ==" }, "@lukeed/csprng@1.1.0": { "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==" }, + "@mjackson/node-fetch-server@0.7.0": { + "integrity": "sha512-un8diyEBKU3BTVj3GzlTPA1kIjCkGdD+AMYQy31Gf9JCkfoZzwgJ79GUtHrF2BN3XPNMLpubbzPcxys+a3uZEw==" + }, "@multiformats/base-x@4.0.1": { "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" }, @@ -1742,10 +2274,10 @@ "@tybys/wasm-util" ] }, - "@nestjs/common@11.1.17_reflect-metadata@0.2.2_rxjs@7.8.2": { - "integrity": "sha512-hLODw5Abp8OQgA+mUO4tHou4krKgDtUcM9j5Ihxncst9XeyxYBTt2bwZm4e4EQr5E352S4Fyy6V3iFx9ggxKAg==", + "@nestjs/common@11.1.11_reflect-metadata@0.2.2_rxjs@7.8.2": { + "integrity": "sha512-R/+A8XFqLgN8zNs2twhrOaE7dJbRQhdPX3g46am4RT/x8xGLqDphrXkUIno4cGUZHxbczChBAaAPTdPv73wDZA==", "dependencies": [ - "file-type@21.3.2", + "file-type@21.2.0", "iterare", "load-esm", "reflect-metadata", @@ -1799,8 +2331,8 @@ "@oxc-project/types@0.103.0": { "integrity": "sha512-bkiYX5kaXWwUessFRSoXFkGIQTmc6dLGdxuRTrC+h8PSnIdZyuXHHlLAeTmOue5Br/a0/a7dHH0Gca6eXn9MKg==" }, - "@oxc-project/types@0.115.0": { - "integrity": "sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==" + "@oxc-project/types@0.107.0": { + "integrity": "sha512-QFDRbYfV2LVx8tyqtyiah3jQPUj1mK2+RYwxyFWyGoys6XJnwTdlzO6rdNNHOPorHAu5Uo34oWRKcvNpbJarmQ==" }, "@pinojs/redact@0.4.0": { "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==" @@ -1828,14 +2360,38 @@ "@poppinss/exception@1.2.3": { "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==" }, - "@preact/signals-core@1.14.0": { - "integrity": "sha512-AowtCcCU/33lFlh1zRFf/u+12rfrhtNakj7UpaGEsmMwUKpKWMVvcktOGcwBBNiB4lWrZWc01LhiyyzVklJyaQ==" + "@preact/signals-core@1.12.1": { + "integrity": "sha512-BwbTXpj+9QutoZLQvbttRg5x3l5468qaV2kufh+51yha1c53ep5dY4kTuZR35+3pAZxpfQerGJiQqg34ZNZ6uA==" }, - "@preact/signals@2.8.2_preact@10.29.0": { - "integrity": "sha512-gym5yoa64c+0w2kL7zRAAjY548qzWXbbuOfjsK9F1nWrEqooDwyWnih5SNdonjhQSp27zUqYh7UrxIRnkCyFCA==", + "@preact/signals@2.5.1_preact@10.19.6": { + "integrity": "sha512-VPjk5YFt7i11Fi4UK0tzaEe5xLwfhUxXL3l89ocxQ5aPz7bRo8M5+N73LjBMPklyXKYKz6YsNo4Smp8n6nplng==", "dependencies": [ "@preact/signals-core", - "preact@10.29.0" + "preact@10.19.6" + ] + }, + "@prefresh/babel-plugin@0.5.2": { + "integrity": "sha512-AOl4HG6dAxWkJ5ndPHBgBa49oo/9bOiJuRDKHLSTyH+Fd9x00shTXpdiTj1W41l6oQIwUOAgJeHMn4QwIDpHkA==" + }, + "@prefresh/core@1.5.9_preact@10.19.6": { + "integrity": "sha512-IKBKCPaz34OFVC+adiQ2qaTF5qdztO2/4ZPf4KsRTgjKosWqxVXmEbxCiUydYZRY8GVie+DQlKzQr9gt6HQ+EQ==", + "dependencies": [ + "preact@10.19.6" + ] + }, + "@prefresh/utils@1.2.1": { + "integrity": "sha512-vq/sIuN5nYfYzvyayXI4C2QkprfNaHUQ9ZX+3xLD8nL3rWyzpxOm1+K7RtMbhd+66QcaISViK7amjnheQ/4WZw==" + }, + "@prefresh/vite@2.4.11_preact@10.19.6_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-/XjURQqdRiCG3NpMmWqE9kJwrg9IchIOWHzulCfqg2sRe/8oQ1g5De7xrk9lbqPIQLn7ntBkKdqWXIj4E9YXyg==", + "dependencies": [ + "@babel/core", + "@prefresh/babel-plugin", + "@prefresh/core", + "@prefresh/utils", + "@rollup/pluginutils@4.2.1", + "preact@10.19.6", + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" ] }, "@quansync/fs@1.0.0": { @@ -1849,8 +2405,8 @@ "os": ["android"], "cpu": ["arm64"] }, - "@rolldown/binding-android-arm64@1.0.0-rc.9": { - "integrity": "sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==", + "@rolldown/binding-android-arm64@1.0.0-beta.59": { + "integrity": "sha512-6yLLgyswYwiCfls9+hoNFY9F8TQdwo15hpXDHzlAR0X/GojeKF+AuNcXjYNbOJ4zjl/5D6lliE8CbpB5t1OWIQ==", "os": ["android"], "cpu": ["arm64"] }, @@ -1859,8 +2415,8 @@ "os": ["darwin"], "cpu": ["arm64"] }, - "@rolldown/binding-darwin-arm64@1.0.0-rc.9": { - "integrity": "sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==", + "@rolldown/binding-darwin-arm64@1.0.0-beta.59": { + "integrity": "sha512-hqGXRc162qCCIOAcHN2Cw4eXiVTwYsMFLOhAy1IG2CxY+dwc/l4Ga+dLPkLor3Ikqy5WDn+7kxHbbh6EmshEpQ==", "os": ["darwin"], "cpu": ["arm64"] }, @@ -1869,8 +2425,8 @@ "os": ["darwin"], "cpu": ["x64"] }, - "@rolldown/binding-darwin-x64@1.0.0-rc.9": { - "integrity": "sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==", + "@rolldown/binding-darwin-x64@1.0.0-beta.59": { + "integrity": "sha512-ezvvGuhteE15JmMhJW0wS7BaXmhwLy1YHeEwievYaPC1PgGD86wgBKfOpHr9tSKllAXbCe0BeeMvasscWLhKdA==", "os": ["darwin"], "cpu": ["x64"] }, @@ -1879,8 +2435,8 @@ "os": ["freebsd"], "cpu": ["x64"] }, - "@rolldown/binding-freebsd-x64@1.0.0-rc.9": { - "integrity": "sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==", + "@rolldown/binding-freebsd-x64@1.0.0-beta.59": { + "integrity": "sha512-4fhKVJiEYVd5n6no/mrL3LZ9kByfCGwmONOrdtvx8DJGDQhehH/q3RfhG3V/4jGKhpXgbDjpIjkkFdybCTcgew==", "os": ["freebsd"], "cpu": ["x64"] }, @@ -1889,8 +2445,8 @@ "os": ["linux"], "cpu": ["arm"] }, - "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9": { - "integrity": "sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==", + "@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.59": { + "integrity": "sha512-T3Y52sW6JAhvIqArBw+wtjNU1Ieaz4g0NBxyjSJoW971nZJBZygNlSYx78G4cwkCmo1dYTciTPDOnQygLV23pA==", "os": ["linux"], "cpu": ["arm"] }, @@ -1899,8 +2455,8 @@ "os": ["linux"], "cpu": ["arm64"] }, - "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9": { - "integrity": "sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==", + "@rolldown/binding-linux-arm64-gnu@1.0.0-beta.59": { + "integrity": "sha512-NIW40jQDSQap2KDdmm9z3B/4OzWJ6trf8dwx3FD74kcQb3v34ThsBFTtzE5KjDuxnxgUlV+DkAu+XgSMKrgufw==", "os": ["linux"], "cpu": ["arm64"] }, @@ -1909,28 +2465,18 @@ "os": ["linux"], "cpu": ["arm64"] }, - "@rolldown/binding-linux-arm64-musl@1.0.0-rc.9": { - "integrity": "sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==", + "@rolldown/binding-linux-arm64-musl@1.0.0-beta.59": { + "integrity": "sha512-CCKEk+H+8c0WGe/8n1E20n85Tq4Pv+HNAbjP1KfUXW+01aCWSMjU56ChNrM2tvHnXicfm7QRNoZyfY8cWh7jLQ==", "os": ["linux"], "cpu": ["arm64"] }, - "@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9": { - "integrity": "sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==", - "os": ["linux"], - "cpu": ["ppc64"] - }, - "@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9": { - "integrity": "sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==", - "os": ["linux"], - "cpu": ["s390x"] - }, "@rolldown/binding-linux-x64-gnu@1.0.0-beta.57": { "integrity": "sha512-E199LPijo98yrLjPCmETx8EF43sZf9t3guSrLee/ej1rCCc3zDVTR4xFfN9BRAapGVl7/8hYqbbiQPTkv73kUg==", "os": ["linux"], "cpu": ["x64"] }, - "@rolldown/binding-linux-x64-gnu@1.0.0-rc.9": { - "integrity": "sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==", + "@rolldown/binding-linux-x64-gnu@1.0.0-beta.59": { + "integrity": "sha512-VlfwJ/HCskPmQi8R0JuAFndySKVFX7yPhE658o27cjSDWWbXVtGkSbwaxstii7Q+3Rz87ZXN+HLnb1kd4R9Img==", "os": ["linux"], "cpu": ["x64"] }, @@ -1939,8 +2485,8 @@ "os": ["linux"], "cpu": ["x64"] }, - "@rolldown/binding-linux-x64-musl@1.0.0-rc.9": { - "integrity": "sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==", + "@rolldown/binding-linux-x64-musl@1.0.0-beta.59": { + "integrity": "sha512-kuO92hTRyGy0Ts3Nsqll0rfO8eFsEJe9dGQGktkQnZ2hrJrDVN0y419dMgKy/gB2S2o7F2dpWhpfQOBehZPwVA==", "os": ["linux"], "cpu": ["x64"] }, @@ -1949,8 +2495,8 @@ "os": ["openharmony"], "cpu": ["arm64"] }, - "@rolldown/binding-openharmony-arm64@1.0.0-rc.9": { - "integrity": "sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==", + "@rolldown/binding-openharmony-arm64@1.0.0-beta.59": { + "integrity": "sha512-PXAebvNL4sYfCqi8LdY4qyFRacrRoiPZLo3NoUmiTxm7MPtYYR8CNtBGNokqDmMuZIQIecRaD/jbmFAIDz7DxQ==", "os": ["openharmony"], "cpu": ["arm64"] }, @@ -1961,8 +2507,8 @@ ], "cpu": ["wasm32"] }, - "@rolldown/binding-wasm32-wasi@1.0.0-rc.9": { - "integrity": "sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==", + "@rolldown/binding-wasm32-wasi@1.0.0-beta.59": { + "integrity": "sha512-yJoklQg7XIZq8nAg0bbkEXcDK6sfpjxQGxpg2Nd6ERNtvg+eOaEBRgPww0BVTrYFQzje1pB5qPwC2VnJHT3koQ==", "dependencies": [ "@napi-rs/wasm-runtime" ], @@ -1973,8 +2519,8 @@ "os": ["win32"], "cpu": ["arm64"] }, - "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9": { - "integrity": "sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==", + "@rolldown/binding-win32-arm64-msvc@1.0.0-beta.59": { + "integrity": "sha512-ljZ4+McmCbIuZwEBaoGtiG8Rq2nJjaXEnLEIx+usWetXn1ECjXY0LAhkELxOV6ytv4ensEmoJJ8nXg47hRMjlw==", "os": ["win32"], "cpu": ["arm64"] }, @@ -1983,147 +2529,158 @@ "os": ["win32"], "cpu": ["x64"] }, - "@rolldown/binding-win32-x64-msvc@1.0.0-rc.9": { - "integrity": "sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==", + "@rolldown/binding-win32-x64-msvc@1.0.0-beta.59": { + "integrity": "sha512-bMY4tTIwbdZljW+xe/ln1hvs0SRitahQSXfWtvgAtIzgSX9Ar7KqJzU7lRm33YTRFIHLULRi53yNjw9nJGd6uQ==", "os": ["win32"], "cpu": ["x64"] }, "@rolldown/pluginutils@1.0.0-beta.57": { "integrity": "sha512-aQNelgx14tGA+n2tNSa9x6/jeoCL9fkDeCei7nOKnHx0fEFRRMu5ReiITo+zZD5TzWDGGRjbSYCs93IfRIyTuQ==" }, - "@rolldown/pluginutils@1.0.0-rc.9": { - "integrity": "sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==" + "@rolldown/pluginutils@1.0.0-beta.59": { + "integrity": "sha512-aoh6LAJRyhtazs98ydgpNOYstxUlsOV1KJXcpf/0c0vFcUA8uyd/hwKRhqE/AAPNqAho9RliGsvitCoOzREoVA==" }, - "@rollup/pluginutils@5.3.0": { + "@rollup/pluginutils@4.2.1": { + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dependencies": [ + "estree-walker@2.0.2", + "picomatch@2.3.1" + ] + }, + "@rollup/pluginutils@5.3.0_rollup@4.55.1": { "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", "dependencies": [ "@types/estree", "estree-walker@2.0.2", - "picomatch@4.0.3" + "picomatch@4.0.3", + "rollup" + ], + "optionalPeers": [ + "rollup" ] }, - "@rollup/rollup-android-arm-eabi@4.59.0": { - "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "@rollup/rollup-android-arm-eabi@4.55.1": { + "integrity": "sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==", "os": ["android"], "cpu": ["arm"] }, - "@rollup/rollup-android-arm64@4.59.0": { - "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "@rollup/rollup-android-arm64@4.55.1": { + "integrity": "sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==", "os": ["android"], "cpu": ["arm64"] }, - "@rollup/rollup-darwin-arm64@4.59.0": { - "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "@rollup/rollup-darwin-arm64@4.55.1": { + "integrity": "sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==", "os": ["darwin"], "cpu": ["arm64"] }, - "@rollup/rollup-darwin-x64@4.59.0": { - "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "@rollup/rollup-darwin-x64@4.55.1": { + "integrity": "sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==", "os": ["darwin"], "cpu": ["x64"] }, - "@rollup/rollup-freebsd-arm64@4.59.0": { - "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "@rollup/rollup-freebsd-arm64@4.55.1": { + "integrity": "sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==", "os": ["freebsd"], "cpu": ["arm64"] }, - "@rollup/rollup-freebsd-x64@4.59.0": { - "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "@rollup/rollup-freebsd-x64@4.55.1": { + "integrity": "sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==", "os": ["freebsd"], "cpu": ["x64"] }, - "@rollup/rollup-linux-arm-gnueabihf@4.59.0": { - "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "@rollup/rollup-linux-arm-gnueabihf@4.55.1": { + "integrity": "sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==", "os": ["linux"], "cpu": ["arm"] }, - "@rollup/rollup-linux-arm-musleabihf@4.59.0": { - "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "@rollup/rollup-linux-arm-musleabihf@4.55.1": { + "integrity": "sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==", "os": ["linux"], "cpu": ["arm"] }, - "@rollup/rollup-linux-arm64-gnu@4.59.0": { - "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "@rollup/rollup-linux-arm64-gnu@4.55.1": { + "integrity": "sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==", "os": ["linux"], "cpu": ["arm64"] }, - "@rollup/rollup-linux-arm64-musl@4.59.0": { - "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "@rollup/rollup-linux-arm64-musl@4.55.1": { + "integrity": "sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==", "os": ["linux"], "cpu": ["arm64"] }, - "@rollup/rollup-linux-loong64-gnu@4.59.0": { - "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "@rollup/rollup-linux-loong64-gnu@4.55.1": { + "integrity": "sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==", "os": ["linux"], "cpu": ["loong64"] }, - "@rollup/rollup-linux-loong64-musl@4.59.0": { - "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "@rollup/rollup-linux-loong64-musl@4.55.1": { + "integrity": "sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==", "os": ["linux"], "cpu": ["loong64"] }, - "@rollup/rollup-linux-ppc64-gnu@4.59.0": { - "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "@rollup/rollup-linux-ppc64-gnu@4.55.1": { + "integrity": "sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==", "os": ["linux"], "cpu": ["ppc64"] }, - "@rollup/rollup-linux-ppc64-musl@4.59.0": { - "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "@rollup/rollup-linux-ppc64-musl@4.55.1": { + "integrity": "sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==", "os": ["linux"], "cpu": ["ppc64"] }, - "@rollup/rollup-linux-riscv64-gnu@4.59.0": { - "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "@rollup/rollup-linux-riscv64-gnu@4.55.1": { + "integrity": "sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==", "os": ["linux"], "cpu": ["riscv64"] }, - "@rollup/rollup-linux-riscv64-musl@4.59.0": { - "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "@rollup/rollup-linux-riscv64-musl@4.55.1": { + "integrity": "sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==", "os": ["linux"], "cpu": ["riscv64"] }, - "@rollup/rollup-linux-s390x-gnu@4.59.0": { - "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "@rollup/rollup-linux-s390x-gnu@4.55.1": { + "integrity": "sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==", "os": ["linux"], "cpu": ["s390x"] }, - "@rollup/rollup-linux-x64-gnu@4.59.0": { - "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "@rollup/rollup-linux-x64-gnu@4.55.1": { + "integrity": "sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==", "os": ["linux"], "cpu": ["x64"] }, - "@rollup/rollup-linux-x64-musl@4.59.0": { - "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "@rollup/rollup-linux-x64-musl@4.55.1": { + "integrity": "sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==", "os": ["linux"], "cpu": ["x64"] }, - "@rollup/rollup-openbsd-x64@4.59.0": { - "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "@rollup/rollup-openbsd-x64@4.55.1": { + "integrity": "sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==", "os": ["openbsd"], "cpu": ["x64"] }, - "@rollup/rollup-openharmony-arm64@4.59.0": { - "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "@rollup/rollup-openharmony-arm64@4.55.1": { + "integrity": "sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==", "os": ["openharmony"], "cpu": ["arm64"] }, - "@rollup/rollup-win32-arm64-msvc@4.59.0": { - "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "@rollup/rollup-win32-arm64-msvc@4.55.1": { + "integrity": "sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==", "os": ["win32"], "cpu": ["arm64"] }, - "@rollup/rollup-win32-ia32-msvc@4.59.0": { - "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "@rollup/rollup-win32-ia32-msvc@4.55.1": { + "integrity": "sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==", "os": ["win32"], "cpu": ["ia32"] }, - "@rollup/rollup-win32-x64-gnu@4.59.0": { - "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "@rollup/rollup-win32-x64-gnu@4.55.1": { + "integrity": "sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==", "os": ["win32"], "cpu": ["x64"] }, - "@rollup/rollup-win32-x64-msvc@4.59.0": { - "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "@rollup/rollup-win32-x64-msvc@4.55.1": { + "integrity": "sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==", "os": ["win32"], "cpu": ["x64"] }, @@ -2163,7 +2720,7 @@ "dependencies": [ "@shikijs/types@3.23.0", "@shikijs/vscode-textmate", - "oniguruma-to-es@4.3.5" + "oniguruma-to-es@4.3.4" ] }, "@shikijs/engine-oniguruma@1.29.2": { @@ -2230,48 +2787,57 @@ "@standard-schema/spec@1.1.0": { "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==" }, - "@sveltejs/acorn-typescript@1.0.9_acorn@8.16.0": { - "integrity": "sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==", + "@sveltejs/acorn-typescript@1.0.8_acorn@8.15.0": { + "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", "dependencies": [ - "acorn@8.16.0" + "acorn@8.15.0" ] }, - "@sveltejs/kit@2.55.0_@opentelemetry+api@1.9.0_@sveltejs+vite-plugin-svelte@7.0.0__svelte@5.53.12__vite@7.3.1___@types+node@24.12.0___tsx@4.21.0___yaml@2.8.2__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_svelte@5.53.12_typescript@5.9.3_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-MdFRjevVxmAknf2NbaUkDF16jSIzXMWd4Nfah0Qp8TtQVoSp3bV4jKt8mX7z7qTUTWvgSaxtR0EG5WJf53gcuA==", + "@sveltejs/kit@2.49.4_@opentelemetry+api@1.9.0_@sveltejs+vite-plugin-svelte@6.2.3__svelte@5.46.1___acorn@8.15.0__vite@7.3.1___@types+node@22.19.3___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2_svelte@5.46.1__acorn@8.15.0_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_acorn@8.15.0_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-JFtOqDoU0DI/+QSG8qnq5bKcehVb3tCHhOG4amsSYth5/KgO4EkJvi42xSAiyKmXAAULW1/Zdb6lkgGEgSxdZg==", "dependencies": [ "@opentelemetry/api", "@standard-schema/spec", "@sveltejs/acorn-typescript", "@sveltejs/vite-plugin-svelte", "@types/cookie", - "acorn@8.16.0", + "acorn@8.15.0", "cookie@0.6.0", "devalue", "esm-env", "kleur@4.1.5", "magic-string", "mrmime", - "set-cookie-parser@3.0.1", + "sade", + "set-cookie-parser", "sirv", "svelte", - "typescript", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" ], "optionalPeers": [ - "@opentelemetry/api", - "typescript" + "@opentelemetry/api" ], "bin": true }, - "@sveltejs/vite-plugin-svelte@7.0.0_svelte@5.53.12_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-ILXmxC7HAsnkK2eslgPetrqqW1BKSL7LktsFgqzNj83MaivMGZzluWq32m25j2mDOjmSKX7GGWahePhuEs7P/g==", + "@sveltejs/vite-plugin-svelte-inspector@5.0.2_@sveltejs+vite-plugin-svelte@6.2.3__svelte@5.46.1___acorn@8.15.0__vite@7.3.1___@types+node@22.19.3___tsx@4.21.0___yaml@2.8.2___picomatch@4.0.3__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2_svelte@5.46.1__acorn@8.15.0_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==", + "dependencies": [ + "@sveltejs/vite-plugin-svelte", + "obug", + "svelte", + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" + ] + }, + "@sveltejs/vite-plugin-svelte@6.2.3_svelte@5.46.1__acorn@8.15.0_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-a+uxqQ9j6Lxmq4plbGaNdM9hgDCZyxAv/yvuyF5iWoA2H5icZkqD3rdK155ZQgFLX2lc3NvahHG4OgKpYqYPiQ==", "dependencies": [ + "@sveltejs/vite-plugin-svelte-inspector", "deepmerge", "magic-string", "obug", "svelte", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", - "vitefu@1.1.2_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3", + "vitefu@1.1.1_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2" ] }, "@tokenizer/inflate@0.4.1": { @@ -2290,6 +2856,12 @@ "tslib" ] }, + "@types/amqplib@0.10.8": { + "integrity": "sha512-vtDp8Pk1wsE/AuQ8/Rgtm6KUZYqcnTgNvEHwzCkX8rL7AGsC6zqAfKAAJhUZXFhM/Pp++tbnUHiam/8vVpPztA==", + "dependencies": [ + "@types/node@24.10.4" + ] + }, "@types/chai@5.2.3": { "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dependencies": [ @@ -2343,7 +2915,7 @@ "@types/mute-stream@0.0.4": { "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", "dependencies": [ - "@types/node@24.12.0" + "@types/node@24.10.4" ] }, "@types/nlcst@2.0.3": { @@ -2355,35 +2927,32 @@ "@types/node@16.9.1": { "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" }, - "@types/node@20.19.37": { - "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", + "@types/node@20.19.27": { + "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==", "dependencies": [ "undici-types@6.21.0" ] }, - "@types/node@22.19.15": { - "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", + "@types/node@22.19.3": { + "integrity": "sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==", "dependencies": [ "undici-types@6.21.0" ] }, - "@types/node@24.12.0": { - "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", + "@types/node@24.10.4": { + "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", "dependencies": [ "undici-types@7.16.0" ] }, - "@types/trusted-types@2.0.7": { - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" - }, "@types/unist@3.0.3": { "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "@types/wrap-ansi@3.0.0": { "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==" }, - "@typescript-eslint/parser@8.57.1_eslint@9.39.4_typescript@5.9.3": { - "integrity": "sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==", + "@typescript-eslint/parser@8.52.0_eslint@9.39.2_typescript@5.9.3": { + "integrity": "sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==", "dependencies": [ "@typescript-eslint/scope-manager", "@typescript-eslint/types", @@ -2394,8 +2963,8 @@ "typescript" ] }, - "@typescript-eslint/project-service@8.57.1_typescript@5.9.3": { - "integrity": "sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==", + "@typescript-eslint/project-service@8.52.0_typescript@5.9.3": { + "integrity": "sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==", "dependencies": [ "@typescript-eslint/tsconfig-utils", "@typescript-eslint/types", @@ -2403,39 +2972,39 @@ "typescript" ] }, - "@typescript-eslint/scope-manager@8.57.1": { - "integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==", + "@typescript-eslint/scope-manager@8.52.0": { + "integrity": "sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==", "dependencies": [ "@typescript-eslint/types", "@typescript-eslint/visitor-keys" ] }, - "@typescript-eslint/tsconfig-utils@8.57.1_typescript@5.9.3": { - "integrity": "sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==", + "@typescript-eslint/tsconfig-utils@8.52.0_typescript@5.9.3": { + "integrity": "sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==", "dependencies": [ "typescript" ] }, - "@typescript-eslint/types@8.57.1": { - "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==" + "@typescript-eslint/types@8.52.0": { + "integrity": "sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==" }, - "@typescript-eslint/typescript-estree@8.57.1_typescript@5.9.3": { - "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==", + "@typescript-eslint/typescript-estree@8.52.0_typescript@5.9.3": { + "integrity": "sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==", "dependencies": [ "@typescript-eslint/project-service", "@typescript-eslint/tsconfig-utils", "@typescript-eslint/types", "@typescript-eslint/visitor-keys", "debug@4.4.3", - "minimatch@10.2.4", - "semver", + "minimatch@9.0.5", + "semver@7.7.3", "tinyglobby", "ts-api-utils", "typescript" ] }, - "@typescript-eslint/utils@8.57.1_eslint@9.39.4_typescript@5.9.3": { - "integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==", + "@typescript-eslint/utils@8.52.0_eslint@9.39.2_typescript@5.9.3": { + "integrity": "sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==", "dependencies": [ "@eslint-community/eslint-utils", "@typescript-eslint/scope-manager", @@ -2445,11 +3014,11 @@ "typescript" ] }, - "@typescript-eslint/visitor-keys@8.57.1": { - "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==", + "@typescript-eslint/visitor-keys@8.52.0": { + "integrity": "sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==", "dependencies": [ "@typescript-eslint/types", - "eslint-visitor-keys@5.0.1" + "eslint-visitor-keys@4.2.1" ] }, "@ungap/structured-clone@1.3.0": { @@ -2465,16 +3034,16 @@ "tinyrainbow" ] }, - "@vitest/mocker@3.2.4_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { + "@vitest/mocker@3.2.4_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dependencies": [ "@vitest/spy", "estree-walker@3.0.3", "magic-string", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" ], "optionalPeers": [ - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" ] }, "@vitest/pretty-format@3.2.4": { @@ -2529,10 +3098,10 @@ "negotiator" ] }, - "acorn-jsx@5.3.2_acorn@8.16.0": { + "acorn-jsx@5.3.2_acorn@8.15.0": { "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dependencies": [ - "acorn@8.16.0" + "acorn@8.15.0" ] }, "acorn-walk@8.3.2": { @@ -2542,21 +3111,21 @@ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "bin": true }, - "acorn@8.16.0": { - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "acorn@8.15.0": { + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "bin": true }, - "ajv-formats@3.0.1_ajv@8.18.0": { + "ajv-formats@3.0.1_ajv@8.17.1": { "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dependencies": [ - "ajv@8.18.0" + "ajv@8.17.1" ], "optionalPeers": [ - "ajv@8.18.0" + "ajv@8.17.1" ] }, - "ajv@6.14.0": { - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "ajv@6.12.6": { + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": [ "fast-deep-equal", "fast-json-stable-stringify", @@ -2564,8 +3133,8 @@ "uri-js" ] }, - "ajv@8.18.0": { - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "ajv@8.17.1": { + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dependencies": [ "fast-deep-equal", "fast-uri", @@ -2629,9 +3198,6 @@ "argparse@2.0.1": { "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "aria-query@5.3.1": { - "integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==" - }, "aria-query@5.3.2": { "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==" }, @@ -2659,8 +3225,8 @@ "pathe" ] }, - "astro@5.18.1_@types+node@24.12.0_ioredis@5.10.0_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2": { - "integrity": "sha512-m4VWilWZ+Xt6NPoYzC4CgGZim/zQUO7WFL0RHCH0AiEavF1153iC3+me2atDvXpf/yX4PyGUeD8wZLq1cirT3g==", + "astro@5.18.0_rollup@4.55.1_ioredis@5.9.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_vite@6.4.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_zod@3.25.76": { + "integrity": "sha512-CHiohwJIS4L0G6/IzE1Fx3dgWqXBCXus/od0eGUfxrZJD2um2pE7ehclMmgL/fXqbU7NfE1Ze2pq34h2QaA6iQ==", "dependencies": [ "@astrojs/compiler", "@astrojs/internal-helpers", @@ -2668,9 +3234,9 @@ "@astrojs/telemetry", "@capsizecss/unpack", "@oslojs/encoding", - "@rollup/pluginutils", - "acorn@8.16.0", - "aria-query@5.3.2", + "@rollup/pluginutils@5.3.0_rollup@4.55.1", + "acorn@8.15.0", + "aria-query", "axobject-query", "boxen", "ci-info", @@ -2685,7 +3251,7 @@ "dlv", "dset", "es-module-lexer", - "esbuild@0.27.4", + "esbuild@0.27.3", "estree-walker@3.0.3", "flattie", "fontace", @@ -2705,11 +3271,11 @@ "picomatch@4.0.3", "prompts", "rehype", - "semver", + "semver@7.7.3", "shiki@3.23.0", "smol-toml", "svgo", - "tinyexec@1.0.4", + "tinyexec@1.0.2", "tinyglobby", "tsconfck", "ultrahtml", @@ -2717,8 +3283,8 @@ "unist-util-visit", "unstorage", "vfile", - "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", - "vitefu@1.1.2_vite@6.4.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", + "vite@6.4.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3", + "vitefu@1.1.1_vite@6.4.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2", "xxhash-wasm", "yargs-parser@21.1.1", "yocto-spinner", @@ -2734,8 +3300,8 @@ "atomic-sleep@1.0.0": { "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" }, - "avvio@9.2.0": { - "integrity": "sha512-2t/sy01ArdHHE0vRH5Hsay+RtCZt3dLPji7W7/MMOCEgze5b7SNDC4j5H6FnVgPkI1MTNFGzHdHrVXDDl7QSSQ==", + "avvio@9.1.0": { + "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", "dependencies": [ "@fastify/error", "fastq" @@ -2756,15 +3322,16 @@ "balanced-match@1.0.2": { "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "balanced-match@4.0.4": { - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==" - }, "base-64@1.0.0": { "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" }, "base64-js@1.5.1": { "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "baseline-browser-mapping@2.9.14": { + "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", + "bin": true + }, "birpc@0.2.14": { "integrity": "sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==" }, @@ -2816,16 +3383,27 @@ "brace-expansion@1.1.12": { "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dependencies": [ - "balanced-match@1.0.2", + "balanced-match", "concat-map" ] }, - "brace-expansion@5.0.4": { - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "brace-expansion@2.0.2": { + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dependencies": [ - "balanced-match@4.0.4" + "balanced-match" ] }, + "browserslist@4.28.1": { + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dependencies": [ + "baseline-browser-mapping", + "caniuse-lite", + "electron-to-chromium", + "node-releases", + "update-browserslist-db" + ], + "bin": true + }, "buffer-more-ints@1.0.0": { "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==" }, @@ -2882,6 +3460,9 @@ "camelcase@8.0.0": { "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==" }, + "caniuse-lite@1.0.30001764": { + "integrity": "sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==" + }, "canonicalize@2.1.0": { "integrity": "sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==", "bin": true @@ -3033,6 +3614,9 @@ "content-type@1.0.5": { "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, + "convert-source-map@2.0.0": { + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, "cookie-es@1.2.2": { "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==" }, @@ -3086,10 +3670,10 @@ "source-map-js" ] }, - "css-tree@3.2.1": { - "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "css-tree@3.1.0": { + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dependencies": [ - "mdn-data@2.27.1", + "mdn-data@2.12.2", "source-map-js" ] }, @@ -3184,8 +3768,8 @@ "base-64" ] }, - "devalue@5.6.4": { - "integrity": "sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==" + "devalue@5.6.3": { + "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==" }, "devlop@1.1.0": { "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", @@ -3241,6 +3825,9 @@ "ee-first@1.1.1": { "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "electron-to-chromium@1.5.267": { + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==" + }, "emoji-regex-xs@1.0.0": { "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" }, @@ -3290,8 +3877,12 @@ "es-errors" ] }, - "es-toolkit@1.45.1": { - "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==" + "es-toolkit@1.43.0": { + "integrity": "sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA==" + }, + "esbuild-wasm@0.25.12": { + "integrity": "sha512-rZqkjL3Y6FwLpSHzLnaEy8Ps6veCNo1kZa9EOfJvmWtBq5dJH4iVjfmOO6Mlkv9B0tt9WFPFmb/VxlgJOnueNg==", + "bin": true }, "esbuild@0.25.12": { "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", @@ -3358,35 +3949,68 @@ "scripts": true, "bin": true }, - "esbuild@0.27.4": { - "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "esbuild@0.25.7": { + "integrity": "sha512-daJB0q2dmTzo90L9NjRaohhRWrCzYxWNFTjEi72/h+p5DcY3yn4MacWfDakHmaBaDzDiuLJsCh0+6LK/iX+c+Q==", + "optionalDependencies": [ + "@esbuild/aix-ppc64@0.25.7", + "@esbuild/android-arm@0.25.7", + "@esbuild/android-arm64@0.25.7", + "@esbuild/android-x64@0.25.7", + "@esbuild/darwin-arm64@0.25.7", + "@esbuild/darwin-x64@0.25.7", + "@esbuild/freebsd-arm64@0.25.7", + "@esbuild/freebsd-x64@0.25.7", + "@esbuild/linux-arm@0.25.7", + "@esbuild/linux-arm64@0.25.7", + "@esbuild/linux-ia32@0.25.7", + "@esbuild/linux-loong64@0.25.7", + "@esbuild/linux-mips64el@0.25.7", + "@esbuild/linux-ppc64@0.25.7", + "@esbuild/linux-riscv64@0.25.7", + "@esbuild/linux-s390x@0.25.7", + "@esbuild/linux-x64@0.25.7", + "@esbuild/netbsd-arm64@0.25.7", + "@esbuild/netbsd-x64@0.25.7", + "@esbuild/openbsd-arm64@0.25.7", + "@esbuild/openbsd-x64@0.25.7", + "@esbuild/openharmony-arm64@0.25.7", + "@esbuild/sunos-x64@0.25.7", + "@esbuild/win32-arm64@0.25.7", + "@esbuild/win32-ia32@0.25.7", + "@esbuild/win32-x64@0.25.7" + ], + "scripts": true, + "bin": true + }, + "esbuild@0.27.3": { + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", "optionalDependencies": [ - "@esbuild/aix-ppc64@0.27.4", - "@esbuild/android-arm@0.27.4", - "@esbuild/android-arm64@0.27.4", - "@esbuild/android-x64@0.27.4", - "@esbuild/darwin-arm64@0.27.4", - "@esbuild/darwin-x64@0.27.4", - "@esbuild/freebsd-arm64@0.27.4", - "@esbuild/freebsd-x64@0.27.4", - "@esbuild/linux-arm@0.27.4", - "@esbuild/linux-arm64@0.27.4", - "@esbuild/linux-ia32@0.27.4", - "@esbuild/linux-loong64@0.27.4", - "@esbuild/linux-mips64el@0.27.4", - "@esbuild/linux-ppc64@0.27.4", - "@esbuild/linux-riscv64@0.27.4", - "@esbuild/linux-s390x@0.27.4", - "@esbuild/linux-x64@0.27.4", - "@esbuild/netbsd-arm64@0.27.4", - "@esbuild/netbsd-x64@0.27.4", - "@esbuild/openbsd-arm64@0.27.4", - "@esbuild/openbsd-x64@0.27.4", - "@esbuild/openharmony-arm64@0.27.4", - "@esbuild/sunos-x64@0.27.4", - "@esbuild/win32-arm64@0.27.4", - "@esbuild/win32-ia32@0.27.4", - "@esbuild/win32-x64@0.27.4" + "@esbuild/aix-ppc64@0.27.3", + "@esbuild/android-arm@0.27.3", + "@esbuild/android-arm64@0.27.3", + "@esbuild/android-x64@0.27.3", + "@esbuild/darwin-arm64@0.27.3", + "@esbuild/darwin-x64@0.27.3", + "@esbuild/freebsd-arm64@0.27.3", + "@esbuild/freebsd-x64@0.27.3", + "@esbuild/linux-arm@0.27.3", + "@esbuild/linux-arm64@0.27.3", + "@esbuild/linux-ia32@0.27.3", + "@esbuild/linux-loong64@0.27.3", + "@esbuild/linux-mips64el@0.27.3", + "@esbuild/linux-ppc64@0.27.3", + "@esbuild/linux-riscv64@0.27.3", + "@esbuild/linux-s390x@0.27.3", + "@esbuild/linux-x64@0.27.3", + "@esbuild/netbsd-arm64@0.27.3", + "@esbuild/netbsd-x64@0.27.3", + "@esbuild/openbsd-arm64@0.27.3", + "@esbuild/openbsd-x64@0.27.3", + "@esbuild/openharmony-arm64@0.27.3", + "@esbuild/sunos-x64@0.27.3", + "@esbuild/win32-arm64@0.27.3", + "@esbuild/win32-ia32@0.27.3", + "@esbuild/win32-x64@0.27.3" ], "scripts": true, "bin": true @@ -3416,11 +4040,8 @@ "eslint-visitor-keys@4.2.1": { "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==" }, - "eslint-visitor-keys@5.0.1": { - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==" - }, - "eslint@9.39.4": { - "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "eslint@9.39.2": { + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dependencies": [ "@eslint-community/eslint-utils", "@eslint-community/regexpp", @@ -3434,7 +4055,7 @@ "@humanwhocodes/module-importer", "@humanwhocodes/retry", "@types/estree", - "ajv@6.14.0", + "ajv@6.12.6", "chalk@4.1.2", "cross-spawn", "debug@4.4.3", @@ -3453,7 +4074,7 @@ "is-glob", "json-stable-stringify-without-jsonify", "lodash.merge", - "minimatch@3.1.5", + "minimatch@3.1.2", "natural-compare", "optionator" ], @@ -3462,10 +4083,10 @@ "esm-env@1.2.2": { "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" }, - "espree@10.4.0": { + "espree@10.4.0_acorn@8.15.0": { "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dependencies": [ - "acorn@8.16.0", + "acorn@8.15.0", "acorn-jsx", "eslint-visitor-keys@4.2.1" ] @@ -3476,11 +4097,10 @@ "estraverse" ] }, - "esrap@2.2.4": { - "integrity": "sha512-suICpxAmZ9A8bzJjEl/+rLJiDKC0X4gYWUxT6URAWBLvlXmtbZd5ySMu/N2ZGEtMCAmflUDPSehrP9BQcsGcSg==", + "esrap@2.2.1": { + "integrity": "sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==", "dependencies": [ - "@jridgewell/sourcemap-codec", - "@typescript-eslint/types" + "@jridgewell/sourcemap-codec" ] }, "esrecurse@4.3.0": { @@ -3582,11 +4202,11 @@ "fast-json-stable-stringify@2.1.0": { "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "fast-json-stringify@6.3.0": { - "integrity": "sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==", + "fast-json-stringify@6.1.1_ajv@8.17.1": { + "integrity": "sha512-DbgptncYEXZqDUOEl4krff4mUiVrTZZVI7BBrQR/T3BqMj/eM1flTC1Uk2uUoLcWCxjT95xKulV/Lc6hhOZsBQ==", "dependencies": [ "@fastify/merge-json-schemas", - "ajv@8.18.0", + "ajv@8.17.1", "ajv-formats", "fast-uri", "json-schema-ref-resolver", @@ -3608,8 +4228,8 @@ "fastify-plugin@5.1.0": { "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==" }, - "fastify@5.8.2": { - "integrity": "sha512-lZmt3navvZG915IE+f7/TIVamxIwmBd+OMB+O9WBzcpIwOo6F0LTh0sluoMFk5VkrKTvvrwIaoJPkir4Z+jtAg==", + "fastify@5.6.2": { + "integrity": "sha512-dPugdGnsvYkBlENLhCgX8yhyGCsCPrpA8lFWbTNU428l+YOnLgYHR69hzV8HWPC79n536EqzqQtvhtdaCE0dKg==", "dependencies": [ "@fastify/ajv-compiler", "@fastify/error", @@ -3624,7 +4244,7 @@ "process-warning@5.0.0", "rfdc", "secure-json-parse", - "semver", + "semver@7.7.3", "toad-cache" ] }, @@ -3675,8 +4295,8 @@ "uint8array-extras" ] }, - "file-type@21.3.2": { - "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", + "file-type@21.2.0": { + "integrity": "sha512-vCYBgFOrJQLoTzDyAXAL/RFfKnXXpUYt4+tipVy26nJJhT7ftgGETf2tAQF59EEL61i3MrorV/PG6tf7LJK7eg==", "dependencies": [ "@tokenizer/inflate", "strtok3@10.3.4", @@ -3696,8 +4316,8 @@ "unpipe" ] }, - "find-my-way@9.5.0": { - "integrity": "sha512-VW2RfnmscZO5KgBY5XVyKREMW5nMZcxDy+buTOsL+zIPnBlbKm+00sgzoQzq1EVh4aALZLfKdwv6atBGcjvjrQ==", + "find-my-way@9.4.0": { + "integrity": "sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==", "dependencies": [ "fast-deep-equal", "fast-querystring", @@ -3718,8 +4338,8 @@ "keyv" ] }, - "flatted@3.4.1": { - "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==" + "flatted@3.3.3": { + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==" }, "flattie@1.1.1": { "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==" @@ -3730,8 +4350,8 @@ "fontkitten" ] }, - "fontkitten@1.0.3": { - "integrity": "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==", + "fontkitten@1.0.2": { + "integrity": "sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==", "dependencies": [ "tiny-inflate" ] @@ -3762,11 +4382,14 @@ "generator-function@2.0.1": { "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==" }, + "gensync@1.0.0-beta.2": { + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, "get-caller-file@2.0.5": { "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "get-east-asian-width@1.5.0": { - "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==" + "get-east-asian-width@1.4.0": { + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==" }, "get-intrinsic@1.3.0": { "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", @@ -3797,8 +4420,8 @@ "is-stream" ] }, - "get-tsconfig@4.13.6": { - "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "get-tsconfig@4.13.0": { + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", "dependencies": [ "resolve-pkg-maps" ] @@ -3828,8 +4451,8 @@ "gopd@1.2.0": { "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, - "h3@1.15.6": { - "integrity": "sha512-oi15ESLW5LRthZ+qPCi5GNasY/gvynSKUQxgiovrY63bPAtG59wtM+LSrlcwvOHAXzGrXVLnI97brbkdPF9WoQ==", + "h3@1.15.5": { + "integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==", "dependencies": [ "cookie-es", "crossws", @@ -3970,11 +4593,11 @@ "highlight.js@10.7.3": { "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" }, - "hono@4.12.8": { - "integrity": "sha512-VJCEvtrezO1IAR+kqEYnxUOoStaQPGrCmX3j4wDTNOcD1uRPFpGlwQUIW8niPuvHXaTUxeOUl5MMDGrl+tmO9A==" + "hono@4.11.3": { + "integrity": "sha512-PmQi306+M/ct/m5s66Hrg+adPnkD5jiO6IjA7WhWw0gSBSo1EcRegwuI1deZ+wd5pzCGynCcn2DprnE4/yEV4w==" }, - "hookable@6.1.0": { - "integrity": "sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==" + "hookable@6.0.1": { + "integrity": "sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw==" }, "html-escaper@3.0.3": { "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==" @@ -4012,7 +4635,7 @@ "toidentifier" ] }, - "icojs@0.19.5_@jimp+custom@0.22.12": { + "icojs@0.19.5": { "integrity": "sha512-4RnOvFpl7HNgUYLmmLKzhCk/DCNS81sXSC8ENp+mUonMHn3m9dsE+oQLnmoznjwr2bV9n1IapfSpdxopDzYBXA==", "dependencies": [ "@jimp/bmp", @@ -4072,24 +4695,24 @@ "@inquirer/core@8.2.4" ] }, - "inquirer@12.11.1_@types+node@24.12.0": { + "inquirer@12.11.1_@types+node@22.19.3": { "integrity": "sha512-9VF7mrY+3OmsAfjH3yKz/pLbJ5z22E23hENKw3/LNSaA/sAt3v49bDRY+Ygct1xwuKT+U+cBfTzjCPySna69Qw==", "dependencies": [ "@inquirer/ansi", - "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/core@10.3.2_@types+node@22.19.3", "@inquirer/prompts", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/type@3.0.10_@types+node@22.19.3", + "@types/node@22.19.3", "mute-stream@2.0.0", "run-async", "rxjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ] }, - "ioredis@5.10.0": { - "integrity": "sha512-HVBe9OFuqs+Z6n64q09PQvP1/R4Bm+30PAyyD4wIEqssh3v9L21QjCVk4kRLucMBcDokJTcLjsGeVRlq/nH6DA==", + "ioredis@5.9.1": { + "integrity": "sha512-BXNqFQ66oOsR82g9ajFFsR8ZKrjVvYCLyeML9IvSMAsP56XH2VXBdZjmI11p65nXXJxTEt1hie3J2QeFJVgrtQ==", "dependencies": [ "@ioredis/commands", "cluster-key-slot", @@ -4234,6 +4857,9 @@ "jpeg-js@0.4.4": { "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" }, + "js-tokens@4.0.0": { + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, "js-tokens@9.0.1": { "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==" }, @@ -4278,6 +4904,10 @@ "json-stable-stringify-without-jsonify@1.0.1": { "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, + "json5@2.2.3": { + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": true + }, "jsonld@9.0.0": { "integrity": "sha512-pjMIdkXfC1T2wrX9B9i2uXhGdyCmgec3qgMht+TDj+S0qX3bjWMQUfL7NeqEhuRTi8G5ESzmL9uGlST7nzSEWg==", "dependencies": [ @@ -4315,8 +4945,8 @@ "koa-compose" ] }, - "koa@2.16.4": { - "integrity": "sha512-3An0GCLDSR34tsCO4H8Tef8Pp2ngtaZDAZnsWJYelqXUK5wyiHvGItgK/xcSkmHLSTn1Jcho1mRQs2ehRzvKKw==", + "koa@2.16.3": { + "integrity": "sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g==", "dependencies": [ "accepts", "cache-content-type", @@ -4343,8 +4973,8 @@ "vary" ] }, - "ky@1.14.3": { - "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==" + "ky@1.14.2": { + "integrity": "sha512-q3RBbsO5A5zrPhB6CaCS8ZUv+NWCXv6JJT4Em0i264G9W0fdPB8YRfnnEi7Dm7X7omAkBIPojzYJ2D1oHTHqug==" }, "levn@0.4.1": { "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", @@ -4358,7 +4988,7 @@ "dependencies": [ "cookie@1.1.1", "process-warning@4.0.1", - "set-cookie-parser@2.7.2" + "set-cookie-parser" ] }, "load-esm@1.0.3": { @@ -4382,8 +5012,8 @@ "lodash.merge@4.6.2": { "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "lodash@4.17.23": { - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==" + "lodash@4.17.21": { + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "log-symbols@6.0.0": { "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", @@ -4401,13 +5031,19 @@ "loupe@3.2.1": { "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==" }, - "lru-cache@11.2.7": { - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==" + "lru-cache@11.2.6": { + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==" + }, + "lru-cache@5.1.1": { + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": [ + "yallist@3.1.1" + ] }, "lru-cache@6.0.0": { "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": [ - "yallist" + "yallist@4.0.0" ] }, "lru.min@1.1.4": { @@ -4570,8 +5206,8 @@ "mdn-data@2.0.28": { "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" }, - "mdn-data@2.27.1": { - "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==" + "mdn-data@2.12.2": { + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==" }, "media-typer@0.3.0": { "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" @@ -4862,38 +5498,29 @@ "glob-to-regexp", "sharp@0.33.5", "stoppable", - "undici@7.18.2", - "workerd@1.20250906.0", + "undici@7.14.0", + "workerd", "ws", "youch", "zod@3.22.3" ], "bin": true }, - "miniflare@4.20260312.1": { - "integrity": "sha512-YSWxec9ssisqkQgaCgcIQxZlB41E9hMiq1nxUgxXHRrE9NsfyC6ptSt8yfgBobsKIseAVKLTB/iEDpMumBv8oA==", + "minimatch@3.1.2": { + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": [ - "@cspotcode/source-map-support", - "sharp@0.34.5", - "undici@7.18.2", - "workerd@1.20260312.1", - "ws", - "youch" - ], - "bin": true - }, - "minimatch@10.2.4": { - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dependencies": [ - "brace-expansion@5.0.4" + "brace-expansion@1.1.12" ] }, - "minimatch@3.1.5": { - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "minimatch@9.0.5": { + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dependencies": [ - "brace-expansion@1.1.12" + "brace-expansion@2.0.2" ] }, + "mri@1.2.0": { + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + }, "mrmime@2.0.1": { "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==" }, @@ -4920,10 +5547,10 @@ "mute-stream@2.0.0": { "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==" }, - "mysql2@3.20.0_@types+node@24.12.0": { - "integrity": "sha512-eCLUs7BNbgA6nf/MZXsaBO1SfGs0LtLVrJD3WeWq+jPLDWkSufTD+aGMwykfUVPdZnblaUK1a8G/P63cl9FkKg==", + "mysql2@3.18.2_@types+node@22.19.3": { + "integrity": "sha512-UfEShBFAZZEAKjySnTUuE7BgqkYT4mx+RjoJ5aqtmwSSvNcJ/QxQPXz/y3jSxNiVRedPfgccmuBtiPCSiEEytw==", "dependencies": [ - "@types/node@24.12.0", + "@types/node@22.19.3", "aws-ssl-profiles", "denque", "generate-function", @@ -4979,6 +5606,9 @@ "node-mock-http@1.0.4": { "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==" }, + "node-releases@2.0.27": { + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==" + }, "normalize-path@3.0.0": { "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, @@ -5037,8 +5667,8 @@ "regex-recursion@5.1.1" ] }, - "oniguruma-to-es@4.3.5": { - "integrity": "sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==", + "oniguruma-to-es@4.3.4": { + "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", "dependencies": [ "oniguruma-parser", "regex@6.1.0", @@ -5070,7 +5700,7 @@ "log-symbols", "stdin-discarder", "string-width@7.2.0", - "strip-ansi@7.2.0" + "strip-ansi@7.1.2" ] }, "p-limit@3.1.0": { @@ -5194,17 +5824,17 @@ "picomatch@4.0.3": { "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==" }, - "pino-abstract-transport@3.0.0": { - "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", + "pino-abstract-transport@2.0.0": { + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", "dependencies": [ "split2" ] }, - "pino-std-serializers@7.1.0": { - "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==" + "pino-std-serializers@7.0.0": { + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==" }, - "pino@10.3.1": { - "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", + "pino@10.1.0": { + "integrity": "sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==", "dependencies": [ "@pinojs/redact", "atomic-sleep", @@ -5254,8 +5884,8 @@ "pngjs@7.0.0": { "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==" }, - "postcss@8.5.8": { - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "postcss@8.5.6": { + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dependencies": [ "nanoid", "picocolors", @@ -5265,11 +5895,17 @@ "postgres@3.4.8": { "integrity": "sha512-d+JFcLM17njZaOLkv6SCev7uoLaBtfK86vMUXhW1Z4glPWh4jozno9APvW/XKFJ3CCxVoC7OL38BqRydtu5nGg==" }, + "preact-render-to-string@6.6.5_preact@10.19.6": { + "integrity": "sha512-O6MHzYNIKYaiSX3bOw0gGZfEbOmlIDtDfWwN1JJdc/T3ihzRT6tGGSEWE088dWrEDGa1u7101q+6fzQnO9XCPA==", + "dependencies": [ + "preact@10.19.6" + ] + }, "preact@10.19.6": { "integrity": "sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==" }, - "preact@10.29.0": { - "integrity": "sha512-wSAGyk2bYR1c7t3SZ3jHcM6xy0lcBcDel6lODcs9ME6Th++Dx2KU+6D3HD8wMMKGA8Wpw7OMd3/4RGzYRpzwRg==" + "preact@10.28.2": { + "integrity": "sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==" }, "prelude-ls@1.2.1": { "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" @@ -5318,8 +5954,8 @@ "pvutils@1.1.5": { "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==" }, - "qs@6.14.2": { - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "qs@6.14.1": { + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "dependencies": [ "side-channel" ] @@ -5566,7 +6202,7 @@ "rfdc@1.4.1": { "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" }, - "rolldown-plugin-dts@0.20.0_rolldown@1.0.0-beta.57_typescript@5.9.3": { + "rolldown-plugin-dts@0.20.0_rolldown@1.0.0-beta.57": { "integrity": "sha512-cLAY1kN2ilTYMfZcFlGWbXnu6Nb+8uwUBsi+Mjbh4uIx7IN8uMOmJ7RxrrRgPsO4H7eSz3E+JwGoL1gyugiyUA==", "dependencies": [ "@babel/generator", @@ -5577,11 +6213,7 @@ "dts-resolver", "get-tsconfig", "obug", - "rolldown@1.0.0-beta.57", - "typescript" - ], - "optionalPeers": [ - "typescript" + "rolldown@1.0.0-beta.57" ] }, "rolldown@1.0.0-beta.57": { @@ -5607,33 +6239,31 @@ ], "bin": true }, - "rolldown@1.0.0-rc.9": { - "integrity": "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==", + "rolldown@1.0.0-beta.59": { + "integrity": "sha512-Slm000Gd8/AO9z4Kxl4r8mp/iakrbAuJ1L+7ddpkNxgQ+Vf37WPvY63l3oeyZcfuPD1DRrUYBsRPIXSOhvOsmw==", "dependencies": [ - "@oxc-project/types@0.115.0", - "@rolldown/pluginutils@1.0.0-rc.9" + "@oxc-project/types@0.107.0", + "@rolldown/pluginutils@1.0.0-beta.59" ], "optionalDependencies": [ - "@rolldown/binding-android-arm64@1.0.0-rc.9", - "@rolldown/binding-darwin-arm64@1.0.0-rc.9", - "@rolldown/binding-darwin-x64@1.0.0-rc.9", - "@rolldown/binding-freebsd-x64@1.0.0-rc.9", - "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9", - "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9", - "@rolldown/binding-linux-arm64-musl@1.0.0-rc.9", - "@rolldown/binding-linux-ppc64-gnu", - "@rolldown/binding-linux-s390x-gnu", - "@rolldown/binding-linux-x64-gnu@1.0.0-rc.9", - "@rolldown/binding-linux-x64-musl@1.0.0-rc.9", - "@rolldown/binding-openharmony-arm64@1.0.0-rc.9", - "@rolldown/binding-wasm32-wasi@1.0.0-rc.9", - "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9", - "@rolldown/binding-win32-x64-msvc@1.0.0-rc.9" + "@rolldown/binding-android-arm64@1.0.0-beta.59", + "@rolldown/binding-darwin-arm64@1.0.0-beta.59", + "@rolldown/binding-darwin-x64@1.0.0-beta.59", + "@rolldown/binding-freebsd-x64@1.0.0-beta.59", + "@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.59", + "@rolldown/binding-linux-arm64-gnu@1.0.0-beta.59", + "@rolldown/binding-linux-arm64-musl@1.0.0-beta.59", + "@rolldown/binding-linux-x64-gnu@1.0.0-beta.59", + "@rolldown/binding-linux-x64-musl@1.0.0-beta.59", + "@rolldown/binding-openharmony-arm64@1.0.0-beta.59", + "@rolldown/binding-wasm32-wasi@1.0.0-beta.59", + "@rolldown/binding-win32-arm64-msvc@1.0.0-beta.59", + "@rolldown/binding-win32-x64-msvc@1.0.0-beta.59" ], "bin": true }, - "rollup@4.59.0": { - "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "rollup@4.55.1": { + "integrity": "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==", "dependencies": [ "@types/estree" ], @@ -5676,6 +6306,12 @@ "tslib" ] }, + "sade@1.8.1": { + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": [ + "mri" + ] + }, "safe-buffer@5.2.1": { "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, @@ -5687,12 +6323,11 @@ "is-regex" ] }, - "safe-regex2@5.1.0": { - "integrity": "sha512-pNHAuBW7TrcleFHsxBr5QMi/Iyp0ENjUKz7GCcX1UO7cMh+NmVK6HxQckNL1tJp1XAJVjG6B8OKIPqodqj9rtw==", + "safe-regex2@5.0.0": { + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", "dependencies": [ "ret" - ], - "bin": true + ] }, "safe-stable-stringify@2.5.0": { "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==" @@ -5700,14 +6335,18 @@ "safer-buffer@2.1.2": { "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sax@1.6.0": { - "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==" + "sax@1.4.4": { + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==" }, "secure-json-parse@4.1.0": { "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==" }, - "semver@7.7.4": { - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "semver@6.3.1": { + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": true + }, + "semver@7.7.3": { + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "bin": true }, "send@0.19.2": { @@ -5759,9 +6398,6 @@ "set-cookie-parser@2.7.2": { "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==" }, - "set-cookie-parser@3.0.1": { - "integrity": "sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==" - }, "setimmediate@1.0.5": { "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, @@ -5773,7 +6409,7 @@ "dependencies": [ "color", "detect-libc", - "semver" + "semver@7.7.3" ], "optionalDependencies": [ "@img/sharp-darwin-arm64@0.33.5", @@ -5803,7 +6439,7 @@ "dependencies": [ "@img/colour", "detect-libc", - "semver" + "semver@7.7.3" ], "optionalDependencies": [ "@img/sharp-darwin-arm64@0.34.5", @@ -5933,8 +6569,8 @@ "smol-toml@1.6.0": { "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==" }, - "sonic-boom@4.2.1": { - "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==", + "sonic-boom@4.2.0": { + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", "dependencies": [ "atomic-sleep" ] @@ -5989,7 +6625,7 @@ "dependencies": [ "emoji-regex@10.6.0", "get-east-asian-width", - "strip-ansi@7.2.0" + "strip-ansi@7.1.2" ] }, "string_decoder@1.3.0": { @@ -6011,8 +6647,8 @@ "ansi-regex@5.0.1" ] }, - "strip-ansi@7.2.0": { - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "strip-ansi@7.1.2": { + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dependencies": [ "ansi-regex@6.2.2" ] @@ -6023,7 +6659,7 @@ "strip-literal@3.1.0": { "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", "dependencies": [ - "js-tokens" + "js-tokens@9.0.1" ] }, "strtok3@10.3.4": { @@ -6058,16 +6694,15 @@ "has-flag" ] }, - "svelte@5.53.12": { - "integrity": "sha512-4x/uk4rQe/d7RhfvS8wemTfNjQ0bJbKvamIzRBfTe2eHHjzBZ7PZicUQrC2ryj83xxEacfA1zHKd1ephD1tAxA==", + "svelte@5.46.1_acorn@8.15.0": { + "integrity": "sha512-ynjfCHD3nP2el70kN5Pmg37sSi0EjOm9FgHYQdC4giWG/hzO3AatzXXJJgP305uIhGQxSufJLuYWtkY8uK/8RA==", "dependencies": [ "@jridgewell/remapping", "@jridgewell/sourcemap-codec", "@sveltejs/acorn-typescript", "@types/estree", - "@types/trusted-types", - "acorn@8.16.0", - "aria-query@5.3.1", + "acorn@8.15.0", + "aria-query", "axobject-query", "clsx", "devalue", @@ -6079,12 +6714,12 @@ "zimmerframe" ] }, - "svgo@4.0.1": { - "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", + "svgo@4.0.0": { + "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", "dependencies": [ "commander", "css-select", - "css-tree@3.2.1", + "css-tree@3.1.0", "css-what", "csso", "picocolors", @@ -6104,8 +6739,8 @@ "any-promise" ] }, - "thread-stream@4.0.0": { - "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", + "thread-stream@3.1.0": { + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", "dependencies": [ "real-require" ] @@ -6122,10 +6757,10 @@ "tinyexec@0.3.2": { "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" }, - "tinyexec@1.0.4": { - "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==" + "tinyexec@1.0.2": { + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==" }, - "tinyglobby@0.2.15": { + "tinyglobby@0.2.15_picomatch@4.0.3": { "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dependencies": [ "fdir", @@ -6190,17 +6825,11 @@ "typescript" ] }, - "tsconfck@3.1.6_typescript@5.9.3": { + "tsconfck@3.1.6": { "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", - "dependencies": [ - "typescript" - ], - "optionalPeers": [ - "typescript" - ], "bin": true }, - "tsdown@0.18.4_typescript@5.9.3": { + "tsdown@0.18.4_rolldown@1.0.0-beta.57": { "integrity": "sha512-J/tRS6hsZTkvqmt4+xdELUCkQYDuUCXgBv0fw3ImV09WPGbEKfsPD65E+WUjSu3E7Z6tji9XZ1iWs8rbGqB/ZA==", "dependencies": [ "ansis", @@ -6213,17 +6842,13 @@ "picomatch@4.0.3", "rolldown@1.0.0-beta.57", "rolldown-plugin-dts", - "semver", - "tinyexec@1.0.4", + "semver@7.7.3", + "tinyexec@1.0.2", "tinyglobby", "tree-kill", - "typescript", "unconfig-core", "unrun" ], - "optionalPeers": [ - "typescript" - ], "bin": true }, "tslib@2.8.1": { @@ -6235,7 +6860,7 @@ "tsx@4.21.0": { "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dependencies": [ - "esbuild@0.27.4", + "esbuild@0.27.3", "get-tsconfig" ], "optionalDependencies": [ @@ -6287,8 +6912,8 @@ "ultrahtml@1.6.0": { "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==" }, - "unconfig-core@7.5.0": { - "integrity": "sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==", + "unconfig-core@7.4.2": { + "integrity": "sha512-VgPCvLWugINbXvMQDf8Jh0mlbvNjNC6eSUziHsBCMpxR05OPrNrvDnyatdMjRgcHaaNsCqz+wjNXxNw1kRLHUg==", "dependencies": [ "@quansync/fs", "quansync" @@ -6303,11 +6928,11 @@ "undici-types@7.16.0": { "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==" }, - "undici@6.24.1": { - "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==" + "undici@6.23.0": { + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==" }, - "undici@7.18.2": { - "integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==" + "undici@7.14.0": { + "integrity": "sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==" }, "unenv@2.0.0-rc.21": { "integrity": "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==", @@ -6334,7 +6959,7 @@ "unifont@0.7.4": { "integrity": "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==", "dependencies": [ - "css-tree@3.2.1", + "css-tree@3.1.0", "ofetch", "ohash" ] @@ -6391,8 +7016,8 @@ "unist-util-is" ] }, - "unist-util-visit@5.1.0": { - "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "unist-util-visit@5.0.0": { + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dependencies": [ "@types/unist", "unist-util-is", @@ -6402,14 +7027,14 @@ "unpipe@1.0.0": { "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, - "unrun@0.2.32": { - "integrity": "sha512-opd3z6791rf281JdByf0RdRQrpcc7WyzqittqIXodM/5meNWdTwrVxeyzbaCp4/Rgls/um14oUaif1gomO8YGg==", + "unrun@0.2.24": { + "integrity": "sha512-xa4/O5q2jmI6EqxweJ+sOy5cyORZWcsgmi8pmABVSUyg24Fh44qJrneUHavZEMsbJbghHYWKSraFy5hDCb/m4w==", "dependencies": [ - "rolldown@1.0.0-rc.9" + "rolldown@1.0.0-beta.59" ], "bin": true }, - "unstorage@1.17.4_ioredis@5.10.0": { + "unstorage@1.17.4_ioredis@5.9.1": { "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", "dependencies": [ "anymatch", @@ -6417,7 +7042,7 @@ "destr", "h3", "ioredis", - "lru-cache@11.2.7", + "lru-cache@11.2.6", "node-fetch-native", "ofetch", "ufo" @@ -6426,6 +7051,15 @@ "ioredis" ] }, + "update-browserslist-db@1.2.3_browserslist@4.28.1": { + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dependencies": [ + "browserslist", + "escalade", + "picocolors" + ], + "bin": true + }, "uri-js@4.4.1": { "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": [ @@ -6454,14 +7088,8 @@ "utils-merge@1.0.1": { "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, - "valibot@1.3.0_typescript@5.9.3": { - "integrity": "sha512-SItIaOFnWYho/AcRU5gOtyfkTsuDTC3tRv+jy4/py8xERPnvHdM+ybD1iIqWTATVWG1nZetOfwZKq5upBjSqzw==", - "dependencies": [ - "typescript" - ], - "optionalPeers": [ - "typescript" - ] + "valibot@1.2.0": { + "integrity": "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==" }, "varint@6.0.0": { "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" @@ -6490,21 +7118,21 @@ "vfile-message" ] }, - "vite-node@3.2.4_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { + "vite-node@3.2.4_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dependencies": [ "cac", "debug@4.4.3", "es-module-lexer", "pathe", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" ], "bin": true }, - "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { + "vite@6.4.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3": { "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dependencies": [ - "@types/node@24.12.0", + "@types/node@22.19.3", "esbuild@0.25.12", "fdir", "picomatch@4.0.3", @@ -6518,17 +7146,17 @@ "fsevents" ], "optionalPeers": [ - "@types/node@24.12.0", + "@types/node@22.19.3", "tsx", "yaml" ], "bin": true }, - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3": { "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dependencies": [ - "@types/node@24.12.0", - "esbuild@0.27.4", + "@types/node@22.19.3", + "esbuild@0.27.3", "fdir", "picomatch@4.0.3", "postcss", @@ -6541,35 +7169,35 @@ "fsevents" ], "optionalPeers": [ - "@types/node@24.12.0", + "@types/node@22.19.3", "tsx", "yaml" ], "bin": true }, - "vitefu@1.1.2_vite@6.4.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==", + "vitefu@1.1.1_vite@6.4.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", "dependencies": [ - "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" + "vite@6.4.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" ], "optionalPeers": [ - "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" + "vite@6.4.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" ] }, - "vitefu@1.1.2_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.2_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { - "integrity": "sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==", + "vitefu@1.1.1_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2": { + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", "dependencies": [ - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" ], "optionalPeers": [ - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2" + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3" ] }, - "vitest@3.2.4_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2": { + "vitest@3.2.4_@types+node@22.19.3_vite@7.3.1__@types+node@22.19.3__tsx@4.21.0__yaml@2.8.2__picomatch@4.0.3_tsx@4.21.0_yaml@2.8.2": { "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dependencies": [ "@types/chai", - "@types/node@24.12.0", + "@types/node@22.19.3", "@vitest/expect", "@vitest/mocker", "@vitest/pretty-format", @@ -6589,12 +7217,12 @@ "tinyglobby", "tinypool", "tinyrainbow", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.2", + "vite@7.3.1_@types+node@22.19.3_tsx@4.21.0_yaml@2.8.2_picomatch@4.0.3", "vite-node", "why-is-node-running" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@22.19.3" ], "bin": true }, @@ -6647,28 +7275,16 @@ "workerd@1.20250906.0": { "integrity": "sha512-ryVyEaqXPPsr/AxccRmYZZmDAkfQVjhfRqrNTlEeN8aftBk6Ca1u7/VqmfOayjCXrA+O547TauebU+J3IpvFXw==", "optionalDependencies": [ - "@cloudflare/workerd-darwin-64@1.20250906.0", - "@cloudflare/workerd-darwin-arm64@1.20250906.0", - "@cloudflare/workerd-linux-64@1.20250906.0", - "@cloudflare/workerd-linux-arm64@1.20250906.0", - "@cloudflare/workerd-windows-64@1.20250906.0" + "@cloudflare/workerd-darwin-64", + "@cloudflare/workerd-darwin-arm64", + "@cloudflare/workerd-linux-64", + "@cloudflare/workerd-linux-arm64", + "@cloudflare/workerd-windows-64" ], "scripts": true, "bin": true }, - "workerd@1.20260312.1": { - "integrity": "sha512-nNpPkw9jaqo79B+iBCOiksx+N62xC+ETIfyzofUEdY3cSOHJg6oNnVSHm7vHevzVblfV76c8Gr0cXHEapYMBEg==", - "optionalDependencies": [ - "@cloudflare/workerd-darwin-64@1.20260312.1", - "@cloudflare/workerd-darwin-arm64@1.20260312.1", - "@cloudflare/workerd-linux-64@1.20260312.1", - "@cloudflare/workerd-linux-arm64@1.20260312.1", - "@cloudflare/workerd-windows-64@1.20260312.1" - ], - "scripts": true, - "bin": true - }, - "wrangler@4.35.0_@cloudflare+workers-types@4.20260317.1": { + "wrangler@4.35.0_@cloudflare+workers-types@4.20260109.0_unenv@2.0.0-rc.21_workerd@1.20250906.0": { "integrity": "sha512-HbyXtbrh4Fi3mU8ussY85tVdQ74qpVS1vctUgaPc+bPrXBTqfDLkZ6VRtHAVF/eBhz4SFmhJtCQpN1caY2Ak8A==", "dependencies": [ "@cloudflare/kv-asset-handler", @@ -6676,10 +7292,10 @@ "@cloudflare/workers-types", "blake3-wasm", "esbuild@0.25.4", - "miniflare@4.20250906.0", + "miniflare", "path-to-regexp@6.3.0", "unenv", - "workerd@1.20250906.0" + "workerd" ], "optionalDependencies": [ "fsevents" @@ -6710,7 +7326,7 @@ "dependencies": [ "ansi-styles@6.2.3", "string-width@7.2.0", - "strip-ansi@7.2.0" + "strip-ansi@7.1.2" ] }, "ws@8.18.0": { @@ -6735,6 +7351,9 @@ "y18n@5.0.8": { "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, + "yallist@3.1.1": { + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, "yallist@4.0.0": { "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, From 7e1d7d2188f702552656f1905c940ff2710c4235 Mon Sep 17 00:00:00 2001 From: Jiwon Kwon Date: Fri, 6 Mar 2026 16:16:49 +0900 Subject: [PATCH 5/7] Simplify parseRecipient return type and call sites Remove redundant `id` field from parseRecipient and use explicit destructuring at call sites for clearer data flow. Co-Authored-By: Claude Opus 4.6 --- test/smoke/harness/backdoor.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/test/smoke/harness/backdoor.ts b/test/smoke/harness/backdoor.ts index 42b576877..316e826c2 100644 --- a/test/smoke/harness/backdoor.ts +++ b/test/smoke/harness/backdoor.ts @@ -14,12 +14,12 @@ function json(data: unknown, status = 200): Response { // actor URI and inbox URL directly. function parseRecipient( handle: string, -): { id: URL; inboxId: URL; actorId: URL } { +): { inboxId: URL; actorId: URL } { const [user, domain] = handle.split("@"); const inboxId = new URL(`http://${domain}/users/${user}/inbox`); // Mastodon generates https:// actor URIs; use that as the canonical id const actorId = new URL(`https://${domain}/users/${user}`); - return { id: actorId, inboxId, actorId }; + return { inboxId, actorId }; } export async function handleBackdoor( @@ -56,7 +56,8 @@ export async function handleBackdoor( undefined as void, ); - const { actorId, ...recipient } = parseRecipient(to); + const { actorId, inboxId } = parseRecipient(to); + const recipient = { id: actorId, inboxId }; const noteId = crypto.randomUUID(); const note = new Note({ @@ -98,7 +99,8 @@ export async function handleBackdoor( undefined as void, ); - const { actorId, ...recipient } = parseRecipient(target); + const { actorId, inboxId } = parseRecipient(target); + const recipient = { id: actorId, inboxId }; const follow = new Follow({ id: new URL( @@ -131,7 +133,8 @@ export async function handleBackdoor( undefined as void, ); - const { actorId, ...recipient } = parseRecipient(target); + const { actorId, inboxId } = parseRecipient(target); + const recipient = { id: actorId, inboxId }; const undo = new Undo({ id: new URL( From c2ef8e731bc6a92f5d3265f73e7af54e1a853c5e Mon Sep 17 00:00:00 2001 From: Jiwon Kwon Date: Thu, 12 Mar 2026 17:01:14 +0900 Subject: [PATCH 6/7] Address Codex review feedback on smoke tests Fix reply test to send a real reply by finding an existing Fedify note on the Mastodon timeline and passing its id as in_reply_to_id. Previously the test only posted a top-level status, so it could pass even when reply federation was broken. Fix connectivity verification step to fail when health probes fail. The previous `curl ... && echo OK || echo FAIL` pattern always exited successfully because the final echo returned 0. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/smoke-mastodon.yml | 6 ++++-- test/smoke/orchestrator.ts | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/smoke-mastodon.yml b/.github/workflows/smoke-mastodon.yml index 3a9286816..6a01fdf96 100644 --- a/.github/workflows/smoke-mastodon.yml +++ b/.github/workflows/smoke-mastodon.yml @@ -68,11 +68,13 @@ jobs: run: | echo "=== Harness health (from mastodon-web) ===" docker compose -f test/smoke/mastodon/docker-compose.yml exec -T mastodon-web \ - curl -sf http://fedify-harness:3001/_test/health && echo " OK" || echo " FAIL" + curl -sf http://fedify-harness:3001/_test/health + echo " OK" echo "=== Harness health (from mastodon-sidekiq) ===" docker compose -f test/smoke/mastodon/docker-compose.yml exec -T mastodon-sidekiq \ - curl -sf http://fedify-harness:3001/_test/health && echo " OK" || echo " FAIL" + curl -sf http://fedify-harness:3001/_test/health + echo " OK" - name: Run smoke tests run: | diff --git a/test/smoke/orchestrator.ts b/test/smoke/orchestrator.ts index 446bf8df5..f6058a4f3 100644 --- a/test/smoke/orchestrator.ts +++ b/test/smoke/orchestrator.ts @@ -263,11 +263,22 @@ async function testCreateNote(): Promise { async function testReply(): Promise { await harnessPost("/_test/reset"); + // Find a note from the Fedify harness on the Mastodon timeline to reply to. + type Status = { id: string; content: string; account: { acct: string } }; + const parent = await poll("find Fedify note to reply to", async () => { + const statuses = await serverGet( + "/api/v1/timelines/home?limit=20", + ) as Status[]; + return statuses.find((s) => s.account.acct.includes(HARNESS_HOST)) ?? + null; + }); + const handle = `@testuser@${HARNESS_HOST}`; const replyContent = `Reply smoke test ${Date.now()} ${handle}`; await serverPost("/api/v1/statuses", { status: replyContent, + in_reply_to_id: parent.id, }); await pollHarnessInbox("Create"); From 7c5cecace5c88eaac6408d822260bf8bacace33d Mon Sep 17 00:00:00 2001 From: Jiwon Kwon Date: Tue, 17 Mar 2026 19:07:50 +0900 Subject: [PATCH 7/7] Strengthen smoke test assertions and scenario isolation Store inReplyTo and content from Note objects in the harness inbox so the reply scenario can verify the correct parent URI instead of only checking that a Create activity arrived. Replace timestamp-based inbox filtering with ID-snapshot isolation: before each scenario's triggering action, capture existing activity IDs and exclude them when polling. This avoids clock-skew and same-millisecond issues across containers. The reply scenario additionally correlates on a unique content token (UUID) embedded in the status text. Co-Authored-By: Claude Opus 4.6 --- test/smoke/harness/federation.ts | 9 ++++- test/smoke/harness/store.ts | 2 + test/smoke/orchestrator.ts | 63 +++++++++++++++++++++++++++----- 3 files changed, 63 insertions(+), 11 deletions(-) diff --git a/test/smoke/harness/federation.ts b/test/smoke/harness/federation.ts index baac0f982..5332681e1 100644 --- a/test/smoke/harness/federation.ts +++ b/test/smoke/harness/federation.ts @@ -1,6 +1,6 @@ import { createFederation, MemoryKvStore } from "@fedify/fedify/federation"; import { generateCryptoKeyPair } from "@fedify/fedify/sig"; -import { Accept, Activity, Create, Follow, Person } from "@fedify/vocab"; +import { Accept, Activity, Create, Follow, Note, Person } from "@fedify/vocab"; import { store } from "./store.ts"; const ORIGIN = Deno.env.get("HARNESS_ORIGIN") ?? @@ -67,11 +67,16 @@ federation { immediate: true }, ); }) - .on(Create, (_ctx, create) => { + .on(Create, async (_ctx, create) => { + const object = await create.getObject(); store.push({ id: create.id?.href ?? crypto.randomUUID(), type: "Create", receivedAt: new Date().toISOString(), + inReplyTo: object instanceof Note + ? object.replyTargetId?.href + : undefined, + content: object instanceof Note ? object.content?.toString() : undefined, }); }) .on(Activity, (_ctx, activity) => { diff --git a/test/smoke/harness/store.ts b/test/smoke/harness/store.ts index 19de3402f..7ac825eb9 100644 --- a/test/smoke/harness/store.ts +++ b/test/smoke/harness/store.ts @@ -2,6 +2,8 @@ export interface ReceivedActivity { id: string; type: string; receivedAt: string; + inReplyTo?: string; + content?: string; } const inbox: ReceivedActivity[] = []; diff --git a/test/smoke/orchestrator.ts b/test/smoke/orchestrator.ts index f6058a4f3..c59882acd 100644 --- a/test/smoke/orchestrator.ts +++ b/test/smoke/orchestrator.ts @@ -52,13 +52,31 @@ async function poll( throw new Error(`Timed out waiting for: ${label}${suffix}`); } +type InboxItem = { + type: string; + id: string; + receivedAt: string; + inReplyTo?: string; + content?: string; +}; + +async function snapshotInboxIds(): Promise> { + const res = await fetch(`${HARNESS_URL}/_test/inbox`); + const items = await res.json() as InboxItem[]; + return new Set(items.map((a) => a.id)); +} + function pollHarnessInbox( activityType: string, -): Promise<{ type: string; id: string }> { + filter?: (item: InboxItem) => boolean, +): Promise { return poll(`${activityType} in harness inbox`, async () => { const res = await fetch(`${HARNESS_URL}/_test/inbox`); - const items = await res.json() as { type: string; id: string }[]; - return items.find((a) => a.type === activityType) ?? null; + const items = await res.json() as InboxItem[]; + return items.find((a) => + a.type === activityType && + (!filter || filter(a)) + ) ?? null; }); } @@ -195,9 +213,10 @@ async function testFollowMastodonToFedify(): Promise { const accountId = await lookupFedifyAccount(); await ensureNotFollowing(accountId, "following"); await assertNotFollowing(accountId, "following"); + const knownIds = await snapshotInboxIds(); await serverPost(`/api/v1/accounts/${accountId}/follow`); - await pollHarnessInbox("Follow"); + await pollHarnessInbox("Follow", (a) => !knownIds.has(a.id)); await poll("follow accepted", async () => { const rels = await serverGet( @@ -217,6 +236,7 @@ async function testFollowFedifyToMastodon(): Promise { const accountId = await lookupFedifyAccount(); await ensureNotFollowing(accountId, "followed_by"); await assertNotFollowing(accountId, "followed_by"); + const knownIds = await snapshotInboxIds(); await harnessPost("/_test/follow", { target: `testuser@${SERVER_INTERNAL_HOST}`, @@ -230,7 +250,7 @@ async function testFollowFedifyToMastodon(): Promise { return rel?.followed_by ? rel : null; }); - await pollHarnessInbox("Accept"); + await pollHarnessInbox("Accept", (a) => !knownIds.has(a.id)); } // --------------------------------------------------------------------------- @@ -264,7 +284,12 @@ async function testReply(): Promise { await harnessPost("/_test/reset"); // Find a note from the Fedify harness on the Mastodon timeline to reply to. - type Status = { id: string; content: string; account: { acct: string } }; + type Status = { + id: string; + content: string; + uri: string; + account: { acct: string }; + }; const parent = await poll("find Fedify note to reply to", async () => { const statuses = await serverGet( "/api/v1/timelines/home?limit=20", @@ -273,15 +298,34 @@ async function testReply(): Promise { null; }); + const token = `smoke-reply-${crypto.randomUUID()}`; const handle = `@testuser@${HARNESS_HOST}`; - const replyContent = `Reply smoke test ${Date.now()} ${handle}`; + const replyContent = `${token} ${handle}`; + + const knownIds = await snapshotInboxIds(); await serverPost("/api/v1/statuses", { status: replyContent, in_reply_to_id: parent.id, }); - await pollHarnessInbox("Create"); + const received = await pollHarnessInbox( + "Create", + (a) => !knownIds.has(a.id) && !!a.content?.includes(token), + ); + + if (!received.inReplyTo) { + throw new Error( + "Received Create activity has no inReplyTo — " + + "cannot distinguish reply from plain mention", + ); + } + if (received.inReplyTo !== parent.uri) { + throw new Error( + `inReplyTo mismatch: expected ${parent.uri}, ` + + `got ${received.inReplyTo}`, + ); + } } // --------------------------------------------------------------------------- @@ -290,11 +334,12 @@ async function testReply(): Promise { async function testUnfollowMastodonFromFedify(): Promise { await harnessPost("/_test/reset"); + const knownIds = await snapshotInboxIds(); const accountId = await lookupFedifyAccount(); await serverPost(`/api/v1/accounts/${accountId}/unfollow`); - await pollHarnessInbox("Undo"); + await pollHarnessInbox("Undo", (a) => !knownIds.has(a.id)); await poll("unfollow confirmed", async () => { const rels = await serverGet(