diff --git a/.agents/skills/create-example-app-with-integration/example/public/style.css b/.agents/skills/create-example-app-with-integration/example/public/style.css index 3d8b3e6e5..6cd70d7b7 100644 --- a/.agents/skills/create-example-app-with-integration/example/public/style.css +++ b/.agents/skills/create-example-app-with-integration/example/public/style.css @@ -20,8 +20,9 @@ body { background: var(--background); color: var(--foreground); font-size: 16px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - Oxygen, Ubuntu, Cantarell, sans-serif; + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, + Cantarell, sans-serif; } a { diff --git a/.agents/skills/create-example-app-with-integration/example/public/theme.js b/.agents/skills/create-example-app-with-integration/example/public/theme.js index 8d521d625..7b20d9638 100644 --- a/.agents/skills/create-example-app-with-integration/example/public/theme.js +++ b/.agents/skills/create-example-app-with-integration/example/public/theme.js @@ -1,5 +1,5 @@ "use strict"; -var mq = window.matchMedia("(prefers-color-scheme: dark)"); +const mq = globalThis.matchMedia("(prefers-color-scheme: dark)"); document.body.classList.add(mq.matches ? "dark" : "light"); mq.addEventListener("change", function (e) { document.body.classList.remove("light", "dark"); diff --git a/.agents/skills/create-example-app-with-integration/example/src/federation.ts b/.agents/skills/create-example-app-with-integration/example/src/federation.ts index 898a7c91b..b9b2d32af 100644 --- a/.agents/skills/create-example-app-with-integration/example/src/federation.ts +++ b/.agents/skills/create-example-app-with-integration/example/src/federation.ts @@ -46,6 +46,7 @@ federation }); }, ) + .mapHandle((_, username) => username === IDENTIFIER ? IDENTIFIER : null) .setKeyPairsDispatcher(async (_, identifier) => { if (identifier != IDENTIFIER) { return []; @@ -54,9 +55,11 @@ federation if (keyPairs) { return keyPairs; } - const { privateKey, publicKey } = await generateCryptoKeyPair(); - keyPairsStore.set(identifier, [{ privateKey, publicKey }]); - return [{ privateKey, publicKey }]; + const rsa = await generateCryptoKeyPair("RSASSA-PKCS1-v1_5"); + const ed25519 = await generateCryptoKeyPair("Ed25519"); + const newKeyPairs = [rsa, ed25519]; + keyPairsStore.set(identifier, newKeyPairs); + return newKeyPairs; }); federation diff --git a/deno.lock b/deno.lock index 0a79f5092..7f2628187 100644 --- a/deno.lock +++ b/deno.lock @@ -2,28 +2,27 @@ "version": "5", "specifiers": { "jsr:@alinea/suite@~0.6.3": "0.6.3", - "jsr:@david/console-static-text@0.3": "0.3.0", + "jsr:@david/console-static-text@0.3": "0.3.4", "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:@david/which@~0.4.1": "0.4.2", "jsr:@deno/esbuild-plugin@^1.2.0": "1.2.1", - "jsr:@deno/loader@~0.3.10": "0.3.11", - "jsr:@deno/loader@~0.3.2": "0.3.11", + "jsr:@deno/loader@~0.3.10": "0.3.14", + "jsr:@deno/loader@~0.3.2": "0.3.14", "jsr:@fresh/build-id@1": "1.0.1", - "jsr:@fresh/core@2": "2.2.0", - "jsr:@fresh/core@^2.1.4": "2.2.2", - "jsr:@fresh/core@^2.2.0": "2.2.0", + "jsr:@fresh/core@2": "2.3.0", + "jsr:@fresh/core@^2.1.4": "2.3.0", + "jsr:@fresh/core@^2.2.0": "2.3.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.4", - "jsr:@hono/hono@^4.8.3": "4.12.12", + "jsr:@hono/hono@^4.7.1": "4.12.15", + "jsr:@hono/hono@^4.8.3": "4.12.15", "jsr:@logtape/file@^2.0.5": "2.0.5", "jsr:@logtape/logtape@^1.0.4": "1.3.7", "jsr:@logtape/logtape@^2.0.5": "2.0.5", "jsr:@optique/config@^1.0.2": "1.0.2", "jsr:@optique/core@^1.0.2": "1.0.2", "jsr:@optique/run@^1.0.2": "1.0.2", - "jsr:@standard-schema/spec@^1.1.0": "1.1.0", "jsr:@std/assert@0.224": "0.224.0", "jsr:@std/assert@0.226": "0.226.0", "jsr:@std/assert@^1.0.13": "1.0.19", @@ -32,22 +31,23 @@ "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/fmt@1": "1.0.10", + "jsr:@std/fmt@^1.0.7": "1.0.10", + "jsr:@std/fmt@^1.0.8": "1.0.10", "jsr:@std/fs@0.224": "0.224.0", "jsr:@std/fs@1": "1.0.23", "jsr:@std/fs@^1.0.19": "1.0.23", "jsr:@std/fs@^1.0.3": "1.0.23", - "jsr:@std/html@^1.0.5": "1.0.5", - "jsr:@std/http@^1.0.21": "1.0.25", + "jsr:@std/html@^1.0.5": "1.0.6", + "jsr:@std/http@^1.0.21": "1.1.0", "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/internal@1": "1.0.13", + "jsr:@std/internal@^1.0.12": "1.0.13", "jsr:@std/io@0.225": "0.225.3", "jsr:@std/json@^1.0.2": "1.0.3", "jsr:@std/jsonc@^1.0.2": "1.0.2", "jsr:@std/media-types@^1.1.0": "1.1.0", + "jsr:@std/net@^1.0.6": "1.0.6", "jsr:@std/path@0.224": "0.224.0", "jsr:@std/path@1": "1.1.4", "jsr:@std/path@^1.0.6": "1.1.4", @@ -58,55 +58,53 @@ "jsr:@std/semver@^1.0.6": "1.0.8", "jsr:@std/testing@0.224": "0.224.0", "jsr:@std/uuid@^1.0.9": "1.1.0", - "jsr:@std/yaml@^1.0.8": "1.0.12", "jsr:@valibot/valibot@^1.2.0": "1.3.1", "npm:@alinea/suite@~0.6.3": "0.6.3", - "npm:@astrojs/node@^10.0.3": "10.0.4_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.2__yaml@2.8.3_@types+node@24.12.0_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.2_yaml@2.8.3", + "npm:@astrojs/node@^10.0.3": "10.0.5_astro@5.18.1__@types+node@24.12.2__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.3__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3", "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:@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.3_@cloudflare+workers-types@4.20260403.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", - "npm:@cloudflare/workers-types@^4.20250529.0": "4.20260403.1", - "npm:@cloudflare/workers-types@^4.20250906.0": "4.20260403.1", - "npm:@deno/astro-adapter@~0.3.2": "0.3.2_@opentelemetry+api@1.9.1_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.2__yaml@2.8.3_@types+node@24.12.0_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.2_yaml@2.8.3", + "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.2__tsx@4.21.0__yaml@2.8.3_@cloudflare+workers-types@4.20260417.1_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", + "npm:@cloudflare/workers-types@^4.20250529.0": "4.20260417.1", + "npm:@cloudflare/workers-types@^4.20250906.0": "4.20260417.1", + "npm:@deno/astro-adapter@~0.3.2": "0.3.2_@opentelemetry+api@1.9.1_astro@5.18.1__@types+node@24.12.2__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.3__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3", "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@24.12.0", - "npm:@jimp/core@^1.6.0": "1.6.0", - "npm:@jimp/wasm-webp@^1.6.0": "1.6.0", + "npm:@inquirer/prompts@^7.8.4": "7.10.1_@types+node@24.12.2", + "npm:@jimp/core@^1.6.0": "1.6.1", + "npm:@jimp/wasm-webp@^1.6.0": "1.6.1", "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:@nurodev/astro-bun@^2.1.2": "2.1.2_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.2__yaml@2.8.3", + "npm:@nestjs/common@^11.0.1": "11.1.19_reflect-metadata@0.2.2_rxjs@7.8.2", + "npm:@nurodev/astro-bun@^2.1.2": "2.1.2_astro@5.18.1__@types+node@24.12.2__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.3__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3", "npm:@nuxt/kit@4": "4.4.2", "npm:@nuxt/schema@4": "4.4.2", "npm:@opentelemetry/api@^1.9.0": "1.9.1", - "npm:@opentelemetry/context-async-hooks@^2.5.0": "2.6.1_@opentelemetry+api@1.9.1", - "npm:@opentelemetry/core@^2.5.0": "2.6.1_@opentelemetry+api@1.9.1", - "npm:@opentelemetry/sdk-trace-base@^2.5.0": "2.6.1_@opentelemetry+api@1.9.1", + "npm:@opentelemetry/context-async-hooks@^2.5.0": "2.7.0_@opentelemetry+api@1.9.1", + "npm:@opentelemetry/core@^2.5.0": "2.7.0_@opentelemetry+api@1.9.1", + "npm:@opentelemetry/sdk-trace-base@^2.5.0": "2.7.0_@opentelemetry+api@1.9.1", "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.9.0_preact@10.29.0", - "npm:@preact/signals@^2.3.2": "2.9.0_preact@10.29.0", - "npm:@preact/signals@^2.5.1": "2.9.0_preact@10.29.0", - "npm:@prefresh/vite@^2.4.8": "2.4.12_preact@10.29.0_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3", - "npm:@solidjs/start@^1.3.0": "1.3.2_vinxi@0.5.11__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2__@types+node@24.12.0__ioredis@5.10.1__mysql2@3.20.0___@types+node@24.12.0__rolldown@1.0.0-rc.12___@emnapi+core@1.9.2___@emnapi+runtime@1.9.2__tsx@4.21.0__yaml@2.8.3_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2_@types+node@24.12.0_ioredis@5.10.1_mysql2@3.20.0__@types+node@24.12.0_rolldown@1.0.0-rc.12__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2_solid-js@1.9.12_tsx@4.21.0_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_yaml@2.8.3", + "npm:@preact/signals@^2.3.2": "2.9.0_preact@10.29.1", + "npm:@preact/signals@^2.5.1": "2.9.0_preact@10.29.1", + "npm:@prefresh/vite@^2.4.8": "2.4.12_preact@10.29.1_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3", + "npm:@solidjs/start@^1.3.0": "1.3.2_vinxi@0.5.11__@types+node@24.12.2__ioredis@5.10.1__mysql2@3.22.1___@types+node@24.12.2__rolldown@1.0.0-rc.16__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_mysql2@3.22.1__@types+node@24.12.2_rolldown@1.0.0-rc.16_solid-js@1.9.12_tsx@4.21.0_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_yaml@2.8.3", "npm:@standard-schema/spec@^1.1.0": "1.1.0", - "npm:@sveltejs/kit@2": "2.55.0_@opentelemetry+api@1.9.1_@sveltejs+vite-plugin-svelte@7.0.0__svelte@5.55.1__vite@7.3.1___@types+node@24.12.0___tsx@4.21.0___yaml@2.8.3__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_svelte@5.55.1_typescript@6.0.2_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", + "npm:@sveltejs/kit@2": "2.57.1_@opentelemetry+api@1.9.1_@sveltejs+vite-plugin-svelte@7.0.0__svelte@5.55.4__vite@7.3.2___@types+node@24.12.2___tsx@4.21.0___yaml@2.8.3__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_svelte@5.55.4_typescript@6.0.3_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", "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.58.0_eslint@9.39.4_typescript@6.0.2", - "npm:@typescript-eslint/utils@8": "8.58.0_eslint@9.39.4_typescript@6.0.2", + "npm:@types/node@^22.16.0": "22.19.17", + "npm:@types/node@^24.2.1": "24.12.2", + "npm:@typescript-eslint/parser@^8.49.0": "8.58.2_eslint@9.39.4_typescript@6.0.3", + "npm:@typescript-eslint/utils@8": "8.58.2_eslint@9.39.4_typescript@6.0.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.1_tsx@4.21.0_typescript@6.0.2_yaml@2.8.3", + "npm:astro@^5.17.3": "5.18.1_@types+node@24.12.2_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3", "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", @@ -125,55 +123,54 @@ "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.4", + "npm:fastify@^5.2.0": "5.8.5", "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.11", - "npm:hono@^4.8.3": "4.12.10", + "npm:hono@^4.8.3": "4.12.14", "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@24.12.0", + "npm:inquirer@^12.9.4": "12.11.1_@types+node@24.12.2", "npm:ioredis@^5.8.2": "5.10.1", - "npm:jimp@^1.6.0": "1.6.0", + "npm:jimp@^1.6.0": "1.6.1", "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.20250906.0", - "npm:mysql2@^3.18.0": "3.20.0_@types+node@24.12.0", + "npm:mysql2@^3.18.0": "3.22.1_@types+node@24.12.2", "npm:ora@^8.2.0": "8.2.0", "npm:pkijs@^3.2.5": "3.4.0", "npm:pkijs@^3.3.3": "3.4.0", - "npm:postgres@^3.4.7": "3.4.8", - "npm:preact-render-to-string@^6.6.3": "6.6.5_preact@10.29.0", + "npm:postgres@^3.4.7": "3.4.9", + "npm:preact-render-to-string@^6.6.3": "6.6.7_preact@10.29.1", "npm:preact@10.19.6": "10.19.6", - "npm:preact@^10.27.0": "10.29.0", - "npm:preact@^10.27.2": "10.29.0", - "npm:preact@^10.28.2": "10.29.0", - "npm:preact@^10.28.3": "10.29.0", + "npm:preact@^10.27.2": "10.29.1", + "npm:preact@^10.28.2": "10.29.1", + "npm:preact@^10.29.1": "10.29.1", "npm:rollup@^4.50.0": "4.60.1", "npm:shiki@^1.6.4": "1.29.2", "npm:smol-toml@^1.6.0": "1.6.1", "npm:srvx@~0.8.7": "0.8.16", "npm:structured-field-values@^2.0.4": "2.0.4", - "npm:tsdown@~0.21.6": "0.21.7_typescript@6.0.2_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2", + "npm:tsdown@~0.21.6": "0.21.9_typescript@6.0.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.3.1_typescript@6.0.2", - "npm:vite@^7.1.3": "7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", - "npm:vite@^7.1.4": "7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", - "npm:vitest@3.2": "3.2.4_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", - "npm:wrangler@^4.17.0": "4.35.0_@cloudflare+workers-types@4.20260403.1", - "npm:wrangler@^4.21.1": "4.35.0_@cloudflare+workers-types@4.20260403.1", + "npm:valibot@^1.2.0": "1.3.1_typescript@6.0.3", + "npm:vite@^7.1.3": "7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", + "npm:vite@^7.1.4": "7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", + "npm:vitest@3.2": "3.2.4_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", + "npm:wrangler@^4.17.0": "4.35.0_@cloudflare+workers-types@4.20260417.1", + "npm:wrangler@^4.21.1": "4.35.0_@cloudflare+workers-types@4.20260417.1", "npm:yaml@^2.8.1": "2.8.3" }, "jsr": { "@alinea/suite@0.6.3": { "integrity": "7d24a38729663b84d8a263d64ff7e3f8c72ac7cbb1db8ec5f414d0416b6b72e2" }, - "@david/console-static-text@0.3.0": { - "integrity": "2dfb46ecee525755f7989f94ece30bba85bd8ffe3e8666abc1bf926e1ee0698d" + "@david/console-static-text@0.3.4": { + "integrity": "1c596f500b075ff3c8bab1d328ca7148a88067fd9a506b16a73eeaf230c229fd" }, "@david/dax@0.43.2": { "integrity": "8c7df175465d994c0e3568e3eb91102768c2f1c86d2a513d7fc4cab13f9cb328", @@ -194,8 +191,8 @@ "jsr:@std/path@1" ] }, - "@david/which@0.4.1": { - "integrity": "896a682b111f92ab866cc70c5b4afab2f5899d2f9bde31ed00203b9c250f225e" + "@david/which@0.4.2": { + "integrity": "440ee262bc0673b57a39ad4d0dc5673e515ddd41c049a55b2588a0881e5d4a8c" }, "@deno/esbuild-plugin@1.2.1": { "integrity": "df629467913adc1f960149fdfa3a3430ba8c20381c310fba096db244e6c3c9f6", @@ -205,8 +202,8 @@ "npm:esbuild@~0.25.5" ] }, - "@deno/loader@0.3.11": { - "integrity": "7c62f4f09cdfc34e66ba25b5a775a1830cbb5266b3e39f67b0f620c75484df8d" + "@deno/loader@0.3.14": { + "integrity": "97bc63a6cc2d27a60bcdc953f588c5213331d866d44212eebb24cebfb9b011ca" }, "@fresh/build-id@1.0.1": { "integrity": "12a2ec25fd52ae9ec68c26848a5696cd1c9b537f7c983c7e56e4fb1e7e816c20", @@ -214,32 +211,8 @@ "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/core@2.2.2": { - "integrity": "c34873df58457720f7b915a65fef6fe5cd7215f237cf4d1064d1925b320de96c", + "@fresh/core@2.3.0": { + "integrity": "c98fd9c4cf223f68150d8de0ebc89e68070a277c132579c3b9e4f81dfdba822f", "dependencies": [ "jsr:@deno/esbuild-plugin", "jsr:@fresh/build-id", @@ -250,6 +223,7 @@ "jsr:@std/http", "jsr:@std/jsonc", "jsr:@std/media-types", + "jsr:@std/net", "jsr:@std/path@^1.1.2", "jsr:@std/semver", "jsr:@std/uuid", @@ -259,7 +233,7 @@ "npm:esbuild@0.25.7", "npm:preact-render-to-string", "npm:preact@^10.28.2", - "npm:preact@^10.28.3" + "npm:preact@^10.29.1" ] }, "@fresh/plugin-vite@1.0.8": { @@ -285,11 +259,8 @@ "jsr:@logtape/logtape@^1.0.4" ] }, - "@hono/hono@4.12.4": { - "integrity": "3b80b0165bbcaf8ddf23afc593e40416da8e9a27cb3dd460a1f04c7a44583030" - }, - "@hono/hono@4.12.12": { - "integrity": "dc765178d38b5c4619b358062f6aa5514f7205bb0530b2823ff6265bec69c535" + "@hono/hono@4.12.15": { + "integrity": "06a0aef73d9072e73b8db570b81a5b56a94095d697578202a87fccdf04ce352d" }, "@logtape/file@2.0.5": { "integrity": "368621b15b73fd63c137e47ae43411e350627683ce7e0b4492af3ccb159e098b", @@ -308,7 +279,7 @@ "integrity": "9ba458a3cb2f00f83d36a70f942782cd2c622fd72c527f59e5f8234c780c4b30", "dependencies": [ "jsr:@optique/core", - "npm:@standard-schema/spec@^1.1.0" + "npm:@standard-schema/spec" ] }, "@optique/core@1.0.2": { @@ -320,9 +291,6 @@ "jsr:@optique/core" ] }, - "@standard-schema/spec@1.1.0": { - "integrity": "2ccd54513cd9c960bd155ab569b1a901bc99c6f9ad29559d3f38a28c91c1822d" - }, "@std/assert@0.224.0": { "integrity": "8643233ec7aec38a940a8264a6e3eed9bfa44e7a71cc6b3c8874213ff401967f", "dependencies": [ @@ -357,8 +325,8 @@ "@std/fmt@0.224.0": { "integrity": "e20e9a2312a8b5393272c26191c0a68eda8d2c4b08b046bad1673148f1d69851" }, - "@std/fmt@1.0.9": { - "integrity": "2487343e8899fb2be5d0e3d35013e54477ada198854e52dd05ed0422eddcabe0" + "@std/fmt@1.0.10": { + "integrity": "90dfba288802ac6de82fb31d0917eb9e4450b9925b954d5e51fc29ac07419db5" }, "@std/fs@0.224.0": { "integrity": "52a5ec89731ac0ca8f971079339286f88c571a4d61686acf75833f03a89d8e69", @@ -373,11 +341,11 @@ "jsr:@std/path@^1.1.4" ] }, - "@std/html@1.0.5": { - "integrity": "4e2d693f474cae8c16a920fa5e15a3b72267b94b84667f11a50c6dd1cb18d35e" + "@std/html@1.0.6": { + "integrity": "eaf759c8141e0733ca30eb49e4c08d8e6ca442b85c4d51f9894a56f502993e08" }, - "@std/http@1.0.25": { - "integrity": "577b4252290af1097132812b339fffdd55fb0f4aeb98ff11bdbf67998aa17193", + "@std/http@1.1.0": { + "integrity": "265cd9a589fea924c5bb0bbed8bebb4bb2fa19129f760bd014e78dbd7a365a51", "dependencies": [ "jsr:@std/encoding" ] @@ -388,8 +356,8 @@ "jsr:@std/fmt@0.224" ] }, - "@std/internal@1.0.12": { - "integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027" + "@std/internal@1.0.13": { + "integrity": "2f9546691d4ac2d32859c82dff284aaeac980ddeca38430d07941e7e288725c0" }, "@std/io@0.225.3": { "integrity": "27b07b591384d12d7b568f39e61dff966b8230559122df1e9fd11cc068f7ddd1", @@ -409,6 +377,9 @@ "@std/media-types@1.1.0": { "integrity": "c9d093f0c05c3512932b330e3cc1fe1d627b301db33a4c2c2185c02471d6eaa4" }, + "@std/net@1.0.6": { + "integrity": "110735f93e95bb9feb95790a8b1d1bf69ec0dc74f3f97a00a76ea5efea25500c" + }, "@std/path@0.224.0": { "integrity": "55bca6361e5a6d158b9380e82d4981d82d338ec587de02951e2b7c3a24910ee6" }, @@ -436,12 +407,6 @@ "jsr:@std/bytes" ] }, - "@std/yaml@1.0.12": { - "integrity": "7deabca4545bcedd07c5f69ea53acea71b8b4c67562f224e17b90d75944cb20c" - }, - "@valibot/valibot@1.2.0": { - "integrity": "61c118a4d027ed55912caf381c78f0a178f335f46ad0c4bcb136498dc1ef2285" - }, "@valibot/valibot@1.3.1": { "integrity": "635faaec9d32a25efca7b4614e7a07306cc03937bfd0679e05530d31081bc501" } @@ -488,8 +453,8 @@ "vfile" ] }, - "@astrojs/node@10.0.4_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.2__yaml@2.8.3_@types+node@24.12.0_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.2_yaml@2.8.3": { - "integrity": "sha512-7pVgiVSscQHRC2WqjlXcnbbcKMYp2GXrYpmuvdGg5zgA8J1lFm2vmwVhHZFuZK3Ik5PzoxiDROaEgoDGLbfhLw==", + "@astrojs/node@10.0.5_astro@5.18.1__@types+node@24.12.2__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.3__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3": { + "integrity": "sha512-rgZiU9nD7zmM3fdmOVuobcNHAyXWx2HXXDLTuxjVCTQ+QmHmL5zkZZhNIL5NjlQtDRAU1i5fVaXp7nAKdET30w==", "dependencies": [ "@astrojs/internal-helpers@0.8.0", "astro", @@ -782,7 +747,7 @@ "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.3_@cloudflare+workers-types@4.20260403.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { + "@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.2__tsx@4.21.0__yaml@2.8.3_@cloudflare+workers-types@4.20260417.1_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { "integrity": "sha512-keu2HCLQfRNwbmLBCDXJgCFpANTaYnQpE01fBOo4CNwiWHUT7SZGN7w64RKiSWRHyYppStXBuE5Ng7F42+flpg==", "dependencies": [ "@vitest/runner", @@ -822,8 +787,8 @@ "os": ["win32"], "cpu": ["x64"] }, - "@cloudflare/workers-types@4.20260403.1": { - "integrity": "sha512-p6oSNt3yUwcxSoXZ7qCog7+kgQbkSx1Beoci7TMb/xbRF05VR0cO/p1XUE2SLHZ7IgSIc3tNMpFKa0L0fa3Lzg==" + "@cloudflare/workers-types@4.20260417.1": { + "integrity": "sha512-ke3GkFfFyfSxdLRR6LPbnfYAu3RNKqX0eYfu/FNnluBN9rLgYVqT+QEPgSEx1yq7XTOok+Bub1td9xvknaOz4A==" }, "@colors/colors@1.5.0": { "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" @@ -834,7 +799,7 @@ "@jridgewell/trace-mapping@0.3.9" ] }, - "@deno/astro-adapter@0.3.2_@opentelemetry+api@1.9.1_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.2__yaml@2.8.3_@types+node@24.12.0_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.2_yaml@2.8.3": { + "@deno/astro-adapter@0.3.2_@opentelemetry+api@1.9.1_astro@5.18.1__@types+node@24.12.2__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.3__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3": { "integrity": "sha512-nN0kQGobRs2XE3R+O/DWYQanEWpteJNsIf5TD65787qFEw2CrqkFNcNolZFJiKUF/2Y/TKyOLRjMS3F6auECVg==", "dependencies": [ "@opentelemetry/api", @@ -858,7 +823,7 @@ "integrity": "sha512-6lMpxpt9BOmqHKGs9Xm6DP4LlZTBFer/ZjHvP3FcW3IaUWYIWC7dw5RFZnvw4fP57kAVcm1dp3IF+Y50qhBvAw==", "dependencies": [ "ky", - "undici@6.24.1" + "undici@6.25.0" ] }, "@emnapi/core@1.9.2": { @@ -1792,38 +1757,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@24.12.2": { "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dependencies": [ "@inquirer/ansi", - "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/core@10.3.2_@types+node@24.12.2", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/type@3.0.10_@types+node@24.12.2", + "@types/node@24.12.2", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, - "@inquirer/confirm@5.1.21_@types+node@24.12.0": { + "@inquirer/confirm@5.1.21_@types+node@24.12.2": { "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@24.12.2", + "@inquirer/type@3.0.10_@types+node@24.12.2", + "@types/node@24.12.2" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, - "@inquirer/core@10.3.2_@types+node@24.12.0": { + "@inquirer/core@10.3.2_@types+node@24.12.2": { "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@24.12.2", + "@types/node@24.12.2", "cli-width", "mute-stream@2.0.0", "signal-exit", @@ -1831,7 +1796,7 @@ "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, "@inquirer/core@8.2.4": { @@ -1840,7 +1805,7 @@ "@inquirer/figures", "@inquirer/type@1.5.5", "@types/mute-stream", - "@types/node@20.19.37", + "@types/node@20.19.39", "@types/wrap-ansi", "ansi-escapes", "cli-spinners", @@ -1852,79 +1817,79 @@ "wrap-ansi@6.2.0" ] }, - "@inquirer/editor@4.2.23_@types+node@24.12.0": { + "@inquirer/editor@4.2.23_@types+node@24.12.2": { "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/core@10.3.2_@types+node@24.12.2", "@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@24.12.2", + "@types/node@24.12.2" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, - "@inquirer/expand@4.0.23_@types+node@24.12.0": { + "@inquirer/expand@4.0.23_@types+node@24.12.2": { "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@24.12.2", + "@inquirer/type@3.0.10_@types+node@24.12.2", + "@types/node@24.12.2", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, - "@inquirer/external-editor@1.0.3_@types+node@24.12.0": { + "@inquirer/external-editor@1.0.3_@types+node@24.12.2": { "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dependencies": [ - "@types/node@24.12.0", + "@types/node@24.12.2", "chardet", "iconv-lite@0.7.2" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, "@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@24.12.2": { "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@24.12.2", + "@inquirer/type@3.0.10_@types+node@24.12.2", + "@types/node@24.12.2" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, - "@inquirer/number@3.0.23_@types+node@24.12.0": { + "@inquirer/number@3.0.23_@types+node@24.12.2": { "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@24.12.2", + "@inquirer/type@3.0.10_@types+node@24.12.2", + "@types/node@24.12.2" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, - "@inquirer/password@4.0.23_@types+node@24.12.0": { + "@inquirer/password@4.0.23_@types+node@24.12.2": { "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@24.12.2", + "@inquirer/type@3.0.10_@types+node@24.12.2", + "@types/node@24.12.2" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, - "@inquirer/prompts@7.10.1_@types+node@24.12.0": { + "@inquirer/prompts@7.10.1_@types+node@24.12.2": { "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", "dependencies": [ "@inquirer/checkbox", @@ -1937,49 +1902,49 @@ "@inquirer/rawlist", "@inquirer/search", "@inquirer/select", - "@types/node@24.12.0" + "@types/node@24.12.2" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, - "@inquirer/rawlist@4.1.11_@types+node@24.12.0": { + "@inquirer/rawlist@4.1.11_@types+node@24.12.2": { "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@24.12.2", + "@inquirer/type@3.0.10_@types+node@24.12.2", + "@types/node@24.12.2", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, - "@inquirer/search@3.2.2_@types+node@24.12.0": { + "@inquirer/search@3.2.2_@types+node@24.12.2": { "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dependencies": [ - "@inquirer/core@10.3.2_@types+node@24.12.0", + "@inquirer/core@10.3.2_@types+node@24.12.2", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/type@3.0.10_@types+node@24.12.2", + "@types/node@24.12.2", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, - "@inquirer/select@4.4.2_@types+node@24.12.0": { + "@inquirer/select@4.4.2_@types+node@24.12.2": { "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@24.12.2", "@inquirer/figures", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/type@3.0.10_@types+node@24.12.2", + "@types/node@24.12.2", "yoctocolors-cjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, "@inquirer/type@1.5.5": { @@ -1988,13 +1953,13 @@ "mute-stream@1.0.0" ] }, - "@inquirer/type@3.0.10_@types+node@24.12.0": { + "@inquirer/type@3.0.10_@types+node@24.12.2": { "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dependencies": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, "@ioredis/commands@1.5.1": { @@ -2038,15 +2003,15 @@ "tinycolor2" ] }, - "@jimp/core@1.6.0": { - "integrity": "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==", + "@jimp/core@1.6.1": { + "integrity": "sha512-+BoKC5G6hkrSy501zcJ2EpfnllP+avPevcBfRcZe/CW+EwEfY6X1EZ8QWyT7NpDIvEEJb1fdJnMMfUnFkxmw9A==", "dependencies": [ "@jimp/file-ops", "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "await-to-js", "exif-parser", - "file-type@16.5.4", + "file-type@21.3.4", "mime@3.0.0" ] }, @@ -2056,155 +2021,155 @@ "@jimp/core@0.22.12" ] }, - "@jimp/diff@1.6.0": { - "integrity": "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==", + "@jimp/diff@1.6.1": { + "integrity": "sha512-YkKDPdHjLgo1Api3+Bhc0GLAygldlpt97NfOKoNg1U6IUNXA6X2MgosCjPfSBiSvJvrrz1fsIR+/4cfYXBI/HQ==", "dependencies": [ "@jimp/plugin-resize", "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "pixelmatch@5.3.0" ] }, - "@jimp/file-ops@1.6.0": { - "integrity": "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==" + "@jimp/file-ops@1.6.1": { + "integrity": "sha512-T+gX6osHjprbDRad0/B71Evyre7ZdVY1z/gFGEG9Z8KOtZPKboWvPeP2UjbZYWQLy9UKCPQX1FNAnDiOPkJL7w==" }, - "@jimp/js-bmp@1.6.0": { - "integrity": "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==", + "@jimp/js-bmp@1.6.1": { + "integrity": "sha512-xzWzNT4/u5zGrTT3Tme9sGU7YzIKxi13+BCQwLqACbt5DXf9SAfdzRkopZQnmDko+6In5nqaT89Gjs43/WdnYQ==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "bmp-ts" ] }, - "@jimp/js-gif@1.6.0": { - "integrity": "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==", + "@jimp/js-gif@1.6.1": { + "integrity": "sha512-YjY2W26rQa05XhanYhRZ7dingCiNN+T2Ymb1JiigIbABY0B28wHE3v3Cf1/HZPWGu0hOg36ylaKgV5KxF2M58w==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/types", "gifwrap", "omggif" ] }, - "@jimp/js-jpeg@1.6.0": { - "integrity": "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==", + "@jimp/js-jpeg@1.6.1": { + "integrity": "sha512-HT9H3yOmlOFzYmdI15IYdfy6ggQhSRIaHeA+OTJSEORXBqEo97sUZu/DsgHIcX5NJ7TkJBTgZ9BZXsV6UbsyMg==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/types", "jpeg-js" ] }, - "@jimp/js-png@1.6.0": { - "integrity": "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==", + "@jimp/js-png@1.6.1": { + "integrity": "sha512-SZ/KVhI5UjcSzzlXsXdIi/LhJ7UShf2NkMOtVrbZQcGzsqNtynAelrOXeoTxcanfVqmNhAoVHg8yR2cYoqrYjA==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/types", "pngjs@7.0.0" ] }, - "@jimp/js-tiff@1.6.0": { - "integrity": "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==", + "@jimp/js-tiff@1.6.1": { + "integrity": "sha512-jDG/eJquID1M4MBlKMmDRBmz2TpXMv7TUyu2nIRUxhlUc2ogC82T+VQUkca9GJH1BBJ9dx5sSE5dGkWNjIbZxw==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/types", "utif2" ] }, - "@jimp/plugin-blit@1.6.0": { - "integrity": "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==", + "@jimp/plugin-blit@1.6.1": { + "integrity": "sha512-MwnI7C7K81uWddY9FLw1fCOIy6SsPIUftUz36Spt7jisCn8/40DhQMlSxpxTNelnZb/2SnloFimQfRZAmHLOqQ==", "dependencies": [ "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "zod@3.25.76" ] }, - "@jimp/plugin-blur@1.6.0": { - "integrity": "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==", + "@jimp/plugin-blur@1.6.1": { + "integrity": "sha512-lIo7Tzp5jQu30EFFSK/phXANK3citKVEjepDjQ6ljHoIFtuMRrnybnmI2Md24ulvWlDaz+hh3n6qrMb8ydwhZQ==", "dependencies": [ - "@jimp/core@1.6.0", - "@jimp/utils@1.6.0" + "@jimp/core@1.6.1", + "@jimp/utils@1.6.1" ] }, - "@jimp/plugin-circle@1.6.0": { - "integrity": "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==", + "@jimp/plugin-circle@1.6.1": { + "integrity": "sha512-kK1PavY6cKHNNKce37vdV4Tmpc1/zDKngGoeOV3j+EMatoHFZUinV3s6F9aWryPs3A0xhCLZgdJ6Zeea1d5LCQ==", "dependencies": [ "@jimp/types", "zod@3.25.76" ] }, - "@jimp/plugin-color@1.6.0": { - "integrity": "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==", + "@jimp/plugin-color@1.6.1": { + "integrity": "sha512-LtUN1vAP+LRlZAtTNVhDRSiXx+26Kbz3zJaG6a5k59gQ95jgT5mknnF8lxkHcqJthM4MEk3/tPxkdJpEybyF/A==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "tinycolor2", "zod@3.25.76" ] }, - "@jimp/plugin-contain@1.6.0": { - "integrity": "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==", + "@jimp/plugin-contain@1.6.1": { + "integrity": "sha512-m0qhrfA8jkTqretGv4w+T/ADFR4GwBpE0sCOC2uJ0dzr44/ddOMsIdrpi89kabqYiPYIrxkgdCVCLm3zn1Vkkg==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/plugin-blit", "@jimp/plugin-resize", "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "zod@3.25.76" ] }, - "@jimp/plugin-cover@1.6.0": { - "integrity": "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==", + "@jimp/plugin-cover@1.6.1": { + "integrity": "sha512-hZytnsth0zoll6cPf434BrT+p/v569Wr5tyO6Dp0dH1IDPhzhB5F38sZGMLDo7bzQiN9JFVB3fxkcJ/WYCJ3Mg==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/plugin-crop", "@jimp/plugin-resize", "@jimp/types", "zod@3.25.76" ] }, - "@jimp/plugin-crop@1.6.0": { - "integrity": "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==", + "@jimp/plugin-crop@1.6.1": { + "integrity": "sha512-EerRSLlclXyKDnYc/H9w/1amZW7b7v3OGi/VlerPd2M/pAu5X8TkyYWtfqYCXnNp1Ixtd8oCo9zGfY9zoXT4rg==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "zod@3.25.76" ] }, - "@jimp/plugin-displace@1.6.0": { - "integrity": "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==", + "@jimp/plugin-displace@1.6.1": { + "integrity": "sha512-K07QVl7xQwIfD6KfxRV/c3E9e7ZBXxUXdWuvoTWcKHL2qV48MOF5Nqbz/aJW4ThnQARIsxvYlZjPFiqkCjlU+g==", "dependencies": [ "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "zod@3.25.76" ] }, - "@jimp/plugin-dither@1.6.0": { - "integrity": "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==", + "@jimp/plugin-dither@1.6.1": { + "integrity": "sha512-+2V+GCV2WycMoX1/z977TkZ8Zq/4MVSKElHYatgUqtwXMi2fDK2gKYU2g9V39IqFvTJsTIsK0+58VFz/ROBVew==", "dependencies": [ "@jimp/types" ] }, - "@jimp/plugin-fisheye@1.6.0": { - "integrity": "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==", + "@jimp/plugin-fisheye@1.6.1": { + "integrity": "sha512-XtS5ZyoZ0vxZxJ6gkqI63SivhtI58vX95foMPM+cyzYkRsJXMOYCr8DScxF5bp4Xr003NjYm/P+7+08tibwzHA==", "dependencies": [ "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "zod@3.25.76" ] }, - "@jimp/plugin-flip@1.6.0": { - "integrity": "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==", + "@jimp/plugin-flip@1.6.1": { + "integrity": "sha512-ws38W/sGj7LobNRayQ83garxiktOyWxM5vO/y4a/2cy9v65SLEUzVkrj+oeAaUSSObdz4HcCEla7XtGlnAGAaA==", "dependencies": [ "@jimp/types", "zod@3.25.76" ] }, - "@jimp/plugin-hash@1.6.0": { - "integrity": "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==", + "@jimp/plugin-hash@1.6.1": { + "integrity": "sha512-sZt6ZcMX6i8vFWb4GYnw0pR/o9++ef0dTVcboTB5B/g7nrxCODIB4wfEkJ/YqZM5wUvol77K1qeS0/rVO6z21A==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/js-bmp", "@jimp/js-jpeg", "@jimp/js-png", @@ -2212,21 +2177,21 @@ "@jimp/plugin-color", "@jimp/plugin-resize", "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "any-base" ] }, - "@jimp/plugin-mask@1.6.0": { - "integrity": "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==", + "@jimp/plugin-mask@1.6.1": { + "integrity": "sha512-SIG0/FcmEj3tkwFxc7fAGLO8o4uNzMpSOdQOhbCgxefQKq5wOVMk9BQx/sdMPBwtMLr9WLq0GzLA/rk6t2v20A==", "dependencies": [ "@jimp/types", "zod@3.25.76" ] }, - "@jimp/plugin-print@1.6.0": { - "integrity": "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==", + "@jimp/plugin-print@1.6.1": { + "integrity": "sha512-BYVz/X3Xzv8XYilVeDy11NOp0h7BTDjlOtu0BekIFHP1yHVd24AXNzbOy52XlzYZWQ0Dl36HOHEpl/nSNrzc6w==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/js-jpeg", "@jimp/js-png", "@jimp/plugin-blit", @@ -2238,45 +2203,45 @@ "zod@3.25.76" ] }, - "@jimp/plugin-quantize@1.6.0": { - "integrity": "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==", + "@jimp/plugin-quantize@1.6.1": { + "integrity": "sha512-J2En9PLURfP+vwYDtuZ9T8yBW6BWYZBScydAjRiPBmJfEhTcNQqiiQODrZf7EqbbX/Sy5H6dAeRiqkgoV9N6Ww==", "dependencies": [ "image-q", "zod@3.25.76" ] }, - "@jimp/plugin-resize@1.6.0": { - "integrity": "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==", + "@jimp/plugin-resize@1.6.1": { + "integrity": "sha512-CLkrtJoIz2HdWnpYiN6p8KYcPc00rCH/SUu6o+lfZL05Q4uhecJlnvXuj9x+U6mDn3ldPmJj6aZqMHuUJzdVqg==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/types", "zod@3.25.76" ] }, - "@jimp/plugin-rotate@1.6.0": { - "integrity": "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==", + "@jimp/plugin-rotate@1.6.1": { + "integrity": "sha512-nOjVjbbj705B02ksysKnh0POAwEBXZtJ9zQ5qC+X7Tavl3JNn+P3BzQovbBxLPSbUSld6XID9z5ijin4PtOAUg==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/plugin-crop", "@jimp/plugin-resize", "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "zod@3.25.76" ] }, - "@jimp/plugin-threshold@1.6.0": { - "integrity": "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==", + "@jimp/plugin-threshold@1.6.1": { + "integrity": "sha512-JOKv9F8s6tnVLf4sB/2fF0F339EFnHvgEdFYugO6VhowKLsap0pEZmLyE/DlRnYtIj2RddHZVxVMp/eKJ04l2Q==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/plugin-color", "@jimp/plugin-hash", "@jimp/types", - "@jimp/utils@1.6.0", + "@jimp/utils@1.6.1", "zod@3.25.76" ] }, - "@jimp/types@1.6.0": { - "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==", + "@jimp/types@1.6.1": { + "integrity": "sha512-leI7YbveTNi565m910XgIOwXyuu074H5qazAD1357HImJSv2hqxnWXpwxQbadGWZ7goZRYBDZy5lpqud0p7q5w==", "dependencies": [ "zod@3.25.76" ] @@ -2287,15 +2252,15 @@ "regenerator-runtime" ] }, - "@jimp/utils@1.6.0": { - "integrity": "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==", + "@jimp/utils@1.6.1": { + "integrity": "sha512-veFPRd93FCnS7AgmCkPgARVGoDRrJ9cm1ujuNyA+UfQ5VKbED2002sm5XfFLFwTsKC8j04heTrwe+tU1dluXOw==", "dependencies": [ "@jimp/types", "tinycolor2" ] }, - "@jimp/wasm-webp@1.6.0": { - "integrity": "sha512-P0zUpK6n2XIAn8bt0F6rhSn1+FgteBTrL+TBb6Oqw8v5qEDJoNYkd6LlfZYN8YwtRBTBdZ8GFnWsg2Sar+qOkA==", + "@jimp/wasm-webp@1.6.1": { + "integrity": "sha512-t+Wqkde4xQHP/UZ4bDiDo3pbhFz32E7FvQCUkuFdJDmEDl6gPCs6LQiQVBmumUQYTeVLiLtLzlM9j8s7yF0sXQ==", "dependencies": [ "@jsquash/webp", "zod@3.25.76" @@ -2390,18 +2355,18 @@ "@multiformats/base-x@4.0.1": { "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" }, - "@napi-rs/wasm-runtime@1.1.2_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2": { - "integrity": "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==", + "@napi-rs/wasm-runtime@1.1.4_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2": { + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", "dependencies": [ "@emnapi/core", "@emnapi/runtime", "@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.19_reflect-metadata@0.2.2_rxjs@7.8.2": { + "integrity": "sha512-qeiTt2tv+e5QyDKqG8HlVZb2wx64FEaSGFJouqTSRs+kG44iTfl3xlz1XqVped+rihx4hmjWgL5gkhtdK3E6+Q==", "dependencies": [ - "file-type@21.3.2", + "file-type@21.3.4", "iterare", "load-esm", "reflect-metadata", @@ -2430,7 +2395,7 @@ "fastq" ] }, - "@nurodev/astro-bun@2.1.2_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.2__yaml@2.8.3": { + "@nurodev/astro-bun@2.1.2_astro@5.18.1__@types+node@24.12.2__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.3__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3": { "integrity": "sha512-CXzh0q+jOodmqtZ/YMyS7DTqmFC2zafv4C7GQMBDoBDRcx7CONzxCk/rK2uaKHoh3+AvSPo3hXnTp6oLfIpl5g==", "dependencies": [ "astro", @@ -2470,35 +2435,35 @@ "defu", "pathe@2.0.3", "pkg-types@2.3.0", - "std-env@4.0.0" + "std-env@4.1.0" ] }, "@opentelemetry/api@1.9.1": { "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==" }, - "@opentelemetry/context-async-hooks@2.6.1_@opentelemetry+api@1.9.1": { - "integrity": "sha512-XHzhwRNkBpeP8Fs/qjGrAf9r9PRv67wkJQ/7ZPaBQQ68DYlTBBx5MF9LvPx7mhuXcDessKK2b+DcxqwpgkcivQ==", + "@opentelemetry/context-async-hooks@2.7.0_@opentelemetry+api@1.9.1": { + "integrity": "sha512-MWXggArM+Y11mPS8VOrqxOj+YMGQSRuvhM91eSBX4xFpJa05mpkeVvM8pPux5ElkEjV5RMgrkisrlP/R83SpBQ==", "dependencies": [ "@opentelemetry/api" ] }, - "@opentelemetry/core@2.6.1_@opentelemetry+api@1.9.1": { - "integrity": "sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g==", + "@opentelemetry/core@2.7.0_@opentelemetry+api@1.9.1": { + "integrity": "sha512-DT12SXVwV2eoJrGf4nnsvZojxxeQo+LlNAsoYGRRObPWTeN6APiqZ2+nqDCQDvQX40eLi1AePONS0onoASp3yQ==", "dependencies": [ "@opentelemetry/api", "@opentelemetry/semantic-conventions" ] }, - "@opentelemetry/resources@2.6.1_@opentelemetry+api@1.9.1": { - "integrity": "sha512-lID/vxSuKWXM55XhAKNoYXu9Cutoq5hFdkbTdI/zDKQktXzcWBVhNsOkiZFTMU9UtEWuGRNe0HUgmsFldIdxVA==", + "@opentelemetry/resources@2.7.0_@opentelemetry+api@1.9.1": { + "integrity": "sha512-K+oi0hNMv94EpZbnW3eyu2X6SGVpD3O5DhG2NIp65Hc7lhAj9brRXTAVzh3wB82+q3ThakEf7Zd7RsFUqcTc7A==", "dependencies": [ "@opentelemetry/api", "@opentelemetry/core", "@opentelemetry/semantic-conventions" ] }, - "@opentelemetry/sdk-trace-base@2.6.1_@opentelemetry+api@1.9.1": { - "integrity": "sha512-r86ut4T1e8vNwB35CqCcKd45yzqH6/6Wzvpk2/cZB8PsPLlZFTvrh8yfOS3CYZYcUmAx4hHTZJ8AO8Dj8nrdhw==", + "@opentelemetry/sdk-trace-base@2.7.0_@opentelemetry+api@1.9.1": { + "integrity": "sha512-Yg9zEXJB50DLVLpsKPk7NmNqlPlS+OvqhJGh0A8oawIOTPOwlm4eXs9BMJV7L79lvEwI+dWtAj+YjTyddV336A==", "dependencies": [ "@opentelemetry/api", "@opentelemetry/core", @@ -2512,8 +2477,8 @@ "@oslojs/encoding@1.1.0": { "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==" }, - "@oxc-project/types@0.122.0": { - "integrity": "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==" + "@oxc-project/types@0.126.0": { + "integrity": "sha512-oGfVtjAgwQVVpfBrbtk4e1XDyWHRFta6BS3GWVzrF8xYBT2VGQAk39yJS/wFSMrZqoiCU4oghT3Ch0HaHGIHcQ==" }, "@parcel/watcher-android-arm64@2.5.6": { "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", @@ -2659,26 +2624,26 @@ "@preact/signals-core@1.14.1": { "integrity": "sha512-vxPpfXqrwUe9lpjqfYNjAF/0RF/eFGeLgdJzdmIIZjpOnTmGmAB4BjWone562mJGMRP4frU6iZ6ei3PDsu52Ng==" }, - "@preact/signals@2.9.0_preact@10.29.0": { + "@preact/signals@2.9.0_preact@10.29.1": { "integrity": "sha512-hYrY0KyUqkDgOl1qba/JGn6y81pXnurn21PMaxfcMwdncdZ3M/oVdmpTvEnsGjh48dIwDVc7bjWHqIsngSjYug==", "dependencies": [ "@preact/signals-core", - "preact@10.29.0" + "preact@10.29.1" ] }, "@prefresh/babel-plugin@0.5.3": { "integrity": "sha512-57LX2SHs4BX2s1IwCjNzTE2OJeEepRCNf1VTEpbNcUyHfMO68eeOWGDIt4ob9aYlW6PEWZ1SuwNikuoIXANDtQ==" }, - "@prefresh/core@1.5.9_preact@10.29.0": { + "@prefresh/core@1.5.9_preact@10.29.1": { "integrity": "sha512-IKBKCPaz34OFVC+adiQ2qaTF5qdztO2/4ZPf4KsRTgjKosWqxVXmEbxCiUydYZRY8GVie+DQlKzQr9gt6HQ+EQ==", "dependencies": [ - "preact@10.29.0" + "preact@10.29.1" ] }, "@prefresh/utils@1.2.1": { "integrity": "sha512-vq/sIuN5nYfYzvyayXI4C2QkprfNaHUQ9ZX+3xLD8nL3rWyzpxOm1+K7RtMbhd+66QcaISViK7amjnheQ/4WZw==" }, - "@prefresh/vite@2.4.12_preact@10.29.0_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3": { + "@prefresh/vite@2.4.12_preact@10.29.1_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3": { "integrity": "sha512-FY1fzXpUjiuosznMV0YM7XAOPZjB5FIdWS0W24+XnlxYkt9hNAwwsiKYn+cuTEoMtD/ZVazS5QVssBr9YhpCQA==", "dependencies": [ "@babel/core", @@ -2686,8 +2651,8 @@ "@prefresh/core", "@prefresh/utils", "@rollup/pluginutils@4.2.1", - "preact@10.29.0", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3" + "preact@10.29.1", + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3" ] }, "@quansync/fs@1.0.0": { @@ -2696,85 +2661,87 @@ "quansync@1.0.0" ] }, - "@rolldown/binding-android-arm64@1.0.0-rc.12": { - "integrity": "sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==", + "@rolldown/binding-android-arm64@1.0.0-rc.16": { + "integrity": "sha512-rhY3k7Bsae9qQfOtph2Pm2jZEA+s8Gmjoz4hhmx70K9iMQ/ddeae+xhRQcM5IuVx5ry1+bGfkvMn7D6MJggVSA==", "os": ["android"], "cpu": ["arm64"] }, - "@rolldown/binding-darwin-arm64@1.0.0-rc.12": { - "integrity": "sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==", + "@rolldown/binding-darwin-arm64@1.0.0-rc.16": { + "integrity": "sha512-rNz0yK078yrNn3DrdgN+PKiMOW8HfQ92jQiXxwX8yW899ayV00MLVdaCNeVBhG/TbH3ouYVObo8/yrkiectkcQ==", "os": ["darwin"], "cpu": ["arm64"] }, - "@rolldown/binding-darwin-x64@1.0.0-rc.12": { - "integrity": "sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==", + "@rolldown/binding-darwin-x64@1.0.0-rc.16": { + "integrity": "sha512-r/OmdR00HmD4i79Z//xO06uEPOq5hRXdhw7nzkxQxwSavs3PSHa1ijntdpOiZ2mzOQ3fVVu8C1M19FoNM+dMUQ==", "os": ["darwin"], "cpu": ["x64"] }, - "@rolldown/binding-freebsd-x64@1.0.0-rc.12": { - "integrity": "sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==", + "@rolldown/binding-freebsd-x64@1.0.0-rc.16": { + "integrity": "sha512-KcRE5w8h0OnjUatG8pldyD14/CQ5Phs1oxfR+3pKDjboHRo9+MkqQaiIZlZRpsxC15paeXme/I127tUa9TXJ6g==", "os": ["freebsd"], "cpu": ["x64"] }, - "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12": { - "integrity": "sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==", + "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.16": { + "integrity": "sha512-bT0guA1bpxEJ/ZhTRniQf7rNF8ybvXOuWbNIeLABaV5NGjx4EtOWBTSRGWFU9ZWVkPOZ+HNFP8RMcBokBiZ0Kg==", "os": ["linux"], "cpu": ["arm"] }, - "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12": { - "integrity": "sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==", + "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.16": { + "integrity": "sha512-+tHktCHWV8BDQSjemUqm/Jl/TPk3QObCTIjmdDy/nlupcujZghmKK2962LYrqFpWu+ai01AN/REOH3NEpqvYQg==", "os": ["linux"], "cpu": ["arm64"] }, - "@rolldown/binding-linux-arm64-musl@1.0.0-rc.12": { - "integrity": "sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==", + "@rolldown/binding-linux-arm64-musl@1.0.0-rc.16": { + "integrity": "sha512-3fPzdREH806oRLxpTWW1Gt4tQHs0TitZFOECB2xzCFLPKnSOy90gwA7P29cksYilFO6XVRY1kzga0cL2nRjKPg==", "os": ["linux"], "cpu": ["arm64"] }, - "@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12": { - "integrity": "sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==", + "@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.16": { + "integrity": "sha512-EKwI1tSrLs7YVw+JPJT/G2dJQ1jl9qlTTTEG0V2Ok/RdOenRfBw2PQdLPyjhIu58ocdBfP7vIRN/pvMsPxs/AQ==", "os": ["linux"], "cpu": ["ppc64"] }, - "@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12": { - "integrity": "sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==", + "@rolldown/binding-linux-s390x-gnu@1.0.0-rc.16": { + "integrity": "sha512-Uknladnb3Sxqu6SEcqBldQyJUpk8NleooZEc0MbRBJ4inEhRYWZX0NJu12vNf2mqAq7gsofAxHrGghiUYjhaLQ==", "os": ["linux"], "cpu": ["s390x"] }, - "@rolldown/binding-linux-x64-gnu@1.0.0-rc.12": { - "integrity": "sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==", + "@rolldown/binding-linux-x64-gnu@1.0.0-rc.16": { + "integrity": "sha512-FIb8+uG49sZBtLTn+zt1AJ20TqVcqWeSIyoVt0or7uAWesgKaHbiBh6OpA/k9v0LTt+PTrb1Lao133kP4uVxkg==", "os": ["linux"], "cpu": ["x64"] }, - "@rolldown/binding-linux-x64-musl@1.0.0-rc.12": { - "integrity": "sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==", + "@rolldown/binding-linux-x64-musl@1.0.0-rc.16": { + "integrity": "sha512-RuERhF9/EgWxZEXYWCOaViUWHIboceK4/ivdtQ3R0T44NjLkIIlGIAVAuCddFxsZ7vnRHtNQUrt2vR2n2slB2w==", "os": ["linux"], "cpu": ["x64"] }, - "@rolldown/binding-openharmony-arm64@1.0.0-rc.12": { - "integrity": "sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==", + "@rolldown/binding-openharmony-arm64@1.0.0-rc.16": { + "integrity": "sha512-mXcXnvd9GpazCxeUCCnZ2+YF7nut+ZOEbE4GtaiPtyY6AkhZWbK70y1KK3j+RDhjVq5+U8FySkKRb/+w0EeUwA==", "os": ["openharmony"], "cpu": ["arm64"] }, - "@rolldown/binding-wasm32-wasi@1.0.0-rc.12_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2": { - "integrity": "sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==", + "@rolldown/binding-wasm32-wasi@1.0.0-rc.16": { + "integrity": "sha512-3Q2KQxnC8IJOLqXmUMoYwyIPZU9hzRbnHaoV3Euz+VVnjZKcY8ktnNP8T9R4/GGQtb27C/UYKABxesKWb8lsvQ==", "dependencies": [ + "@emnapi/core", + "@emnapi/runtime", "@napi-rs/wasm-runtime" ], "cpu": ["wasm32"] }, - "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12": { - "integrity": "sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==", + "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.16": { + "integrity": "sha512-tj7XRemQcOcFwv7qhpUxMTBbI5mWMlE4c1Omhg5+h8GuLXzyj8HviYgR+bB2DMDgRqUE+jiDleqSCRjx4aYk/Q==", "os": ["win32"], "cpu": ["arm64"] }, - "@rolldown/binding-win32-x64-msvc@1.0.0-rc.12": { - "integrity": "sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==", + "@rolldown/binding-win32-x64-msvc@1.0.0-rc.16": { + "integrity": "sha512-PH5DRZT+F4f2PTXRXR8uJxnBq2po/xFtddyabTJVJs/ZYVHqXPEgNIr35IHTEa6bpa0Q8Awg+ymkTaGnKITw4g==", "os": ["win32"], "cpu": ["x64"] }, - "@rolldown/pluginutils@1.0.0-rc.12": { - "integrity": "sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==" + "@rolldown/pluginutils@1.0.0-rc.16": { + "integrity": "sha512-45+YtqxLYKDWQouLKCrpIZhke+nXxhsw+qAHVzHDVwttyBlHNBVs2K25rDXrZzhpTp9w1FlAlvweV1H++fdZoA==" }, "@rollup/plugin-alias@6.0.0_rollup@4.60.1": { "integrity": "sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==", @@ -3104,7 +3071,7 @@ "@sindresorhus/merge-streams@4.0.0": { "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==" }, - "@solidjs/start@1.3.2_vinxi@0.5.11__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2__@types+node@24.12.0__ioredis@5.10.1__mysql2@3.20.0___@types+node@24.12.0__rolldown@1.0.0-rc.12___@emnapi+core@1.9.2___@emnapi+runtime@1.9.2__tsx@4.21.0__yaml@2.8.3_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2_@types+node@24.12.0_ioredis@5.10.1_mysql2@3.20.0__@types+node@24.12.0_rolldown@1.0.0-rc.12__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2_solid-js@1.9.12_tsx@4.21.0_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_yaml@2.8.3": { + "@solidjs/start@1.3.2_vinxi@0.5.11__@types+node@24.12.2__ioredis@5.10.1__mysql2@3.22.1___@types+node@24.12.2__rolldown@1.0.0-rc.16__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_mysql2@3.22.1__@types+node@24.12.2_rolldown@1.0.0-rc.16_solid-js@1.9.12_tsx@4.21.0_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_yaml@2.8.3": { "integrity": "sha512-tasDl3utVbtP0rr4InB3ntBIFV2upvEiFrOOCkRrAA3yBfjx9elpxnc94sJQXo65PNYdAAAkPIC6h93vLrtwHg==", "dependencies": [ "@tanstack/server-functions-plugin", @@ -3137,8 +3104,8 @@ "acorn@8.16.0" ] }, - "@sveltejs/kit@2.55.0_@opentelemetry+api@1.9.1_@sveltejs+vite-plugin-svelte@7.0.0__svelte@5.55.1__vite@7.3.1___@types+node@24.12.0___tsx@4.21.0___yaml@2.8.3__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_svelte@5.55.1_typescript@6.0.2_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { - "integrity": "sha512-MdFRjevVxmAknf2NbaUkDF16jSIzXMWd4Nfah0Qp8TtQVoSp3bV4jKt8mX7z7qTUTWvgSaxtR0EG5WJf53gcuA==", + "@sveltejs/kit@2.57.1_@opentelemetry+api@1.9.1_@sveltejs+vite-plugin-svelte@7.0.0__svelte@5.55.4__vite@7.3.2___@types+node@24.12.2___tsx@4.21.0___yaml@2.8.3__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_svelte@5.55.4_typescript@6.0.3_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { + "integrity": "sha512-VRdSbB96cI1EnRh09CqmnQqP/YJvET5buj8S6k7CxaJqBJD4bw4fRKDjcarAj/eX9k2eHifQfDH8NtOh+ZxxPw==", "dependencies": [ "@opentelemetry/api", "@standard-schema/spec", @@ -3156,7 +3123,7 @@ "sirv", "svelte", "typescript", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3" + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3" ], "optionalPeers": [ "@opentelemetry/api", @@ -3164,18 +3131,18 @@ ], "bin": true }, - "@sveltejs/vite-plugin-svelte@7.0.0_svelte@5.55.1_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { + "@sveltejs/vite-plugin-svelte@7.0.0_svelte@5.55.4_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { "integrity": "sha512-ILXmxC7HAsnkK2eslgPetrqqW1BKSL7LktsFgqzNj83MaivMGZzluWq32m25j2mDOjmSKX7GGWahePhuEs7P/g==", "dependencies": [ "deepmerge", "magic-string", "obug", "svelte", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", - "vitefu@1.1.3_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3" + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", + "vitefu@1.1.3_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3" ] }, - "@tanstack/directive-functions-plugin@1.121.21_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { + "@tanstack/directive-functions-plugin@1.121.21_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { "integrity": "sha512-B9z/HbF7gJBaRHieyX7f2uQ4LpLLAVAEutBZipH6w+CYD6RHRJvSVPzECGHF7icFhNWTiJQL2QR6K07s59yzEw==", "dependencies": [ "@babel/code-frame@7.26.2", @@ -3185,7 +3152,7 @@ "@tanstack/router-utils", "babel-dead-code-elimination", "tiny-invariant", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3" + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3" ] }, "@tanstack/router-utils@1.161.6": { @@ -3202,7 +3169,7 @@ "tinyglobby" ] }, - "@tanstack/server-functions-plugin@1.121.21_@types+node@24.12.0_tsx@4.21.0_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_yaml@2.8.3": { + "@tanstack/server-functions-plugin@1.121.21_@types+node@24.12.2_tsx@4.21.0_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_yaml@2.8.3": { "integrity": "sha512-a05fzK+jBGacsSAc1vE8an7lpBh4H0PyIEcivtEyHLomgSeElAJxm9E2It/0nYRZ5Lh23m0okbhzJNaYWZpAOg==", "dependencies": [ "@babel/code-frame@7.26.2", @@ -3236,7 +3203,7 @@ "@types/amqplib@0.10.8": { "integrity": "sha512-vtDp8Pk1wsE/AuQ8/Rgtm6KUZYqcnTgNvEHwzCkX8rL7AGsC6zqAfKAAJhUZXFhM/Pp++tbnUHiam/8vVpPztA==", "dependencies": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, "@types/babel__core@7.20.5": { @@ -3333,7 +3300,7 @@ "@types/mute-stream@0.0.4": { "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", "dependencies": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, "@types/nlcst@2.0.3": { @@ -3345,20 +3312,20 @@ "@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.39": { + "integrity": "sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==", "dependencies": [ "undici-types@6.21.0" ] }, - "@types/node@22.19.15": { - "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", + "@types/node@22.19.17": { + "integrity": "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==", "dependencies": [ "undici-types@6.21.0" ] }, - "@types/node@24.12.0": { - "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", + "@types/node@24.12.2": { + "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", "dependencies": [ "undici-types@7.16.0" ] @@ -3375,8 +3342,8 @@ "@types/wrap-ansi@3.0.0": { "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==" }, - "@typescript-eslint/parser@8.58.0_eslint@9.39.4_typescript@6.0.2": { - "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", + "@typescript-eslint/parser@8.58.2_eslint@9.39.4_typescript@6.0.3": { + "integrity": "sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==", "dependencies": [ "@typescript-eslint/scope-manager", "@typescript-eslint/types", @@ -3387,8 +3354,8 @@ "typescript" ] }, - "@typescript-eslint/project-service@8.58.0_typescript@6.0.2": { - "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", + "@typescript-eslint/project-service@8.58.2_typescript@6.0.3": { + "integrity": "sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==", "dependencies": [ "@typescript-eslint/tsconfig-utils", "@typescript-eslint/types", @@ -3396,24 +3363,24 @@ "typescript" ] }, - "@typescript-eslint/scope-manager@8.58.0": { - "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", + "@typescript-eslint/scope-manager@8.58.2": { + "integrity": "sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==", "dependencies": [ "@typescript-eslint/types", "@typescript-eslint/visitor-keys" ] }, - "@typescript-eslint/tsconfig-utils@8.58.0_typescript@6.0.2": { - "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", + "@typescript-eslint/tsconfig-utils@8.58.2_typescript@6.0.3": { + "integrity": "sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==", "dependencies": [ "typescript" ] }, - "@typescript-eslint/types@8.58.0": { - "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==" + "@typescript-eslint/types@8.58.2": { + "integrity": "sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==" }, - "@typescript-eslint/typescript-estree@8.58.0_typescript@6.0.2": { - "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", + "@typescript-eslint/typescript-estree@8.58.2_typescript@6.0.3": { + "integrity": "sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==", "dependencies": [ "@typescript-eslint/project-service", "@typescript-eslint/tsconfig-utils", @@ -3427,8 +3394,8 @@ "typescript" ] }, - "@typescript-eslint/utils@8.58.0_eslint@9.39.4_typescript@6.0.2": { - "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", + "@typescript-eslint/utils@8.58.2_eslint@9.39.4_typescript@6.0.3": { + "integrity": "sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==", "dependencies": [ "@eslint-community/eslint-utils", "@typescript-eslint/scope-manager", @@ -3438,8 +3405,8 @@ "typescript" ] }, - "@typescript-eslint/visitor-keys@8.58.0": { - "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", + "@typescript-eslint/visitor-keys@8.58.2": { + "integrity": "sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==", "dependencies": [ "@typescript-eslint/types", "eslint-visitor-keys@5.0.1" @@ -3489,7 +3456,7 @@ ], "bin": true }, - "@vinxi/plugin-directives@0.5.1_vinxi@0.5.11__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2__@types+node@24.12.0__ioredis@5.10.1__mysql2@3.20.0___@types+node@24.12.0__rolldown@1.0.0-rc.12___@emnapi+core@1.9.2___@emnapi+runtime@1.9.2__tsx@4.21.0__yaml@2.8.3_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2_@types+node@24.12.0_ioredis@5.10.1_mysql2@3.20.0__@types+node@24.12.0_rolldown@1.0.0-rc.12__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2_tsx@4.21.0_yaml@2.8.3": { + "@vinxi/plugin-directives@0.5.1_vinxi@0.5.11__@types+node@24.12.2__ioredis@5.10.1__mysql2@3.22.1___@types+node@24.12.2__rolldown@1.0.0-rc.16__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_mysql2@3.22.1__@types+node@24.12.2_rolldown@1.0.0-rc.16_tsx@4.21.0_yaml@2.8.3": { "integrity": "sha512-pH/KIVBvBt7z7cXrUH/9uaqcdxjegFC7+zvkZkdOyWzs+kQD5KPf3cl8kC+5ayzXHT+OMlhGhyitytqN3cGmHg==", "dependencies": [ "@babel/parser@7.29.2", @@ -3504,7 +3471,7 @@ "vinxi" ] }, - "@vinxi/server-components@0.5.1_vinxi@0.5.11__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2__@types+node@24.12.0__ioredis@5.10.1__mysql2@3.20.0___@types+node@24.12.0__rolldown@1.0.0-rc.12___@emnapi+core@1.9.2___@emnapi+runtime@1.9.2__tsx@4.21.0__yaml@2.8.3_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2_@types+node@24.12.0_ioredis@5.10.1_mysql2@3.20.0__@types+node@24.12.0_rolldown@1.0.0-rc.12__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2_tsx@4.21.0_yaml@2.8.3": { + "@vinxi/server-components@0.5.1_vinxi@0.5.11__@types+node@24.12.2__ioredis@5.10.1__mysql2@3.22.1___@types+node@24.12.2__rolldown@1.0.0-rc.16__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_mysql2@3.22.1__@types+node@24.12.2_rolldown@1.0.0-rc.16_tsx@4.21.0_yaml@2.8.3": { "integrity": "sha512-0BsG95qac3dkhfdRZxqzqYWJE4NvPL7ILlV43B6K6ho1etXWB2e5b0IxsUAUbyqpqiXM7mSRivojuXjb2G4OsQ==", "dependencies": [ "@vinxi/plugin-directives", @@ -3527,16 +3494,16 @@ "tinyrainbow" ] }, - "@vitest/mocker@3.2.4_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { + "@vitest/mocker@3.2.4_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { "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.3" + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3" ], "optionalPeers": [ - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3" + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3" ] }, "@vitest/pretty-format@3.2.4": { @@ -3783,15 +3750,16 @@ "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", "bin": true }, - "astro-integration-kit@0.18.0_astro@5.18.1__@types+node@24.12.0__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.2__yaml@2.8.3": { + "astro-integration-kit@0.18.0_astro@5.18.1__@types+node@24.12.2__ioredis@5.10.1__tsx@4.21.0__typescript@6.0.3__yaml@2.8.3_@types+node@24.12.2_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3": { "integrity": "sha512-Z0QW5IQjosuKQDEGYYkvUX6EhEtrmE4/oViqWz23QveV8U7AuyFsTdg00WRNPevWZl/5a4lLUeDpv4bCRynRRg==", "dependencies": [ "astro", "pathe@1.1.2", "recast" - ] + ], + "deprecated": true }, - "astro@5.18.1_@types+node@24.12.0_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.2_yaml@2.8.3": { + "astro@5.18.1_@types+node@24.12.2_ioredis@5.10.1_tsx@4.21.0_typescript@6.0.3_yaml@2.8.3": { "integrity": "sha512-m4VWilWZ+Xt6NPoYzC4CgGZim/zQUO7WFL0RHCH0AiEavF1153iC3+me2atDvXpf/yX4PyGUeD8wZLq1cirT3g==", "dependencies": [ "@astrojs/compiler", @@ -3841,7 +3809,7 @@ "shiki@3.23.0", "smol-toml", "svgo", - "tinyexec@1.0.4", + "tinyexec@1.1.1", "tinyglobby", "tsconfck", "ultrahtml", @@ -3849,8 +3817,8 @@ "unist-util-visit", "unstorage", "vfile", - "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", - "vitefu@1.1.3_vite@6.4.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", + "vite@6.4.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", + "vitefu@1.1.3_vite@6.4.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", "xxhash-wasm", "yargs-parser@21.1.1", "yocto-spinner", @@ -3934,8 +3902,8 @@ "bare-events@2.8.2": { "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==" }, - "bare-fs@4.6.0": { - "integrity": "sha512-2YkS7NuiJceSEbyEOdSNLE9tsGd+f4+f7C+Nik/MCk27SYdwIMPT/yRKvg++FZhQXgk0KWJKJyXX9RhVV0RGqA==", + "bare-fs@4.7.1": { + "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==", "dependencies": [ "bare-events", "bare-path", @@ -3953,8 +3921,8 @@ "bare-os" ] }, - "bare-stream@2.12.0_bare-events@2.8.2": { - "integrity": "sha512-w28i8lkBgREV3rPXGbgK+BO66q+ZpKqRWrZLiCdmmUlLPrQ45CzkvRhN+7lnv00Gpi2zy5naRxnUFAxCECDm9g==", + "bare-stream@2.13.0_bare-events@2.8.2": { + "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==", "dependencies": [ "bare-events", "streamx", @@ -3976,8 +3944,8 @@ "base64-js@1.5.1": { "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "baseline-browser-mapping@2.10.13": { - "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", + "baseline-browser-mapping@2.10.19": { + "integrity": "sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==", "bin": true }, "bindings@1.5.0": { @@ -4034,15 +4002,15 @@ "wrap-ansi@9.0.2" ] }, - "brace-expansion@1.1.13": { - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "brace-expansion@1.1.14": { + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dependencies": [ "balanced-match@1.0.2", "concat-map" ] }, - "brace-expansion@2.0.3": { - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "brace-expansion@2.1.0": { + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dependencies": [ "balanced-match@1.0.2" ] @@ -4162,8 +4130,8 @@ "camelcase@8.0.0": { "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==" }, - "caniuse-lite@1.0.30001784": { - "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==" + "caniuse-lite@1.0.30001788": { + "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==" }, "canonicalize@2.1.0": { "integrity": "sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==", @@ -4495,7 +4463,7 @@ "undici-types@5.28.4" ] }, - "db0@0.3.4_mysql2@3.20.0__@types+node@24.12.0_@types+node@24.12.0": { + "db0@0.3.4_mysql2@3.22.1__@types+node@24.12.2_@types+node@24.12.2": { "integrity": "sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw==", "dependencies": [ "mysql2" @@ -4562,8 +4530,8 @@ "define-lazy-prop@3.0.0": { "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==" }, - "defu@6.1.6": { - "integrity": "sha512-f8mefEW4WIVg4LckePx3mALjQSPQgFlg9U8yaPdlsbdYcHQyj9n2zL2LJEA52smeYxOvmd/nB7TpMtHGMTHcug==" + "defu@6.1.7": { + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==" }, "delegates@1.0.0": { "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" @@ -4595,8 +4563,8 @@ "base-64" ] }, - "devalue@5.6.4": { - "integrity": "sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==" + "devalue@5.7.1": { + "integrity": "sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA==" }, "devlop@1.1.0": { "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", @@ -4638,11 +4606,11 @@ "dot-prop@10.1.0": { "integrity": "sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==", "dependencies": [ - "type-fest@5.5.0" + "type-fest@5.6.0" ] }, - "dotenv@17.4.0": { - "integrity": "sha512-kCKF62fwtzwYm0IGBNjRUjtJgMfGapII+FslMHIjMR5KTnwEmBmWLDRSnc3XSNP8bNy34tekgQyDT0hr7pERRQ==" + "dotenv@17.4.2": { + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==" }, "dset@3.1.4": { "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==" @@ -4667,8 +4635,8 @@ "ee-first@1.1.1": { "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, - "electron-to-chromium@1.5.331": { - "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==" + "electron-to-chromium@1.5.340": { + "integrity": "sha512-908qahOGocRMinT2nM3ajCEM99H4iPdv84eagPP3FfZy/1ZGeOy2CZYzjhms81ckOPCXPlW7LkY4XpxD8r1DrA==" }, "emoji-regex-xs@1.0.0": { "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" @@ -4958,11 +4926,10 @@ "estraverse" ] }, - "esrap@2.2.4": { - "integrity": "sha512-suICpxAmZ9A8bzJjEl/+rLJiDKC0X4gYWUxT6URAWBLvlXmtbZd5ySMu/N2ZGEtMCAmflUDPSehrP9BQcsGcSg==", + "esrap@2.2.5": { + "integrity": "sha512-/yLB1538mag+dn0wsePTe8C0rDIjUOaJpMs2McodSzmM2msWcZsBSdRtg6HOBt0A/r82BN+Md3pgwSc/uWt2Ig==", "dependencies": [ - "@jridgewell/sourcemap-codec", - "@typescript-eslint/types" + "@jridgewell/sourcemap-codec" ] }, "esrecurse@4.3.0": { @@ -5126,8 +5093,8 @@ "fastify-plugin@5.1.0": { "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==" }, - "fastify@5.8.4": { - "integrity": "sha512-sa42J1xylbBAYUWALSBoyXKPDUvM3OoNOibIefA+Oha57FryXKKCZarA1iDntOCWp3O35voZLuDg2mdODXtPzQ==", + "fastify@5.8.5": { + "integrity": "sha512-Yqptv59pQzPgQUSIm87hMqHJmdkb1+GPxdE6vW6FRyVE9G86mt7rOghitiU4JHRaTyDUk9pfeKmDeu70lAwM4Q==", "dependencies": [ "@fastify/ajv-compiler", "@fastify/error", @@ -5193,8 +5160,8 @@ "uint8array-extras" ] }, - "file-type@21.3.2": { - "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", + "file-type@21.3.4": { + "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==", "dependencies": [ "@tokenizer/inflate", "strtok3@10.3.5", @@ -5251,8 +5218,8 @@ "flattie@1.1.1": { "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==" }, - "follow-redirects@1.15.11": { - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==" + "follow-redirects@1.16.0": { + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==" }, "fontace@0.4.1": { "integrity": "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==", @@ -5343,8 +5310,8 @@ "is-stream@4.0.1" ] }, - "get-tsconfig@4.13.7": { - "integrity": "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==", + "get-tsconfig@4.14.0": { + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", "dependencies": [ "resolve-pkg-maps" ] @@ -5581,14 +5548,14 @@ "highlight.js@10.7.3": { "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" }, - "hono@4.12.10": { - "integrity": "sha512-mx/p18PLy5og9ufies2GOSUqep98Td9q4i/EF6X7yJgAiIopxqdfIO3jbqsi3jRgTgw88jMDEzVKi+V2EF+27w==" + "hono@4.12.14": { + "integrity": "sha512-am5zfg3yu6sqn5yjKBNqhnTX7Cv+m00ox+7jbaKkrLMRJ4rAdldd1xPd/JzbBWspqaQv6RSTrgFN95EsfhC+7w==" }, "hookable@5.5.3": { "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==" }, - "hookable@6.1.0": { - "integrity": "sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==" + "hookable@6.1.1": { + "integrity": "sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==" }, "html-entities@2.3.3": { "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" @@ -5704,8 +5671,8 @@ "import-meta-resolve@4.2.0": { "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==" }, - "import-without-cache@0.2.5": { - "integrity": "sha512-B6Lc2s6yApwnD2/pMzFh/d5AVjdsDXjgkeJ766FmFuJELIGHNycKRj+l3A39yZPM4CchqNCB4RITEAYB1KUM6A==" + "import-without-cache@0.3.3": { + "integrity": "sha512-bDxwDdF04gm550DfZHgffvlX+9kUlcz32UD0AeBTmVPFiWkrexF2XVmiuFFbDhiFuP8fQkrkvI2KdSNPYWAXkQ==" }, "imurmurhash@0.1.4": { "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" @@ -5719,20 +5686,20 @@ "@inquirer/core@8.2.4" ] }, - "inquirer@12.11.1_@types+node@24.12.0": { + "inquirer@12.11.1_@types+node@24.12.2": { "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@24.12.2", "@inquirer/prompts", - "@inquirer/type@3.0.10_@types+node@24.12.0", - "@types/node@24.12.0", + "@inquirer/type@3.0.10_@types+node@24.12.2", + "@types/node@24.12.2", "mute-stream@2.0.0", "run-async", "rxjs" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ] }, "ioredis@5.10.1": { @@ -5900,10 +5867,10 @@ "@pkgjs/parseargs" ] }, - "jimp@1.6.0": { - "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", + "jimp@1.6.1": { + "integrity": "sha512-hNQh6rZtWfSVWSNVmvq87N5BPJsNH7k7I7qyrXf9DOma9xATQk3fsyHazCQe51nCjdkoWdTmh0vD7bjVSLoxxw==", "dependencies": [ - "@jimp/core@1.6.0", + "@jimp/core@1.6.1", "@jimp/diff", "@jimp/js-bmp", "@jimp/js-gif", @@ -5929,7 +5896,7 @@ "@jimp/plugin-rotate", "@jimp/plugin-threshold", "@jimp/types", - "@jimp/utils@1.6.0" + "@jimp/utils@1.6.1" ] }, "jiti@1.21.7": { @@ -6105,7 +6072,7 @@ "mlly", "node-forge", "pathe@2.0.3", - "std-env@4.0.0", + "std-env@4.1.0", "tinyclip", "ufo", "untun", @@ -6164,8 +6131,8 @@ "lru-cache@10.4.3": { "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, - "lru-cache@11.2.7": { - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==" + "lru-cache@11.3.5": { + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==" }, "lru-cache@5.1.1": { "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", @@ -6665,7 +6632,7 @@ "glob-to-regexp", "sharp@0.33.5", "stoppable", - "undici@7.24.4", + "undici@7.24.8", "workerd", "ws", "youch@4.1.0-beta.10", @@ -6682,19 +6649,19 @@ "minimatch@3.1.5": { "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dependencies": [ - "brace-expansion@1.1.13" + "brace-expansion@1.1.14" ] }, "minimatch@5.1.9": { "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dependencies": [ - "brace-expansion@2.0.3" + "brace-expansion@2.1.0" ] }, "minimatch@9.0.9": { "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dependencies": [ - "brace-expansion@2.0.3" + "brace-expansion@2.1.0" ] }, "minipass@7.1.3": { @@ -6730,10 +6697,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.22.1_@types+node@24.12.2": { + "integrity": "sha512-48+9UXehKyxxiP2pqCxUq+MSFvX+v41jwsSpFDQO/jAoFuAELutBGJUhWJnDbe82/OBlIhSBMC82WeonmznT/Q==", "dependencies": [ - "@types/node@24.12.0", + "@types/node@24.12.2", "aws-ssl-profiles", "denque", "generate-function", @@ -6771,7 +6738,7 @@ "neotraverse@0.6.18": { "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==" }, - "nitropack@2.13.3_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2_@types+node@24.12.0_mysql2@3.20.0__@types+node@24.12.0_rolldown@1.0.0-rc.12__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2": { + "nitropack@2.13.3_@types+node@24.12.2_mysql2@3.22.1__@types+node@24.12.2_rolldown@1.0.0-rc.16": { "integrity": "sha512-C8vO7RxkU0AQ3HbYUumuG6MVM5JjRaBchke/rYFOp3EvrLtTBHZYhDVGECdpa27vNuOYRzm3GtQMn2YDOjDJLA==", "dependencies": [ "@cloudflare/kv-asset-handler@0.4.2", @@ -6831,7 +6798,7 @@ "serve-placeholder", "serve-static@2.2.1", "source-map@0.7.6", - "std-env@4.0.0", + "std-env@4.1.0", "ufo", "ultrahtml", "uncrypto", @@ -7112,7 +7079,7 @@ "path-scurry@2.0.2": { "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dependencies": [ - "lru-cache@11.2.7", + "lru-cache@11.3.5", "minipass" ] }, @@ -7228,31 +7195,31 @@ "pngjs@7.0.0": { "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==" }, - "postcss@8.5.8": { - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "postcss@8.5.10": { + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", "dependencies": [ "nanoid", "picocolors", "source-map-js" ] }, - "postgres@3.4.8": { - "integrity": "sha512-d+JFcLM17njZaOLkv6SCev7uoLaBtfK86vMUXhW1Z4glPWh4jozno9APvW/XKFJ3CCxVoC7OL38BqRydtu5nGg==" + "postgres@3.4.9": { + "integrity": "sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw==" }, "powershell-utils@0.1.0": { "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==" }, - "preact-render-to-string@6.6.5_preact@10.29.0": { - "integrity": "sha512-O6MHzYNIKYaiSX3bOw0gGZfEbOmlIDtDfWwN1JJdc/T3ihzRT6tGGSEWE088dWrEDGa1u7101q+6fzQnO9XCPA==", + "preact-render-to-string@6.6.7_preact@10.29.1": { + "integrity": "sha512-3XdbsX3+vn9dQW+jJI/FsI9rlkgl6dbeUpqLsChak6jp3j3auFqBCkno7VChbMFs5Q8ylBj6DrUkKRwtVN3nvw==", "dependencies": [ - "preact@10.29.0" + "preact@10.29.1" ] }, "preact@10.19.6": { "integrity": "sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==" }, - "preact@10.29.0": { - "integrity": "sha512-wSAGyk2bYR1c7t3SZ3jHcM6xy0lcBcDel6lODcs9ME6Th++Dx2KU+6D3HD8wMMKGA8Wpw7OMd3/4RGzYRpzwRg==" + "preact@10.29.1": { + "integrity": "sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==" }, "prelude-ls@1.2.1": { "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" @@ -7553,9 +7520,10 @@ "resolve-pkg-maps@1.0.0": { "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" }, - "resolve@1.22.11": { - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "resolve@1.22.12": { + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "dependencies": [ + "es-errors", "is-core-module", "path-parse", "supports-preserve-symlinks-flag" @@ -7611,7 +7579,7 @@ "rfdc@1.4.1": { "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" }, - "rolldown-plugin-dts@0.23.2_rolldown@1.0.0-rc.12__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2_typescript@6.0.2_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2": { + "rolldown-plugin-dts@0.23.2_rolldown@1.0.0-rc.16_typescript@6.0.3": { "integrity": "sha512-PbSqLawLgZBGcOGT3yqWBGn4cX+wh2nt5FuBGdcMHyOhoukmjbhYAl8NT9sE4U38Cm9tqLOIQeOrvzeayM0DLQ==", "dependencies": [ "@babel/generator@8.0.0-rc.3", @@ -7631,8 +7599,8 @@ "typescript" ] }, - "rolldown@1.0.0-rc.12_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2": { - "integrity": "sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==", + "rolldown@1.0.0-rc.16": { + "integrity": "sha512-rzi5WqKzEZw3SooTt7cgm4eqIoujPIyGcJNGFL7iPEuajQw7vxMHUkXylu4/vhCkJGXsgRmxqMKXUpT6FEgl0g==", "dependencies": [ "@oxc-project/types", "@rolldown/pluginutils" @@ -7656,7 +7624,7 @@ ], "bin": true }, - "rollup-plugin-visualizer@7.0.1_rolldown@1.0.0-rc.12__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2_rollup@4.60.1_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2": { + "rollup-plugin-visualizer@7.0.1_rolldown@1.0.0-rc.16_rollup@4.60.1": { "integrity": "sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==", "dependencies": [ "open", @@ -7806,14 +7774,14 @@ "serialize-javascript@7.0.5": { "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==" }, - "seroval-plugins@1.5.1_seroval@1.5.1": { - "integrity": "sha512-4FbuZ/TMl02sqv0RTFexu0SP6V+ywaIe5bAWCCEik0fk17BhALgwvUDVF7e3Uvf9pxmwCEJsRPmlkUE6HdzLAw==", + "seroval-plugins@1.5.2_seroval@1.5.2": { + "integrity": "sha512-qpY0Cl+fKYFn4GOf3cMiq6l72CpuVaawb6ILjubOQ+diJ54LfOWaSSPsaswN8DRPIPW4Yq+tE1k5aKd7ILyaFg==", "dependencies": [ "seroval" ] }, - "seroval@1.5.1": { - "integrity": "sha512-OwrZRZAfhHww0WEnKHDY8OM0U/Qs8OTfIDWhUD4BLpNJUfXK4cGmjiagGze086m+mhI+V2nD0gfbHEnJjb9STA==" + "seroval@1.5.2": { + "integrity": "sha512-xcRN39BdsnO9Tf+VzsE7b3JyTJASItIV1FVFewJKCFcW4s4haIKS3e6vj8PGB9qBwC7tnuOywQMdv5N4qkzi7Q==" }, "serve-placeholder@2.0.2": { "integrity": "sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==", @@ -7954,8 +7922,8 @@ "@types/hast" ] }, - "side-channel-list@1.0.0": { - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "side-channel-list@1.0.1": { + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dependencies": [ "es-errors", "object-inspect" @@ -8002,8 +7970,8 @@ "is-arrayish" ] }, - "simple-xml-to-json@1.2.4": { - "integrity": "sha512-3MY16e0ocMHL7N1ufpdObURGyX+lCo0T/A+y6VCwosLdH1HSda4QZl1Sdt/O+2qWp48WFi26XEp5rF0LoaL0Dg==" + "simple-xml-to-json@1.2.7": { + "integrity": "sha512-mz9VXphOxQWX3eQ/uXCtm6upltoN0DLx8Zb5T4TFC4FHB7S9FDPGre8CfLWqPWQQH/GrQYd2AXhhVM5LDpYx6Q==" }, "sirv@3.0.2": { "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", @@ -8101,8 +8069,8 @@ "std-env@3.10.0": { "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==" }, - "std-env@4.0.0": { - "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==" + "std-env@4.1.0": { + "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==" }, "stdin-discarder@0.2.2": { "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==" @@ -8220,8 +8188,8 @@ "supports-preserve-symlinks-flag@1.0.0": { "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, - "svelte@5.55.1": { - "integrity": "sha512-QjvU7EFemf6mRzdMGlAFttMWtAAVXrax61SZYHdkD6yoVGQ89VeyKfZD4H1JrV1WLmJBxWhFch9H6ig/87VGjw==", + "svelte@5.55.4": { + "integrity": "sha512-q8DFohk6vUswSng95IZb9nzWJnbINZsK7OiM1snAa3qCjJBL0ZQpvMyAaVXjUukdM75J/m8UE8xwqat8Ors/zQ==", "dependencies": [ "@jridgewell/remapping", "@jridgewell/sourcemap-codec", @@ -8344,11 +8312,11 @@ "tinyexec@0.3.2": { "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" }, - "tinyexec@1.0.4": { - "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==" + "tinyexec@1.1.1": { + "integrity": "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==" }, - "tinyglobby@0.2.15": { - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "tinyglobby@0.2.16": { + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dependencies": [ "fdir", "picomatch@4.0.4" @@ -8412,13 +8380,13 @@ "trough@2.2.0": { "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==" }, - "ts-api-utils@2.5.0_typescript@6.0.2": { + "ts-api-utils@2.5.0_typescript@6.0.3": { "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dependencies": [ "typescript" ] }, - "tsconfck@3.1.6_typescript@6.0.2": { + "tsconfck@3.1.6_typescript@6.0.3": { "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", "dependencies": [ "typescript" @@ -8428,21 +8396,21 @@ ], "bin": true }, - "tsdown@0.21.7_typescript@6.0.2_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2": { - "integrity": "sha512-ukKIxKQzngkWvOYJAyptudclkm4VQqbjq+9HF5K5qDO8GJsYtMh8gIRwicbnZEnvFPr6mquFwYAVZ8JKt3rY2g==", + "tsdown@0.21.9_typescript@6.0.3": { + "integrity": "sha512-tZPv2zMaMnjj9H9h0SDqpSXa9YWVZWHlG46DnSgNTFX6aq001MSI8kuBzJumr/u099nWj+1v5S7rhbnHk5jCHA==", "dependencies": [ "ansis", "cac@7.0.0", "defu", "empathic", - "hookable@6.1.0", + "hookable@6.1.1", "import-without-cache", "obug", "picomatch@4.0.4", "rolldown", "rolldown-plugin-dts", "semver@7.7.4", - "tinyexec@1.0.4", + "tinyexec@1.1.1", "tinyglobby", "tree-kill", "typescript", @@ -8483,8 +8451,8 @@ "type-fest@4.41.0": { "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==" }, - "type-fest@5.5.0": { - "integrity": "sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==", + "type-fest@5.6.0": { + "integrity": "sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==", "dependencies": [ "tagged-tag" ] @@ -8496,8 +8464,8 @@ "mime-types@2.1.35" ] }, - "typescript@6.0.2": { - "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", + "typescript@6.0.3": { + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "bin": true }, "ufo@1.6.3": { @@ -8543,11 +8511,11 @@ "undici-types@7.16.0": { "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==" }, - "undici@6.24.1": { - "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==" + "undici@6.25.0": { + "integrity": "sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==" }, - "undici@7.24.4": { - "integrity": "sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==" + "undici@7.24.8": { + "integrity": "sha512-6KQ/+QxK49Z/p3HO6E5ZCZWNnCasyZLa5ExaVYyvPxUwKtbCPMKELJOqh7EqOle0t9cH/7d2TaaTRRa6Nhs4YQ==" }, "unenv@1.10.0": { "integrity": "sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==", @@ -8598,8 +8566,8 @@ "ohash" ] }, - "unimport@6.0.2": { - "integrity": "sha512-ZSOkrDw380w+KIPniY3smyXh2h7H9v2MNr9zejDuh239o5sdea44DRAYrv+rfUi2QGT186P2h0GPGKvy8avQ5g==", + "unimport@6.1.0": { + "integrity": "sha512-ocgNKyiqj7Hw7oHt7A7D3za3fq28eShe1EloL6hsoQgn7CF51Y4CqFT9ISG3rEy0JpA8CCz/sY5h5OovOn62VQ==", "dependencies": [ "acorn@8.16.0", "escape-string-regexp@5.0.0", @@ -8704,14 +8672,14 @@ "webpack-virtual-modules" ] }, - "unrun@0.2.34_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2": { - "integrity": "sha512-LyaghRBR++r7svhDK6tnDz2XaYHWdneBOA0jbS8wnRsHerI9MFljX4fIiTgbbNbEVzZ0C9P1OjWLLe1OqoaaEw==", + "unrun@0.2.36": { + "integrity": "sha512-ICAGv44LHSKjCdI4B4rk99lJLHXBweutO4MUwu3cavMlYtXID0Tn5e1Kwe/Uj6BSAuHHXfi1JheFVCYhcXHfAg==", "dependencies": [ "rolldown" ], "bin": true }, - "unstorage@1.17.5_db0@0.3.4__mysql2@3.20.0___@types+node@24.12.0__@types+node@24.12.0_ioredis@5.10.1_@types+node@24.12.0_mysql2@3.20.0__@types+node@24.12.0": { + "unstorage@1.17.5_db0@0.3.4__mysql2@3.22.1___@types+node@24.12.2__@types+node@24.12.2_ioredis@5.10.1_@types+node@24.12.2_mysql2@3.22.1__@types+node@24.12.2": { "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==", "dependencies": [ "anymatch", @@ -8720,7 +8688,7 @@ "destr", "h3@1.15.11", "ioredis", - "lru-cache@11.2.7", + "lru-cache@11.3.5", "node-fetch-native", "ofetch", "ufo" @@ -8804,7 +8772,7 @@ "utils-merge@1.0.1": { "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, - "valibot@1.3.1_typescript@6.0.2": { + "valibot@1.3.1_typescript@6.0.3": { "integrity": "sha512-sfdRir/QFM0JaF22hqTroPc5xy4DimuGQVKFrzF1YfGwaS1nJot3Y8VqMdLO2Lg27fMzat2yD3pY5PbAYO39Gg==", "dependencies": [ "typescript" @@ -8837,7 +8805,7 @@ "vfile-message" ] }, - "vinxi@0.5.11_@emnapi+core@1.9.2_@emnapi+runtime@1.9.2_@types+node@24.12.0_ioredis@5.10.1_mysql2@3.20.0__@types+node@24.12.0_rolldown@1.0.0-rc.12__@emnapi+core@1.9.2__@emnapi+runtime@1.9.2_tsx@4.21.0_yaml@2.8.3": { + "vinxi@0.5.11_@types+node@24.12.2_ioredis@5.10.1_mysql2@3.22.1__@types+node@24.12.2_rolldown@1.0.0-rc.16_tsx@4.21.0_yaml@2.8.3": { "integrity": "sha512-82Qm+EG/b2PRFBvXBbz1lgWBGcd9totIL6SJhnrZYfakjloTVG9+5l6gfO6dbCCtztm5pqWFzLY0qpZ3H3ww/w==", "dependencies": [ "@babel/core", @@ -8872,24 +8840,24 @@ "unctx", "unenv@1.10.0", "unstorage", - "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", + "vite@6.4.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", "zod@4.3.6" ], "bin": true }, - "vite-node@3.2.4_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { + "vite-node@3.2.4_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dependencies": [ "cac@6.7.14", "debug@4.4.3", "es-module-lexer", "pathe@2.0.3", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3" + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3" ], "bin": true }, - "vite-plugin-solid@2.11.11_solid-js@1.9.12_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { - "integrity": "sha512-YMZCXsLw9kyuvQFEdwLP27fuTQJLmjNoHy90AOJnbRuJ6DwShUxKFo38gdFrWn9v11hnGicKCZEaeI/TFs6JKw==", + "vite-plugin-solid@2.11.12_solid-js@1.9.12_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { + "integrity": "sha512-FgjPcx2OwX9h6f28jli7A4bG7PP3te8uyakE5iqsmpq3Jqi1TWLgSroC9N6cMfGRU2zXsl4Q6ISvTr2VL0QHpA==", "dependencies": [ "@babel/core", "@types/babel__core", @@ -8897,14 +8865,14 @@ "merge-anything", "solid-js", "solid-refresh", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", - "vitefu@1.1.3_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3" + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", + "vitefu@1.1.3_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3" ] }, - "vite@6.4.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "vite@6.4.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { + "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", "dependencies": [ - "@types/node@24.12.0", + "@types/node@24.12.2", "esbuild@0.25.12", "fdir", "picomatch@4.0.4", @@ -8918,16 +8886,16 @@ "fsevents" ], "optionalPeers": [ - "@types/node@24.12.0", + "@types/node@24.12.2", "tsx", "yaml" ], "bin": true }, - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { + "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", "dependencies": [ - "@types/node@24.12.0", + "@types/node@24.12.2", "esbuild@0.27.7", "fdir", "picomatch@4.0.4", @@ -8941,29 +8909,29 @@ "fsevents" ], "optionalPeers": [ - "@types/node@24.12.0", + "@types/node@24.12.2", "tsx", "yaml" ], "bin": true }, - "vitefu@1.1.3_vite@6.4.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { + "vitefu@1.1.3_vite@6.4.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { "integrity": "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==" }, - "vitefu@1.1.3_vite@7.3.1__@types+node@24.12.0__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { + "vitefu@1.1.3_vite@7.3.2__@types+node@24.12.2__tsx@4.21.0__yaml@2.8.3_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { "integrity": "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==", "dependencies": [ - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3" + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3" ], "optionalPeers": [ - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3" + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3" ] }, - "vitest@3.2.4_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3": { + "vitest@3.2.4_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3": { "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dependencies": [ "@types/chai", - "@types/node@24.12.0", + "@types/node@24.12.2", "@vitest/expect", "@vitest/mocker", "@vitest/pretty-format", @@ -8983,12 +8951,12 @@ "tinyglobby", "tinypool", "tinyrainbow", - "vite@7.3.1_@types+node@24.12.0_tsx@4.21.0_yaml@2.8.3", + "vite@7.3.2_@types+node@24.12.2_tsx@4.21.0_yaml@2.8.3", "vite-node", "why-is-node-running" ], "optionalPeers": [ - "@types/node@24.12.0" + "@types/node@24.12.2" ], "bin": true }, @@ -9060,7 +9028,7 @@ "scripts": true, "bin": true }, - "wrangler@4.35.0_@cloudflare+workers-types@4.20260403.1": { + "wrangler@4.35.0_@cloudflare+workers-types@4.20260417.1": { "integrity": "sha512-HbyXtbrh4Fi3mU8ussY85tVdQ74qpVS1vctUgaPc+bPrXBTqfDLkZ6VRtHAVF/eBhz4SFmhJtCQpN1caY2Ak8A==", "dependencies": [ "@cloudflare/kv-asset-handler@0.4.0", @@ -9252,7 +9220,7 @@ "zod@3.25.76" ] }, - "zod-to-ts@1.2.0_typescript@6.0.2_zod@3.25.76": { + "zod-to-ts@1.2.0_typescript@6.0.3_zod@3.25.76": { "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", "dependencies": [ "typescript", diff --git a/examples/nuxt/.gitignore b/examples/nuxt/.gitignore new file mode 100644 index 000000000..d86952676 --- /dev/null +++ b/examples/nuxt/.gitignore @@ -0,0 +1,5 @@ +node_modules +dist +.output +.nuxt +.data diff --git a/examples/nuxt/README.md b/examples/nuxt/README.md new file mode 100644 index 000000000..a00c277af --- /dev/null +++ b/examples/nuxt/README.md @@ -0,0 +1,45 @@ + + +Fedify-Nuxt integration example application +=========================================== + +A comprehensive example of building a federated server application using +[Fedify] with [Nuxt]. This example demonstrates how to create an +ActivityPub-compatible federated social media server that can interact with +other federated platforms like [Mastodon], [Misskey], and other ActivityPub +implementations using [Fedify] and [Nuxt]. + +[Fedify]: https://fedify.dev +[Nuxt]: https://nuxt.com/ +[Mastodon]: https://mastodon.social/ +[Misskey]: https://misskey.io/ + + +Running the example +------------------- + +~~~~ sh +pnpm dev +~~~~ + + +Communicate with other federated servers +---------------------------------------- + +1. Tunnel your local server to the internet using `fedify tunnel` + + ~~~~ sh + fedify tunnel 3000 + ~~~~ + +2. Open the tunneled URL in your browser and check that the server is running + properly. + +3. Search your handle and follow from other federated servers such as + [Mastodon] or [Misskey]. + + > [!NOTE] + > [ActivityPub Academy] is a great resource to learn how to interact + > with other federated servers using ActivityPub protocol. + +[ActivityPub Academy]: https://www.activitypub.academy/ diff --git a/examples/nuxt/app.vue b/examples/nuxt/app.vue new file mode 100644 index 000000000..eb55b503f --- /dev/null +++ b/examples/nuxt/app.vue @@ -0,0 +1,13 @@ + + + diff --git a/examples/nuxt/nuxt.config.ts b/examples/nuxt/nuxt.config.ts new file mode 100644 index 000000000..be3badafa --- /dev/null +++ b/examples/nuxt/nuxt.config.ts @@ -0,0 +1,10 @@ +export default defineNuxtConfig({ + modules: ["@fedify/nuxt"], + fedify: { federationModule: "#server/federation" }, + ssr: true, + // The settings below loosen dev-server defenses to support tunnel-based + // federation testing (e.g., `fedify tunnel`). Not recommended for general + // Nuxt projects — remove or tighten before reusing this config. + devServer: { host: "0.0.0.0" }, + vite: { server: { allowedHosts: true } }, +}); diff --git a/examples/nuxt/package.json b/examples/nuxt/package.json new file mode 100644 index 000000000..a5ced5ca4 --- /dev/null +++ b/examples/nuxt/package.json @@ -0,0 +1,25 @@ +{ + "name": "nuxt-example", + "version": "0.0.1", + "private": true, + "type": "module", + "description": "Fedify app with Nuxt integration", + "scripts": { + "dev": "nuxt dev", + "build": "nuxt build", + "preview": "nuxt preview", + "start": "node .output/server/index.mjs" + }, + "dependencies": { + "@fedify/fedify": "workspace:^", + "@fedify/nuxt": "workspace:^", + "@fedify/vocab": "workspace:^", + "@logtape/logtape": "catalog:", + "nuxt": "catalog:", + "h3": "catalog:" + }, + "devDependencies": { + "typescript": "catalog:", + "@types/node": "catalog:" + } +} diff --git a/examples/nuxt/pages/index.vue b/examples/nuxt/pages/index.vue new file mode 100644 index 000000000..db97d74b4 --- /dev/null +++ b/examples/nuxt/pages/index.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/examples/nuxt/pages/users/[identifier]/index.vue b/examples/nuxt/pages/users/[identifier]/index.vue new file mode 100644 index 000000000..825c7b4aa --- /dev/null +++ b/examples/nuxt/pages/users/[identifier]/index.vue @@ -0,0 +1,68 @@ + + + diff --git a/examples/nuxt/pages/users/[identifier]/posts/[id].vue b/examples/nuxt/pages/users/[identifier]/posts/[id].vue new file mode 100644 index 000000000..722c1f6e9 --- /dev/null +++ b/examples/nuxt/pages/users/[identifier]/posts/[id].vue @@ -0,0 +1,64 @@ + + + diff --git a/examples/nuxt/public/demo-profile.png b/examples/nuxt/public/demo-profile.png new file mode 100644 index 000000000..2c9883bcc Binary files /dev/null and b/examples/nuxt/public/demo-profile.png differ diff --git a/examples/nuxt/public/fedify-logo.svg b/examples/nuxt/public/fedify-logo.svg new file mode 100644 index 000000000..e9d2e54ea --- /dev/null +++ b/examples/nuxt/public/fedify-logo.svg @@ -0,0 +1,218 @@ + + + FedifyFedify + diff --git a/examples/nuxt/public/style.css b/examples/nuxt/public/style.css new file mode 100644 index 000000000..6cd70d7b7 --- /dev/null +++ b/examples/nuxt/public/style.css @@ -0,0 +1,505 @@ +:root { + --background: #ffffff; + --foreground: #171717; +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + background: var(--background); + color: var(--foreground); + font-size: 16px; + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, + Cantarell, sans-serif; +} + +a { + color: #3b82f6; + text-decoration: none; +} +a:hover { + text-decoration: underline; +} + +/* Profile Header */ +.profile-header { + display: flex; + gap: 2rem; + padding: 2rem; + margin-bottom: 2rem; + border-radius: 1rem; + color: white; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); +} + +.avatar-section { + flex-shrink: 0; +} + +.avatar { + width: 7.5rem; + height: 7.5rem; + border-radius: 50%; + object-fit: cover; + border: 4px solid rgba(255, 255, 255, 0.2); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2); +} + +.user-info { + display: flex; + flex-direction: column; + justify-content: center; + flex: 1; +} + +.user-name { + font-size: 2.25rem; + font-weight: bold; + margin: 0 0 0.5rem 0; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.user-handle { + font-size: 1.25rem; + font-weight: 500; + margin-bottom: 1rem; + opacity: 0.9; +} + +.user-bio { + font-size: 1.125rem; + line-height: 1.625; + opacity: 0.95; + margin: 0; +} + +/* Profile Container & Content */ +.profile-container { + max-width: 56rem; + margin: 0 auto; + display: flex; + flex-direction: column; + justify-content: center; + align-content: center; + padding: 2rem; + min-height: 100vh; +} + +.profile-content { + display: grid; + gap: 2rem; +} + +.info-card { + border-radius: 0.75rem; + border: 1px solid rgba(0, 0, 0, 0.05); + background: var(--background); + color: var(--foreground); + padding: 2rem; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); +} + +.info-card h3 { + font-size: 1.5rem; + font-weight: 600; + margin: 0 0 1.5rem 0; +} + +.info-grid { + display: grid; + gap: 1rem; +} + +.info-item { + display: flex; + flex-direction: column; + justify-content: space-between; + padding: 0.75rem 0; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +.info-item:last-child { + border-bottom: none; +} + +.info-label { + font-size: 0.875rem; + font-weight: 600; + color: color-mix(in srgb, var(--foreground) 60%, transparent); +} + +.fedify-anchor { + display: inline-flex; + align-items: center; + gap: 0.25rem; + height: 1.5rem; + padding: 0.125rem 0.25rem; + border-radius: 0.375rem; + background: #7dd3fc; + color: white; + font-weight: 500; + text-decoration: none; +} + +.fedify-anchor::before { + content: ""; + display: inline-block; + width: 16px; + height: 16px; + background-image: url("/fedify-logo.svg"); + background-size: 16px 16px; + vertical-align: middle; + margin-bottom: 0.125rem; +} + +/* Post Form */ +.post-form { + max-width: 56rem; + margin: 2rem auto; + padding: 1.5rem; + border-radius: 0.75rem; + border: 1px solid rgba(0, 0, 0, 0.1); + background: var(--background); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); +} + +.form-group { + margin-bottom: 1rem; +} + +.form-label { + display: block; + font-size: 1.125rem; + font-weight: 600; + margin-bottom: 0.5rem; + color: var(--foreground); +} + +.form-textarea { + width: 100%; + resize: vertical; + border-radius: 0.5rem; + border: 1px solid rgba(0, 0, 0, 0.2); + padding: 0.75rem; + font-size: 1rem; + background: var(--background); + color: var(--foreground); + transition: border-color 0.2s, box-shadow 0.2s; + font-family: inherit; +} + +.form-textarea:focus { + outline: none; + border-color: #3b82f6; + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.3); +} + +.post-button { + padding: 0.5rem 1.5rem; + border: none; + border-radius: 0.5rem; + font-size: 1rem; + font-weight: 600; + color: white; + cursor: pointer; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + transition: transform 0.2s, box-shadow 0.2s; +} + +.post-button:hover { + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); +} + +/* Posts Container & Grid */ +.posts-container { + max-width: 56rem; + margin: 0 auto; + padding: 0 2rem; +} + +.posts-title { + font-size: 1.5rem; + font-weight: bold; + margin-bottom: 1.5rem; + color: var(--foreground); +} + +.posts-grid { + display: grid; + gap: 1.5rem; +} + +.post-card { + border-radius: 0.75rem; + border: 1px solid rgba(0, 0, 0, 0.1); + background: var(--background); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); + transition: transform 0.2s, box-shadow 0.2s; +} + +.post-card:hover { + transform: translateY(-2px); + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1); +} + +.post-link { + display: block; + padding: 1.5rem; + text-decoration: none; + color: inherit; +} +.post-link:hover { + text-decoration: none; +} + +.post-header { + display: flex; + align-items: center; + gap: 0.75rem; + margin-bottom: 1rem; +} + +.post-avatar { + width: 3rem; + height: 3rem; + border-radius: 50%; + object-fit: cover; + border: 2px solid #e5e7eb; +} + +.post-user-info { + flex: 1; +} + +.post-user-name { + font-size: 1.125rem; + font-weight: 600; + margin: 0 0 0.25rem 0; + color: var(--foreground); +} + +.post-user-handle { + font-size: 0.875rem; + opacity: 0.7; + color: var(--foreground); + margin: 0; +} + +.post-content { + font-size: 1rem; + line-height: 1.625; + color: var(--foreground); +} + +.post-content p { + margin: 0; +} + +/* Post Detail */ +.post-detail-container { + max-width: 56rem; + margin: 0 auto; + padding: 2rem; +} + +.post-detail-card { + border-radius: 0.75rem; + border: 1px solid rgba(0, 0, 0, 0.1); + background: var(--background); + padding: 2rem; + margin-bottom: 2rem; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); +} + +.post-detail-author { + display: flex; + align-items: flex-start; + gap: 1rem; + padding-bottom: 1.5rem; + margin-bottom: 1.5rem; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + text-decoration: none; + color: inherit; +} +.post-detail-author:hover { + text-decoration: none; +} + +.author-avatar { + width: 4rem; + height: 4rem; + border-radius: 50%; + object-fit: cover; + border: 2px solid #e5e7eb; +} + +.author-info { + flex: 1; +} + +.author-name { + font-size: 1.5rem; + font-weight: bold; + margin: 0 0 0.25rem 0; + color: var(--foreground); +} + +.author-handle { + font-size: 1rem; + font-weight: 500; + opacity: 0.7; + margin: 0 0 0.5rem 0; + color: var(--foreground); +} + +.post-timestamp { + font-size: 0.875rem; + opacity: 0.6; + color: var(--foreground); +} + +.post-detail-content { + padding: 1.5rem 0; + font-size: 1.125rem; + line-height: 1.625; + color: var(--foreground); +} + +.post-detail-content p { + margin: 0; +} + +.back-link { + display: inline-block; + margin-bottom: 1.5rem; + padding: 0.5rem 1rem; + border-radius: 0.5rem; + font-weight: 500; + color: var(--foreground); + background: color-mix(in srgb, var(--foreground) 10%, transparent); + text-decoration: none; + transition: background 0.2s; +} + +.back-link:hover { + background: color-mix(in srgb, var(--foreground) 15%, transparent); + text-decoration: none; +} + +/* Home Page */ +.home-container { + max-width: 780px; + margin: 2rem auto; + display: grid; + gap: 1rem; + padding: 1rem; +} + +.home-logo { + display: block; + width: 8rem; + height: 8rem; + margin: 0 auto; +} + +.home-banner { + display: flex; + flex-wrap: wrap; + justify-content: center; + font-family: monospace; + line-height: 1.2; + white-space: pre; +} + +.home-handle { + font-family: monospace; + background: #f3f4f6; + color: #000; + padding: 0.25rem 0.5rem; + border-radius: 0.375rem; + user-select: all; +} + +.follower-item { + font-family: monospace; + background: #f3f4f6; + color: #000; + padding: 0.25rem 0.5rem; + border-radius: 0.375rem; +} + +.follower-list { + display: flex; + flex-direction: column; + gap: 0.25rem; + width: max-content; + list-style: none; +} + +/* Responsive */ +@media (max-width: 768px) { + .profile-container { + padding: 1rem; + } + + .profile-header { + flex-direction: column; + align-items: center; + gap: 1rem; + text-align: center; + } + + .user-name { + font-size: 1.875rem; + } + + .info-item { + flex-direction: column; + align-items: flex-start; + gap: 0.25rem; + } + + .posts-container { + padding: 0 1rem; + } + + .post-form { + padding: 1rem; + } + + .post-detail-container { + padding: 1rem; + } + + .post-detail-card { + padding: 1.5rem; + } + + .author-avatar { + width: 3.5rem; + height: 3.5rem; + } + + .author-name { + font-size: 1.25rem; + } + + .post-detail-content { + font-size: 1rem; + } +} diff --git a/examples/nuxt/public/theme.js b/examples/nuxt/public/theme.js new file mode 100644 index 000000000..7b20d9638 --- /dev/null +++ b/examples/nuxt/public/theme.js @@ -0,0 +1,7 @@ +"use strict"; +const mq = globalThis.matchMedia("(prefers-color-scheme: dark)"); +document.body.classList.add(mq.matches ? "dark" : "light"); +mq.addEventListener("change", function (e) { + document.body.classList.remove("light", "dark"); + document.body.classList.add(e.matches ? "dark" : "light"); +}); diff --git a/examples/nuxt/server/api/events.get.ts b/examples/nuxt/server/api/events.get.ts new file mode 100644 index 000000000..97c3348a9 --- /dev/null +++ b/examples/nuxt/server/api/events.get.ts @@ -0,0 +1,36 @@ +import { addClient, removeClient } from "../sse"; + +export default defineEventHandler((event) => { + const stream = new ReadableStream({ + start(controller) { + const encoder = new TextEncoder(); + const client = { + send(data: string) { + try { + controller.enqueue(encoder.encode(`data: ${data}\n\n`)); + } catch { + removeClient(client); + } + }, + close() { + controller.close(); + }, + }; + + addClient(client); + + event.node.req.on("close", () => { + removeClient(client); + client.close(); + }); + }, + }); + + return new Response(stream, { + headers: { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache", + "Connection": "keep-alive", + }, + }); +}); diff --git a/examples/nuxt/server/api/follow.post.ts b/examples/nuxt/server/api/follow.post.ts new file mode 100644 index 000000000..3e70ddcfb --- /dev/null +++ b/examples/nuxt/server/api/follow.post.ts @@ -0,0 +1,50 @@ +import { Follow, type Object as APObject, Person } from "@fedify/vocab"; +import { readBody, sendRedirect, toWebRequest } from "h3"; +import federation from "../federation"; +import { broadcastEvent } from "../sse"; +import { followingStore } from "../store"; + +export default defineEventHandler(async (event) => { + const body = await readBody<{ uri?: unknown }>(event); + const targetUri = body?.uri; + if (typeof targetUri !== "string" || !targetUri.trim()) { + return sendRedirect(event, "/", 303); + } + + const request = toWebRequest(event); + const ctx = federation.createContext(request, undefined); + const identifier = "demo"; + + let target: APObject | null = null; + try { + target = await ctx.lookupObject(targetUri) as APObject | null; + } catch { + return sendRedirect(event, "/", 303); + } + if (target?.id == null) { + return sendRedirect(event, "/", 303); + } + + try { + await ctx.sendActivity( + { identifier }, + target, + new Follow({ + id: new URL( + `#follows/${target.id.href}`, + ctx.getActorUri(identifier), + ), + actor: ctx.getActorUri(identifier), + object: target.id, + }), + ); + } catch { + // Delivery failure is non-fatal; continue updating local state. + } + + if (target instanceof Person) { + followingStore.set(target.id.href, target); + } + broadcastEvent(); + return sendRedirect(event, "/", 303); +}); diff --git a/examples/nuxt/server/api/home.get.ts b/examples/nuxt/server/api/home.get.ts new file mode 100644 index 000000000..53da585b1 --- /dev/null +++ b/examples/nuxt/server/api/home.get.ts @@ -0,0 +1,51 @@ +import { toWebRequest } from "h3"; +import federation from "../federation"; +import { followingStore, postStore, relationStore } from "../store"; + +export default defineEventHandler(async (event) => { + const request = toWebRequest(event); + const ctx = federation.createContext(request, undefined); + const identifier = "demo"; + const actorUri = ctx.getActorUri(identifier); + const host = new URL(actorUri).host; + + const followers = await Promise.all( + Array.from(relationStore.entries()).map(async ([uri, person]) => ({ + uri, + name: person.name?.toString() ?? null, + handle: person.preferredUsername + ? `@${person.preferredUsername}@${person.id?.hostname ?? ""}` + : uri, + icon: (await person.getIcon(ctx))?.url?.href ?? null, + })), + ); + + const following = await Promise.all( + Array.from(followingStore.entries()).map(async ([uri, person]) => ({ + uri, + name: person.name?.toString() ?? null, + handle: person.preferredUsername + ? `@${person.preferredUsername}@${person.id?.hostname ?? ""}` + : uri, + icon: (await person.getIcon(ctx))?.url?.href ?? null, + })), + ); + + const allPosts = postStore.getAll(); + const posts = allPosts.map((p) => ({ + url: p.url?.href ?? p.id?.href ?? "", + id: p.id?.href ?? "", + content: p.content?.toString() ?? "", + published: p.published?.toString() ?? null, + })); + + return { + identifier, + host, + name: "Fedify Demo", + summary: "This is a Fedify Demo account.", + followers, + following, + posts, + }; +}); diff --git a/examples/nuxt/server/api/post.post.ts b/examples/nuxt/server/api/post.post.ts new file mode 100644 index 000000000..cf689d063 --- /dev/null +++ b/examples/nuxt/server/api/post.post.ts @@ -0,0 +1,47 @@ +import { Create, Note } from "@fedify/vocab"; +import { readBody, sendRedirect, toWebRequest } from "h3"; +import federation from "../federation"; +import { broadcastEvent } from "../sse"; +import { postStore } from "../store"; + +export default defineEventHandler(async (event) => { + const body = await readBody<{ content?: unknown }>(event); + const content = body?.content; + if (typeof content !== "string" || !content.trim()) { + return sendRedirect(event, "/", 303); + } + + const request = toWebRequest(event); + const ctx = federation.createContext(request, undefined); + const identifier = "demo"; + const id = crypto.randomUUID(); + const attribution = ctx.getActorUri(identifier); + const url = new URL(`/users/${identifier}/posts/${id}`, attribution); + const post = new Note({ + id: url, + attribution, + content: content.trim(), + published: Temporal.Now.instant(), + url, + }); + postStore.append([post]); + broadcastEvent(); + try { + const note = await ctx.getObject(Note, { identifier, id }); + await ctx.sendActivity( + { identifier }, + "followers", + new Create({ + id: new URL(`#create/${id}`, attribution), + object: note, + actors: note?.attributionIds, + tos: note?.toIds, + ccs: note?.ccIds, + }), + ); + } catch { + // Delivery failure is non-fatal; local state is already updated. + } + + return sendRedirect(event, "/", 303); +}); diff --git a/examples/nuxt/server/api/posts/[identifier]/[id].get.ts b/examples/nuxt/server/api/posts/[identifier]/[id].get.ts new file mode 100644 index 000000000..67812a7a8 --- /dev/null +++ b/examples/nuxt/server/api/posts/[identifier]/[id].get.ts @@ -0,0 +1,33 @@ +import { Note } from "@fedify/vocab"; +import { toWebRequest } from "h3"; +import federation from "../../../federation"; + +export default defineEventHandler(async (event) => { + const identifier = event.context.params?.identifier as string; + const id = event.context.params?.id as string; + if (identifier !== "demo" || !id) { + return null; + } + + const request = toWebRequest(event); + const ctx = federation.createContext(request, undefined); + const actor = await ctx.getActor(identifier); + const noteObj = await ctx.getObject(Note, { identifier, id }); + if (!actor || !noteObj) return null; + + const icon = await actor.getIcon(ctx); + const actorUri = ctx.getActorUri(identifier); + const host = new URL(actorUri).host; + + return { + identifier, + host, + author: { + name: actor.name?.toString() ?? "Fedify Demo", + icon: icon?.url?.href ?? null, + }, + content: noteObj.content?.toString() ?? "", + published: noteObj.published?.toString() ?? null, + url: noteObj.url?.href ?? noteObj.id?.href ?? "", + }; +}); diff --git a/examples/nuxt/server/api/profile/[identifier].get.ts b/examples/nuxt/server/api/profile/[identifier].get.ts new file mode 100644 index 000000000..2804da243 --- /dev/null +++ b/examples/nuxt/server/api/profile/[identifier].get.ts @@ -0,0 +1,29 @@ +import { toWebRequest } from "h3"; +import federation from "../../federation"; +import { followingStore, relationStore } from "../../store"; + +export default defineEventHandler(async (event) => { + const identifier = event.context.params?.identifier as string; + if (identifier !== "demo") { + return null; + } + + const request = toWebRequest(event); + const ctx = federation.createContext(request, undefined); + const actor = await ctx.getActor(identifier); + if (!actor) return null; + + const icon = await actor.getIcon(ctx); + const actorUri = ctx.getActorUri(identifier); + const host = new URL(actorUri).host; + + return { + identifier, + host, + name: actor.name?.toString() ?? "Fedify Demo", + summary: actor.summary?.toString() ?? null, + icon: icon?.url?.href ?? null, + followingCount: followingStore.size, + followersCount: relationStore.size, + }; +}); diff --git a/examples/nuxt/server/api/search.get.ts b/examples/nuxt/server/api/search.get.ts new file mode 100644 index 000000000..602274493 --- /dev/null +++ b/examples/nuxt/server/api/search.get.ts @@ -0,0 +1,38 @@ +import { Person } from "@fedify/vocab"; +import { getQuery, toWebRequest } from "h3"; +import federation from "../federation"; +import { followingStore } from "../store"; + +export default defineEventHandler(async (event) => { + const query = getQuery(event); + const raw = Array.isArray(query.q) ? query.q[0] : query.q; + const q = typeof raw === "string" ? raw.trim() : ""; + if (!q) { + return { result: null }; + } + + const request = toWebRequest(event); + const ctx = federation.createContext(request, undefined); + + try { + const target = await ctx.lookupObject(q); + if (target instanceof Person && target.id) { + const iconUrl = await target.getIcon(ctx); + return { + result: { + uri: target.id.href, + name: target.name?.toString() ?? null, + handle: target.preferredUsername + ? `@${target.preferredUsername}@${target.id.hostname}` + : target.id.href, + icon: iconUrl?.url?.href ?? null, + isFollowing: followingStore.has(target.id.href), + }, + }; + } + } catch (error) { + console.debug("Actor lookup failed:", q, error); + } + + return { result: null }; +}); diff --git a/examples/nuxt/server/api/unfollow.post.ts b/examples/nuxt/server/api/unfollow.post.ts new file mode 100644 index 000000000..ee4b1934c --- /dev/null +++ b/examples/nuxt/server/api/unfollow.post.ts @@ -0,0 +1,55 @@ +import { Follow, type Object as APObject, Undo } from "@fedify/vocab"; +import { readBody, sendRedirect, toWebRequest } from "h3"; +import federation from "../federation"; +import { broadcastEvent } from "../sse"; +import { followingStore } from "../store"; + +export default defineEventHandler(async (event) => { + const body = await readBody<{ uri?: unknown }>(event); + const targetUri = body?.uri; + if (typeof targetUri !== "string" || !targetUri.trim()) { + return sendRedirect(event, "/", 303); + } + + const request = toWebRequest(event); + const ctx = federation.createContext(request, undefined); + const identifier = "demo"; + + let target: APObject | null = null; + try { + target = await ctx.lookupObject(targetUri) as APObject | null; + } catch { + return sendRedirect(event, "/", 303); + } + if (target?.id == null) { + return sendRedirect(event, "/", 303); + } + + try { + await ctx.sendActivity( + { identifier }, + target, + new Undo({ + id: new URL( + `#undo-follows/${target.id.href}`, + ctx.getActorUri(identifier), + ), + actor: ctx.getActorUri(identifier), + object: new Follow({ + id: new URL( + `#follows/${target.id.href}`, + ctx.getActorUri(identifier), + ), + actor: ctx.getActorUri(identifier), + object: target.id, + }), + }), + ); + } catch { + // Delivery failure is non-fatal; continue updating local state. + } + + followingStore.delete(target.id.href); + broadcastEvent(); + return sendRedirect(event, "/", 303); +}); diff --git a/examples/nuxt/server/federation.ts b/examples/nuxt/server/federation.ts new file mode 100644 index 000000000..375a7e080 --- /dev/null +++ b/examples/nuxt/server/federation.ts @@ -0,0 +1,175 @@ +import { + createFederation, + generateCryptoKeyPair, + InProcessMessageQueue, + MemoryKvStore, +} from "@fedify/fedify"; +import { + Accept, + Endpoints, + Follow, + Image, + isActor, + Note, + Person, + PUBLIC_COLLECTION, + type Recipient, + Undo, +} from "@fedify/vocab"; +import { broadcastEvent } from "./sse.ts"; +import { keyPairsStore, postStore, relationStore } from "./store.ts"; + +function escapeHtml(value: string): string { + return value.replace(/[&<>"']/g, (c) => + ({ + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", + })[c]!); +} + +const federation = createFederation({ + kv: new MemoryKvStore(), + queue: new InProcessMessageQueue(), +}); + +const IDENTIFIER = "demo"; + +federation + .setActorDispatcher( + "/users/{identifier}", + async (context, identifier) => { + if (identifier != IDENTIFIER) { + return null; + } + const keyPairs = await context.getActorKeyPairs(identifier); + return new Person({ + id: context.getActorUri(identifier), + name: "Fedify Demo", + summary: "This is a Fedify Demo account.", + preferredUsername: identifier, + icon: new Image({ url: new URL("/demo-profile.png", context.url) }), + url: new URL("/", context.url), + inbox: context.getInboxUri(identifier), + followers: context.getFollowersUri(identifier), + endpoints: new Endpoints({ sharedInbox: context.getInboxUri() }), + publicKey: keyPairs[0].cryptographicKey, + assertionMethods: keyPairs.map((keyPair) => keyPair.multikey), + }); + }, + ) + .mapHandle((_, username) => username === IDENTIFIER ? IDENTIFIER : null) + .setKeyPairsDispatcher(async (_, identifier) => { + if (identifier != IDENTIFIER) { + return []; + } + const keyPairs = keyPairsStore.get(identifier); + if (keyPairs) { + return keyPairs; + } + const rsa = await generateCryptoKeyPair("RSASSA-PKCS1-v1_5"); + const ed25519 = await generateCryptoKeyPair("Ed25519"); + const newKeyPairs = [rsa, ed25519]; + keyPairsStore.set(identifier, newKeyPairs); + return newKeyPairs; + }); + +federation + .setInboxListeners("/users/{identifier}/inbox", "/inbox") + .on(Follow, async (context, follow) => { + if ( + follow.id == null || + follow.actorId == null || + follow.objectId == null + ) { + return; + } + const result = context.parseUri(follow.objectId); + if (result?.type !== "actor" || result.identifier !== IDENTIFIER) { + return; + } + const follower = await follow.getActor(context); + if (!isActor(follower) || follower.id == null) return; + await context.sendActivity( + { identifier: result.identifier }, + follower, + new Accept({ + id: new URL( + `#accepts/${encodeURIComponent(follow.id.href)}`, + context.getActorUri(IDENTIFIER), + ), + actor: follow.objectId, + object: follow, + }), + ); + relationStore.set(follower.id.href, follower); + broadcastEvent(); + }) + .on(Undo, async (context, undo) => { + const activity = await undo.getObject(context); + if (!(activity instanceof Follow)) { + console.debug(undo); + return; + } + if (activity.id == null || undo.actorId == null) return; + const demoActorUri = context.getActorUri(IDENTIFIER); + if (activity.objectId?.href !== demoActorUri.href) return; + relationStore.delete(undo.actorId.href); + broadcastEvent(); + }); + +federation.setObjectDispatcher( + Note, + "/users/{identifier}/posts/{id}", + (ctx, values) => { + if (values.identifier !== IDENTIFIER) return null; + const id = ctx.getObjectUri(Note, values); + const post = postStore.get(id); + if (post == null) return null; + return new Note({ + id, + attribution: ctx.getActorUri(values.identifier), + to: PUBLIC_COLLECTION, + cc: ctx.getFollowersUri(values.identifier), + content: escapeHtml(post.content), + mediaType: "text/html", + published: post.published, + url: id, + }); + }, +); + +federation + .setFollowersDispatcher( + "/users/{identifier}/followers", + (_ctx, identifier) => { + if (identifier !== IDENTIFIER) return null; + const followers = Array.from(relationStore.values()); + const items: Recipient[] = followers.map((f) => ({ + id: f.id, + inboxId: f.inboxId, + endpoints: f.endpoints, + })); + return { items }; + }, + ); + +federation.setNodeInfoDispatcher("/nodeinfo/2.1", (ctx) => { + return { + software: { + name: "fedify-nuxt", + version: "0.0.1", + homepage: new URL(ctx.canonicalOrigin), + }, + protocols: ["activitypub"], + usage: { + users: { total: 1, activeHalfyear: 1, activeMonth: 1 }, + localPosts: postStore.getAll().length, + localComments: 0, + }, + }; +}); + +export default federation; diff --git a/examples/nuxt/server/logging.ts b/examples/nuxt/server/logging.ts new file mode 100644 index 000000000..c4c497c0c --- /dev/null +++ b/examples/nuxt/server/logging.ts @@ -0,0 +1,23 @@ +import { configure, getConsoleSink } from "@logtape/logtape"; +import { AsyncLocalStorage } from "node:async_hooks"; + +export default configure({ + contextLocalStorage: new AsyncLocalStorage(), + sinks: { + console: getConsoleSink(), + }, + filters: {}, + loggers: [ + { + category: ["nuxt", "example"], + lowestLevel: "debug", + sinks: ["console"], + }, + { category: "fedify", lowestLevel: "info", sinks: ["console"] }, + { + category: ["logtape", "meta"], + lowestLevel: "warning", + sinks: ["console"], + }, + ], +}); diff --git a/examples/nuxt/server/plugins/logging.ts b/examples/nuxt/server/plugins/logging.ts new file mode 100644 index 000000000..e52d96936 --- /dev/null +++ b/examples/nuxt/server/plugins/logging.ts @@ -0,0 +1,5 @@ +import loggingConfigured from "../logging"; + +export default defineNitroPlugin(async () => { + await loggingConfigured; +}); diff --git a/examples/nuxt/server/sse.ts b/examples/nuxt/server/sse.ts new file mode 100644 index 000000000..af3671946 --- /dev/null +++ b/examples/nuxt/server/sse.ts @@ -0,0 +1,25 @@ +type EventClient = { + send: (data: string) => void; + close: () => void; +}; + +const clients = new Set(); + +export function addClient(client: EventClient): void { + clients.add(client); +} + +export function removeClient(client: EventClient): void { + clients.delete(client); +} + +export function broadcastEvent(): void { + const data = JSON.stringify({ type: "update" }); + for (const client of clients) { + try { + client.send(data); + } catch { + clients.delete(client); + } + } +} diff --git a/examples/nuxt/server/store.ts b/examples/nuxt/server/store.ts new file mode 100644 index 000000000..837884ab7 --- /dev/null +++ b/examples/nuxt/server/store.ts @@ -0,0 +1,51 @@ +import { Note, Person } from "@fedify/vocab"; + +declare global { + var keyPairsStore: Map>; + var relationStore: Map; + var postStore: PostStore; + var followingStore: Map; +} + +class PostStore { + #map: Map = new Map(); + #timeline: URL[] = []; + append(posts: Note[]) { + for (const p of posts) { + if (!p.id) continue; + const key = p.id.toString(); + if (this.#map.has(key)) continue; + this.#map.set(key, p); + this.#timeline.push(p.id); + } + } + get(id: URL) { + return this.#map.get(id.toString()); + } + getAll() { + return this.#timeline.toReversed() + .map((id) => id.toString()) + .map((id) => this.#map.get(id)!) + .filter((p) => p); + } + delete(id: URL) { + const existed = this.#map.delete(id.toString()); + if (existed) { + this.#timeline = this.#timeline.filter((i) => i.href !== id.href); + } + } +} + +const keyPairsStore = globalThis.keyPairsStore ?? new Map(); +const relationStore = globalThis.relationStore ?? new Map(); +const postStore = globalThis.postStore ?? new PostStore(); +const followingStore = globalThis.followingStore ?? new Map(); + +// this is just a hack for the demo +// never do this in production, use safe and secure storage +globalThis.keyPairsStore = keyPairsStore; +globalThis.relationStore = relationStore; +globalThis.postStore = postStore; +globalThis.followingStore = followingStore; + +export { followingStore, keyPairsStore, postStore, relationStore }; diff --git a/examples/nuxt/tsconfig.json b/examples/nuxt/tsconfig.json new file mode 100644 index 000000000..4b34df157 --- /dev/null +++ b/examples/nuxt/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./.nuxt/tsconfig.json" +} diff --git a/examples/test-examples/mod.ts b/examples/test-examples/mod.ts index 07d185046..1883d62f7 100644 --- a/examples/test-examples/mod.ts +++ b/examples/test-examples/mod.ts @@ -269,6 +269,19 @@ const SERVER_EXAMPLES: ServerExample[] = [ actor: "demo", readyUrl: "http://localhost:4321/", }, + { + // Nuxt sample using @fedify/nuxt; actor path is /users/{identifier}. + // Built with nuxt build; served with node .output/server/index.mjs + // on port 3000. + name: "nuxt", + dir: "nuxt", + buildCmd: ["pnpm", "build"], + startCmd: ["pnpm", "start"], + port: 3000, + actor: "demo", + readyUrl: "http://localhost:3000/", + readyTimeout: 30_000, + }, ]; const SCRIPT_EXAMPLES: ScriptExample[] = [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2adbabf1..196f0d86e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,6 +27,12 @@ catalogs: '@nestjs/common': specifier: ^11.0.1 version: 11.1.4 + '@nuxt/kit': + specifier: ^4.4.2 + version: 4.4.2 + '@nuxt/schema': + specifier: ^4.4.2 + version: 4.4.2 '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 @@ -664,6 +670,34 @@ importers: specifier: 'catalog:' version: 5.9.3 + examples/nuxt: + dependencies: + '@fedify/fedify': + specifier: workspace:^ + version: link:../../packages/fedify + '@fedify/nuxt': + specifier: workspace:^ + version: link:../../packages/nuxt + '@fedify/vocab': + specifier: workspace:^ + version: link:../../packages/vocab + '@logtape/logtape': + specifier: 'catalog:' + version: 2.0.5 + h3: + specifier: 'catalog:' + version: 1.15.3 + nuxt: + specifier: 'catalog:' + version: 4.4.2(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@22.19.1)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(mysql2@3.22.2(@types/node@22.19.1)))(ioredis@5.10.1)(lightningcss@1.30.1)(magicast@0.5.2)(mysql2@3.22.2(@types/node@22.19.1))(optionator@0.9.4)(rolldown@1.0.0-rc.12)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.12)(rollup@4.60.2))(rollup@4.60.2)(terser@5.46.1)(tsx@4.20.3)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3))(yaml@2.8.3) + devDependencies: + '@types/node': + specifier: 'catalog:' + version: 22.19.1 + typescript: + specifier: 'catalog:' + version: 5.9.3 + examples/solidstart: dependencies: '@fedify/fedify': @@ -1967,10 +2001,6 @@ packages: resolution: {integrity: sha512-AmwWFx1m8G/a5cXkxLxTiWl+YEoWuoFLUCwqMlNuWO1tqAYITQAbCRPUkyBHv1VOFgfjVOqEj6L3u15J5ZCzTA==} engines: {node: ^20.19.0 || >=22.12.0} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} @@ -1987,11 +2017,6 @@ packages: resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.7': - resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.2': resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} @@ -2028,10 +2053,6 @@ packages: resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.7': - resolution: {integrity: sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} @@ -2282,21 +2303,12 @@ packages: '@dxup/unimport@0.1.2': resolution: {integrity: sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ==} - '@emnapi/core@1.4.3': - resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} - '@emnapi/core@1.9.1': resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} - '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} - '@emnapi/runtime@1.9.1': resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} - '@emnapi/wasi-threads@1.0.2': - resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} - '@emnapi/wasi-threads@1.2.0': resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} @@ -3717,9 +3729,6 @@ packages: resolution: {integrity: sha512-P0zUpK6n2XIAn8bt0F6rhSn1+FgteBTrL+TBb6Oqw8v5qEDJoNYkd6LlfZYN8YwtRBTBdZ8GFnWsg2Sar+qOkA==} engines: {node: '>=18'} - '@jridgewell/gen-mapping@0.3.11': - resolution: {integrity: sha512-C512c1ytBTio4MrpWKlJpyFHT6+qfFL8SZ58zBzJ1OOzUEjHeF1BtjY2fH7n4x/g2OV/KiiMLAivOp1DXmiMMw==} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -5541,9 +5550,6 @@ packages: peerDependencies: vinxi: ^0.5.7 - '@speed-highlight/core@1.2.12': - resolution: {integrity: sha512-uilwrK0Ygyri5dToHYdZSjcvpS2ZwX0w5aSt3GCEN9hrjxWCoeV4Z2DTXuxjwbntaLQIEEAlCeNQss5SoHvAEA==} - '@speed-highlight/core@1.2.15': resolution: {integrity: sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==} @@ -7098,9 +7104,6 @@ packages: birpc@0.2.14: resolution: {integrity: sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==} - birpc@2.4.0: - resolution: {integrity: sha512-5IdNxTyhXHv2UlgnPHQ0h+5ypVmkrYHzL8QT+DwFZ//2N/oNV8Ch+BCRmTJ3x6/z9Axo/cXYBc9eprsUVK/Jsg==} - birpc@2.9.0: resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} @@ -7436,9 +7439,6 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - confbox@0.2.4: resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} @@ -7457,9 +7457,6 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-es@1.2.2: - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - cookie-es@1.2.3: resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} @@ -8397,9 +8394,6 @@ packages: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} - exsolve@1.0.7: - resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} - exsolve@1.0.8: resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} @@ -8694,6 +8688,7 @@ packages: glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@13.0.6: @@ -8702,7 +8697,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} @@ -9246,10 +9241,6 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} - hasBin: true - jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -9493,10 +9484,6 @@ packages: resolution: {integrity: sha512-nVAvWk/jeyrWyXEAs84mpQCYccxRqgKY4OznLuJhJCa0XsPSfdOIr2zvBZEj3IHEHbX97jjscKRRV539bW0Gpw==} engines: {node: '>=13.2.0'} - local-pkg@1.1.1: - resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} - engines: {node: '>=14'} - local-pkg@1.1.2: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} @@ -9871,10 +9858,6 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - minipass@7.1.3: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} @@ -9894,9 +9877,6 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - mlly@1.8.2: resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} @@ -10069,9 +10049,6 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-mock-http@1.0.1: - resolution: {integrity: sha512-0gJJgENizp4ghds/Ywu2FCmcRsgBTmRQzYPZm61wy+Em2sBarSka0OhQS5huLBg6od1zkNpnWMCZloQDFVvOMQ==} - node-mock-http@1.0.4: resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} @@ -10441,9 +10418,6 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pkg-types@2.2.0: - resolution: {integrity: sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==} - pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} @@ -10887,9 +10861,6 @@ packages: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} - quansync@0.2.10: - resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} - quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} @@ -11762,6 +11733,7 @@ packages: tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me teex@1.0.1: resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} @@ -11812,9 +11784,6 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.1: - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} - tinyexec@1.0.4: resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} engines: {node: '>=18'} @@ -12068,9 +12037,6 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} @@ -13121,13 +13087,13 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.11 - '@jridgewell/trace-mapping': 0.3.28 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.3.0 - tinyexec: 1.0.1 + tinyexec: 1.0.4 '@antfu/utils@8.1.1': {} @@ -13229,7 +13195,7 @@ snapshots: '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.28 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/generator@8.0.0-rc.3': @@ -13237,7 +13203,7 @@ snapshots: '@babel/parser': 8.0.0-rc.3 '@babel/types': 8.0.0-rc.3 '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.28 + '@jridgewell/trace-mapping': 0.3.31 '@types/jsesc': 2.5.1 jsesc: 3.1.0 @@ -13321,8 +13287,6 @@ snapshots: '@babel/helper-string-parser@8.0.0-rc.3': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-identifier@8.0.0-rc.3': {} @@ -13334,10 +13298,6 @@ snapshots: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.27.7': - dependencies: - '@babel/types': 7.27.7 - '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 @@ -13385,11 +13345,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.27.7': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -13604,33 +13559,17 @@ snapshots: '@dxup/unimport@0.1.2': {} - '@emnapi/core@1.4.3': - dependencies: - '@emnapi/wasi-threads': 1.0.2 - tslib: 2.8.1 - optional: true - '@emnapi/core@1.9.1': dependencies: '@emnapi/wasi-threads': 1.2.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.5': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.9.1': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.2': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/wasi-threads@1.2.0': dependencies: tslib: 2.8.1 @@ -14115,8 +14054,8 @@ snapshots: debug: 4.4.1 globals: 15.15.0 kolorist: 1.8.0 - local-pkg: 1.1.1 - mlly: 1.7.4 + local-pkg: 1.1.2 + mlly: 1.8.2 transitivePeerDependencies: - supports-color @@ -14341,12 +14280,12 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.4.5 + '@emnapi/runtime': 1.9.1 optional: true '@img/sharp-wasm32@0.34.3': dependencies: - '@emnapi/runtime': 1.4.5 + '@emnapi/runtime': 1.9.1 optional: true '@img/sharp-wasm32@0.34.5': @@ -14544,7 +14483,7 @@ snapshots: '@isaacs/fs-minipass@4.0.1': dependencies: - minipass: 7.1.2 + minipass: 7.1.3 '@jimp/bmp@0.22.12(@jimp/custom@0.22.12)': dependencies: @@ -14769,27 +14708,22 @@ snapshots: '@jsquash/webp': 1.5.0 zod: 3.25.76 - '@jridgewell/gen-mapping@0.3.11': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.3 - '@jridgewell/trace-mapping': 0.3.28 - '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.3 - '@jridgewell/trace-mapping': 0.3.28 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': dependencies: - '@jridgewell/gen-mapping': 0.3.11 - '@jridgewell/trace-mapping': 0.3.28 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/source-map@0.3.11': dependencies: '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.28 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.3': {} @@ -14798,7 +14732,7 @@ snapshots: '@jridgewell/trace-mapping@0.3.28': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.3 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.31': dependencies: @@ -14808,7 +14742,7 @@ snapshots: '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.3 + '@jridgewell/sourcemap-codec': 1.5.5 '@js-sdsl/ordered-map@4.4.2': {} @@ -14884,8 +14818,8 @@ snapshots: '@napi-rs/wasm-runtime@0.2.11': dependencies: - '@emnapi/core': 1.4.3 - '@emnapi/runtime': 1.4.5 + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 '@tybys/wasm-util': 0.9.0 optional: true @@ -15111,7 +15045,7 @@ snapshots: simple-git: 3.36.0 sirv: 3.0.2 structured-clone-es: 2.0.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3) vite-plugin-inspect: 11.3.3(@nuxt/kit@4.4.2(magicast@0.5.2))(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3)) vite-plugin-vue-tracer: 1.3.0(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3))(vue@3.5.33(typescript@5.9.3)) @@ -15141,7 +15075,7 @@ snapshots: rc9: 3.0.1 scule: 1.3.0 semver: 7.7.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 ufo: 1.6.3 unctx: 2.5.0 untyped: 2.0.0 @@ -15524,7 +15458,7 @@ snapshots: '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 forwarded-parse: 2.1.2 - semver: 7.7.2 + semver: 7.7.4 transitivePeerDependencies: - supports-color @@ -15666,7 +15600,7 @@ snapshots: '@types/shimmer': 1.2.0 import-in-the-middle: 1.14.2 require-in-the-middle: 7.5.2 - semver: 7.7.2 + semver: 7.7.4 shimmer: 1.2.1 transitivePeerDependencies: - supports-color @@ -15678,7 +15612,7 @@ snapshots: '@types/shimmer': 1.2.0 import-in-the-middle: 1.14.2 require-in-the-middle: 7.5.2 - semver: 7.7.2 + semver: 7.7.4 shimmer: 1.2.1 transitivePeerDependencies: - supports-color @@ -15690,7 +15624,7 @@ snapshots: '@types/shimmer': 1.2.0 import-in-the-middle: 1.14.2 require-in-the-middle: 7.5.2 - semver: 7.7.2 + semver: 7.7.4 shimmer: 1.2.1 transitivePeerDependencies: - supports-color @@ -16643,8 +16577,6 @@ snapshots: - supports-color - vite - '@speed-highlight/core@1.2.12': {} - '@speed-highlight/core@1.2.15': {} '@standard-schema/spec@1.0.0': {} @@ -16704,7 +16636,7 @@ snapshots: '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.3)(vite@7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3)) - debug: 4.4.1 + debug: 4.4.3 svelte: 5.38.3 vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3) transitivePeerDependencies: @@ -16713,7 +16645,7 @@ snapshots: '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3)))(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.3)(vite@7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3)) - debug: 4.4.1 + debug: 4.4.3 svelte: 5.38.3 vite: 7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3) transitivePeerDependencies: @@ -16760,9 +16692,9 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 enhanced-resolve: 5.18.2 - jiti: 2.5.1 + jiti: 2.6.1 lightningcss: 1.30.1 - magic-string: 0.30.17 + magic-string: 0.30.21 source-map-js: 1.2.1 tailwindcss: 4.1.11 @@ -16770,9 +16702,9 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.18.3 - jiti: 2.5.1 + jiti: 2.6.1 lightningcss: 1.30.1 - magic-string: 0.30.17 + magic-string: 0.30.21 source-map-js: 1.2.1 tailwindcss: 4.1.12 @@ -16922,7 +16854,7 @@ snapshots: babel-dead-code-elimination: 1.0.12 diff: 8.0.4 pathe: 2.0.3 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 transitivePeerDependencies: - supports-color @@ -16946,7 +16878,7 @@ snapshots: '@tokenizer/inflate@0.2.7': dependencies: - debug: 4.4.1 + debug: 4.4.3 fflate: 0.8.2 token-types: 6.0.3 transitivePeerDependencies: @@ -17422,7 +17354,7 @@ snapshots: '@typescript-eslint/types': 8.41.0 '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.41.0 - debug: 4.4.1 + debug: 4.4.3 eslint: 9.32.0(jiti@2.6.1) typescript: 5.9.2 transitivePeerDependencies: @@ -17456,7 +17388,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.3) '@typescript-eslint/types': 8.41.0 - debug: 4.4.1 + debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -17465,7 +17397,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) '@typescript-eslint/types': 8.41.0 - debug: 4.4.1 + debug: 4.4.3 typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -17474,7 +17406,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.3) '@typescript-eslint/types': 8.41.0 - debug: 4.4.1 + debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -17483,7 +17415,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) '@typescript-eslint/types': 8.50.0 - debug: 4.4.1 + debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -17546,7 +17478,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3) - debug: 4.4.1 + debug: 4.4.3 eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: @@ -17559,7 +17491,7 @@ snapshots: '@typescript-eslint/types': 8.38.0 '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.9.3) '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.3) - debug: 4.4.1 + debug: 4.4.3 eslint: 9.32.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 @@ -17571,7 +17503,7 @@ snapshots: '@typescript-eslint/types': 8.41.0 '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) '@typescript-eslint/utils': 8.41.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.2) - debug: 4.4.1 + debug: 4.4.3 eslint: 9.32.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -17604,11 +17536,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.1 + debug: 4.4.3 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.4 ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -17621,11 +17553,11 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.9.3) '@typescript-eslint/types': 8.38.0 '@typescript-eslint/visitor-keys': 8.38.0 - debug: 4.4.1 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.4 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -17637,11 +17569,11 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) '@typescript-eslint/types': 8.41.0 '@typescript-eslint/visitor-keys': 8.41.0 - debug: 4.4.1 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.4 ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -17653,11 +17585,11 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.3) '@typescript-eslint/types': 8.41.0 '@typescript-eslint/visitor-keys': 8.41.0 - debug: 4.4.1 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.4 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -17669,10 +17601,10 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) '@typescript-eslint/types': 8.50.0 '@typescript-eslint/visitor-keys': 8.50.0 - debug: 4.4.1 + debug: 4.4.3 minimatch: 9.0.5 - semver: 7.7.2 - tinyglobby: 0.2.15 + semver: 7.7.4 + tinyglobby: 0.2.16 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -17687,7 +17619,7 @@ snapshots: debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -17775,7 +17707,7 @@ snapshots: '@typescript/vfs@1.6.1(typescript@5.9.3)': dependencies: - debug: 4.4.1 + debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -17851,8 +17783,8 @@ snapshots: dependencies: '@mapbox/node-pre-gyp': 2.0.3 '@rollup/pluginutils': 5.3.0(rollup@4.60.2) - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -17878,7 +17810,7 @@ snapshots: h3: 1.15.11 http-shutdown: 1.2.2 jiti: 1.21.7 - mlly: 1.7.4 + mlly: 1.8.2 node-forge: 1.4.0 pathe: 1.1.2 std-env: 3.10.0 @@ -17889,10 +17821,10 @@ snapshots: '@vinxi/plugin-directives@0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.22.2(@types/node@24.3.0)))(ioredis@5.10.1)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.22.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@babel/parser': 7.29.2 - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) acorn-loose: 8.5.2 - acorn-typescript: 1.4.13(acorn@8.15.0) + acorn-typescript: 1.4.13(acorn@8.16.0) astring: 1.9.0 magicast: 0.2.11 recast: 0.23.11 @@ -17902,9 +17834,9 @@ snapshots: '@vinxi/server-components@0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.22.2(@types/node@24.3.0)))(ioredis@5.10.1)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.22.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(@types/node@24.3.0)(db0@0.3.4(mysql2@3.22.2(@types/node@24.3.0)))(ioredis@5.10.1)(jiti@2.6.1)(lightningcss@1.30.1)(mysql2@3.22.2(@types/node@24.3.0))(rolldown@1.0.0-rc.12)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3)) - acorn: 8.15.0 + acorn: 8.16.0 acorn-loose: 8.5.2 - acorn-typescript: 1.4.13(acorn@8.15.0) + acorn-typescript: 1.4.13(acorn@8.16.0) astring: 1.9.0 magicast: 0.2.11 recast: 0.23.11 @@ -17915,7 +17847,7 @@ snapshots: '@babel/core': 7.29.0 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-rc.12 + '@rolldown/pluginutils': 1.0.0-rc.13 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0) vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3) vue: 3.5.33(typescript@5.9.3) @@ -17945,7 +17877,7 @@ snapshots: dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3) @@ -17962,7 +17894,7 @@ snapshots: '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 2.0.3 '@vitest/spy@3.2.4': @@ -18022,7 +17954,7 @@ snapshots: '@vue/compiler-core@3.5.17': dependencies: - '@babel/parser': 7.27.7 + '@babel/parser': 7.29.2 '@vue/shared': 3.5.17 entities: 4.5.0 estree-walker: 2.0.2 @@ -18048,14 +17980,14 @@ snapshots: '@vue/compiler-sfc@3.5.17': dependencies: - '@babel/parser': 7.27.7 + '@babel/parser': 7.29.2 '@vue/compiler-core': 3.5.17 '@vue/compiler-dom': 3.5.17 '@vue/compiler-ssr': 3.5.17 '@vue/shared': 3.5.17 estree-walker: 2.0.2 - magic-string: 0.30.17 - postcss: 8.5.6 + magic-string: 0.30.21 + postcss: 8.5.10 source-map-js: 1.2.1 '@vue/compiler-sfc@3.5.33': @@ -18102,7 +18034,7 @@ snapshots: '@vue/devtools-kit@7.7.7': dependencies: '@vue/devtools-shared': 7.7.7 - birpc: 2.4.0 + birpc: 2.9.0 hookable: 5.5.3 mitt: 3.0.1 perfect-debounce: 1.0.0 @@ -18125,9 +18057,9 @@ snapshots: '@vue/language-core@2.1.10(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.15 - '@vue/compiler-dom': 3.5.17 + '@vue/compiler-dom': 3.5.33 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.17 + '@vue/shared': 3.5.33 alien-signals: 0.2.2 minimatch: 9.0.5 muggle-string: 0.4.1 @@ -18158,7 +18090,7 @@ snapshots: '@vue/reactivity': 3.5.17 '@vue/runtime-core': 3.5.17 '@vue/shared': 3.5.17 - csstype: 3.1.3 + csstype: 3.2.3 '@vue/runtime-dom@3.5.33': dependencies: @@ -18188,7 +18120,7 @@ snapshots: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 '@vueuse/shared': 12.8.2(typescript@5.9.3) - vue: 3.5.17(typescript@5.9.3) + vue: 3.5.33(typescript@5.9.3) transitivePeerDependencies: - typescript @@ -18196,7 +18128,7 @@ snapshots: dependencies: '@vueuse/core': 12.8.2(typescript@5.9.3) '@vueuse/shared': 12.8.2(typescript@5.9.3) - vue: 3.5.17(typescript@5.9.3) + vue: 3.5.33(typescript@5.9.3) optionalDependencies: focus-trap: 7.6.5 fuse.js: 7.3.0 @@ -18207,7 +18139,7 @@ snapshots: '@vueuse/shared@12.8.2(typescript@5.9.3)': dependencies: - vue: 3.5.17(typescript@5.9.3) + vue: 3.5.33(typescript@5.9.3) transitivePeerDependencies: - typescript @@ -18224,21 +18156,21 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.15.0): + acorn-import-attributes@1.9.5(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 acorn-loose@8.5.2: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn-typescript@1.4.13(acorn@8.15.0): + acorn-typescript@1.4.13(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 acorn-walk@8.3.2: {} @@ -18686,8 +18618,6 @@ snapshots: birpc@0.2.14: {} - birpc@2.4.0: {} - birpc@2.9.0: {} birpc@4.0.0: {} @@ -19036,8 +18966,6 @@ snapshots: confbox@0.1.8: {} - confbox@0.2.2: {} - confbox@0.2.4: {} consola@3.4.2: {} @@ -19050,8 +18978,6 @@ snapshots: convert-source-map@2.0.0: {} - cookie-es@1.2.2: {} - cookie-es@1.2.3: {} cookie-es@2.0.1: {} @@ -19942,7 +19868,7 @@ snapshots: get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.6.1)))(eslint@9.32.0(jiti@2.6.1)))(eslint@9.32.0(jiti@2.6.1)) @@ -19957,7 +19883,7 @@ snapshots: get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) @@ -19972,7 +19898,7 @@ snapshots: get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.32.0(jiti@2.6.1)) @@ -20148,7 +20074,7 @@ snapshots: eslint-plugin-react-hooks@7.1.1(eslint@9.32.0(jiti@2.6.1)): dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.27.7 + '@babel/parser': 7.29.2 eslint: 9.32.0(jiti@2.6.1) hermes-parser: 0.25.1 zod: 3.25.76 @@ -20323,14 +20249,14 @@ snapshots: espree@10.4.0: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.1 espree@9.6.1: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -20341,7 +20267,7 @@ snapshots: esrap@2.1.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.3 + '@jridgewell/sourcemap-codec': 1.5.5 esrecurse@4.3.0: dependencies: @@ -20431,8 +20357,6 @@ snapshots: transitivePeerDependencies: - supports-color - exsolve@1.0.7: {} - exsolve@1.0.8: {} extend-shallow@2.0.1: @@ -20760,7 +20684,7 @@ snapshots: foreground-child: 3.3.1 jackspeak: 3.4.3 minimatch: 9.0.5 - minipass: 7.1.2 + minipass: 7.1.3 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 @@ -20849,14 +20773,14 @@ snapshots: h3@1.15.3: dependencies: - cookie-es: 1.2.2 + cookie-es: 1.2.3 crossws: 0.3.5 - defu: 6.1.4 + defu: 6.1.7 destr: 2.0.5 iron-webcrypto: 1.2.1 - node-mock-http: 1.0.1 + node-mock-http: 1.0.4 radix3: 1.1.2 - ufo: 1.6.1 + ufo: 1.6.3 uncrypto: 0.1.3 hachure-fill@0.5.2: {} @@ -21092,15 +21016,15 @@ snapshots: import-in-the-middle@1.14.2: dependencies: - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) cjs-module-lexer: 1.4.3 module-details-from-path: 1.0.4 import-in-the-middle@2.0.1: dependencies: - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) cjs-module-lexer: 1.4.3 module-details-from-path: 1.0.4 @@ -21218,7 +21142,7 @@ snapshots: is-bun-module@2.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.4 is-callable@1.2.7: {} @@ -21427,8 +21351,6 @@ snapshots: jiti@1.21.7: {} - jiti@2.5.1: {} - jiti@2.6.1: {} jpeg-js@0.4.4: {} @@ -21644,7 +21566,7 @@ snapshots: lightningcss@1.30.1: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 optionalDependencies: lightningcss-darwin-arm64: 1.30.1 lightningcss-darwin-x64: 1.30.1 @@ -21690,12 +21612,6 @@ snapshots: load-esm@1.0.2: {} - local-pkg@1.1.1: - dependencies: - mlly: 1.7.4 - pkg-types: 2.2.0 - quansync: 0.2.10 - local-pkg@1.1.2: dependencies: mlly: 1.8.2 @@ -21769,7 +21685,7 @@ snapshots: magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.3 + '@jridgewell/sourcemap-codec': 1.5.5 magic-string@0.30.21: dependencies: @@ -22174,7 +22090,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1 + debug: 4.4.3 decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -22286,27 +22202,18 @@ snapshots: minimist@1.2.8: {} - minipass@7.1.2: {} - minipass@7.1.3: {} minisearch@7.1.2: {} minizlib@3.0.2: dependencies: - minipass: 7.1.2 + minipass: 7.1.3 mitt@3.0.1: {} mkdirp@3.0.1: {} - mlly@1.7.4: - dependencies: - acorn: 8.15.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.1 - mlly@1.8.2: dependencies: acorn: 8.16.0 @@ -22680,8 +22587,6 @@ snapshots: node-gyp-build@4.8.4: {} - node-mock-http@1.0.1: {} - node-mock-http@1.0.4: {} node-releases@2.0.38: {} @@ -22755,7 +22660,7 @@ snapshots: scule: 1.3.0 semver: 7.7.4 std-env: 4.1.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 ufo: 1.6.3 ultrahtml: 1.6.0 uncrypto: 0.1.3 @@ -23146,7 +23051,7 @@ snapshots: path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 - minipass: 7.1.2 + minipass: 7.1.3 path-scurry@2.0.2: dependencies: @@ -23232,18 +23137,12 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.7.4 - pathe: 2.0.3 - - pkg-types@2.2.0: - dependencies: - confbox: 0.2.2 - exsolve: 1.0.7 + mlly: 1.8.2 pathe: 2.0.3 pkg-types@2.3.0: dependencies: - confbox: 0.2.2 + confbox: 0.2.4 exsolve: 1.0.8 pathe: 2.0.3 @@ -23274,7 +23173,7 @@ snapshots: postcss-calc@10.1.1(postcss@8.5.10): dependencies: postcss: 8.5.10 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 postcss-colormin@7.0.9(postcss@8.5.10): @@ -23330,7 +23229,7 @@ snapshots: postcss-load-config@4.0.2(postcss@8.5.6): dependencies: lilconfig: 3.1.3 - yaml: 2.8.1 + yaml: 2.8.3 optionalDependencies: postcss: 8.5.6 @@ -23446,9 +23345,9 @@ snapshots: dependencies: postcss: 8.5.6 - postcss-scss@4.0.9(postcss@8.5.6): + postcss-scss@4.0.9(postcss@8.5.10): dependencies: - postcss: 8.5.6 + postcss: 8.5.10 postcss-selector-parser@6.1.2: dependencies: @@ -23605,8 +23504,6 @@ snapshots: dependencies: side-channel: 1.1.0 - quansync@0.2.10: {} - quansync@0.2.11: {} quansync@1.0.0: {} @@ -23855,7 +23752,7 @@ snapshots: require-in-the-middle@7.5.2: dependencies: - debug: 4.4.1 + debug: 4.4.3 module-details-from-path: 1.0.4 resolve: 1.22.10 transitivePeerDependencies: @@ -23863,7 +23760,7 @@ snapshots: require-in-the-middle@8.0.1: dependencies: - debug: 4.4.1 + debug: 4.4.3 module-details-from-path: 1.0.4 transitivePeerDependencies: - supports-color @@ -24218,7 +24115,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.4 - semver: 7.7.2 + semver: 7.7.4 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 '@img/sharp-darwin-x64': 0.33.5 @@ -24244,7 +24141,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.4 - semver: 7.7.2 + semver: 7.7.4 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.3 '@img/sharp-darwin-x64': 0.34.3 @@ -24652,7 +24549,7 @@ snapshots: sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.11 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 glob: 10.4.5 lines-and-columns: 1.2.4 @@ -24689,8 +24586,8 @@ snapshots: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - postcss: 8.5.6 - postcss-scss: 4.0.9(postcss@8.5.6) + postcss: 8.5.10 + postcss-scss: 4.0.9(postcss@8.5.10) postcss-selector-parser: 7.1.0 optionalDependencies: svelte: 5.38.3 @@ -24776,7 +24673,7 @@ snapshots: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 - minipass: 7.1.2 + minipass: 7.1.3 minizlib: 3.0.2 mkdirp: 3.0.1 yallist: 5.0.0 @@ -24796,7 +24693,7 @@ snapshots: terser@5.46.1: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 + acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -24832,14 +24729,12 @@ snapshots: tinyexec@0.3.2: {} - tinyexec@1.0.1: {} - tinyexec@1.0.4: {} tinyglobby@0.2.14: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinyglobby@0.2.15: dependencies: @@ -25079,8 +24974,6 @@ snapshots: uc.micro@2.1.0: {} - ufo@1.6.1: {} - ufo@1.6.3: {} uid@2.0.2: @@ -25107,7 +25000,7 @@ snapshots: unctx@2.5.0: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 estree-walker: 3.0.3 magic-string: 0.30.21 unplugin: 2.3.11 @@ -25136,16 +25029,16 @@ snapshots: unenv@2.0.0-rc.17: dependencies: - defu: 6.1.4 - exsolve: 1.0.7 + defu: 6.1.7 + exsolve: 1.0.8 ohash: 2.0.11 pathe: 2.0.3 - ufo: 1.6.1 + ufo: 1.6.3 unenv@2.0.0-rc.21: dependencies: defu: 6.1.7 - exsolve: 1.0.7 + exsolve: 1.0.8 ohash: 2.0.11 pathe: 2.0.3 ufo: 1.6.3 @@ -25258,7 +25151,7 @@ snapshots: unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 + acorn: 8.16.0 picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 @@ -25490,7 +25383,7 @@ snapshots: vite-dev-rpc@1.1.0(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3)): dependencies: - birpc: 2.4.0 + birpc: 2.9.0 vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3) vite-hot-client: 2.1.0(vite@7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3)) @@ -25504,7 +25397,7 @@ snapshots: debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.3(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3) + vite: 7.3.2(@types/node@24.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3) transitivePeerDependencies: - '@types/node' - jiti @@ -25547,7 +25440,7 @@ snapshots: picocolors: 1.1.1 picomatch: 4.0.4 tiny-invariant: 1.3.3 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 vite: 7.3.2(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.46.1)(tsx@4.20.3)(yaml@2.8.3) vscode-uri: 3.1.0 optionalDependencies: @@ -25597,7 +25490,7 @@ snapshots: vite@5.4.19(@types/node@22.19.1)(lightningcss@1.30.1)(terser@5.46.1): dependencies: esbuild: 0.21.5 - postcss: 8.5.6 + postcss: 8.5.10 rollup: 4.44.1 optionalDependencies: '@types/node': 22.19.1 @@ -25610,9 +25503,9 @@ snapshots: esbuild: 0.25.5 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.6 + postcss: 8.5.10 rollup: 4.44.1 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 24.3.0 fsevents: 2.3.3 @@ -25645,8 +25538,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 postcss: 8.5.10 - rollup: 4.44.1 - tinyglobby: 0.2.15 + rollup: 4.60.2 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 22.19.1 fsevents: 2.3.3 @@ -25662,8 +25555,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 postcss: 8.5.10 - rollup: 4.44.1 - tinyglobby: 0.2.15 + rollup: 4.60.2 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 24.3.0 fsevents: 2.3.3 @@ -25856,7 +25749,7 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.4 scule: 1.3.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unplugin: 3.0.0 unplugin-utils: 0.3.1 vue: 3.5.33(typescript@5.9.3) @@ -26147,7 +26040,7 @@ snapshots: dependencies: '@poppinss/colors': 4.1.6 '@poppinss/dumper': 0.6.5 - '@speed-highlight/core': 1.2.12 + '@speed-highlight/core': 1.2.15 cookie: 1.0.2 youch-core: 0.3.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index da386e5f5..6ad706490 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -40,6 +40,7 @@ packages: - examples/fastify - examples/next14-app-router - examples/next15-app-router +- examples/nuxt - examples/solidstart - examples/sveltekit-sample