├── frontend
├── .npmrc
├── project.inlang
│ ├── .gitignore
│ ├── project_id
│ └── settings.json
├── src
│ ├── app.css
│ ├── lib
│ │ ├── index.ts
│ │ ├── components
│ │ │ └── WebSocketStatus.svelte
│ │ ├── assets
│ │ │ └── favicon.svg
│ │ └── websocket.ts
│ ├── hooks.ts
│ ├── routes
│ │ ├── +layout.svelte
│ │ ├── api
│ │ │ └── ws
│ │ │ │ └── connect
│ │ │ │ └── +server.ts
│ │ ├── +page.server.ts
│ │ └── +page.svelte
│ ├── app.html
│ ├── hooks.server.ts
│ └── app.d.ts
├── static
│ ├── .assetsignore
│ └── robots.txt
├── messages
│ ├── de.json
│ └── en.json
├── .gitignore
├── svelte.config.js
├── tsconfig.json
├── vite.config.ts
├── README.md
├── package.json
├── wrangler.jsonc
└── pnpm-lock.yaml
├── backend
├── test
│ ├── env.d.ts
│ ├── tsconfig.json
│ └── index.spec.ts
├── .prettierrc
├── .editorconfig
├── vitest.config.mts
├── package.json
├── src
│ ├── test-do.ts
│ ├── index.ts
│ ├── message-coordinator.ts
│ └── countdown-timer.ts
├── tsconfig.json
├── wrangler.jsonc
├── .gitignore
└── pnpm-lock.yaml
├── .gitignore
└── README.md
/frontend/.npmrc:
--------------------------------------------------------------------------------
1 | engine-strict=true
2 |
--------------------------------------------------------------------------------
/frontend/project.inlang/.gitignore:
--------------------------------------------------------------------------------
1 | cache
--------------------------------------------------------------------------------
/frontend/src/app.css:
--------------------------------------------------------------------------------
1 | @import 'tailwindcss';
2 |
--------------------------------------------------------------------------------
/frontend/project.inlang/project_id:
--------------------------------------------------------------------------------
1 | KaDM7azm9YwNLyRoRW
--------------------------------------------------------------------------------
/frontend/static/.assetsignore:
--------------------------------------------------------------------------------
1 | _worker.js
2 | _routes.json
--------------------------------------------------------------------------------
/frontend/static/robots.txt:
--------------------------------------------------------------------------------
1 | # allow crawling everything by default
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/backend/test/env.d.ts:
--------------------------------------------------------------------------------
1 | declare module 'cloudflare:test' {
2 | interface ProvidedEnv extends Env {}
3 | }
4 |
--------------------------------------------------------------------------------
/frontend/src/lib/index.ts:
--------------------------------------------------------------------------------
1 | // place files you want to import through the `$lib` alias in this folder.
2 |
--------------------------------------------------------------------------------
/backend/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 140,
3 | "singleQuote": true,
4 | "semi": true,
5 | "useTabs": true
6 | }
7 |
--------------------------------------------------------------------------------
/frontend/messages/de.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://inlang.com/schema/inlang-message-format",
3 | "example_message": "Guten Tag {username}"
4 | }
--------------------------------------------------------------------------------
/frontend/messages/en.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://inlang.com/schema/inlang-message-format",
3 | "example_message": "Hello world {username}"
4 | }
--------------------------------------------------------------------------------
/frontend/src/hooks.ts:
--------------------------------------------------------------------------------
1 | import type { Reroute } from '@sveltejs/kit';
2 | import { deLocalizeUrl } from '$lib/paraglide/runtime';
3 |
4 | export const reroute: Reroute = (request) => {
5 | return deLocalizeUrl(request.url).pathname;
6 | };
--------------------------------------------------------------------------------
/backend/test/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["@cloudflare/vitest-pool-workers"]
5 | },
6 | "include": ["./**/*.ts", "../worker-configuration.d.ts"],
7 | "exclude": []
8 | }
9 |
--------------------------------------------------------------------------------
/backend/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.yml]
12 | indent_style = space
13 |
--------------------------------------------------------------------------------
/backend/vitest.config.mts:
--------------------------------------------------------------------------------
1 | import { defineWorkersConfig } from '@cloudflare/vitest-pool-workers/config';
2 |
3 | export default defineWorkersConfig({
4 | test: {
5 | poolOptions: {
6 | workers: {
7 | wrangler: { configPath: './wrangler.jsonc' },
8 | },
9 | },
10 | },
11 | });
12 |
--------------------------------------------------------------------------------
/frontend/src/routes/+layout.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 | {@render children()}
13 |
--------------------------------------------------------------------------------
/frontend/src/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | %sveltekit.head%
7 |
8 |
9 | %sveltekit.body%
10 |
11 |
12 |
--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
3 | # Output
4 | .output
5 | .vercel
6 | .netlify
7 | .wrangler
8 | /.svelte-kit
9 | /build
10 |
11 | # OS
12 | .DS_Store
13 | Thumbs.db
14 |
15 | # Env
16 | .env
17 | .env.*
18 | !.env.example
19 | !.env.test
20 |
21 | # Vite
22 | vite.config.js.timestamp-*
23 | vite.config.ts.timestamp-*
24 |
25 | .dev.vars*
26 | !.dev.vars.example
27 | worker-configuration.d.ts
28 |
--------------------------------------------------------------------------------
/backend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "backend",
3 | "version": "0.0.0",
4 | "private": true,
5 | "scripts": {
6 | "deploy": "wrangler deploy",
7 | "dev": "wrangler dev",
8 | "start": "wrangler dev",
9 | "test": "vitest",
10 | "cf-typegen": "wrangler types"
11 | },
12 | "devDependencies": {
13 | "@cloudflare/vitest-pool-workers": "^0.8.19",
14 | "typescript": "^5.5.2",
15 | "vitest": "~3.2.0",
16 | "wrangler": "^4.51.0"
17 | }
18 | }
--------------------------------------------------------------------------------
/frontend/project.inlang/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://inlang.com/schema/project-settings",
3 | "baseLocale": "en",
4 | "locales": [
5 | "en",
6 | "de"
7 | ],
8 | "modules": [
9 | "https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@4/dist/index.js",
10 | "https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@2/dist/index.js"
11 | ],
12 | "plugin.inlang.messageFormat": {
13 | "pathPattern": "./messages/{locale}.json"
14 | }
15 | }
--------------------------------------------------------------------------------
/frontend/src/hooks.server.ts:
--------------------------------------------------------------------------------
1 | import type { Handle } from '@sveltejs/kit';
2 | import { paraglideMiddleware } from '$lib/paraglide/server';
3 |
4 | // creating a handle to use the paraglide middleware
5 | const paraglideHandle: Handle = ({ event, resolve }) =>
6 | paraglideMiddleware(event.request, ({ request: localizedRequest, locale }) => {
7 | event.request = localizedRequest;
8 | return resolve(event, {
9 | transformPageChunk: ({ html }) => {
10 | return html.replace('%lang%', locale);
11 | }
12 | });
13 | });
14 |
15 | export const handle: Handle = paraglideHandle;
--------------------------------------------------------------------------------
/backend/src/test-do.ts:
--------------------------------------------------------------------------------
1 | import { DurableObject } from 'cloudflare:workers';
2 |
3 | export class TestDurableObject extends DurableObject {
4 |
5 | constructor(state: DurableObjectState, env: Env) {
6 | super(state, env);
7 | console.log('[TestDurableObject] Constructor called');
8 | }
9 |
10 | async fetch(request: Request) {
11 | console.log('[TestDurableObject] fetch called', {
12 | method: request.method,
13 | url: request.url
14 | });
15 | return new Response(JSON.stringify({ message: 'Hello from a Durable Object' }), {
16 | headers: { 'Content-Type': 'application/json' }
17 | });
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/frontend/src/app.d.ts:
--------------------------------------------------------------------------------
1 | // See https://svelte.dev/docs/kit/types#app.d.ts
2 | // for information about these interfaces
3 |
4 | export interface Env {
5 | TEST_DO: DurableObjectNamespace;
6 | MESSAGE_COORDINATOR: DurableObjectNamespace;
7 | COUNTDOWN_TIMER: DurableObjectNamespace;
8 | }
9 | declare global {
10 | namespace App {
11 | interface Platform {
12 | env: Env;
13 | cf: CfProperties;
14 | ctx: ExecutionContext;
15 | }
16 | }
17 | }
18 |
19 | ///
20 |
21 | interface ImportMetaEnv {
22 | readonly VITE_WS_HOST?: string;
23 | readonly VITE_WS_PATH?: string;
24 | }
25 |
26 | export {};
--------------------------------------------------------------------------------
/frontend/svelte.config.js:
--------------------------------------------------------------------------------
1 | import adapter from "@sveltejs/adapter-cloudflare";
2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
3 |
4 | /** @type {import('@sveltejs/kit').Config} */
5 | const config = {
6 | // Consult https://svelte.dev/docs/kit/integrations
7 | // for more information about preprocessors
8 | preprocess: vitePreprocess(),
9 |
10 | kit: {
11 | // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
12 | // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
13 | // See https://svelte.dev/docs/kit/adapters for more information about adapters.
14 | adapter: adapter()
15 | }
16 | };
17 |
18 | export default config;
--------------------------------------------------------------------------------
/frontend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "allowImportingTsExtensions": true,
5 | "allowJs": true,
6 | "checkJs": true,
7 | "esModuleInterop": true,
8 | "forceConsistentCasingInFileNames": true,
9 | "resolveJsonModule": true,
10 | "skipLibCheck": true,
11 | "sourceMap": true,
12 | "strict": true,
13 | "moduleResolution": "bundler",
14 | "types": [
15 | "./src/worker-configuration.d.ts"
16 | ]
17 | }
18 | // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
19 | // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
20 | //
21 | // To make changes to top-level options such as include and exclude, we recommend extending
22 | // the generated config; see https://svelte.dev/docs/kit/configuration#typescript
23 | }
24 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Dependencies
2 | node_modules/
3 | .pnp
4 | .pnp.js
5 |
6 | # Build outputs
7 | dist/
8 | build/
9 | .output/
10 | .svelte-kit/
11 | .wrangler/
12 | .next/
13 | out/
14 | .nuxt/
15 |
16 | # Environment variables
17 | .env
18 | .env.*
19 | !.env.example
20 | .dev.vars*
21 | !.dev.vars.example
22 |
23 | # Logs
24 | logs/
25 | *.log
26 | npm-debug.log*
27 | yarn-debug.log*
28 | yarn-error.log*
29 | pnpm-debug.log*
30 | lerna-debug.log*
31 |
32 | # OS
33 | .DS_Store
34 | .DS_Store?
35 | ._*
36 | .Spotlight-V100
37 | .Trashes
38 | ehthumbs.db
39 | Thumbs.db
40 |
41 | # IDE
42 | .vscode/
43 | .idea/
44 | *.swp
45 | *.swo
46 | *~
47 |
48 | # Testing
49 | coverage/
50 | .nyc_output/
51 | *.lcov
52 |
53 | # Cache
54 | .cache/
55 | .parcel-cache/
56 | .eslintcache
57 | .stylelintcache
58 | *.tsbuildinfo
59 |
60 | # Deployment
61 | .vercel/
62 | .netlify/
63 |
64 |
65 |
--------------------------------------------------------------------------------
/frontend/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { paraglideVitePlugin } from '@inlang/paraglide-js'
2 | import { sveltekit } from "@sveltejs/kit/vite";
3 | import { cloudflare } from "@cloudflare/vite-plugin";
4 | import { defineConfig} from "vite";
5 | import devtoolsJson from "vite-plugin-devtools-json";
6 | import tailwindcss from "@tailwindcss/vite";
7 |
8 | export default defineConfig({
9 | plugins: [
10 | tailwindcss() as any,
11 | sveltekit(),
12 | paraglideVitePlugin({
13 | project: "./project.inlang",
14 | outdir: "./src/lib/paraglide",
15 | strategy: ["url", "cookie", "baseLocale"],
16 | }),
17 | cloudflare({
18 | configPath: "./wrangler.jsonc",
19 | auxiliaryWorkers: [
20 | {
21 | configPath: "../backend/wrangler.jsonc",
22 | },
23 | ],
24 | }),
25 | devtoolsJson(),
26 | ],
27 | });
28 |
29 |
--------------------------------------------------------------------------------
/frontend/README.md:
--------------------------------------------------------------------------------
1 | # sv
2 |
3 | Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
4 |
5 | ## Creating a project
6 |
7 | If you're seeing this, you've probably already done this step. Congrats!
8 |
9 | ```sh
10 | # create a new project in the current directory
11 | npx sv create
12 |
13 | # create a new project in my-app
14 | npx sv create my-app
15 | ```
16 |
17 | ## Developing
18 |
19 | Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
20 |
21 | ```sh
22 | npm run dev
23 |
24 | # or start the server and open the app in a new browser tab
25 | npm run dev -- --open
26 | ```
27 |
28 | ## Building
29 |
30 | To create a production version of your app:
31 |
32 | ```sh
33 | npm run build
34 | ```
35 |
36 | You can preview the production build with `npm run preview`.
37 |
38 | > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
39 |
--------------------------------------------------------------------------------
/backend/test/index.spec.ts:
--------------------------------------------------------------------------------
1 | import { env, createExecutionContext, waitOnExecutionContext, SELF } from 'cloudflare:test';
2 | import { describe, it, expect } from 'vitest';
3 | import worker from '../src/index';
4 |
5 | // For now, you'll need to do something like this to get a correctly-typed
6 | // `Request` to pass to `worker.fetch()`.
7 | const IncomingRequest = Request;
8 |
9 | describe('Worker', () => {
10 | it('responds with correct message (unit style)', async () => {
11 | const request = new IncomingRequest('http://example.com');
12 | // Create an empty context to pass to `worker.fetch()`.
13 | const ctx = createExecutionContext();
14 | const response = await worker.fetch(request, env, ctx);
15 | // Wait for all `Promise`s passed to `ctx.waitUntil()` to settle before running test assertions
16 | await waitOnExecutionContext(ctx);
17 | expect(await response.text()).toMatchInlineSnapshot(`"This worker exports Durable Objects"`);
18 | });
19 |
20 | it('responds with correct message (integration style)', async () => {
21 | const response = await SELF.fetch('https://example.com');
22 | expect(await response.text()).toMatchInlineSnapshot(`"This worker exports Durable Objects"`);
23 | });
24 | });
25 |
--------------------------------------------------------------------------------
/frontend/src/routes/api/ws/connect/+server.ts:
--------------------------------------------------------------------------------
1 | import type { RequestHandler } from './$types';
2 |
3 | export const GET: RequestHandler = async ({ request, platform }) => {
4 | console.log('WebSocket connect request received');
5 |
6 | if (!platform) {
7 | console.error('Platform not available');
8 | return new Response('Platform not available', { status: 500 });
9 | }
10 |
11 | if (!platform.env?.MESSAGE_COORDINATOR) {
12 | console.error('MESSAGE_COORDINATOR binding not available');
13 | return new Response('MESSAGE_COORDINATOR binding not available', { status: 500 });
14 | }
15 |
16 | const upgradeHeader = request.headers.get('Upgrade');
17 | console.log('Upgrade header:', upgradeHeader);
18 |
19 | if (upgradeHeader !== 'websocket') {
20 | return new Response('Expected Upgrade: websocket', { status: 426 });
21 | }
22 |
23 | try {
24 | // Use a global coordinator for all connections
25 | const durableObjectId = platform.env.MESSAGE_COORDINATOR.idFromName('global');
26 | const stub = platform.env.MESSAGE_COORDINATOR.get(durableObjectId);
27 | console.log('Forwarding to Durable Object');
28 | return stub.fetch(request);
29 | } catch (error) {
30 | console.error('Error connecting to Durable Object:', error);
31 | return new Response(`Error: ${error}`, { status: 500 });
32 | }
33 | };
34 |
--------------------------------------------------------------------------------
/frontend/src/routes/+page.server.ts:
--------------------------------------------------------------------------------
1 | import type { Actions, PageServerLoad } from './$types';
2 |
3 | export const load: PageServerLoad = async ({ platform }) => {
4 | if (!platform?.env) {
5 | throw new Error('Platform env not available');
6 | }
7 |
8 | console.log('Loading data from backend durable object');
9 | const id = platform.env.TEST_DO.idFromName('global');
10 | const stub = platform.env.TEST_DO.get(id);
11 |
12 | const res = await stub.fetch('https://do/internal');
13 | const data = await res.json() as { message: string };
14 | console.log('Data from backend durable object:', data);
15 | return {
16 | message: data.message
17 | };
18 | };
19 |
20 | export const actions: Actions = {
21 | countdown: async ({ platform }) => {
22 | if (!platform?.env) {
23 | return { success: false, error: 'Platform not available' };
24 | }
25 |
26 | const id = platform.env.COUNTDOWN_TIMER.idFromName('global');
27 | const stub = platform.env.COUNTDOWN_TIMER.get(id);
28 |
29 | const response = await stub.fetch('http://do/start', {
30 | method: 'POST'
31 | });
32 |
33 | const result = await response.json() as { success: boolean; message?: string };
34 | return { success: result.success };
35 | }
36 | };
37 |
--------------------------------------------------------------------------------
/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "frontend",
3 | "private": true,
4 | "version": "0.0.1",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite dev",
8 | "build": "vite build",
9 | "preview": "pnpm run build && wrangler dev",
10 | "prepare": "svelte-kit sync || echo ''",
11 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
12 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
13 | "deploy": "pnpm run build && wrangler deploy",
14 | "cf-typegen": "wrangler types ./src/worker-configuration.d.ts",
15 | "machine-translate": "inlang machine translate --project project.inlang"
16 | },
17 | "devDependencies": {
18 | "@cloudflare/vite-plugin": "^1.15.3",
19 | "@sveltejs/adapter-cloudflare": "^7.2.4",
20 | "@sveltejs/kit": "^2.47.1",
21 | "@sveltejs/vite-plugin-svelte": "^6.2.1",
22 | "@types/node": "^24.10.1",
23 | "svelte": "^5.41.0",
24 | "svelte-check": "^4.3.3",
25 | "typescript": "^5.9.3",
26 | "vite": "^7.2.4",
27 | "vite-plugin-devtools-json": "^0.1.0",
28 | "wrangler": "^4.51.0",
29 | "@inlang/paraglide-js": "2.5.0",
30 | "@inlang/cli": "^3.0.0",
31 | "@tailwindcss/vite": "^4.0.0",
32 | "tailwindcss": "^4.0.0"
33 | },
34 | "dependencies": {},
35 | "pnpm": {
36 | "overrides": {
37 | "vite": "^7.2.4",
38 | "rollup": "^4.53.3"
39 | }
40 | }
41 | }
--------------------------------------------------------------------------------
/frontend/src/lib/components/WebSocketStatus.svelte:
--------------------------------------------------------------------------------
1 |
22 |
23 |
24 |
25 | {statusText}
26 |
27 |
28 |
69 |
--------------------------------------------------------------------------------
/frontend/src/lib/assets/favicon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/backend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */
4 |
5 | /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
6 | "target": "es2021",
7 | /* Specify a set of bundled library declaration files that describe the target runtime environment. */
8 | "lib": ["es2021"],
9 | /* Specify what JSX code is generated. */
10 | "jsx": "react-jsx",
11 |
12 | /* Specify what module code is generated. */
13 | "module": "es2022",
14 | /* Specify how TypeScript looks up a file from a given module specifier. */
15 | "moduleResolution": "Bundler",
16 | /* Enable importing .json files */
17 | "resolveJsonModule": true,
18 |
19 | /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
20 | "allowJs": true,
21 | /* Enable error reporting in type-checked JavaScript files. */
22 | "checkJs": false,
23 |
24 | /* Disable emitting files from a compilation. */
25 | "noEmit": true,
26 |
27 | /* Ensure that each file can be safely transpiled without relying on other imports. */
28 | "isolatedModules": true,
29 | /* Allow 'import x from y' when a module doesn't have a default export. */
30 | "allowSyntheticDefaultImports": true,
31 | /* Ensure that casing is correct in imports. */
32 | "forceConsistentCasingInFileNames": true,
33 |
34 | /* Enable all strict type-checking options. */
35 | "strict": true,
36 |
37 | /* Skip type checking all .d.ts files. */
38 | "skipLibCheck": true,
39 | "types": [
40 | "./worker-configuration.d.ts"
41 | ]
42 | },
43 | "exclude": ["test"],
44 | "include": ["worker-configuration.d.ts", "src/**/*.ts"]
45 | }
46 |
--------------------------------------------------------------------------------
/backend/src/index.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Welcome to Cloudflare Workers! This is your first worker.
3 | *
4 | * - Run `npm run dev` in your terminal to start a development server
5 | * - Open a browser tab at http://localhost:8787/ to see your worker in action
6 | * - Run `npm run deploy` to publish your worker
7 | *
8 | * Bind resources to your worker in `wrangler.jsonc`. After adding bindings, a type definition for the
9 | * `Env` object can be regenerated with `npm run cf-typegen`.
10 | *
11 | * Learn more at https://developers.cloudflare.com/workers/
12 | */
13 |
14 | export { TestDurableObject } from './test-do';
15 | export { MessageCoordinator } from './message-coordinator';
16 | export { CountdownTimer } from './countdown-timer';
17 |
18 | export default {
19 | async fetch(request, env, ctx): Promise {
20 | const url = new URL(request.url);
21 |
22 | // Handle WebSocket connections
23 | if (url.pathname === '/ws/connect') {
24 | // SECURITY: This direct WebSocket endpoint bypasses frontend auth checks.
25 | // Only allow in dev/test environments. In production, WebSocket connections
26 | // must go through the frontend SvelteKit handler which validates authorization.
27 | if (env.NODE_ENV === 'production') {
28 | console.log('[ws] Rejected: Direct WebSocket access not allowed in production');
29 | return new Response('Unauthorized', { status: 401 });
30 | }
31 |
32 | console.log('[Backend] WebSocket connect request');
33 |
34 | if (request.headers.get('Upgrade') !== 'websocket') {
35 | return new Response('Expected Upgrade: websocket', { status: 426 });
36 | }
37 |
38 | const id = env.MESSAGE_COORDINATOR.idFromName('global');
39 | const stub = env.MESSAGE_COORDINATOR.get(id);
40 | return stub.fetch(request);
41 | }
42 |
43 | // Handle broadcast requests (for the countdown action)
44 | if (url.pathname === '/broadcast' && request.method === 'POST') {
45 | console.log('[Backend] Broadcast request');
46 | const id = env.MESSAGE_COORDINATOR.idFromName('global');
47 | const stub = env.MESSAGE_COORDINATOR.get(id);
48 | return stub.fetch(request);
49 | }
50 |
51 | return new Response('This worker exports Durable Objects');
52 | },
53 | } satisfies ExportedHandler;
54 |
55 |
--------------------------------------------------------------------------------
/backend/wrangler.jsonc:
--------------------------------------------------------------------------------
1 | /**
2 | * For more details on how to configure Wrangler, refer to:
3 | * https://developers.cloudflare.com/workers/wrangler/configuration/
4 | */
5 | {
6 | "$schema": "node_modules/wrangler/config-schema.json",
7 | "name": "backend-test",
8 | "main": "src/index.ts",
9 | "compatibility_date": "2025-11-28",
10 | "vars": {
11 | "NODE_ENV": "production"
12 | },
13 | "observability": {
14 | "enabled": true
15 | },
16 | "migrations": [
17 | {
18 | "tag": "v1",
19 | "new_classes": ["TestDurableObject"]
20 | },
21 | {
22 | "tag": "v2",
23 | "new_classes": ["MessageCoordinator"]
24 | },
25 | {
26 | "tag": "v3",
27 | "new_classes": ["CountdownTimer"]
28 | }
29 | ],
30 | "durable_objects": {
31 | "bindings": [
32 | {
33 | "name": "TEST_DO",
34 | "class_name": "TestDurableObject"
35 | },
36 | {
37 | "name": "MESSAGE_COORDINATOR",
38 | "class_name": "MessageCoordinator"
39 | },
40 | {
41 | "name": "COUNTDOWN_TIMER",
42 | "class_name": "CountdownTimer"
43 | }
44 | ]
45 | },
46 | /**
47 | * Smart Placement
48 | * Docs: https://developers.cloudflare.com/workers/configuration/smart-placement/#smart-placement
49 | */
50 | // "placement": { "mode": "smart" }
51 | /**
52 | * Bindings
53 | * Bindings allow your Worker to interact with resources on the Cloudflare Developer Platform, including
54 | * databases, object storage, AI inference, real-time communication and more.
55 | * https://developers.cloudflare.com/workers/runtime-apis/bindings/
56 | */
57 | /**
58 | * Environment Variables
59 | * https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables
60 | */
61 | // "vars": { "MY_VARIABLE": "production_value" }
62 | /**
63 | * Note: Use secrets to store sensitive data.
64 | * https://developers.cloudflare.com/workers/configuration/secrets/
65 | */
66 | /**
67 | * Static Assets
68 | * https://developers.cloudflare.com/workers/static-assets/binding/
69 | */
70 | // "assets": { "directory": "./public/", "binding": "ASSETS" }
71 | /**
72 | * Service Bindings (communicate between multiple Workers)
73 | * https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings
74 | */
75 | // "services": [{ "binding": "MY_SERVICE", "service": "my-service" }]
76 | }
--------------------------------------------------------------------------------
/frontend/wrangler.jsonc:
--------------------------------------------------------------------------------
1 | /**
2 | * For more details on how to configure Wrangler, refer to:
3 | * https://developers.cloudflare.com/workers/wrangler/configuration/
4 | */
5 | {
6 | "$schema": "node_modules/wrangler/config-schema.json",
7 | "name": "frontend-test",
8 | "compatibility_date": "2025-06-04",
9 | "compatibility_flags": ["nodejs_compat"],
10 | // "compatibility_date": "2025-11-28",
11 | // "compatibility_flags": [
12 | // "nodejs_als"
13 | // ],
14 | "assets": {
15 | "binding": "ASSETS",
16 | "directory": ".svelte-kit/cloudflare"
17 | },
18 | "observability": {
19 | "enabled": true
20 | },
21 | "durable_objects": {
22 | "bindings": [
23 | {
24 | "name": "TEST_DO",
25 | "class_name": "TestDurableObject",
26 | "script_name": "backend-test"
27 | },
28 | {
29 | "name": "MESSAGE_COORDINATOR",
30 | "class_name": "MessageCoordinator",
31 | "script_name": "backend-test"
32 | },
33 | {
34 | "name": "COUNTDOWN_TIMER",
35 | "class_name": "CountdownTimer",
36 | "script_name": "backend-test"
37 | }
38 | ]
39 | },
40 | /**
41 | * Smart Placement
42 | * Docs: https://developers.cloudflare.com/workers/configuration/smart-placement/#smart-placement
43 | */
44 | // "placement": { "mode": "smart" }
45 | /**
46 | * Bindings
47 | * Bindings allow your Worker to interact with resources on the Cloudflare Developer Platform, including
48 | * databases, object storage, AI inference, real-time communication and more.
49 | * https://developers.cloudflare.com/workers/runtime-apis/bindings/
50 | */
51 | /**
52 | * Environment Variables
53 | * https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables
54 | */
55 | // "vars": { "MY_VARIABLE": "production_value" }
56 | /**
57 | * Note: Use secrets to store sensitive data.
58 | * https://developers.cloudflare.com/workers/configuration/secrets/
59 | */
60 | /**
61 | * Static Assets
62 | * https://developers.cloudflare.com/workers/static-assets/binding/
63 | */
64 | // "assets": { "directory": "./public/", "binding": "ASSETS" }
65 | /**
66 | * Service Bindings (communicate between multiple Workers)
67 | * https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings
68 | */
69 | // "services": [{ "binding": "MY_SERVICE", "service": "my-service" }]
70 | }
--------------------------------------------------------------------------------
/frontend/src/routes/+page.svelte:
--------------------------------------------------------------------------------
1 |
41 |
42 | {message}
43 |
44 |
45 |
WebSocket Countdown Demo
46 |
47 | {#if wsManager}
48 |
49 |
50 |
51 | {/if}
52 |
53 |
62 |
63 | {#if latestCount !== null}
64 |
65 | {latestCount}
66 |
67 | {/if}
68 |
69 | {#if messages.length > 0}
70 |
71 |
72 | Messages received
73 |
80 |
81 |
82 | {#each messages as msg}
83 | -
84 | Count: {msg.count} (at {new Date(msg.timestamp).toLocaleTimeString()})
85 |
86 | {/each}
87 |
88 |
89 | {/if}
90 |
91 |
92 |
--------------------------------------------------------------------------------
/backend/src/message-coordinator.ts:
--------------------------------------------------------------------------------
1 | import { DurableObject } from 'cloudflare:workers';
2 |
3 | export class MessageCoordinator extends DurableObject {
4 | constructor(ctx: DurableObjectState, env: Env) {
5 | super(ctx, env);
6 | console.log('[MessageCoordinator] Constructor called');
7 | }
8 |
9 | async fetch(request: Request): Promise {
10 | console.log('[MessageCoordinator] fetch called', {
11 | method: request.method,
12 | url: request.url,
13 | upgrade: request.headers.get('Upgrade')
14 | });
15 |
16 | if (request.headers.get('Upgrade') === 'websocket') {
17 | console.log('[MessageCoordinator] Handling WebSocket upgrade');
18 | return this.handleWebSocket(request);
19 | }
20 |
21 | // Handle message broadcasting
22 | if (request.method === 'POST') {
23 | console.log('[MessageCoordinator] Handling POST broadcast');
24 | const message = await request.json();
25 | return this.broadcast(message);
26 | }
27 |
28 | return new Response('MessageCoordinator active', { status: 200 });
29 | }
30 |
31 | private async handleWebSocket(_request: Request): Promise {
32 | console.log('[MessageCoordinator] Creating WebSocket pair');
33 | const pair = new WebSocketPair();
34 | const [client, server] = Object.values(pair);
35 |
36 | console.log('[MessageCoordinator] Accepting WebSocket');
37 | this.ctx.acceptWebSocket(server);
38 |
39 | console.log('[MessageCoordinator] Returning 101 response');
40 | return new Response(null, { status: 101, webSocket: client });
41 | }
42 |
43 | private async broadcast(message: unknown): Promise {
44 | const messageStr = JSON.stringify(message);
45 | console.log('Broadcasting message:', messageStr);
46 | const sessions = this.ctx.getWebSockets();
47 |
48 | for (const session of sessions) {
49 | try {
50 | session.send(messageStr);
51 | } catch {
52 | session.close(1011, 'gone');
53 | }
54 | }
55 | return new Response('Message sent', { status: 200 });
56 | }
57 |
58 | async webSocketOpen(ws: WebSocket) {
59 | console.log('[MessageCoordinator] WebSocket opened, total connections:', this.ctx.getWebSockets().length);
60 | }
61 |
62 | async webSocketMessage(ws: WebSocket, message: string | ArrayBuffer) {
63 | console.log('[MessageCoordinator] WebSocket message received:', message);
64 | // Handle incoming messages - broadcast to all connected clients
65 | const sessions = this.ctx.getWebSockets();
66 |
67 | for (const session of sessions) {
68 | try {
69 | session.send(message);
70 | } catch {
71 | session.close(1011, 'gone');
72 | }
73 | }
74 | }
75 |
76 | async webSocketClose(_ws: WebSocket, code: number, reason: string, wasClean: boolean) {
77 | console.log(`[MessageCoordinator] WebSocket closed: ${code} ${reason} (clean: ${wasClean})`);
78 | }
79 |
80 | async webSocketError(_ws: WebSocket, error: Error) {
81 | console.error('[MessageCoordinator] WebSocket error:', error);
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/backend/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 |
3 | logs
4 | _.log
5 | npm-debug.log_
6 | yarn-debug.log*
7 | yarn-error.log*
8 | lerna-debug.log*
9 | .pnpm-debug.log*
10 |
11 | # Diagnostic reports (https://nodejs.org/api/report.html)
12 |
13 | report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
14 |
15 | # Runtime data
16 |
17 | pids
18 | _.pid
19 | _.seed
20 | \*.pid.lock
21 |
22 | # Directory for instrumented libs generated by jscoverage/JSCover
23 |
24 | lib-cov
25 |
26 | # Coverage directory used by tools like istanbul
27 |
28 | coverage
29 | \*.lcov
30 |
31 | # nyc test coverage
32 |
33 | .nyc_output
34 |
35 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
36 |
37 | .grunt
38 |
39 | # Bower dependency directory (https://bower.io/)
40 |
41 | bower_components
42 |
43 | # node-waf configuration
44 |
45 | .lock-wscript
46 |
47 | # Compiled binary addons (https://nodejs.org/api/addons.html)
48 |
49 | build/Release
50 |
51 | # Dependency directories
52 |
53 | node_modules/
54 | jspm_packages/
55 |
56 | # Snowpack dependency directory (https://snowpack.dev/)
57 |
58 | web_modules/
59 |
60 | # TypeScript cache
61 |
62 | \*.tsbuildinfo
63 |
64 | # Optional npm cache directory
65 |
66 | .npm
67 |
68 | # Optional eslint cache
69 |
70 | .eslintcache
71 |
72 | # Optional stylelint cache
73 |
74 | .stylelintcache
75 |
76 | # Microbundle cache
77 |
78 | .rpt2_cache/
79 | .rts2_cache_cjs/
80 | .rts2_cache_es/
81 | .rts2_cache_umd/
82 |
83 | # Optional REPL history
84 |
85 | .node_repl_history
86 |
87 | # Output of 'npm pack'
88 |
89 | \*.tgz
90 |
91 | # Yarn Integrity file
92 |
93 | .yarn-integrity
94 |
95 | # parcel-bundler cache (https://parceljs.org/)
96 |
97 | .cache
98 | .parcel-cache
99 |
100 | # Next.js build output
101 |
102 | .next
103 | out
104 |
105 | # Nuxt.js build / generate output
106 |
107 | .nuxt
108 | dist
109 |
110 | # Gatsby files
111 |
112 | .cache/
113 |
114 | # Comment in the public line in if your project uses Gatsby and not Next.js
115 |
116 | # https://nextjs.org/blog/next-9-1#public-directory-support
117 |
118 | # public
119 |
120 | # vuepress build output
121 |
122 | .vuepress/dist
123 |
124 | # vuepress v2.x temp and cache directory
125 |
126 | .temp
127 | .cache
128 |
129 | # Docusaurus cache and generated files
130 |
131 | .docusaurus
132 |
133 | # Serverless directories
134 |
135 | .serverless/
136 |
137 | # FuseBox cache
138 |
139 | .fusebox/
140 |
141 | # DynamoDB Local files
142 |
143 | .dynamodb/
144 |
145 | # TernJS port file
146 |
147 | .tern-port
148 |
149 | # Stores VSCode versions used for testing VSCode extensions
150 |
151 | .vscode-test
152 |
153 | # yarn v2
154 |
155 | .yarn/cache
156 | .yarn/unplugged
157 | .yarn/build-state.yml
158 | .yarn/install-state.gz
159 | .pnp.\*
160 |
161 | # wrangler project
162 |
163 | .dev.vars*
164 | !.dev.vars.example
165 | .env*
166 | !.env.example
167 | .wrangler/
168 | worker-configuration.d.ts
169 |
--------------------------------------------------------------------------------
/backend/src/countdown-timer.ts:
--------------------------------------------------------------------------------
1 | import { DurableObject } from 'cloudflare:workers';
2 |
3 | export class CountdownTimer extends DurableObject {
4 | constructor(ctx: DurableObjectState, env: Env) {
5 | super(ctx, env);
6 | console.log('[CountdownTimer] Constructor called');
7 | }
8 |
9 | async fetch(request: Request): Promise {
10 | const url = new URL(request.url);
11 |
12 | if (url.pathname === '/start' && request.method === 'POST') {
13 | return this.startCountdown();
14 | }
15 |
16 | if (url.pathname === '/stop' && request.method === 'POST') {
17 | return this.stopCountdown();
18 | }
19 |
20 | return new Response('CountdownTimer active', { status: 200 });
21 | }
22 |
23 | private async startCountdown(): Promise {
24 | // Store initial countdown state
25 | await this.ctx.storage.put('countdown', 10);
26 | await this.ctx.storage.put('active', true);
27 |
28 | // Send first message immediately
29 | await this.broadcastMessage(10);
30 |
31 | // Schedule alarm for 1 second from now
32 | await this.ctx.storage.setAlarm(Date.now() + 1000);
33 |
34 | return new Response(JSON.stringify({ success: true, message: 'Countdown started' }), {
35 | headers: { 'Content-Type': 'application/json' }
36 | });
37 | }
38 |
39 | private async stopCountdown(): Promise {
40 | await this.ctx.storage.delete('active');
41 | await this.ctx.storage.deleteAlarm();
42 | return new Response(JSON.stringify({ success: true, message: 'Countdown stopped' }), {
43 | headers: { 'Content-Type': 'application/json' }
44 | });
45 | }
46 |
47 | async alarm(): Promise {
48 | const active = await this.ctx.storage.get('active');
49 | if (!active) {
50 | console.log('[CountdownTimer] Countdown not active, ignoring alarm');
51 | return;
52 | }
53 |
54 | const count = await this.ctx.storage.get('countdown');
55 | if (count === undefined || count === null) {
56 | console.log('[CountdownTimer] No countdown value found');
57 | return;
58 | }
59 |
60 | const nextCount = count - 1;
61 |
62 | if (nextCount >= 0) {
63 | // Broadcast the current count
64 | await this.broadcastMessage(nextCount);
65 |
66 | // Update stored countdown value
67 | await this.ctx.storage.put('countdown', nextCount);
68 |
69 | // Schedule next alarm if not done
70 | if (nextCount > 0) {
71 | await this.ctx.storage.setAlarm(Date.now() + 1000);
72 | } else {
73 | // Countdown complete
74 | await this.ctx.storage.delete('active');
75 | console.log('[CountdownTimer] Countdown complete');
76 | }
77 | }
78 | }
79 |
80 | private async broadcastMessage(count: number): Promise {
81 | const messageCoordinatorId = this.env.MESSAGE_COORDINATOR.idFromName('global');
82 | const stub = this.env.MESSAGE_COORDINATOR.get(messageCoordinatorId);
83 | const message = { count, timestamp: Date.now() };
84 |
85 | try {
86 | await stub.fetch('http://do/broadcast', {
87 | method: 'POST',
88 | headers: { 'Content-Type': 'application/json' },
89 | body: JSON.stringify(message)
90 | });
91 | console.log(`[CountdownTimer] Broadcasted count: ${count}`);
92 | } catch (error) {
93 | console.error('[CountdownTimer] Failed to broadcast message:', error);
94 | }
95 | }
96 | }
97 |
98 |
--------------------------------------------------------------------------------
/frontend/src/lib/websocket.ts:
--------------------------------------------------------------------------------
1 | import { writable, get } from 'svelte/store';
2 |
3 | export interface WebSocketMessage {
4 | count: number;
5 | timestamp: number;
6 | }
7 |
8 | export class WebSocketManager {
9 | private ws: WebSocket | null = null;
10 | private reconnectTimeout: ReturnType | null = null;
11 | private reconnectDelay = 1000;
12 | private isExplicitDisconnect = false;
13 | private enabled = false;
14 |
15 | public status = writable<'connecting' | 'connected' | 'disconnected'>('disconnected');
16 | public messages = writable([]);
17 |
18 | constructor() {}
19 |
20 | setEnabled(enabled: boolean) {
21 | this.enabled = enabled;
22 | if (enabled) {
23 | this.connect();
24 | } else {
25 | this.disconnect();
26 | }
27 | }
28 |
29 | getCurrentStatus(): 'connecting' | 'connected' | 'disconnected' {
30 | return get(this.status);
31 | }
32 |
33 | connect() {
34 | if (!this.enabled) {
35 | return;
36 | }
37 |
38 | const currentStatus = this.getCurrentStatus();
39 | if (currentStatus === 'connecting' || currentStatus === 'connected') {
40 | return;
41 | }
42 |
43 | this.isExplicitDisconnect = false;
44 | this.status.set('connecting');
45 |
46 | // In dev mode, connect directly to the backend worker on port 8787
47 | // In production, use the same host
48 | const isDev = import.meta.env.DEV;
49 | const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
50 | const host = import.meta.env.VITE_WS_HOST || (isDev ? 'localhost:8787' : window.location.host);
51 | const path = import.meta.env.VITE_WS_PATH || (isDev ? '/ws/connect' : '/api/ws/connect');
52 | const url = `${protocol}//${host}${path}`;
53 |
54 | console.log('[WebSocket] Connecting to:', url);
55 | this.ws = new WebSocket(url);
56 |
57 | this.ws.onopen = () => {
58 | this.status.set('connected');
59 | this.reconnectDelay = 1000;
60 | };
61 |
62 | this.ws.onmessage = (event) => {
63 | try {
64 | const message = JSON.parse(event.data) as WebSocketMessage;
65 | this.messages.update((msgs) => [...msgs, message]);
66 | } catch (err) {
67 | console.error('Failed to parse WebSocket message:', err);
68 | }
69 | };
70 |
71 | this.ws.onclose = () => {
72 | this.status.set('disconnected');
73 |
74 | if (!this.isExplicitDisconnect && this.enabled) {
75 | this.scheduleReconnect();
76 | }
77 | };
78 |
79 | this.ws.onerror = (error) => {
80 | console.error('WebSocket: Connection error:', error);
81 | this.ws?.close();
82 | };
83 | }
84 |
85 | private scheduleReconnect() {
86 | if (this.reconnectTimeout) return;
87 | if (!this.enabled) return;
88 |
89 | this.reconnectTimeout = setTimeout(() => {
90 | this.reconnectTimeout = null;
91 | this.reconnectDelay = Math.min(this.reconnectDelay * 2, 30000);
92 | this.connect();
93 | }, this.reconnectDelay);
94 | }
95 |
96 | disconnect() {
97 | this.isExplicitDisconnect = true;
98 | if (this.reconnectTimeout) {
99 | clearTimeout(this.reconnectTimeout);
100 | this.reconnectTimeout = null;
101 | }
102 |
103 | this.ws?.close();
104 | this.ws = null;
105 | this.status.set('disconnected');
106 | }
107 |
108 | clearMessages() {
109 | this.messages.set([]);
110 | }
111 | }
112 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Sveltekit Cloudflare Multi-Workers Demo
2 |
3 | This project demonstrates [multi-worker development](https://developers.cloudflare.com/workers/development-testing/multi-workers/) with Cloudflare Workers, showcasing how to run multiple Workers locally using separate dev commands.
4 |
5 | ## Architecture
6 |
7 | - **Backend Worker** (`backend/`): A Cloudflare Worker with Durable Objects (`TestDurableObject`)
8 | - **Frontend Worker** (`frontend/`): A SvelteKit application deployed as a Cloudflare Worker that accesses the backend's Durable Objects via `script_name` binding
9 |
10 | The frontend references the backend's Durable Object namespace using the `script_name` configuration, allowing it to access Durable Objects defined in the backend Worker.
11 |
12 | ## Installation
13 |
14 | Install dependencies and generate Cloudflare types in both folders:
15 |
16 | ```bash
17 | # Backend
18 | cd backend
19 | pnpm install
20 | pnpm cf-typegen
21 |
22 | # Frontend
23 | cd frontend
24 | pnpm install
25 | pnpm cf-typegen
26 | ```
27 |
28 | ## Development
29 |
30 | Run both Workers in separate terminals:
31 |
32 | ```bash
33 | # Terminal 1 - Backend (runs with wrangler dev)
34 | cd backend
35 | pnpm run dev
36 |
37 | # Terminal 2 - Frontend (runs with vite dev)
38 | cd frontend
39 | pnpm run dev
40 | ```
41 |
42 | The backend runs using `wrangler dev`, while the frontend runs using `vite dev` (via the Cloudflare Vite plugin). This approach uses the "multiple dev commands" pattern, where each Worker runs independently and can communicate via service bindings or Durable Object bindings across Workers.
43 |
44 | ### Backend Environment Variables
45 |
46 | The backend worker requires `NODE_ENV` to be set for security. Direct WebSocket access to `/ws/connect` is only allowed when `NODE_ENV` is `'development'` or `'test'`. In production, WebSocket connections must go through the frontend SvelteKit handler which validates authorization.
47 |
48 | Set `NODE_ENV` in `backend/wrangler.jsonc`:
49 |
50 | ```jsonc
51 | "vars": {
52 | "NODE_ENV": "development"
53 | }
54 | ```
55 |
56 | Or use a `.dev.vars` file in the `backend/` directory:
57 |
58 | ```bash
59 | cd backend
60 | cat > .dev.vars << EOF
61 | NODE_ENV=development
62 | EOF
63 | ```
64 |
65 | **Note**: `.dev.vars` files are gitignored and only used in local development. For production deployments, set environment variables via `wrangler secret put` or the Cloudflare dashboard.
66 |
67 | ## WebSocket Demo
68 |
69 | The main page includes a WebSocket countdown demo that demonstrates real-time communication using Cloudflare Durable Objects.
70 |
71 | ### How it works
72 |
73 | 1. **Click "Start Countdown"** - triggers a form action that sends 11 messages (10 to 0) spaced 1 second apart
74 | 2. **Messages broadcast via WebSocket** - the `MessageCoordinator` Durable Object broadcasts to all connected clients
75 | 3. **Real-time display** - the UI updates as each countdown message arrives
76 |
77 | ### Architecture
78 |
79 | ```
80 | Browser ←WebSocket→ MessageCoordinator (Durable Object) ←POST→ SvelteKit Action
81 | ```
82 |
83 | - `frontend/src/lib/websocket.ts` - WebSocket client with auto-reconnect
84 | - `frontend/src/lib/components/WebSocketStatus.svelte` - Connection status indicator (red/amber/green)
85 | - `backend/src/message-coordinator.ts` - Durable Object handling WebSocket connections and broadcasting
86 |
87 | ### Dev Mode WebSocket Workaround
88 |
89 | In development, Vite's dev server intercepts all WebSocket connections for HMR (Hot Module Replacement), preventing SvelteKit routes from handling WebSocket upgrades.
90 |
91 | **Solution**: The WebSocket client connects directly to the backend worker (port 8787) in dev mode. This is configured via environment variables:
92 |
93 | - `VITE_WS_HOST` - WebSocket host (defaults to `localhost:8787` in dev, `window.location.host` in production)
94 | - `VITE_WS_PATH` - WebSocket path (defaults to `/ws/connect` in dev, `/api/ws/connect` in production)
95 |
96 | Create a `.env.dev` file in the `frontend/` directory with your development settings:
97 |
98 | ```bash
99 | cd frontend
100 | cat > .env.dev << EOF
101 | VITE_WS_HOST=localhost:8787
102 | VITE_WS_PATH=/ws/connect
103 | EOF
104 | ```
105 |
106 | You can override these values by setting environment variables or creating a `.env.local` file.
107 |
108 | **Security Note**: The backend worker's `/ws/connect` endpoint only accepts direct connections when `NODE_ENV` is set to `'development'` or `'test'`. In production, this endpoint returns 401 Unauthorized, forcing all WebSocket connections to go through the frontend SvelteKit handler at `/api/ws/connect` which validates authorization.
109 |
110 | In production, there's no Vite server - all requests go directly through the Cloudflare Worker, so WebSocket upgrades work normally on the same origin.
111 |
112 | ## References
113 |
114 | - [Multi-Workers Development Guide](https://developers.cloudflare.com/workers/development-testing/multi-workers/)
115 | - [Durable Objects](https://developers.cloudflare.com/durable-objects/)
116 | - [SvelteKit Cloudflare Adapter](https://kit.svelte.dev/docs/adapter-cloudflare)
117 |
118 |
--------------------------------------------------------------------------------
/backend/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | devDependencies:
11 | '@cloudflare/vitest-pool-workers':
12 | specifier: ^0.8.19
13 | version: 0.8.71(@vitest/runner@3.2.4)(@vitest/snapshot@3.2.4)(vitest@3.2.4)
14 | typescript:
15 | specifier: ^5.5.2
16 | version: 5.9.3
17 | vitest:
18 | specifier: ~3.2.0
19 | version: 3.2.4
20 | wrangler:
21 | specifier: ^4.51.0
22 | version: 4.51.0
23 |
24 | packages:
25 |
26 | '@cloudflare/kv-asset-handler@0.4.0':
27 | resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==}
28 | engines: {node: '>=18.0.0'}
29 |
30 | '@cloudflare/kv-asset-handler@0.4.1':
31 | resolution: {integrity: sha512-Nu8ahitGFFJztxUml9oD/DLb7Z28C8cd8F46IVQ7y5Btz575pvMY8AqZsXkX7Gds29eCKdMgIHjIvzskHgPSFg==}
32 | engines: {node: '>=18.0.0'}
33 |
34 | '@cloudflare/unenv-preset@2.7.11':
35 | resolution: {integrity: sha512-se23f1D4PxKrMKOq+Stz+Yn7AJ9ITHcEecXo2Yjb+UgbUDCEBch1FXQC6hx6uT5fNA3kmX3mfzeZiUmpK1W9IQ==}
36 | peerDependencies:
37 | unenv: 2.0.0-rc.24
38 | workerd: ^1.20251106.1
39 | peerDependenciesMeta:
40 | workerd:
41 | optional: true
42 |
43 | '@cloudflare/unenv-preset@2.7.3':
44 | resolution: {integrity: sha512-tsQQagBKjvpd9baa6nWVIv399ejiqcrUBBW6SZx6Z22+ymm+Odv5+cFimyuCsD/fC1fQTwfRmwXBNpzvHSeGCw==}
45 | peerDependencies:
46 | unenv: 2.0.0-rc.21
47 | workerd: ^1.20250828.1
48 | peerDependenciesMeta:
49 | workerd:
50 | optional: true
51 |
52 | '@cloudflare/vitest-pool-workers@0.8.71':
53 | resolution: {integrity: sha512-keu2HCLQfRNwbmLBCDXJgCFpANTaYnQpE01fBOo4CNwiWHUT7SZGN7w64RKiSWRHyYppStXBuE5Ng7F42+flpg==}
54 | peerDependencies:
55 | '@vitest/runner': 2.0.x - 3.2.x
56 | '@vitest/snapshot': 2.0.x - 3.2.x
57 | vitest: 2.0.x - 3.2.x
58 |
59 | '@cloudflare/workerd-darwin-64@1.20250906.0':
60 | resolution: {integrity: sha512-E+X/YYH9BmX0ew2j/mAWFif2z05NMNuhCTlNYEGLkqMe99K15UewBqajL9pMcMUKxylnlrEoK3VNxl33DkbnPA==}
61 | engines: {node: '>=16'}
62 | cpu: [x64]
63 | os: [darwin]
64 |
65 | '@cloudflare/workerd-darwin-64@1.20251125.0':
66 | resolution: {integrity: sha512-xDIVJi8fPxBseRoEIzLiUJb0N+DXnah/ynS+Unzn58HEoKLetUWiV/T1Fhned//lo5krnToG9KRgVRs0SOOTpw==}
67 | engines: {node: '>=16'}
68 | cpu: [x64]
69 | os: [darwin]
70 |
71 | '@cloudflare/workerd-darwin-arm64@1.20250906.0':
72 | resolution: {integrity: sha512-X5apsZ1SFW4FYTM19ISHf8005FJMPfrcf4U5rO0tdj+TeJgQgXuZ57IG0WeW7SpLVeBo8hM6WC8CovZh41AfnA==}
73 | engines: {node: '>=16'}
74 | cpu: [arm64]
75 | os: [darwin]
76 |
77 | '@cloudflare/workerd-darwin-arm64@1.20251125.0':
78 | resolution: {integrity: sha512-k5FQET5PXnWjeDqZUpl4Ah/Rn0bH6mjfUtTyeAy6ky7QB3AZpwIhgWQD0vOFB3OvJaK4J/K4cUtNChYXB9mY/A==}
79 | engines: {node: '>=16'}
80 | cpu: [arm64]
81 | os: [darwin]
82 |
83 | '@cloudflare/workerd-linux-64@1.20250906.0':
84 | resolution: {integrity: sha512-rlKzWgsLnlQ5Nt9W69YBJKcmTmZbOGu0edUsenXPmc6wzULUxoQpi7ZE9k3TfTonJx4WoQsQlzCUamRYFsX+0Q==}
85 | engines: {node: '>=16'}
86 | cpu: [x64]
87 | os: [linux]
88 |
89 | '@cloudflare/workerd-linux-64@1.20251125.0':
90 | resolution: {integrity: sha512-at6n/FomkftykWx0EqVLUZ0juUFz3ORtEPeBbW9ZZ3BQEyfVUtYfdcz/f1cN8Yyb7TE9ovF071P0mBRkx83ODw==}
91 | engines: {node: '>=16'}
92 | cpu: [x64]
93 | os: [linux]
94 |
95 | '@cloudflare/workerd-linux-arm64@1.20250906.0':
96 | resolution: {integrity: sha512-DdedhiQ+SeLzpg7BpcLrIPEZ33QKioJQ1wvL4X7nuLzEB9rWzS37NNNahQzc1+44rhG4fyiHbXBPOeox4B9XVA==}
97 | engines: {node: '>=16'}
98 | cpu: [arm64]
99 | os: [linux]
100 |
101 | '@cloudflare/workerd-linux-arm64@1.20251125.0':
102 | resolution: {integrity: sha512-EiRn+jrNaIs1QveabXGHFoyn3s/l02ui6Yp3nssyNhtmtgviddtt8KObBfM1jQKjXTpZlunhwdN4Bxf4jhlOMw==}
103 | engines: {node: '>=16'}
104 | cpu: [arm64]
105 | os: [linux]
106 |
107 | '@cloudflare/workerd-windows-64@1.20250906.0':
108 | resolution: {integrity: sha512-Q8Qjfs8jGVILnZL6vUpQ90q/8MTCYaGR3d1LGxZMBqte8Vr7xF3KFHPEy7tFs0j0mMjnqCYzlofmPNY+9ZaDRg==}
109 | engines: {node: '>=16'}
110 | cpu: [x64]
111 | os: [win32]
112 |
113 | '@cloudflare/workerd-windows-64@1.20251125.0':
114 | resolution: {integrity: sha512-6fdIsSeu65g++k8Y2DKzNKs0BkoU+KKI6GAAVBOLh2vvVWWnCP1OgMdVb5JAdjDrjDT5i0GSQu0bgQ8fPsW6zw==}
115 | engines: {node: '>=16'}
116 | cpu: [x64]
117 | os: [win32]
118 |
119 | '@cspotcode/source-map-support@0.8.1':
120 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
121 | engines: {node: '>=12'}
122 |
123 | '@emnapi/runtime@1.7.1':
124 | resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
125 |
126 | '@esbuild/aix-ppc64@0.25.12':
127 | resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
128 | engines: {node: '>=18'}
129 | cpu: [ppc64]
130 | os: [aix]
131 |
132 | '@esbuild/aix-ppc64@0.25.4':
133 | resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==}
134 | engines: {node: '>=18'}
135 | cpu: [ppc64]
136 | os: [aix]
137 |
138 | '@esbuild/android-arm64@0.25.12':
139 | resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
140 | engines: {node: '>=18'}
141 | cpu: [arm64]
142 | os: [android]
143 |
144 | '@esbuild/android-arm64@0.25.4':
145 | resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==}
146 | engines: {node: '>=18'}
147 | cpu: [arm64]
148 | os: [android]
149 |
150 | '@esbuild/android-arm@0.25.12':
151 | resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
152 | engines: {node: '>=18'}
153 | cpu: [arm]
154 | os: [android]
155 |
156 | '@esbuild/android-arm@0.25.4':
157 | resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==}
158 | engines: {node: '>=18'}
159 | cpu: [arm]
160 | os: [android]
161 |
162 | '@esbuild/android-x64@0.25.12':
163 | resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
164 | engines: {node: '>=18'}
165 | cpu: [x64]
166 | os: [android]
167 |
168 | '@esbuild/android-x64@0.25.4':
169 | resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==}
170 | engines: {node: '>=18'}
171 | cpu: [x64]
172 | os: [android]
173 |
174 | '@esbuild/darwin-arm64@0.25.12':
175 | resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
176 | engines: {node: '>=18'}
177 | cpu: [arm64]
178 | os: [darwin]
179 |
180 | '@esbuild/darwin-arm64@0.25.4':
181 | resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==}
182 | engines: {node: '>=18'}
183 | cpu: [arm64]
184 | os: [darwin]
185 |
186 | '@esbuild/darwin-x64@0.25.12':
187 | resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
188 | engines: {node: '>=18'}
189 | cpu: [x64]
190 | os: [darwin]
191 |
192 | '@esbuild/darwin-x64@0.25.4':
193 | resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==}
194 | engines: {node: '>=18'}
195 | cpu: [x64]
196 | os: [darwin]
197 |
198 | '@esbuild/freebsd-arm64@0.25.12':
199 | resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
200 | engines: {node: '>=18'}
201 | cpu: [arm64]
202 | os: [freebsd]
203 |
204 | '@esbuild/freebsd-arm64@0.25.4':
205 | resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==}
206 | engines: {node: '>=18'}
207 | cpu: [arm64]
208 | os: [freebsd]
209 |
210 | '@esbuild/freebsd-x64@0.25.12':
211 | resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
212 | engines: {node: '>=18'}
213 | cpu: [x64]
214 | os: [freebsd]
215 |
216 | '@esbuild/freebsd-x64@0.25.4':
217 | resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==}
218 | engines: {node: '>=18'}
219 | cpu: [x64]
220 | os: [freebsd]
221 |
222 | '@esbuild/linux-arm64@0.25.12':
223 | resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
224 | engines: {node: '>=18'}
225 | cpu: [arm64]
226 | os: [linux]
227 |
228 | '@esbuild/linux-arm64@0.25.4':
229 | resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==}
230 | engines: {node: '>=18'}
231 | cpu: [arm64]
232 | os: [linux]
233 |
234 | '@esbuild/linux-arm@0.25.12':
235 | resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
236 | engines: {node: '>=18'}
237 | cpu: [arm]
238 | os: [linux]
239 |
240 | '@esbuild/linux-arm@0.25.4':
241 | resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==}
242 | engines: {node: '>=18'}
243 | cpu: [arm]
244 | os: [linux]
245 |
246 | '@esbuild/linux-ia32@0.25.12':
247 | resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
248 | engines: {node: '>=18'}
249 | cpu: [ia32]
250 | os: [linux]
251 |
252 | '@esbuild/linux-ia32@0.25.4':
253 | resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==}
254 | engines: {node: '>=18'}
255 | cpu: [ia32]
256 | os: [linux]
257 |
258 | '@esbuild/linux-loong64@0.25.12':
259 | resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
260 | engines: {node: '>=18'}
261 | cpu: [loong64]
262 | os: [linux]
263 |
264 | '@esbuild/linux-loong64@0.25.4':
265 | resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==}
266 | engines: {node: '>=18'}
267 | cpu: [loong64]
268 | os: [linux]
269 |
270 | '@esbuild/linux-mips64el@0.25.12':
271 | resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
272 | engines: {node: '>=18'}
273 | cpu: [mips64el]
274 | os: [linux]
275 |
276 | '@esbuild/linux-mips64el@0.25.4':
277 | resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==}
278 | engines: {node: '>=18'}
279 | cpu: [mips64el]
280 | os: [linux]
281 |
282 | '@esbuild/linux-ppc64@0.25.12':
283 | resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
284 | engines: {node: '>=18'}
285 | cpu: [ppc64]
286 | os: [linux]
287 |
288 | '@esbuild/linux-ppc64@0.25.4':
289 | resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==}
290 | engines: {node: '>=18'}
291 | cpu: [ppc64]
292 | os: [linux]
293 |
294 | '@esbuild/linux-riscv64@0.25.12':
295 | resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
296 | engines: {node: '>=18'}
297 | cpu: [riscv64]
298 | os: [linux]
299 |
300 | '@esbuild/linux-riscv64@0.25.4':
301 | resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==}
302 | engines: {node: '>=18'}
303 | cpu: [riscv64]
304 | os: [linux]
305 |
306 | '@esbuild/linux-s390x@0.25.12':
307 | resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
308 | engines: {node: '>=18'}
309 | cpu: [s390x]
310 | os: [linux]
311 |
312 | '@esbuild/linux-s390x@0.25.4':
313 | resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==}
314 | engines: {node: '>=18'}
315 | cpu: [s390x]
316 | os: [linux]
317 |
318 | '@esbuild/linux-x64@0.25.12':
319 | resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
320 | engines: {node: '>=18'}
321 | cpu: [x64]
322 | os: [linux]
323 |
324 | '@esbuild/linux-x64@0.25.4':
325 | resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==}
326 | engines: {node: '>=18'}
327 | cpu: [x64]
328 | os: [linux]
329 |
330 | '@esbuild/netbsd-arm64@0.25.12':
331 | resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
332 | engines: {node: '>=18'}
333 | cpu: [arm64]
334 | os: [netbsd]
335 |
336 | '@esbuild/netbsd-arm64@0.25.4':
337 | resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==}
338 | engines: {node: '>=18'}
339 | cpu: [arm64]
340 | os: [netbsd]
341 |
342 | '@esbuild/netbsd-x64@0.25.12':
343 | resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
344 | engines: {node: '>=18'}
345 | cpu: [x64]
346 | os: [netbsd]
347 |
348 | '@esbuild/netbsd-x64@0.25.4':
349 | resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==}
350 | engines: {node: '>=18'}
351 | cpu: [x64]
352 | os: [netbsd]
353 |
354 | '@esbuild/openbsd-arm64@0.25.12':
355 | resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
356 | engines: {node: '>=18'}
357 | cpu: [arm64]
358 | os: [openbsd]
359 |
360 | '@esbuild/openbsd-arm64@0.25.4':
361 | resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==}
362 | engines: {node: '>=18'}
363 | cpu: [arm64]
364 | os: [openbsd]
365 |
366 | '@esbuild/openbsd-x64@0.25.12':
367 | resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
368 | engines: {node: '>=18'}
369 | cpu: [x64]
370 | os: [openbsd]
371 |
372 | '@esbuild/openbsd-x64@0.25.4':
373 | resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==}
374 | engines: {node: '>=18'}
375 | cpu: [x64]
376 | os: [openbsd]
377 |
378 | '@esbuild/openharmony-arm64@0.25.12':
379 | resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
380 | engines: {node: '>=18'}
381 | cpu: [arm64]
382 | os: [openharmony]
383 |
384 | '@esbuild/sunos-x64@0.25.12':
385 | resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
386 | engines: {node: '>=18'}
387 | cpu: [x64]
388 | os: [sunos]
389 |
390 | '@esbuild/sunos-x64@0.25.4':
391 | resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==}
392 | engines: {node: '>=18'}
393 | cpu: [x64]
394 | os: [sunos]
395 |
396 | '@esbuild/win32-arm64@0.25.12':
397 | resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
398 | engines: {node: '>=18'}
399 | cpu: [arm64]
400 | os: [win32]
401 |
402 | '@esbuild/win32-arm64@0.25.4':
403 | resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==}
404 | engines: {node: '>=18'}
405 | cpu: [arm64]
406 | os: [win32]
407 |
408 | '@esbuild/win32-ia32@0.25.12':
409 | resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
410 | engines: {node: '>=18'}
411 | cpu: [ia32]
412 | os: [win32]
413 |
414 | '@esbuild/win32-ia32@0.25.4':
415 | resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==}
416 | engines: {node: '>=18'}
417 | cpu: [ia32]
418 | os: [win32]
419 |
420 | '@esbuild/win32-x64@0.25.12':
421 | resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
422 | engines: {node: '>=18'}
423 | cpu: [x64]
424 | os: [win32]
425 |
426 | '@esbuild/win32-x64@0.25.4':
427 | resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==}
428 | engines: {node: '>=18'}
429 | cpu: [x64]
430 | os: [win32]
431 |
432 | '@img/sharp-darwin-arm64@0.33.5':
433 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
434 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
435 | cpu: [arm64]
436 | os: [darwin]
437 |
438 | '@img/sharp-darwin-x64@0.33.5':
439 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
440 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
441 | cpu: [x64]
442 | os: [darwin]
443 |
444 | '@img/sharp-libvips-darwin-arm64@1.0.4':
445 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
446 | cpu: [arm64]
447 | os: [darwin]
448 |
449 | '@img/sharp-libvips-darwin-x64@1.0.4':
450 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
451 | cpu: [x64]
452 | os: [darwin]
453 |
454 | '@img/sharp-libvips-linux-arm64@1.0.4':
455 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
456 | cpu: [arm64]
457 | os: [linux]
458 |
459 | '@img/sharp-libvips-linux-arm@1.0.5':
460 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
461 | cpu: [arm]
462 | os: [linux]
463 |
464 | '@img/sharp-libvips-linux-s390x@1.0.4':
465 | resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
466 | cpu: [s390x]
467 | os: [linux]
468 |
469 | '@img/sharp-libvips-linux-x64@1.0.4':
470 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
471 | cpu: [x64]
472 | os: [linux]
473 |
474 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
475 | resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
476 | cpu: [arm64]
477 | os: [linux]
478 |
479 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
480 | resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
481 | cpu: [x64]
482 | os: [linux]
483 |
484 | '@img/sharp-linux-arm64@0.33.5':
485 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
486 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
487 | cpu: [arm64]
488 | os: [linux]
489 |
490 | '@img/sharp-linux-arm@0.33.5':
491 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
492 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
493 | cpu: [arm]
494 | os: [linux]
495 |
496 | '@img/sharp-linux-s390x@0.33.5':
497 | resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
498 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
499 | cpu: [s390x]
500 | os: [linux]
501 |
502 | '@img/sharp-linux-x64@0.33.5':
503 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
504 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
505 | cpu: [x64]
506 | os: [linux]
507 |
508 | '@img/sharp-linuxmusl-arm64@0.33.5':
509 | resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
510 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
511 | cpu: [arm64]
512 | os: [linux]
513 |
514 | '@img/sharp-linuxmusl-x64@0.33.5':
515 | resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
516 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
517 | cpu: [x64]
518 | os: [linux]
519 |
520 | '@img/sharp-wasm32@0.33.5':
521 | resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
522 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
523 | cpu: [wasm32]
524 |
525 | '@img/sharp-win32-ia32@0.33.5':
526 | resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
527 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
528 | cpu: [ia32]
529 | os: [win32]
530 |
531 | '@img/sharp-win32-x64@0.33.5':
532 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
533 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
534 | cpu: [x64]
535 | os: [win32]
536 |
537 | '@jridgewell/resolve-uri@3.1.2':
538 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
539 | engines: {node: '>=6.0.0'}
540 |
541 | '@jridgewell/sourcemap-codec@1.5.5':
542 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
543 |
544 | '@jridgewell/trace-mapping@0.3.9':
545 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
546 |
547 | '@poppinss/colors@4.1.5':
548 | resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==}
549 |
550 | '@poppinss/dumper@0.6.5':
551 | resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==}
552 |
553 | '@poppinss/exception@1.2.2':
554 | resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==}
555 |
556 | '@rollup/rollup-android-arm-eabi@4.53.3':
557 | resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
558 | cpu: [arm]
559 | os: [android]
560 |
561 | '@rollup/rollup-android-arm64@4.53.3':
562 | resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==}
563 | cpu: [arm64]
564 | os: [android]
565 |
566 | '@rollup/rollup-darwin-arm64@4.53.3':
567 | resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==}
568 | cpu: [arm64]
569 | os: [darwin]
570 |
571 | '@rollup/rollup-darwin-x64@4.53.3':
572 | resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==}
573 | cpu: [x64]
574 | os: [darwin]
575 |
576 | '@rollup/rollup-freebsd-arm64@4.53.3':
577 | resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==}
578 | cpu: [arm64]
579 | os: [freebsd]
580 |
581 | '@rollup/rollup-freebsd-x64@4.53.3':
582 | resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==}
583 | cpu: [x64]
584 | os: [freebsd]
585 |
586 | '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
587 | resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
588 | cpu: [arm]
589 | os: [linux]
590 |
591 | '@rollup/rollup-linux-arm-musleabihf@4.53.3':
592 | resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
593 | cpu: [arm]
594 | os: [linux]
595 |
596 | '@rollup/rollup-linux-arm64-gnu@4.53.3':
597 | resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
598 | cpu: [arm64]
599 | os: [linux]
600 |
601 | '@rollup/rollup-linux-arm64-musl@4.53.3':
602 | resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
603 | cpu: [arm64]
604 | os: [linux]
605 |
606 | '@rollup/rollup-linux-loong64-gnu@4.53.3':
607 | resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
608 | cpu: [loong64]
609 | os: [linux]
610 |
611 | '@rollup/rollup-linux-ppc64-gnu@4.53.3':
612 | resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
613 | cpu: [ppc64]
614 | os: [linux]
615 |
616 | '@rollup/rollup-linux-riscv64-gnu@4.53.3':
617 | resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
618 | cpu: [riscv64]
619 | os: [linux]
620 |
621 | '@rollup/rollup-linux-riscv64-musl@4.53.3':
622 | resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
623 | cpu: [riscv64]
624 | os: [linux]
625 |
626 | '@rollup/rollup-linux-s390x-gnu@4.53.3':
627 | resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
628 | cpu: [s390x]
629 | os: [linux]
630 |
631 | '@rollup/rollup-linux-x64-gnu@4.53.3':
632 | resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
633 | cpu: [x64]
634 | os: [linux]
635 |
636 | '@rollup/rollup-linux-x64-musl@4.53.3':
637 | resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
638 | cpu: [x64]
639 | os: [linux]
640 |
641 | '@rollup/rollup-openharmony-arm64@4.53.3':
642 | resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
643 | cpu: [arm64]
644 | os: [openharmony]
645 |
646 | '@rollup/rollup-win32-arm64-msvc@4.53.3':
647 | resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==}
648 | cpu: [arm64]
649 | os: [win32]
650 |
651 | '@rollup/rollup-win32-ia32-msvc@4.53.3':
652 | resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==}
653 | cpu: [ia32]
654 | os: [win32]
655 |
656 | '@rollup/rollup-win32-x64-gnu@4.53.3':
657 | resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==}
658 | cpu: [x64]
659 | os: [win32]
660 |
661 | '@rollup/rollup-win32-x64-msvc@4.53.3':
662 | resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==}
663 | cpu: [x64]
664 | os: [win32]
665 |
666 | '@sindresorhus/is@7.1.1':
667 | resolution: {integrity: sha512-rO92VvpgMc3kfiTjGT52LEtJ8Yc5kCWhZjLQ3LwlA4pSgPpQO7bVpYXParOD8Jwf+cVQECJo3yP/4I8aZtUQTQ==}
668 | engines: {node: '>=18'}
669 |
670 | '@speed-highlight/core@1.2.12':
671 | resolution: {integrity: sha512-uilwrK0Ygyri5dToHYdZSjcvpS2ZwX0w5aSt3GCEN9hrjxWCoeV4Z2DTXuxjwbntaLQIEEAlCeNQss5SoHvAEA==}
672 |
673 | '@types/chai@5.2.3':
674 | resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
675 |
676 | '@types/deep-eql@4.0.2':
677 | resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
678 |
679 | '@types/estree@1.0.8':
680 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
681 |
682 | '@vitest/expect@3.2.4':
683 | resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
684 |
685 | '@vitest/mocker@3.2.4':
686 | resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==}
687 | peerDependencies:
688 | msw: ^2.4.9
689 | vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0
690 | peerDependenciesMeta:
691 | msw:
692 | optional: true
693 | vite:
694 | optional: true
695 |
696 | '@vitest/pretty-format@3.2.4':
697 | resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==}
698 |
699 | '@vitest/runner@3.2.4':
700 | resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==}
701 |
702 | '@vitest/snapshot@3.2.4':
703 | resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==}
704 |
705 | '@vitest/spy@3.2.4':
706 | resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==}
707 |
708 | '@vitest/utils@3.2.4':
709 | resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==}
710 |
711 | acorn-walk@8.3.2:
712 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
713 | engines: {node: '>=0.4.0'}
714 |
715 | acorn@8.14.0:
716 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
717 | engines: {node: '>=0.4.0'}
718 | hasBin: true
719 |
720 | assertion-error@2.0.1:
721 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
722 | engines: {node: '>=12'}
723 |
724 | birpc@0.2.14:
725 | resolution: {integrity: sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==}
726 |
727 | blake3-wasm@2.1.5:
728 | resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
729 |
730 | cac@6.7.14:
731 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
732 | engines: {node: '>=8'}
733 |
734 | chai@5.3.3:
735 | resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==}
736 | engines: {node: '>=18'}
737 |
738 | check-error@2.1.1:
739 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
740 | engines: {node: '>= 16'}
741 |
742 | cjs-module-lexer@1.4.3:
743 | resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
744 |
745 | color-convert@2.0.1:
746 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
747 | engines: {node: '>=7.0.0'}
748 |
749 | color-name@1.1.4:
750 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
751 |
752 | color-string@1.9.1:
753 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
754 |
755 | color@4.2.3:
756 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
757 | engines: {node: '>=12.5.0'}
758 |
759 | cookie@1.1.1:
760 | resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
761 | engines: {node: '>=18'}
762 |
763 | debug@4.4.3:
764 | resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
765 | engines: {node: '>=6.0'}
766 | peerDependencies:
767 | supports-color: '*'
768 | peerDependenciesMeta:
769 | supports-color:
770 | optional: true
771 |
772 | deep-eql@5.0.2:
773 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
774 | engines: {node: '>=6'}
775 |
776 | defu@6.1.4:
777 | resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
778 |
779 | detect-libc@2.1.2:
780 | resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
781 | engines: {node: '>=8'}
782 |
783 | devalue@5.5.0:
784 | resolution: {integrity: sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==}
785 |
786 | error-stack-parser-es@1.0.5:
787 | resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
788 |
789 | es-module-lexer@1.7.0:
790 | resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
791 |
792 | esbuild@0.25.12:
793 | resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
794 | engines: {node: '>=18'}
795 | hasBin: true
796 |
797 | esbuild@0.25.4:
798 | resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==}
799 | engines: {node: '>=18'}
800 | hasBin: true
801 |
802 | estree-walker@3.0.3:
803 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
804 |
805 | exit-hook@2.2.1:
806 | resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
807 | engines: {node: '>=6'}
808 |
809 | expect-type@1.2.2:
810 | resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
811 | engines: {node: '>=12.0.0'}
812 |
813 | exsolve@1.0.8:
814 | resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==}
815 |
816 | fdir@6.5.0:
817 | resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
818 | engines: {node: '>=12.0.0'}
819 | peerDependencies:
820 | picomatch: ^3 || ^4
821 | peerDependenciesMeta:
822 | picomatch:
823 | optional: true
824 |
825 | fsevents@2.3.3:
826 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
827 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
828 | os: [darwin]
829 |
830 | glob-to-regexp@0.4.1:
831 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
832 |
833 | is-arrayish@0.3.4:
834 | resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}
835 |
836 | js-tokens@9.0.1:
837 | resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
838 |
839 | kleur@4.1.5:
840 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
841 | engines: {node: '>=6'}
842 |
843 | loupe@3.2.1:
844 | resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==}
845 |
846 | magic-string@0.30.21:
847 | resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
848 |
849 | mime@3.0.0:
850 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
851 | engines: {node: '>=10.0.0'}
852 | hasBin: true
853 |
854 | miniflare@4.20250906.0:
855 | resolution: {integrity: sha512-T/RWn1sa0ien80s6NjU+Un/tj12gR6wqScZoiLeMJDD4/fK0UXfnbWXJDubnUED8Xjm7RPQ5ESYdE+mhPmMtuQ==}
856 | engines: {node: '>=18.0.0'}
857 | hasBin: true
858 |
859 | miniflare@4.20251125.0:
860 | resolution: {integrity: sha512-xY6deLx0Drt8GfGG2Fv0fHUocHAIG/Iv62Kl36TPfDzgq7/+DQ5gYNisxnmyISQdA/sm7kOvn2XRBncxjWYrLg==}
861 | engines: {node: '>=18.0.0'}
862 | hasBin: true
863 |
864 | ms@2.1.3:
865 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
866 |
867 | nanoid@3.3.11:
868 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
869 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
870 | hasBin: true
871 |
872 | ohash@2.0.11:
873 | resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
874 |
875 | path-to-regexp@6.3.0:
876 | resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
877 |
878 | pathe@2.0.3:
879 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
880 |
881 | pathval@2.0.1:
882 | resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==}
883 | engines: {node: '>= 14.16'}
884 |
885 | picocolors@1.1.1:
886 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
887 |
888 | picomatch@4.0.3:
889 | resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
890 | engines: {node: '>=12'}
891 |
892 | postcss@8.5.6:
893 | resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
894 | engines: {node: ^10 || ^12 || >=14}
895 |
896 | rollup@4.53.3:
897 | resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==}
898 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
899 | hasBin: true
900 |
901 | semver@7.7.3:
902 | resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
903 | engines: {node: '>=10'}
904 | hasBin: true
905 |
906 | sharp@0.33.5:
907 | resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
908 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
909 |
910 | siginfo@2.0.0:
911 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
912 |
913 | simple-swizzle@0.2.4:
914 | resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}
915 |
916 | source-map-js@1.2.1:
917 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
918 | engines: {node: '>=0.10.0'}
919 |
920 | stackback@0.0.2:
921 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
922 |
923 | std-env@3.10.0:
924 | resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
925 |
926 | stoppable@1.1.0:
927 | resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==}
928 | engines: {node: '>=4', npm: '>=6'}
929 |
930 | strip-literal@3.1.0:
931 | resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==}
932 |
933 | supports-color@10.2.2:
934 | resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==}
935 | engines: {node: '>=18'}
936 |
937 | tinybench@2.9.0:
938 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
939 |
940 | tinyexec@0.3.2:
941 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
942 |
943 | tinyglobby@0.2.15:
944 | resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
945 | engines: {node: '>=12.0.0'}
946 |
947 | tinypool@1.1.1:
948 | resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
949 | engines: {node: ^18.0.0 || >=20.0.0}
950 |
951 | tinyrainbow@2.0.0:
952 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
953 | engines: {node: '>=14.0.0'}
954 |
955 | tinyspy@4.0.4:
956 | resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==}
957 | engines: {node: '>=14.0.0'}
958 |
959 | tslib@2.8.1:
960 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
961 |
962 | typescript@5.9.3:
963 | resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
964 | engines: {node: '>=14.17'}
965 | hasBin: true
966 |
967 | ufo@1.6.1:
968 | resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
969 |
970 | undici@7.14.0:
971 | resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==}
972 | engines: {node: '>=20.18.1'}
973 |
974 | undici@7.16.0:
975 | resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==}
976 | engines: {node: '>=20.18.1'}
977 |
978 | unenv@2.0.0-rc.21:
979 | resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==}
980 |
981 | unenv@2.0.0-rc.24:
982 | resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}
983 |
984 | vite-node@3.2.4:
985 | resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==}
986 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
987 | hasBin: true
988 |
989 | vite@7.2.4:
990 | resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==}
991 | engines: {node: ^20.19.0 || >=22.12.0}
992 | hasBin: true
993 | peerDependencies:
994 | '@types/node': ^20.19.0 || >=22.12.0
995 | jiti: '>=1.21.0'
996 | less: ^4.0.0
997 | lightningcss: ^1.21.0
998 | sass: ^1.70.0
999 | sass-embedded: ^1.70.0
1000 | stylus: '>=0.54.8'
1001 | sugarss: ^5.0.0
1002 | terser: ^5.16.0
1003 | tsx: ^4.8.1
1004 | yaml: ^2.4.2
1005 | peerDependenciesMeta:
1006 | '@types/node':
1007 | optional: true
1008 | jiti:
1009 | optional: true
1010 | less:
1011 | optional: true
1012 | lightningcss:
1013 | optional: true
1014 | sass:
1015 | optional: true
1016 | sass-embedded:
1017 | optional: true
1018 | stylus:
1019 | optional: true
1020 | sugarss:
1021 | optional: true
1022 | terser:
1023 | optional: true
1024 | tsx:
1025 | optional: true
1026 | yaml:
1027 | optional: true
1028 |
1029 | vitest@3.2.4:
1030 | resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==}
1031 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
1032 | hasBin: true
1033 | peerDependencies:
1034 | '@edge-runtime/vm': '*'
1035 | '@types/debug': ^4.1.12
1036 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
1037 | '@vitest/browser': 3.2.4
1038 | '@vitest/ui': 3.2.4
1039 | happy-dom: '*'
1040 | jsdom: '*'
1041 | peerDependenciesMeta:
1042 | '@edge-runtime/vm':
1043 | optional: true
1044 | '@types/debug':
1045 | optional: true
1046 | '@types/node':
1047 | optional: true
1048 | '@vitest/browser':
1049 | optional: true
1050 | '@vitest/ui':
1051 | optional: true
1052 | happy-dom:
1053 | optional: true
1054 | jsdom:
1055 | optional: true
1056 |
1057 | why-is-node-running@2.3.0:
1058 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
1059 | engines: {node: '>=8'}
1060 | hasBin: true
1061 |
1062 | workerd@1.20250906.0:
1063 | resolution: {integrity: sha512-ryVyEaqXPPsr/AxccRmYZZmDAkfQVjhfRqrNTlEeN8aftBk6Ca1u7/VqmfOayjCXrA+O547TauebU+J3IpvFXw==}
1064 | engines: {node: '>=16'}
1065 | hasBin: true
1066 |
1067 | workerd@1.20251125.0:
1068 | resolution: {integrity: sha512-oQYfgu3UZ15HlMcEyilKD1RdielRnKSG5MA0xoi1theVs99Rop9AEFYicYCyK1R4YjYblLRYEiL1tMgEFqpReA==}
1069 | engines: {node: '>=16'}
1070 | hasBin: true
1071 |
1072 | wrangler@4.35.0:
1073 | resolution: {integrity: sha512-HbyXtbrh4Fi3mU8ussY85tVdQ74qpVS1vctUgaPc+bPrXBTqfDLkZ6VRtHAVF/eBhz4SFmhJtCQpN1caY2Ak8A==}
1074 | engines: {node: '>=18.0.0'}
1075 | hasBin: true
1076 | peerDependencies:
1077 | '@cloudflare/workers-types': ^4.20250906.0
1078 | peerDependenciesMeta:
1079 | '@cloudflare/workers-types':
1080 | optional: true
1081 |
1082 | wrangler@4.51.0:
1083 | resolution: {integrity: sha512-JHv+58UxM2//e4kf9ASDwg016xd/OdDNDUKW6zLQyE7Uc9ayYKX1QJ9NsYtpo4dC1dfg6rT67pf1aNK1cTzUDg==}
1084 | engines: {node: '>=20.0.0'}
1085 | hasBin: true
1086 | peerDependencies:
1087 | '@cloudflare/workers-types': ^4.20251125.0
1088 | peerDependenciesMeta:
1089 | '@cloudflare/workers-types':
1090 | optional: true
1091 |
1092 | ws@8.18.0:
1093 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
1094 | engines: {node: '>=10.0.0'}
1095 | peerDependencies:
1096 | bufferutil: ^4.0.1
1097 | utf-8-validate: '>=5.0.2'
1098 | peerDependenciesMeta:
1099 | bufferutil:
1100 | optional: true
1101 | utf-8-validate:
1102 | optional: true
1103 |
1104 | youch-core@0.3.3:
1105 | resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==}
1106 |
1107 | youch@4.1.0-beta.10:
1108 | resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==}
1109 |
1110 | zod@3.22.3:
1111 | resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==}
1112 |
1113 | zod@3.25.76:
1114 | resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
1115 |
1116 | snapshots:
1117 |
1118 | '@cloudflare/kv-asset-handler@0.4.0':
1119 | dependencies:
1120 | mime: 3.0.0
1121 |
1122 | '@cloudflare/kv-asset-handler@0.4.1':
1123 | dependencies:
1124 | mime: 3.0.0
1125 |
1126 | '@cloudflare/unenv-preset@2.7.11(unenv@2.0.0-rc.24)(workerd@1.20251125.0)':
1127 | dependencies:
1128 | unenv: 2.0.0-rc.24
1129 | optionalDependencies:
1130 | workerd: 1.20251125.0
1131 |
1132 | '@cloudflare/unenv-preset@2.7.3(unenv@2.0.0-rc.21)(workerd@1.20250906.0)':
1133 | dependencies:
1134 | unenv: 2.0.0-rc.21
1135 | optionalDependencies:
1136 | workerd: 1.20250906.0
1137 |
1138 | '@cloudflare/vitest-pool-workers@0.8.71(@vitest/runner@3.2.4)(@vitest/snapshot@3.2.4)(vitest@3.2.4)':
1139 | dependencies:
1140 | '@vitest/runner': 3.2.4
1141 | '@vitest/snapshot': 3.2.4
1142 | birpc: 0.2.14
1143 | cjs-module-lexer: 1.4.3
1144 | devalue: 5.5.0
1145 | miniflare: 4.20250906.0
1146 | semver: 7.7.3
1147 | vitest: 3.2.4
1148 | wrangler: 4.35.0
1149 | zod: 3.25.76
1150 | transitivePeerDependencies:
1151 | - '@cloudflare/workers-types'
1152 | - bufferutil
1153 | - utf-8-validate
1154 |
1155 | '@cloudflare/workerd-darwin-64@1.20250906.0':
1156 | optional: true
1157 |
1158 | '@cloudflare/workerd-darwin-64@1.20251125.0':
1159 | optional: true
1160 |
1161 | '@cloudflare/workerd-darwin-arm64@1.20250906.0':
1162 | optional: true
1163 |
1164 | '@cloudflare/workerd-darwin-arm64@1.20251125.0':
1165 | optional: true
1166 |
1167 | '@cloudflare/workerd-linux-64@1.20250906.0':
1168 | optional: true
1169 |
1170 | '@cloudflare/workerd-linux-64@1.20251125.0':
1171 | optional: true
1172 |
1173 | '@cloudflare/workerd-linux-arm64@1.20250906.0':
1174 | optional: true
1175 |
1176 | '@cloudflare/workerd-linux-arm64@1.20251125.0':
1177 | optional: true
1178 |
1179 | '@cloudflare/workerd-windows-64@1.20250906.0':
1180 | optional: true
1181 |
1182 | '@cloudflare/workerd-windows-64@1.20251125.0':
1183 | optional: true
1184 |
1185 | '@cspotcode/source-map-support@0.8.1':
1186 | dependencies:
1187 | '@jridgewell/trace-mapping': 0.3.9
1188 |
1189 | '@emnapi/runtime@1.7.1':
1190 | dependencies:
1191 | tslib: 2.8.1
1192 | optional: true
1193 |
1194 | '@esbuild/aix-ppc64@0.25.12':
1195 | optional: true
1196 |
1197 | '@esbuild/aix-ppc64@0.25.4':
1198 | optional: true
1199 |
1200 | '@esbuild/android-arm64@0.25.12':
1201 | optional: true
1202 |
1203 | '@esbuild/android-arm64@0.25.4':
1204 | optional: true
1205 |
1206 | '@esbuild/android-arm@0.25.12':
1207 | optional: true
1208 |
1209 | '@esbuild/android-arm@0.25.4':
1210 | optional: true
1211 |
1212 | '@esbuild/android-x64@0.25.12':
1213 | optional: true
1214 |
1215 | '@esbuild/android-x64@0.25.4':
1216 | optional: true
1217 |
1218 | '@esbuild/darwin-arm64@0.25.12':
1219 | optional: true
1220 |
1221 | '@esbuild/darwin-arm64@0.25.4':
1222 | optional: true
1223 |
1224 | '@esbuild/darwin-x64@0.25.12':
1225 | optional: true
1226 |
1227 | '@esbuild/darwin-x64@0.25.4':
1228 | optional: true
1229 |
1230 | '@esbuild/freebsd-arm64@0.25.12':
1231 | optional: true
1232 |
1233 | '@esbuild/freebsd-arm64@0.25.4':
1234 | optional: true
1235 |
1236 | '@esbuild/freebsd-x64@0.25.12':
1237 | optional: true
1238 |
1239 | '@esbuild/freebsd-x64@0.25.4':
1240 | optional: true
1241 |
1242 | '@esbuild/linux-arm64@0.25.12':
1243 | optional: true
1244 |
1245 | '@esbuild/linux-arm64@0.25.4':
1246 | optional: true
1247 |
1248 | '@esbuild/linux-arm@0.25.12':
1249 | optional: true
1250 |
1251 | '@esbuild/linux-arm@0.25.4':
1252 | optional: true
1253 |
1254 | '@esbuild/linux-ia32@0.25.12':
1255 | optional: true
1256 |
1257 | '@esbuild/linux-ia32@0.25.4':
1258 | optional: true
1259 |
1260 | '@esbuild/linux-loong64@0.25.12':
1261 | optional: true
1262 |
1263 | '@esbuild/linux-loong64@0.25.4':
1264 | optional: true
1265 |
1266 | '@esbuild/linux-mips64el@0.25.12':
1267 | optional: true
1268 |
1269 | '@esbuild/linux-mips64el@0.25.4':
1270 | optional: true
1271 |
1272 | '@esbuild/linux-ppc64@0.25.12':
1273 | optional: true
1274 |
1275 | '@esbuild/linux-ppc64@0.25.4':
1276 | optional: true
1277 |
1278 | '@esbuild/linux-riscv64@0.25.12':
1279 | optional: true
1280 |
1281 | '@esbuild/linux-riscv64@0.25.4':
1282 | optional: true
1283 |
1284 | '@esbuild/linux-s390x@0.25.12':
1285 | optional: true
1286 |
1287 | '@esbuild/linux-s390x@0.25.4':
1288 | optional: true
1289 |
1290 | '@esbuild/linux-x64@0.25.12':
1291 | optional: true
1292 |
1293 | '@esbuild/linux-x64@0.25.4':
1294 | optional: true
1295 |
1296 | '@esbuild/netbsd-arm64@0.25.12':
1297 | optional: true
1298 |
1299 | '@esbuild/netbsd-arm64@0.25.4':
1300 | optional: true
1301 |
1302 | '@esbuild/netbsd-x64@0.25.12':
1303 | optional: true
1304 |
1305 | '@esbuild/netbsd-x64@0.25.4':
1306 | optional: true
1307 |
1308 | '@esbuild/openbsd-arm64@0.25.12':
1309 | optional: true
1310 |
1311 | '@esbuild/openbsd-arm64@0.25.4':
1312 | optional: true
1313 |
1314 | '@esbuild/openbsd-x64@0.25.12':
1315 | optional: true
1316 |
1317 | '@esbuild/openbsd-x64@0.25.4':
1318 | optional: true
1319 |
1320 | '@esbuild/openharmony-arm64@0.25.12':
1321 | optional: true
1322 |
1323 | '@esbuild/sunos-x64@0.25.12':
1324 | optional: true
1325 |
1326 | '@esbuild/sunos-x64@0.25.4':
1327 | optional: true
1328 |
1329 | '@esbuild/win32-arm64@0.25.12':
1330 | optional: true
1331 |
1332 | '@esbuild/win32-arm64@0.25.4':
1333 | optional: true
1334 |
1335 | '@esbuild/win32-ia32@0.25.12':
1336 | optional: true
1337 |
1338 | '@esbuild/win32-ia32@0.25.4':
1339 | optional: true
1340 |
1341 | '@esbuild/win32-x64@0.25.12':
1342 | optional: true
1343 |
1344 | '@esbuild/win32-x64@0.25.4':
1345 | optional: true
1346 |
1347 | '@img/sharp-darwin-arm64@0.33.5':
1348 | optionalDependencies:
1349 | '@img/sharp-libvips-darwin-arm64': 1.0.4
1350 | optional: true
1351 |
1352 | '@img/sharp-darwin-x64@0.33.5':
1353 | optionalDependencies:
1354 | '@img/sharp-libvips-darwin-x64': 1.0.4
1355 | optional: true
1356 |
1357 | '@img/sharp-libvips-darwin-arm64@1.0.4':
1358 | optional: true
1359 |
1360 | '@img/sharp-libvips-darwin-x64@1.0.4':
1361 | optional: true
1362 |
1363 | '@img/sharp-libvips-linux-arm64@1.0.4':
1364 | optional: true
1365 |
1366 | '@img/sharp-libvips-linux-arm@1.0.5':
1367 | optional: true
1368 |
1369 | '@img/sharp-libvips-linux-s390x@1.0.4':
1370 | optional: true
1371 |
1372 | '@img/sharp-libvips-linux-x64@1.0.4':
1373 | optional: true
1374 |
1375 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
1376 | optional: true
1377 |
1378 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
1379 | optional: true
1380 |
1381 | '@img/sharp-linux-arm64@0.33.5':
1382 | optionalDependencies:
1383 | '@img/sharp-libvips-linux-arm64': 1.0.4
1384 | optional: true
1385 |
1386 | '@img/sharp-linux-arm@0.33.5':
1387 | optionalDependencies:
1388 | '@img/sharp-libvips-linux-arm': 1.0.5
1389 | optional: true
1390 |
1391 | '@img/sharp-linux-s390x@0.33.5':
1392 | optionalDependencies:
1393 | '@img/sharp-libvips-linux-s390x': 1.0.4
1394 | optional: true
1395 |
1396 | '@img/sharp-linux-x64@0.33.5':
1397 | optionalDependencies:
1398 | '@img/sharp-libvips-linux-x64': 1.0.4
1399 | optional: true
1400 |
1401 | '@img/sharp-linuxmusl-arm64@0.33.5':
1402 | optionalDependencies:
1403 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
1404 | optional: true
1405 |
1406 | '@img/sharp-linuxmusl-x64@0.33.5':
1407 | optionalDependencies:
1408 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
1409 | optional: true
1410 |
1411 | '@img/sharp-wasm32@0.33.5':
1412 | dependencies:
1413 | '@emnapi/runtime': 1.7.1
1414 | optional: true
1415 |
1416 | '@img/sharp-win32-ia32@0.33.5':
1417 | optional: true
1418 |
1419 | '@img/sharp-win32-x64@0.33.5':
1420 | optional: true
1421 |
1422 | '@jridgewell/resolve-uri@3.1.2': {}
1423 |
1424 | '@jridgewell/sourcemap-codec@1.5.5': {}
1425 |
1426 | '@jridgewell/trace-mapping@0.3.9':
1427 | dependencies:
1428 | '@jridgewell/resolve-uri': 3.1.2
1429 | '@jridgewell/sourcemap-codec': 1.5.5
1430 |
1431 | '@poppinss/colors@4.1.5':
1432 | dependencies:
1433 | kleur: 4.1.5
1434 |
1435 | '@poppinss/dumper@0.6.5':
1436 | dependencies:
1437 | '@poppinss/colors': 4.1.5
1438 | '@sindresorhus/is': 7.1.1
1439 | supports-color: 10.2.2
1440 |
1441 | '@poppinss/exception@1.2.2': {}
1442 |
1443 | '@rollup/rollup-android-arm-eabi@4.53.3':
1444 | optional: true
1445 |
1446 | '@rollup/rollup-android-arm64@4.53.3':
1447 | optional: true
1448 |
1449 | '@rollup/rollup-darwin-arm64@4.53.3':
1450 | optional: true
1451 |
1452 | '@rollup/rollup-darwin-x64@4.53.3':
1453 | optional: true
1454 |
1455 | '@rollup/rollup-freebsd-arm64@4.53.3':
1456 | optional: true
1457 |
1458 | '@rollup/rollup-freebsd-x64@4.53.3':
1459 | optional: true
1460 |
1461 | '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
1462 | optional: true
1463 |
1464 | '@rollup/rollup-linux-arm-musleabihf@4.53.3':
1465 | optional: true
1466 |
1467 | '@rollup/rollup-linux-arm64-gnu@4.53.3':
1468 | optional: true
1469 |
1470 | '@rollup/rollup-linux-arm64-musl@4.53.3':
1471 | optional: true
1472 |
1473 | '@rollup/rollup-linux-loong64-gnu@4.53.3':
1474 | optional: true
1475 |
1476 | '@rollup/rollup-linux-ppc64-gnu@4.53.3':
1477 | optional: true
1478 |
1479 | '@rollup/rollup-linux-riscv64-gnu@4.53.3':
1480 | optional: true
1481 |
1482 | '@rollup/rollup-linux-riscv64-musl@4.53.3':
1483 | optional: true
1484 |
1485 | '@rollup/rollup-linux-s390x-gnu@4.53.3':
1486 | optional: true
1487 |
1488 | '@rollup/rollup-linux-x64-gnu@4.53.3':
1489 | optional: true
1490 |
1491 | '@rollup/rollup-linux-x64-musl@4.53.3':
1492 | optional: true
1493 |
1494 | '@rollup/rollup-openharmony-arm64@4.53.3':
1495 | optional: true
1496 |
1497 | '@rollup/rollup-win32-arm64-msvc@4.53.3':
1498 | optional: true
1499 |
1500 | '@rollup/rollup-win32-ia32-msvc@4.53.3':
1501 | optional: true
1502 |
1503 | '@rollup/rollup-win32-x64-gnu@4.53.3':
1504 | optional: true
1505 |
1506 | '@rollup/rollup-win32-x64-msvc@4.53.3':
1507 | optional: true
1508 |
1509 | '@sindresorhus/is@7.1.1': {}
1510 |
1511 | '@speed-highlight/core@1.2.12': {}
1512 |
1513 | '@types/chai@5.2.3':
1514 | dependencies:
1515 | '@types/deep-eql': 4.0.2
1516 | assertion-error: 2.0.1
1517 |
1518 | '@types/deep-eql@4.0.2': {}
1519 |
1520 | '@types/estree@1.0.8': {}
1521 |
1522 | '@vitest/expect@3.2.4':
1523 | dependencies:
1524 | '@types/chai': 5.2.3
1525 | '@vitest/spy': 3.2.4
1526 | '@vitest/utils': 3.2.4
1527 | chai: 5.3.3
1528 | tinyrainbow: 2.0.0
1529 |
1530 | '@vitest/mocker@3.2.4(vite@7.2.4)':
1531 | dependencies:
1532 | '@vitest/spy': 3.2.4
1533 | estree-walker: 3.0.3
1534 | magic-string: 0.30.21
1535 | optionalDependencies:
1536 | vite: 7.2.4
1537 |
1538 | '@vitest/pretty-format@3.2.4':
1539 | dependencies:
1540 | tinyrainbow: 2.0.0
1541 |
1542 | '@vitest/runner@3.2.4':
1543 | dependencies:
1544 | '@vitest/utils': 3.2.4
1545 | pathe: 2.0.3
1546 | strip-literal: 3.1.0
1547 |
1548 | '@vitest/snapshot@3.2.4':
1549 | dependencies:
1550 | '@vitest/pretty-format': 3.2.4
1551 | magic-string: 0.30.21
1552 | pathe: 2.0.3
1553 |
1554 | '@vitest/spy@3.2.4':
1555 | dependencies:
1556 | tinyspy: 4.0.4
1557 |
1558 | '@vitest/utils@3.2.4':
1559 | dependencies:
1560 | '@vitest/pretty-format': 3.2.4
1561 | loupe: 3.2.1
1562 | tinyrainbow: 2.0.0
1563 |
1564 | acorn-walk@8.3.2: {}
1565 |
1566 | acorn@8.14.0: {}
1567 |
1568 | assertion-error@2.0.1: {}
1569 |
1570 | birpc@0.2.14: {}
1571 |
1572 | blake3-wasm@2.1.5: {}
1573 |
1574 | cac@6.7.14: {}
1575 |
1576 | chai@5.3.3:
1577 | dependencies:
1578 | assertion-error: 2.0.1
1579 | check-error: 2.1.1
1580 | deep-eql: 5.0.2
1581 | loupe: 3.2.1
1582 | pathval: 2.0.1
1583 |
1584 | check-error@2.1.1: {}
1585 |
1586 | cjs-module-lexer@1.4.3: {}
1587 |
1588 | color-convert@2.0.1:
1589 | dependencies:
1590 | color-name: 1.1.4
1591 |
1592 | color-name@1.1.4: {}
1593 |
1594 | color-string@1.9.1:
1595 | dependencies:
1596 | color-name: 1.1.4
1597 | simple-swizzle: 0.2.4
1598 |
1599 | color@4.2.3:
1600 | dependencies:
1601 | color-convert: 2.0.1
1602 | color-string: 1.9.1
1603 |
1604 | cookie@1.1.1: {}
1605 |
1606 | debug@4.4.3:
1607 | dependencies:
1608 | ms: 2.1.3
1609 |
1610 | deep-eql@5.0.2: {}
1611 |
1612 | defu@6.1.4: {}
1613 |
1614 | detect-libc@2.1.2: {}
1615 |
1616 | devalue@5.5.0: {}
1617 |
1618 | error-stack-parser-es@1.0.5: {}
1619 |
1620 | es-module-lexer@1.7.0: {}
1621 |
1622 | esbuild@0.25.12:
1623 | optionalDependencies:
1624 | '@esbuild/aix-ppc64': 0.25.12
1625 | '@esbuild/android-arm': 0.25.12
1626 | '@esbuild/android-arm64': 0.25.12
1627 | '@esbuild/android-x64': 0.25.12
1628 | '@esbuild/darwin-arm64': 0.25.12
1629 | '@esbuild/darwin-x64': 0.25.12
1630 | '@esbuild/freebsd-arm64': 0.25.12
1631 | '@esbuild/freebsd-x64': 0.25.12
1632 | '@esbuild/linux-arm': 0.25.12
1633 | '@esbuild/linux-arm64': 0.25.12
1634 | '@esbuild/linux-ia32': 0.25.12
1635 | '@esbuild/linux-loong64': 0.25.12
1636 | '@esbuild/linux-mips64el': 0.25.12
1637 | '@esbuild/linux-ppc64': 0.25.12
1638 | '@esbuild/linux-riscv64': 0.25.12
1639 | '@esbuild/linux-s390x': 0.25.12
1640 | '@esbuild/linux-x64': 0.25.12
1641 | '@esbuild/netbsd-arm64': 0.25.12
1642 | '@esbuild/netbsd-x64': 0.25.12
1643 | '@esbuild/openbsd-arm64': 0.25.12
1644 | '@esbuild/openbsd-x64': 0.25.12
1645 | '@esbuild/openharmony-arm64': 0.25.12
1646 | '@esbuild/sunos-x64': 0.25.12
1647 | '@esbuild/win32-arm64': 0.25.12
1648 | '@esbuild/win32-ia32': 0.25.12
1649 | '@esbuild/win32-x64': 0.25.12
1650 |
1651 | esbuild@0.25.4:
1652 | optionalDependencies:
1653 | '@esbuild/aix-ppc64': 0.25.4
1654 | '@esbuild/android-arm': 0.25.4
1655 | '@esbuild/android-arm64': 0.25.4
1656 | '@esbuild/android-x64': 0.25.4
1657 | '@esbuild/darwin-arm64': 0.25.4
1658 | '@esbuild/darwin-x64': 0.25.4
1659 | '@esbuild/freebsd-arm64': 0.25.4
1660 | '@esbuild/freebsd-x64': 0.25.4
1661 | '@esbuild/linux-arm': 0.25.4
1662 | '@esbuild/linux-arm64': 0.25.4
1663 | '@esbuild/linux-ia32': 0.25.4
1664 | '@esbuild/linux-loong64': 0.25.4
1665 | '@esbuild/linux-mips64el': 0.25.4
1666 | '@esbuild/linux-ppc64': 0.25.4
1667 | '@esbuild/linux-riscv64': 0.25.4
1668 | '@esbuild/linux-s390x': 0.25.4
1669 | '@esbuild/linux-x64': 0.25.4
1670 | '@esbuild/netbsd-arm64': 0.25.4
1671 | '@esbuild/netbsd-x64': 0.25.4
1672 | '@esbuild/openbsd-arm64': 0.25.4
1673 | '@esbuild/openbsd-x64': 0.25.4
1674 | '@esbuild/sunos-x64': 0.25.4
1675 | '@esbuild/win32-arm64': 0.25.4
1676 | '@esbuild/win32-ia32': 0.25.4
1677 | '@esbuild/win32-x64': 0.25.4
1678 |
1679 | estree-walker@3.0.3:
1680 | dependencies:
1681 | '@types/estree': 1.0.8
1682 |
1683 | exit-hook@2.2.1: {}
1684 |
1685 | expect-type@1.2.2: {}
1686 |
1687 | exsolve@1.0.8: {}
1688 |
1689 | fdir@6.5.0(picomatch@4.0.3):
1690 | optionalDependencies:
1691 | picomatch: 4.0.3
1692 |
1693 | fsevents@2.3.3:
1694 | optional: true
1695 |
1696 | glob-to-regexp@0.4.1: {}
1697 |
1698 | is-arrayish@0.3.4: {}
1699 |
1700 | js-tokens@9.0.1: {}
1701 |
1702 | kleur@4.1.5: {}
1703 |
1704 | loupe@3.2.1: {}
1705 |
1706 | magic-string@0.30.21:
1707 | dependencies:
1708 | '@jridgewell/sourcemap-codec': 1.5.5
1709 |
1710 | mime@3.0.0: {}
1711 |
1712 | miniflare@4.20250906.0:
1713 | dependencies:
1714 | '@cspotcode/source-map-support': 0.8.1
1715 | acorn: 8.14.0
1716 | acorn-walk: 8.3.2
1717 | exit-hook: 2.2.1
1718 | glob-to-regexp: 0.4.1
1719 | sharp: 0.33.5
1720 | stoppable: 1.1.0
1721 | undici: 7.16.0
1722 | workerd: 1.20250906.0
1723 | ws: 8.18.0
1724 | youch: 4.1.0-beta.10
1725 | zod: 3.22.3
1726 | transitivePeerDependencies:
1727 | - bufferutil
1728 | - utf-8-validate
1729 |
1730 | miniflare@4.20251125.0:
1731 | dependencies:
1732 | '@cspotcode/source-map-support': 0.8.1
1733 | acorn: 8.14.0
1734 | acorn-walk: 8.3.2
1735 | exit-hook: 2.2.1
1736 | glob-to-regexp: 0.4.1
1737 | sharp: 0.33.5
1738 | stoppable: 1.1.0
1739 | undici: 7.14.0
1740 | workerd: 1.20251125.0
1741 | ws: 8.18.0
1742 | youch: 4.1.0-beta.10
1743 | zod: 3.22.3
1744 | transitivePeerDependencies:
1745 | - bufferutil
1746 | - utf-8-validate
1747 |
1748 | ms@2.1.3: {}
1749 |
1750 | nanoid@3.3.11: {}
1751 |
1752 | ohash@2.0.11: {}
1753 |
1754 | path-to-regexp@6.3.0: {}
1755 |
1756 | pathe@2.0.3: {}
1757 |
1758 | pathval@2.0.1: {}
1759 |
1760 | picocolors@1.1.1: {}
1761 |
1762 | picomatch@4.0.3: {}
1763 |
1764 | postcss@8.5.6:
1765 | dependencies:
1766 | nanoid: 3.3.11
1767 | picocolors: 1.1.1
1768 | source-map-js: 1.2.1
1769 |
1770 | rollup@4.53.3:
1771 | dependencies:
1772 | '@types/estree': 1.0.8
1773 | optionalDependencies:
1774 | '@rollup/rollup-android-arm-eabi': 4.53.3
1775 | '@rollup/rollup-android-arm64': 4.53.3
1776 | '@rollup/rollup-darwin-arm64': 4.53.3
1777 | '@rollup/rollup-darwin-x64': 4.53.3
1778 | '@rollup/rollup-freebsd-arm64': 4.53.3
1779 | '@rollup/rollup-freebsd-x64': 4.53.3
1780 | '@rollup/rollup-linux-arm-gnueabihf': 4.53.3
1781 | '@rollup/rollup-linux-arm-musleabihf': 4.53.3
1782 | '@rollup/rollup-linux-arm64-gnu': 4.53.3
1783 | '@rollup/rollup-linux-arm64-musl': 4.53.3
1784 | '@rollup/rollup-linux-loong64-gnu': 4.53.3
1785 | '@rollup/rollup-linux-ppc64-gnu': 4.53.3
1786 | '@rollup/rollup-linux-riscv64-gnu': 4.53.3
1787 | '@rollup/rollup-linux-riscv64-musl': 4.53.3
1788 | '@rollup/rollup-linux-s390x-gnu': 4.53.3
1789 | '@rollup/rollup-linux-x64-gnu': 4.53.3
1790 | '@rollup/rollup-linux-x64-musl': 4.53.3
1791 | '@rollup/rollup-openharmony-arm64': 4.53.3
1792 | '@rollup/rollup-win32-arm64-msvc': 4.53.3
1793 | '@rollup/rollup-win32-ia32-msvc': 4.53.3
1794 | '@rollup/rollup-win32-x64-gnu': 4.53.3
1795 | '@rollup/rollup-win32-x64-msvc': 4.53.3
1796 | fsevents: 2.3.3
1797 |
1798 | semver@7.7.3: {}
1799 |
1800 | sharp@0.33.5:
1801 | dependencies:
1802 | color: 4.2.3
1803 | detect-libc: 2.1.2
1804 | semver: 7.7.3
1805 | optionalDependencies:
1806 | '@img/sharp-darwin-arm64': 0.33.5
1807 | '@img/sharp-darwin-x64': 0.33.5
1808 | '@img/sharp-libvips-darwin-arm64': 1.0.4
1809 | '@img/sharp-libvips-darwin-x64': 1.0.4
1810 | '@img/sharp-libvips-linux-arm': 1.0.5
1811 | '@img/sharp-libvips-linux-arm64': 1.0.4
1812 | '@img/sharp-libvips-linux-s390x': 1.0.4
1813 | '@img/sharp-libvips-linux-x64': 1.0.4
1814 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
1815 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
1816 | '@img/sharp-linux-arm': 0.33.5
1817 | '@img/sharp-linux-arm64': 0.33.5
1818 | '@img/sharp-linux-s390x': 0.33.5
1819 | '@img/sharp-linux-x64': 0.33.5
1820 | '@img/sharp-linuxmusl-arm64': 0.33.5
1821 | '@img/sharp-linuxmusl-x64': 0.33.5
1822 | '@img/sharp-wasm32': 0.33.5
1823 | '@img/sharp-win32-ia32': 0.33.5
1824 | '@img/sharp-win32-x64': 0.33.5
1825 |
1826 | siginfo@2.0.0: {}
1827 |
1828 | simple-swizzle@0.2.4:
1829 | dependencies:
1830 | is-arrayish: 0.3.4
1831 |
1832 | source-map-js@1.2.1: {}
1833 |
1834 | stackback@0.0.2: {}
1835 |
1836 | std-env@3.10.0: {}
1837 |
1838 | stoppable@1.1.0: {}
1839 |
1840 | strip-literal@3.1.0:
1841 | dependencies:
1842 | js-tokens: 9.0.1
1843 |
1844 | supports-color@10.2.2: {}
1845 |
1846 | tinybench@2.9.0: {}
1847 |
1848 | tinyexec@0.3.2: {}
1849 |
1850 | tinyglobby@0.2.15:
1851 | dependencies:
1852 | fdir: 6.5.0(picomatch@4.0.3)
1853 | picomatch: 4.0.3
1854 |
1855 | tinypool@1.1.1: {}
1856 |
1857 | tinyrainbow@2.0.0: {}
1858 |
1859 | tinyspy@4.0.4: {}
1860 |
1861 | tslib@2.8.1:
1862 | optional: true
1863 |
1864 | typescript@5.9.3: {}
1865 |
1866 | ufo@1.6.1: {}
1867 |
1868 | undici@7.14.0: {}
1869 |
1870 | undici@7.16.0: {}
1871 |
1872 | unenv@2.0.0-rc.21:
1873 | dependencies:
1874 | defu: 6.1.4
1875 | exsolve: 1.0.8
1876 | ohash: 2.0.11
1877 | pathe: 2.0.3
1878 | ufo: 1.6.1
1879 |
1880 | unenv@2.0.0-rc.24:
1881 | dependencies:
1882 | pathe: 2.0.3
1883 |
1884 | vite-node@3.2.4:
1885 | dependencies:
1886 | cac: 6.7.14
1887 | debug: 4.4.3
1888 | es-module-lexer: 1.7.0
1889 | pathe: 2.0.3
1890 | vite: 7.2.4
1891 | transitivePeerDependencies:
1892 | - '@types/node'
1893 | - jiti
1894 | - less
1895 | - lightningcss
1896 | - sass
1897 | - sass-embedded
1898 | - stylus
1899 | - sugarss
1900 | - supports-color
1901 | - terser
1902 | - tsx
1903 | - yaml
1904 |
1905 | vite@7.2.4:
1906 | dependencies:
1907 | esbuild: 0.25.12
1908 | fdir: 6.5.0(picomatch@4.0.3)
1909 | picomatch: 4.0.3
1910 | postcss: 8.5.6
1911 | rollup: 4.53.3
1912 | tinyglobby: 0.2.15
1913 | optionalDependencies:
1914 | fsevents: 2.3.3
1915 |
1916 | vitest@3.2.4:
1917 | dependencies:
1918 | '@types/chai': 5.2.3
1919 | '@vitest/expect': 3.2.4
1920 | '@vitest/mocker': 3.2.4(vite@7.2.4)
1921 | '@vitest/pretty-format': 3.2.4
1922 | '@vitest/runner': 3.2.4
1923 | '@vitest/snapshot': 3.2.4
1924 | '@vitest/spy': 3.2.4
1925 | '@vitest/utils': 3.2.4
1926 | chai: 5.3.3
1927 | debug: 4.4.3
1928 | expect-type: 1.2.2
1929 | magic-string: 0.30.21
1930 | pathe: 2.0.3
1931 | picomatch: 4.0.3
1932 | std-env: 3.10.0
1933 | tinybench: 2.9.0
1934 | tinyexec: 0.3.2
1935 | tinyglobby: 0.2.15
1936 | tinypool: 1.1.1
1937 | tinyrainbow: 2.0.0
1938 | vite: 7.2.4
1939 | vite-node: 3.2.4
1940 | why-is-node-running: 2.3.0
1941 | transitivePeerDependencies:
1942 | - jiti
1943 | - less
1944 | - lightningcss
1945 | - msw
1946 | - sass
1947 | - sass-embedded
1948 | - stylus
1949 | - sugarss
1950 | - supports-color
1951 | - terser
1952 | - tsx
1953 | - yaml
1954 |
1955 | why-is-node-running@2.3.0:
1956 | dependencies:
1957 | siginfo: 2.0.0
1958 | stackback: 0.0.2
1959 |
1960 | workerd@1.20250906.0:
1961 | optionalDependencies:
1962 | '@cloudflare/workerd-darwin-64': 1.20250906.0
1963 | '@cloudflare/workerd-darwin-arm64': 1.20250906.0
1964 | '@cloudflare/workerd-linux-64': 1.20250906.0
1965 | '@cloudflare/workerd-linux-arm64': 1.20250906.0
1966 | '@cloudflare/workerd-windows-64': 1.20250906.0
1967 |
1968 | workerd@1.20251125.0:
1969 | optionalDependencies:
1970 | '@cloudflare/workerd-darwin-64': 1.20251125.0
1971 | '@cloudflare/workerd-darwin-arm64': 1.20251125.0
1972 | '@cloudflare/workerd-linux-64': 1.20251125.0
1973 | '@cloudflare/workerd-linux-arm64': 1.20251125.0
1974 | '@cloudflare/workerd-windows-64': 1.20251125.0
1975 |
1976 | wrangler@4.35.0:
1977 | dependencies:
1978 | '@cloudflare/kv-asset-handler': 0.4.0
1979 | '@cloudflare/unenv-preset': 2.7.3(unenv@2.0.0-rc.21)(workerd@1.20250906.0)
1980 | blake3-wasm: 2.1.5
1981 | esbuild: 0.25.4
1982 | miniflare: 4.20250906.0
1983 | path-to-regexp: 6.3.0
1984 | unenv: 2.0.0-rc.21
1985 | workerd: 1.20250906.0
1986 | optionalDependencies:
1987 | fsevents: 2.3.3
1988 | transitivePeerDependencies:
1989 | - bufferutil
1990 | - utf-8-validate
1991 |
1992 | wrangler@4.51.0:
1993 | dependencies:
1994 | '@cloudflare/kv-asset-handler': 0.4.1
1995 | '@cloudflare/unenv-preset': 2.7.11(unenv@2.0.0-rc.24)(workerd@1.20251125.0)
1996 | blake3-wasm: 2.1.5
1997 | esbuild: 0.25.4
1998 | miniflare: 4.20251125.0
1999 | path-to-regexp: 6.3.0
2000 | unenv: 2.0.0-rc.24
2001 | workerd: 1.20251125.0
2002 | optionalDependencies:
2003 | fsevents: 2.3.3
2004 | transitivePeerDependencies:
2005 | - bufferutil
2006 | - utf-8-validate
2007 |
2008 | ws@8.18.0: {}
2009 |
2010 | youch-core@0.3.3:
2011 | dependencies:
2012 | '@poppinss/exception': 1.2.2
2013 | error-stack-parser-es: 1.0.5
2014 |
2015 | youch@4.1.0-beta.10:
2016 | dependencies:
2017 | '@poppinss/colors': 4.1.5
2018 | '@poppinss/dumper': 0.6.5
2019 | '@speed-highlight/core': 1.2.12
2020 | cookie: 1.1.1
2021 | youch-core: 0.3.3
2022 |
2023 | zod@3.22.3: {}
2024 |
2025 | zod@3.25.76: {}
2026 |
--------------------------------------------------------------------------------
/frontend/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | overrides:
8 | vite: ^7.2.4
9 | rollup: ^4.53.3
10 |
11 | importers:
12 |
13 | .:
14 | devDependencies:
15 | '@cloudflare/vite-plugin':
16 | specifier: ^1.15.3
17 | version: 1.15.3(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))(workerd@1.20251125.0)(wrangler@4.51.0(@cloudflare/workers-types@4.20251128.0))
18 | '@inlang/cli':
19 | specifier: ^3.0.0
20 | version: 3.0.12
21 | '@inlang/paraglide-js':
22 | specifier: 2.5.0
23 | version: 2.5.0
24 | '@sveltejs/adapter-cloudflare':
25 | specifier: ^7.2.4
26 | version: 7.2.4(@sveltejs/kit@2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)))(wrangler@4.51.0(@cloudflare/workers-types@4.20251128.0))
27 | '@sveltejs/kit':
28 | specifier: ^2.47.1
29 | version: 2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))
30 | '@sveltejs/vite-plugin-svelte':
31 | specifier: ^6.2.1
32 | version: 6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))
33 | '@tailwindcss/vite':
34 | specifier: ^4.0.0
35 | version: 4.1.17(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))
36 | '@types/node':
37 | specifier: ^24.10.1
38 | version: 24.10.1
39 | svelte:
40 | specifier: ^5.41.0
41 | version: 5.45.2
42 | svelte-check:
43 | specifier: ^4.3.3
44 | version: 4.3.4(picomatch@4.0.3)(svelte@5.45.2)(typescript@5.9.3)
45 | tailwindcss:
46 | specifier: ^4.0.0
47 | version: 4.1.17
48 | typescript:
49 | specifier: ^5.9.3
50 | version: 5.9.3
51 | vite:
52 | specifier: ^7.2.4
53 | version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)
54 | vite-plugin-devtools-json:
55 | specifier: ^0.1.0
56 | version: 0.1.1(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))
57 | wrangler:
58 | specifier: ^4.51.0
59 | version: 4.51.0(@cloudflare/workers-types@4.20251128.0)
60 |
61 | packages:
62 |
63 | '@cloudflare/kv-asset-handler@0.4.1':
64 | resolution: {integrity: sha512-Nu8ahitGFFJztxUml9oD/DLb7Z28C8cd8F46IVQ7y5Btz575pvMY8AqZsXkX7Gds29eCKdMgIHjIvzskHgPSFg==}
65 | engines: {node: '>=18.0.0'}
66 |
67 | '@cloudflare/unenv-preset@2.7.11':
68 | resolution: {integrity: sha512-se23f1D4PxKrMKOq+Stz+Yn7AJ9ITHcEecXo2Yjb+UgbUDCEBch1FXQC6hx6uT5fNA3kmX3mfzeZiUmpK1W9IQ==}
69 | peerDependencies:
70 | unenv: 2.0.0-rc.24
71 | workerd: ^1.20251106.1
72 | peerDependenciesMeta:
73 | workerd:
74 | optional: true
75 |
76 | '@cloudflare/vite-plugin@1.15.3':
77 | resolution: {integrity: sha512-o199VPWhPoKolIW7bfdk1Vzfpa/gE+1wA+J/B8Is8MH/pAVhNQG1rVxAXjNsOAuRMwfJxRwBKDScwVVZFuUUlw==}
78 | peerDependencies:
79 | vite: ^7.2.4
80 | wrangler: ^4.51.0
81 |
82 | '@cloudflare/workerd-darwin-64@1.20251125.0':
83 | resolution: {integrity: sha512-xDIVJi8fPxBseRoEIzLiUJb0N+DXnah/ynS+Unzn58HEoKLetUWiV/T1Fhned//lo5krnToG9KRgVRs0SOOTpw==}
84 | engines: {node: '>=16'}
85 | cpu: [x64]
86 | os: [darwin]
87 |
88 | '@cloudflare/workerd-darwin-arm64@1.20251125.0':
89 | resolution: {integrity: sha512-k5FQET5PXnWjeDqZUpl4Ah/Rn0bH6mjfUtTyeAy6ky7QB3AZpwIhgWQD0vOFB3OvJaK4J/K4cUtNChYXB9mY/A==}
90 | engines: {node: '>=16'}
91 | cpu: [arm64]
92 | os: [darwin]
93 |
94 | '@cloudflare/workerd-linux-64@1.20251125.0':
95 | resolution: {integrity: sha512-at6n/FomkftykWx0EqVLUZ0juUFz3ORtEPeBbW9ZZ3BQEyfVUtYfdcz/f1cN8Yyb7TE9ovF071P0mBRkx83ODw==}
96 | engines: {node: '>=16'}
97 | cpu: [x64]
98 | os: [linux]
99 |
100 | '@cloudflare/workerd-linux-arm64@1.20251125.0':
101 | resolution: {integrity: sha512-EiRn+jrNaIs1QveabXGHFoyn3s/l02ui6Yp3nssyNhtmtgviddtt8KObBfM1jQKjXTpZlunhwdN4Bxf4jhlOMw==}
102 | engines: {node: '>=16'}
103 | cpu: [arm64]
104 | os: [linux]
105 |
106 | '@cloudflare/workerd-windows-64@1.20251125.0':
107 | resolution: {integrity: sha512-6fdIsSeu65g++k8Y2DKzNKs0BkoU+KKI6GAAVBOLh2vvVWWnCP1OgMdVb5JAdjDrjDT5i0GSQu0bgQ8fPsW6zw==}
108 | engines: {node: '>=16'}
109 | cpu: [x64]
110 | os: [win32]
111 |
112 | '@cloudflare/workers-types@4.20251128.0':
113 | resolution: {integrity: sha512-gQxQvxLRsFb+mDlaBKGoJwEHWt+ox9telZZEuRMbNUAD6v78XYqZepTI4yPDdKhkRTlqYcDqDhIdAI3HrsGk7w==}
114 |
115 | '@cspotcode/source-map-support@0.8.1':
116 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
117 | engines: {node: '>=12'}
118 |
119 | '@emnapi/runtime@1.7.1':
120 | resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
121 |
122 | '@esbuild/aix-ppc64@0.25.12':
123 | resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
124 | engines: {node: '>=18'}
125 | cpu: [ppc64]
126 | os: [aix]
127 |
128 | '@esbuild/aix-ppc64@0.25.4':
129 | resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==}
130 | engines: {node: '>=18'}
131 | cpu: [ppc64]
132 | os: [aix]
133 |
134 | '@esbuild/android-arm64@0.25.12':
135 | resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
136 | engines: {node: '>=18'}
137 | cpu: [arm64]
138 | os: [android]
139 |
140 | '@esbuild/android-arm64@0.25.4':
141 | resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==}
142 | engines: {node: '>=18'}
143 | cpu: [arm64]
144 | os: [android]
145 |
146 | '@esbuild/android-arm@0.25.12':
147 | resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
148 | engines: {node: '>=18'}
149 | cpu: [arm]
150 | os: [android]
151 |
152 | '@esbuild/android-arm@0.25.4':
153 | resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==}
154 | engines: {node: '>=18'}
155 | cpu: [arm]
156 | os: [android]
157 |
158 | '@esbuild/android-x64@0.25.12':
159 | resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
160 | engines: {node: '>=18'}
161 | cpu: [x64]
162 | os: [android]
163 |
164 | '@esbuild/android-x64@0.25.4':
165 | resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==}
166 | engines: {node: '>=18'}
167 | cpu: [x64]
168 | os: [android]
169 |
170 | '@esbuild/darwin-arm64@0.25.12':
171 | resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
172 | engines: {node: '>=18'}
173 | cpu: [arm64]
174 | os: [darwin]
175 |
176 | '@esbuild/darwin-arm64@0.25.4':
177 | resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==}
178 | engines: {node: '>=18'}
179 | cpu: [arm64]
180 | os: [darwin]
181 |
182 | '@esbuild/darwin-x64@0.25.12':
183 | resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
184 | engines: {node: '>=18'}
185 | cpu: [x64]
186 | os: [darwin]
187 |
188 | '@esbuild/darwin-x64@0.25.4':
189 | resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==}
190 | engines: {node: '>=18'}
191 | cpu: [x64]
192 | os: [darwin]
193 |
194 | '@esbuild/freebsd-arm64@0.25.12':
195 | resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
196 | engines: {node: '>=18'}
197 | cpu: [arm64]
198 | os: [freebsd]
199 |
200 | '@esbuild/freebsd-arm64@0.25.4':
201 | resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==}
202 | engines: {node: '>=18'}
203 | cpu: [arm64]
204 | os: [freebsd]
205 |
206 | '@esbuild/freebsd-x64@0.25.12':
207 | resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
208 | engines: {node: '>=18'}
209 | cpu: [x64]
210 | os: [freebsd]
211 |
212 | '@esbuild/freebsd-x64@0.25.4':
213 | resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==}
214 | engines: {node: '>=18'}
215 | cpu: [x64]
216 | os: [freebsd]
217 |
218 | '@esbuild/linux-arm64@0.25.12':
219 | resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
220 | engines: {node: '>=18'}
221 | cpu: [arm64]
222 | os: [linux]
223 |
224 | '@esbuild/linux-arm64@0.25.4':
225 | resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==}
226 | engines: {node: '>=18'}
227 | cpu: [arm64]
228 | os: [linux]
229 |
230 | '@esbuild/linux-arm@0.25.12':
231 | resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
232 | engines: {node: '>=18'}
233 | cpu: [arm]
234 | os: [linux]
235 |
236 | '@esbuild/linux-arm@0.25.4':
237 | resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==}
238 | engines: {node: '>=18'}
239 | cpu: [arm]
240 | os: [linux]
241 |
242 | '@esbuild/linux-ia32@0.25.12':
243 | resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
244 | engines: {node: '>=18'}
245 | cpu: [ia32]
246 | os: [linux]
247 |
248 | '@esbuild/linux-ia32@0.25.4':
249 | resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==}
250 | engines: {node: '>=18'}
251 | cpu: [ia32]
252 | os: [linux]
253 |
254 | '@esbuild/linux-loong64@0.25.12':
255 | resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
256 | engines: {node: '>=18'}
257 | cpu: [loong64]
258 | os: [linux]
259 |
260 | '@esbuild/linux-loong64@0.25.4':
261 | resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==}
262 | engines: {node: '>=18'}
263 | cpu: [loong64]
264 | os: [linux]
265 |
266 | '@esbuild/linux-mips64el@0.25.12':
267 | resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
268 | engines: {node: '>=18'}
269 | cpu: [mips64el]
270 | os: [linux]
271 |
272 | '@esbuild/linux-mips64el@0.25.4':
273 | resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==}
274 | engines: {node: '>=18'}
275 | cpu: [mips64el]
276 | os: [linux]
277 |
278 | '@esbuild/linux-ppc64@0.25.12':
279 | resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
280 | engines: {node: '>=18'}
281 | cpu: [ppc64]
282 | os: [linux]
283 |
284 | '@esbuild/linux-ppc64@0.25.4':
285 | resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==}
286 | engines: {node: '>=18'}
287 | cpu: [ppc64]
288 | os: [linux]
289 |
290 | '@esbuild/linux-riscv64@0.25.12':
291 | resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
292 | engines: {node: '>=18'}
293 | cpu: [riscv64]
294 | os: [linux]
295 |
296 | '@esbuild/linux-riscv64@0.25.4':
297 | resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==}
298 | engines: {node: '>=18'}
299 | cpu: [riscv64]
300 | os: [linux]
301 |
302 | '@esbuild/linux-s390x@0.25.12':
303 | resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
304 | engines: {node: '>=18'}
305 | cpu: [s390x]
306 | os: [linux]
307 |
308 | '@esbuild/linux-s390x@0.25.4':
309 | resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==}
310 | engines: {node: '>=18'}
311 | cpu: [s390x]
312 | os: [linux]
313 |
314 | '@esbuild/linux-x64@0.25.12':
315 | resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
316 | engines: {node: '>=18'}
317 | cpu: [x64]
318 | os: [linux]
319 |
320 | '@esbuild/linux-x64@0.25.4':
321 | resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==}
322 | engines: {node: '>=18'}
323 | cpu: [x64]
324 | os: [linux]
325 |
326 | '@esbuild/netbsd-arm64@0.25.12':
327 | resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
328 | engines: {node: '>=18'}
329 | cpu: [arm64]
330 | os: [netbsd]
331 |
332 | '@esbuild/netbsd-arm64@0.25.4':
333 | resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==}
334 | engines: {node: '>=18'}
335 | cpu: [arm64]
336 | os: [netbsd]
337 |
338 | '@esbuild/netbsd-x64@0.25.12':
339 | resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
340 | engines: {node: '>=18'}
341 | cpu: [x64]
342 | os: [netbsd]
343 |
344 | '@esbuild/netbsd-x64@0.25.4':
345 | resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==}
346 | engines: {node: '>=18'}
347 | cpu: [x64]
348 | os: [netbsd]
349 |
350 | '@esbuild/openbsd-arm64@0.25.12':
351 | resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
352 | engines: {node: '>=18'}
353 | cpu: [arm64]
354 | os: [openbsd]
355 |
356 | '@esbuild/openbsd-arm64@0.25.4':
357 | resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==}
358 | engines: {node: '>=18'}
359 | cpu: [arm64]
360 | os: [openbsd]
361 |
362 | '@esbuild/openbsd-x64@0.25.12':
363 | resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
364 | engines: {node: '>=18'}
365 | cpu: [x64]
366 | os: [openbsd]
367 |
368 | '@esbuild/openbsd-x64@0.25.4':
369 | resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==}
370 | engines: {node: '>=18'}
371 | cpu: [x64]
372 | os: [openbsd]
373 |
374 | '@esbuild/openharmony-arm64@0.25.12':
375 | resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
376 | engines: {node: '>=18'}
377 | cpu: [arm64]
378 | os: [openharmony]
379 |
380 | '@esbuild/sunos-x64@0.25.12':
381 | resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
382 | engines: {node: '>=18'}
383 | cpu: [x64]
384 | os: [sunos]
385 |
386 | '@esbuild/sunos-x64@0.25.4':
387 | resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==}
388 | engines: {node: '>=18'}
389 | cpu: [x64]
390 | os: [sunos]
391 |
392 | '@esbuild/win32-arm64@0.25.12':
393 | resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
394 | engines: {node: '>=18'}
395 | cpu: [arm64]
396 | os: [win32]
397 |
398 | '@esbuild/win32-arm64@0.25.4':
399 | resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==}
400 | engines: {node: '>=18'}
401 | cpu: [arm64]
402 | os: [win32]
403 |
404 | '@esbuild/win32-ia32@0.25.12':
405 | resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
406 | engines: {node: '>=18'}
407 | cpu: [ia32]
408 | os: [win32]
409 |
410 | '@esbuild/win32-ia32@0.25.4':
411 | resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==}
412 | engines: {node: '>=18'}
413 | cpu: [ia32]
414 | os: [win32]
415 |
416 | '@esbuild/win32-x64@0.25.12':
417 | resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
418 | engines: {node: '>=18'}
419 | cpu: [x64]
420 | os: [win32]
421 |
422 | '@esbuild/win32-x64@0.25.4':
423 | resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==}
424 | engines: {node: '>=18'}
425 | cpu: [x64]
426 | os: [win32]
427 |
428 | '@img/sharp-darwin-arm64@0.33.5':
429 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
430 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
431 | cpu: [arm64]
432 | os: [darwin]
433 |
434 | '@img/sharp-darwin-x64@0.33.5':
435 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
436 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
437 | cpu: [x64]
438 | os: [darwin]
439 |
440 | '@img/sharp-libvips-darwin-arm64@1.0.4':
441 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
442 | cpu: [arm64]
443 | os: [darwin]
444 |
445 | '@img/sharp-libvips-darwin-x64@1.0.4':
446 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
447 | cpu: [x64]
448 | os: [darwin]
449 |
450 | '@img/sharp-libvips-linux-arm64@1.0.4':
451 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
452 | cpu: [arm64]
453 | os: [linux]
454 |
455 | '@img/sharp-libvips-linux-arm@1.0.5':
456 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
457 | cpu: [arm]
458 | os: [linux]
459 |
460 | '@img/sharp-libvips-linux-s390x@1.0.4':
461 | resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
462 | cpu: [s390x]
463 | os: [linux]
464 |
465 | '@img/sharp-libvips-linux-x64@1.0.4':
466 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
467 | cpu: [x64]
468 | os: [linux]
469 |
470 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
471 | resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
472 | cpu: [arm64]
473 | os: [linux]
474 |
475 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
476 | resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
477 | cpu: [x64]
478 | os: [linux]
479 |
480 | '@img/sharp-linux-arm64@0.33.5':
481 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
482 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
483 | cpu: [arm64]
484 | os: [linux]
485 |
486 | '@img/sharp-linux-arm@0.33.5':
487 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
488 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
489 | cpu: [arm]
490 | os: [linux]
491 |
492 | '@img/sharp-linux-s390x@0.33.5':
493 | resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
494 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
495 | cpu: [s390x]
496 | os: [linux]
497 |
498 | '@img/sharp-linux-x64@0.33.5':
499 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
500 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
501 | cpu: [x64]
502 | os: [linux]
503 |
504 | '@img/sharp-linuxmusl-arm64@0.33.5':
505 | resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
506 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
507 | cpu: [arm64]
508 | os: [linux]
509 |
510 | '@img/sharp-linuxmusl-x64@0.33.5':
511 | resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
512 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
513 | cpu: [x64]
514 | os: [linux]
515 |
516 | '@img/sharp-wasm32@0.33.5':
517 | resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
518 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
519 | cpu: [wasm32]
520 |
521 | '@img/sharp-win32-ia32@0.33.5':
522 | resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
523 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
524 | cpu: [ia32]
525 | os: [win32]
526 |
527 | '@img/sharp-win32-x64@0.33.5':
528 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
529 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
530 | cpu: [x64]
531 | os: [win32]
532 |
533 | '@inlang/cli@3.0.12':
534 | resolution: {integrity: sha512-0FZJtgrt1Ol4iwKtA0VICrsHcA3stWTSP2jq8mpTgjTlFU63gr5JcyFljUT8Dp5nDIJYmdh3kJ0a8PhW0X8clQ==}
535 | engines: {node: '>=18.0.0'}
536 | hasBin: true
537 |
538 | '@inlang/paraglide-js@2.5.0':
539 | resolution: {integrity: sha512-FnycOM6j0GYd/n97NCDyXJiHnyPYGPgufL640eZWs+rTIRrOgDVz/o77iWRYFZK84REOcmSDi0N6PbbY8NT8+A==}
540 | hasBin: true
541 |
542 | '@inlang/recommend-sherlock@0.2.1':
543 | resolution: {integrity: sha512-ckv8HvHy/iTqaVAEKrr+gnl+p3XFNwe5D2+6w6wJk2ORV2XkcRkKOJ/XsTUJbPSiyi4PI+p+T3bqbmNx/rDUlg==}
544 |
545 | '@inlang/sdk@2.4.9':
546 | resolution: {integrity: sha512-cvz/C1rF5WBxzHbEoiBoI6Sz6q6M+TdxfWkEGBYTD77opY8i8WN01prUWXEM87GPF4SZcyIySez9U0Ccm12oFQ==}
547 | engines: {node: '>=18.0.0'}
548 |
549 | '@jridgewell/gen-mapping@0.3.13':
550 | resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
551 |
552 | '@jridgewell/remapping@2.3.5':
553 | resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
554 |
555 | '@jridgewell/resolve-uri@3.1.2':
556 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
557 | engines: {node: '>=6.0.0'}
558 |
559 | '@jridgewell/sourcemap-codec@1.5.5':
560 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
561 |
562 | '@jridgewell/trace-mapping@0.3.31':
563 | resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
564 |
565 | '@jridgewell/trace-mapping@0.3.9':
566 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
567 |
568 | '@lix-js/sdk@0.4.7':
569 | resolution: {integrity: sha512-pRbW+joG12L0ULfMiWYosIW0plmW4AsUdiPCp+Z8rAsElJ+wJ6in58zhD3UwUcd4BNcpldEGjg6PdA7e0RgsDQ==}
570 | engines: {node: '>=18'}
571 |
572 | '@lix-js/server-protocol-schema@0.1.1':
573 | resolution: {integrity: sha512-jBeALB6prAbtr5q4vTuxnRZZv1M2rKe8iNqRQhFJ4Tv7150unEa0vKyz0hs8Gl3fUGsWaNJBh3J8++fpbrpRBQ==}
574 |
575 | '@polka/url@1.0.0-next.29':
576 | resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
577 |
578 | '@poppinss/colors@4.1.5':
579 | resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==}
580 |
581 | '@poppinss/dumper@0.6.5':
582 | resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==}
583 |
584 | '@poppinss/exception@1.2.2':
585 | resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==}
586 |
587 | '@remix-run/node-fetch-server@0.8.1':
588 | resolution: {integrity: sha512-J1dev372wtJqmqn9U/qbpbZxbJSQrogNN2+Qv1lKlpATpe/WQ9aCZfl/xSb9d2Rgh1IyLSvNxZAXPZxruO6Xig==}
589 |
590 | '@rollup/rollup-android-arm-eabi@4.53.3':
591 | resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
592 | cpu: [arm]
593 | os: [android]
594 |
595 | '@rollup/rollup-android-arm64@4.53.3':
596 | resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==}
597 | cpu: [arm64]
598 | os: [android]
599 |
600 | '@rollup/rollup-darwin-arm64@4.53.3':
601 | resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==}
602 | cpu: [arm64]
603 | os: [darwin]
604 |
605 | '@rollup/rollup-darwin-x64@4.53.3':
606 | resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==}
607 | cpu: [x64]
608 | os: [darwin]
609 |
610 | '@rollup/rollup-freebsd-arm64@4.53.3':
611 | resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==}
612 | cpu: [arm64]
613 | os: [freebsd]
614 |
615 | '@rollup/rollup-freebsd-x64@4.53.3':
616 | resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==}
617 | cpu: [x64]
618 | os: [freebsd]
619 |
620 | '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
621 | resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
622 | cpu: [arm]
623 | os: [linux]
624 |
625 | '@rollup/rollup-linux-arm-musleabihf@4.53.3':
626 | resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
627 | cpu: [arm]
628 | os: [linux]
629 |
630 | '@rollup/rollup-linux-arm64-gnu@4.53.3':
631 | resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
632 | cpu: [arm64]
633 | os: [linux]
634 |
635 | '@rollup/rollup-linux-arm64-musl@4.53.3':
636 | resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
637 | cpu: [arm64]
638 | os: [linux]
639 |
640 | '@rollup/rollup-linux-loong64-gnu@4.53.3':
641 | resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
642 | cpu: [loong64]
643 | os: [linux]
644 |
645 | '@rollup/rollup-linux-ppc64-gnu@4.53.3':
646 | resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
647 | cpu: [ppc64]
648 | os: [linux]
649 |
650 | '@rollup/rollup-linux-riscv64-gnu@4.53.3':
651 | resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
652 | cpu: [riscv64]
653 | os: [linux]
654 |
655 | '@rollup/rollup-linux-riscv64-musl@4.53.3':
656 | resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
657 | cpu: [riscv64]
658 | os: [linux]
659 |
660 | '@rollup/rollup-linux-s390x-gnu@4.53.3':
661 | resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
662 | cpu: [s390x]
663 | os: [linux]
664 |
665 | '@rollup/rollup-linux-x64-gnu@4.53.3':
666 | resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
667 | cpu: [x64]
668 | os: [linux]
669 |
670 | '@rollup/rollup-linux-x64-musl@4.53.3':
671 | resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
672 | cpu: [x64]
673 | os: [linux]
674 |
675 | '@rollup/rollup-openharmony-arm64@4.53.3':
676 | resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
677 | cpu: [arm64]
678 | os: [openharmony]
679 |
680 | '@rollup/rollup-win32-arm64-msvc@4.53.3':
681 | resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==}
682 | cpu: [arm64]
683 | os: [win32]
684 |
685 | '@rollup/rollup-win32-ia32-msvc@4.53.3':
686 | resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==}
687 | cpu: [ia32]
688 | os: [win32]
689 |
690 | '@rollup/rollup-win32-x64-gnu@4.53.3':
691 | resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==}
692 | cpu: [x64]
693 | os: [win32]
694 |
695 | '@rollup/rollup-win32-x64-msvc@4.53.3':
696 | resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==}
697 | cpu: [x64]
698 | os: [win32]
699 |
700 | '@sinclair/typebox@0.31.28':
701 | resolution: {integrity: sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==}
702 |
703 | '@sindresorhus/is@7.1.1':
704 | resolution: {integrity: sha512-rO92VvpgMc3kfiTjGT52LEtJ8Yc5kCWhZjLQ3LwlA4pSgPpQO7bVpYXParOD8Jwf+cVQECJo3yP/4I8aZtUQTQ==}
705 | engines: {node: '>=18'}
706 |
707 | '@speed-highlight/core@1.2.12':
708 | resolution: {integrity: sha512-uilwrK0Ygyri5dToHYdZSjcvpS2ZwX0w5aSt3GCEN9hrjxWCoeV4Z2DTXuxjwbntaLQIEEAlCeNQss5SoHvAEA==}
709 |
710 | '@sqlite.org/sqlite-wasm@3.48.0-build4':
711 | resolution: {integrity: sha512-hI6twvUkzOmyGZhQMza1gpfqErZxXRw6JEsiVjUbo7tFanVD+8Oil0Ih3l2nGzHdxPI41zFmfUQG7GHqhciKZQ==}
712 | hasBin: true
713 |
714 | '@standard-schema/spec@1.0.0':
715 | resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
716 |
717 | '@sveltejs/acorn-typescript@1.0.8':
718 | resolution: {integrity: sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==}
719 | peerDependencies:
720 | acorn: ^8.9.0
721 |
722 | '@sveltejs/adapter-cloudflare@7.2.4':
723 | resolution: {integrity: sha512-uD8VlOuGXGuZWL+zbBYSjtmC4WDtlonUodfqAZ/COd5uIy2Z0QptIicB/nkTrGNI9sbmzgf7z0N09CHyWYlUvQ==}
724 | peerDependencies:
725 | '@sveltejs/kit': ^2.0.0
726 | wrangler: ^4.0.0
727 |
728 | '@sveltejs/kit@2.49.0':
729 | resolution: {integrity: sha512-oH8tXw7EZnie8FdOWYrF7Yn4IKrqTFHhXvl8YxXxbKwTMcD/5NNCryUSEXRk2ZR4ojnub0P8rNrsVGHXWqIDtA==}
730 | engines: {node: '>=18.13'}
731 | hasBin: true
732 | peerDependencies:
733 | '@opentelemetry/api': ^1.0.0
734 | '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0
735 | svelte: ^4.0.0 || ^5.0.0-next.0
736 | vite: ^7.2.4
737 | peerDependenciesMeta:
738 | '@opentelemetry/api':
739 | optional: true
740 |
741 | '@sveltejs/vite-plugin-svelte-inspector@5.0.1':
742 | resolution: {integrity: sha512-ubWshlMk4bc8mkwWbg6vNvCeT7lGQojE3ijDh3QTR6Zr/R+GXxsGbyH4PExEPpiFmqPhYiVSVmHBjUcVc1JIrA==}
743 | engines: {node: ^20.19 || ^22.12 || >=24}
744 | peerDependencies:
745 | '@sveltejs/vite-plugin-svelte': ^6.0.0-next.0
746 | svelte: ^5.0.0
747 | vite: ^7.2.4
748 |
749 | '@sveltejs/vite-plugin-svelte@6.2.1':
750 | resolution: {integrity: sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==}
751 | engines: {node: ^20.19 || ^22.12 || >=24}
752 | peerDependencies:
753 | svelte: ^5.0.0
754 | vite: ^7.2.4
755 |
756 | '@tailwindcss/node@4.1.17':
757 | resolution: {integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==}
758 |
759 | '@tailwindcss/oxide-android-arm64@4.1.17':
760 | resolution: {integrity: sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==}
761 | engines: {node: '>= 10'}
762 | cpu: [arm64]
763 | os: [android]
764 |
765 | '@tailwindcss/oxide-darwin-arm64@4.1.17':
766 | resolution: {integrity: sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==}
767 | engines: {node: '>= 10'}
768 | cpu: [arm64]
769 | os: [darwin]
770 |
771 | '@tailwindcss/oxide-darwin-x64@4.1.17':
772 | resolution: {integrity: sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==}
773 | engines: {node: '>= 10'}
774 | cpu: [x64]
775 | os: [darwin]
776 |
777 | '@tailwindcss/oxide-freebsd-x64@4.1.17':
778 | resolution: {integrity: sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==}
779 | engines: {node: '>= 10'}
780 | cpu: [x64]
781 | os: [freebsd]
782 |
783 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17':
784 | resolution: {integrity: sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==}
785 | engines: {node: '>= 10'}
786 | cpu: [arm]
787 | os: [linux]
788 |
789 | '@tailwindcss/oxide-linux-arm64-gnu@4.1.17':
790 | resolution: {integrity: sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==}
791 | engines: {node: '>= 10'}
792 | cpu: [arm64]
793 | os: [linux]
794 |
795 | '@tailwindcss/oxide-linux-arm64-musl@4.1.17':
796 | resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==}
797 | engines: {node: '>= 10'}
798 | cpu: [arm64]
799 | os: [linux]
800 |
801 | '@tailwindcss/oxide-linux-x64-gnu@4.1.17':
802 | resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==}
803 | engines: {node: '>= 10'}
804 | cpu: [x64]
805 | os: [linux]
806 |
807 | '@tailwindcss/oxide-linux-x64-musl@4.1.17':
808 | resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==}
809 | engines: {node: '>= 10'}
810 | cpu: [x64]
811 | os: [linux]
812 |
813 | '@tailwindcss/oxide-wasm32-wasi@4.1.17':
814 | resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==}
815 | engines: {node: '>=14.0.0'}
816 | cpu: [wasm32]
817 | bundledDependencies:
818 | - '@napi-rs/wasm-runtime'
819 | - '@emnapi/core'
820 | - '@emnapi/runtime'
821 | - '@tybys/wasm-util'
822 | - '@emnapi/wasi-threads'
823 | - tslib
824 |
825 | '@tailwindcss/oxide-win32-arm64-msvc@4.1.17':
826 | resolution: {integrity: sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==}
827 | engines: {node: '>= 10'}
828 | cpu: [arm64]
829 | os: [win32]
830 |
831 | '@tailwindcss/oxide-win32-x64-msvc@4.1.17':
832 | resolution: {integrity: sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==}
833 | engines: {node: '>= 10'}
834 | cpu: [x64]
835 | os: [win32]
836 |
837 | '@tailwindcss/oxide@4.1.17':
838 | resolution: {integrity: sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==}
839 | engines: {node: '>= 10'}
840 |
841 | '@tailwindcss/vite@4.1.17':
842 | resolution: {integrity: sha512-4+9w8ZHOiGnpcGI6z1TVVfWaX/koK7fKeSYF3qlYg2xpBtbteP2ddBxiarL+HVgfSJGeK5RIxRQmKm4rTJJAwA==}
843 | peerDependencies:
844 | vite: ^7.2.4
845 |
846 | '@types/cookie@0.6.0':
847 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
848 |
849 | '@types/estree@1.0.8':
850 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
851 |
852 | '@types/node@24.10.1':
853 | resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==}
854 |
855 | acorn-walk@8.3.2:
856 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
857 | engines: {node: '>=0.4.0'}
858 |
859 | acorn@8.14.0:
860 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
861 | engines: {node: '>=0.4.0'}
862 | hasBin: true
863 |
864 | acorn@8.15.0:
865 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
866 | engines: {node: '>=0.4.0'}
867 | hasBin: true
868 |
869 | aria-query@5.3.2:
870 | resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
871 | engines: {node: '>= 0.4'}
872 |
873 | array-timsort@1.0.3:
874 | resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==}
875 |
876 | axobject-query@4.1.0:
877 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
878 | engines: {node: '>= 0.4'}
879 |
880 | blake3-wasm@2.1.5:
881 | resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
882 |
883 | chokidar@4.0.3:
884 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
885 | engines: {node: '>= 14.16.0'}
886 |
887 | clsx@2.1.1:
888 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
889 | engines: {node: '>=6'}
890 |
891 | color-convert@2.0.1:
892 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
893 | engines: {node: '>=7.0.0'}
894 |
895 | color-name@1.1.4:
896 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
897 |
898 | color-string@1.9.1:
899 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
900 |
901 | color@4.2.3:
902 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
903 | engines: {node: '>=12.5.0'}
904 |
905 | commander@11.1.0:
906 | resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
907 | engines: {node: '>=16'}
908 |
909 | comment-json@4.4.1:
910 | resolution: {integrity: sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==}
911 | engines: {node: '>= 6'}
912 |
913 | consola@3.4.0:
914 | resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==}
915 | engines: {node: ^14.18.0 || >=16.10.0}
916 |
917 | cookie@0.6.0:
918 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
919 | engines: {node: '>= 0.6'}
920 |
921 | cookie@1.1.1:
922 | resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
923 | engines: {node: '>=18'}
924 |
925 | core-util-is@1.0.3:
926 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
927 |
928 | debug@4.4.3:
929 | resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
930 | engines: {node: '>=6.0'}
931 | peerDependencies:
932 | supports-color: '*'
933 | peerDependenciesMeta:
934 | supports-color:
935 | optional: true
936 |
937 | dedent@1.5.1:
938 | resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==}
939 | peerDependencies:
940 | babel-plugin-macros: ^3.1.0
941 | peerDependenciesMeta:
942 | babel-plugin-macros:
943 | optional: true
944 |
945 | deepmerge@4.3.1:
946 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
947 | engines: {node: '>=0.10.0'}
948 |
949 | detect-libc@2.1.2:
950 | resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
951 | engines: {node: '>=8'}
952 |
953 | devalue@5.5.0:
954 | resolution: {integrity: sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==}
955 |
956 | enhanced-resolve@5.18.3:
957 | resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
958 | engines: {node: '>=10.13.0'}
959 |
960 | error-stack-parser-es@1.0.5:
961 | resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
962 |
963 | esbuild-wasm@0.19.12:
964 | resolution: {integrity: sha512-Zmc4hk6FibJZBcTx5/8K/4jT3/oG1vkGTEeKJUQFCUQKimD6Q7+adp/bdVQyYJFolMKaXkQnVZdV4O5ZaTYmyQ==}
965 | engines: {node: '>=12'}
966 | hasBin: true
967 |
968 | esbuild@0.25.12:
969 | resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
970 | engines: {node: '>=18'}
971 | hasBin: true
972 |
973 | esbuild@0.25.4:
974 | resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==}
975 | engines: {node: '>=18'}
976 | hasBin: true
977 |
978 | esm-env@1.2.2:
979 | resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
980 |
981 | esprima@4.0.1:
982 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
983 | engines: {node: '>=4'}
984 | hasBin: true
985 |
986 | esrap@2.2.0:
987 | resolution: {integrity: sha512-WBmtxe7R9C5mvL4n2le8nMUe4mD5V9oiK2vJpQ9I3y20ENPUomPcphBXE8D1x/Bm84oN1V+lOfgXxtqmxTp3Xg==}
988 |
989 | exit-hook@2.2.1:
990 | resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
991 | engines: {node: '>=6'}
992 |
993 | fdir@6.5.0:
994 | resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
995 | engines: {node: '>=12.0.0'}
996 | peerDependencies:
997 | picomatch: ^3 || ^4
998 | peerDependenciesMeta:
999 | picomatch:
1000 | optional: true
1001 |
1002 | fsevents@2.3.3:
1003 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1004 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1005 | os: [darwin]
1006 |
1007 | get-port@7.1.0:
1008 | resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==}
1009 | engines: {node: '>=16'}
1010 |
1011 | glob-to-regexp@0.4.1:
1012 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
1013 |
1014 | graceful-fs@4.2.11:
1015 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1016 |
1017 | human-id@4.1.3:
1018 | resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==}
1019 | hasBin: true
1020 |
1021 | is-arrayish@0.3.4:
1022 | resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}
1023 |
1024 | is-reference@3.0.3:
1025 | resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
1026 |
1027 | jiti@2.6.1:
1028 | resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
1029 | hasBin: true
1030 |
1031 | js-sha256@0.11.1:
1032 | resolution: {integrity: sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==}
1033 |
1034 | json5@2.2.3:
1035 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
1036 | engines: {node: '>=6'}
1037 | hasBin: true
1038 |
1039 | kleur@4.1.5:
1040 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
1041 | engines: {node: '>=6'}
1042 |
1043 | kysely@0.27.6:
1044 | resolution: {integrity: sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==}
1045 | engines: {node: '>=14.0.0'}
1046 |
1047 | lightningcss-android-arm64@1.30.2:
1048 | resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==}
1049 | engines: {node: '>= 12.0.0'}
1050 | cpu: [arm64]
1051 | os: [android]
1052 |
1053 | lightningcss-darwin-arm64@1.30.2:
1054 | resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
1055 | engines: {node: '>= 12.0.0'}
1056 | cpu: [arm64]
1057 | os: [darwin]
1058 |
1059 | lightningcss-darwin-x64@1.30.2:
1060 | resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
1061 | engines: {node: '>= 12.0.0'}
1062 | cpu: [x64]
1063 | os: [darwin]
1064 |
1065 | lightningcss-freebsd-x64@1.30.2:
1066 | resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==}
1067 | engines: {node: '>= 12.0.0'}
1068 | cpu: [x64]
1069 | os: [freebsd]
1070 |
1071 | lightningcss-linux-arm-gnueabihf@1.30.2:
1072 | resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==}
1073 | engines: {node: '>= 12.0.0'}
1074 | cpu: [arm]
1075 | os: [linux]
1076 |
1077 | lightningcss-linux-arm64-gnu@1.30.2:
1078 | resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
1079 | engines: {node: '>= 12.0.0'}
1080 | cpu: [arm64]
1081 | os: [linux]
1082 |
1083 | lightningcss-linux-arm64-musl@1.30.2:
1084 | resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
1085 | engines: {node: '>= 12.0.0'}
1086 | cpu: [arm64]
1087 | os: [linux]
1088 |
1089 | lightningcss-linux-x64-gnu@1.30.2:
1090 | resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
1091 | engines: {node: '>= 12.0.0'}
1092 | cpu: [x64]
1093 | os: [linux]
1094 |
1095 | lightningcss-linux-x64-musl@1.30.2:
1096 | resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
1097 | engines: {node: '>= 12.0.0'}
1098 | cpu: [x64]
1099 | os: [linux]
1100 |
1101 | lightningcss-win32-arm64-msvc@1.30.2:
1102 | resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
1103 | engines: {node: '>= 12.0.0'}
1104 | cpu: [arm64]
1105 | os: [win32]
1106 |
1107 | lightningcss-win32-x64-msvc@1.30.2:
1108 | resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
1109 | engines: {node: '>= 12.0.0'}
1110 | cpu: [x64]
1111 | os: [win32]
1112 |
1113 | lightningcss@1.30.2:
1114 | resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
1115 | engines: {node: '>= 12.0.0'}
1116 |
1117 | locate-character@3.0.0:
1118 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
1119 |
1120 | magic-string@0.30.21:
1121 | resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
1122 |
1123 | mime@3.0.0:
1124 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
1125 | engines: {node: '>=10.0.0'}
1126 | hasBin: true
1127 |
1128 | miniflare@4.20251125.0:
1129 | resolution: {integrity: sha512-xY6deLx0Drt8GfGG2Fv0fHUocHAIG/Iv62Kl36TPfDzgq7/+DQ5gYNisxnmyISQdA/sm7kOvn2XRBncxjWYrLg==}
1130 | engines: {node: '>=18.0.0'}
1131 | hasBin: true
1132 |
1133 | mri@1.2.0:
1134 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
1135 | engines: {node: '>=4'}
1136 |
1137 | mrmime@2.0.1:
1138 | resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
1139 | engines: {node: '>=10'}
1140 |
1141 | ms@2.1.3:
1142 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1143 |
1144 | nanoid@3.3.11:
1145 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
1146 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1147 | hasBin: true
1148 |
1149 | path-to-regexp@6.3.0:
1150 | resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
1151 |
1152 | pathe@2.0.3:
1153 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
1154 |
1155 | picocolors@1.1.1:
1156 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1157 |
1158 | picomatch@4.0.3:
1159 | resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
1160 | engines: {node: '>=12'}
1161 |
1162 | postcss@8.5.6:
1163 | resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
1164 | engines: {node: ^10 || ^12 || >=14}
1165 |
1166 | readdirp@4.1.2:
1167 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
1168 | engines: {node: '>= 14.18.0'}
1169 |
1170 | regexparam@3.0.0:
1171 | resolution: {integrity: sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==}
1172 | engines: {node: '>=8'}
1173 |
1174 | rollup@4.53.3:
1175 | resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==}
1176 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1177 | hasBin: true
1178 |
1179 | sade@1.8.1:
1180 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
1181 | engines: {node: '>=6'}
1182 |
1183 | semver@7.7.3:
1184 | resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
1185 | engines: {node: '>=10'}
1186 | hasBin: true
1187 |
1188 | set-cookie-parser@2.7.2:
1189 | resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
1190 |
1191 | sharp@0.33.5:
1192 | resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
1193 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
1194 |
1195 | simple-swizzle@0.2.4:
1196 | resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}
1197 |
1198 | sirv@3.0.2:
1199 | resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
1200 | engines: {node: '>=18'}
1201 |
1202 | source-map-js@1.2.1:
1203 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1204 | engines: {node: '>=0.10.0'}
1205 |
1206 | sqlite-wasm-kysely@0.3.0:
1207 | resolution: {integrity: sha512-TzjBNv7KwRw6E3pdKdlRyZiTmUIE0UttT/Sl56MVwVARl/u5gp978KepazCJZewFUnlWHz9i3NQd4kOtP/Afdg==}
1208 | peerDependencies:
1209 | kysely: '*'
1210 |
1211 | stoppable@1.1.0:
1212 | resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==}
1213 | engines: {node: '>=4', npm: '>=6'}
1214 |
1215 | supports-color@10.2.2:
1216 | resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==}
1217 | engines: {node: '>=18'}
1218 |
1219 | svelte-check@4.3.4:
1220 | resolution: {integrity: sha512-DVWvxhBrDsd+0hHWKfjP99lsSXASeOhHJYyuKOFYJcP7ThfSCKgjVarE8XfuMWpS5JV3AlDf+iK1YGGo2TACdw==}
1221 | engines: {node: '>= 18.0.0'}
1222 | hasBin: true
1223 | peerDependencies:
1224 | svelte: ^4.0.0 || ^5.0.0-next.0
1225 | typescript: '>=5.0.0'
1226 |
1227 | svelte@5.45.2:
1228 | resolution: {integrity: sha512-yyXdW2u3H0H/zxxWoGwJoQlRgaSJLp+Vhktv12iRw2WRDlKqUPT54Fi0K/PkXqrdkcQ98aBazpy0AH4BCBVfoA==}
1229 | engines: {node: '>=18'}
1230 |
1231 | tailwindcss@4.1.17:
1232 | resolution: {integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==}
1233 |
1234 | tapable@2.3.0:
1235 | resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
1236 | engines: {node: '>=6'}
1237 |
1238 | tinyglobby@0.2.15:
1239 | resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
1240 | engines: {node: '>=12.0.0'}
1241 |
1242 | totalist@3.0.1:
1243 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
1244 | engines: {node: '>=6'}
1245 |
1246 | tslib@2.8.1:
1247 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
1248 |
1249 | typescript@5.9.3:
1250 | resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
1251 | engines: {node: '>=14.17'}
1252 | hasBin: true
1253 |
1254 | undici-types@7.16.0:
1255 | resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
1256 |
1257 | undici@7.14.0:
1258 | resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==}
1259 | engines: {node: '>=20.18.1'}
1260 |
1261 | unenv@2.0.0-rc.24:
1262 | resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}
1263 |
1264 | unplugin@2.3.11:
1265 | resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==}
1266 | engines: {node: '>=18.12.0'}
1267 |
1268 | urlpattern-polyfill@10.1.0:
1269 | resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==}
1270 |
1271 | uuid@10.0.0:
1272 | resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
1273 | hasBin: true
1274 |
1275 | uuid@11.1.0:
1276 | resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
1277 | hasBin: true
1278 |
1279 | vite-plugin-devtools-json@0.1.1:
1280 | resolution: {integrity: sha512-kjXyDTZDwOKiqum/DBWZ6JenUh9qWFr/0/peoQqARanseFyNmtxOrexAxbE7ERqBSsMSkQA7qNTSQkZGw1SfPw==}
1281 | peerDependencies:
1282 | vite: ^7.2.4
1283 |
1284 | vite@7.2.4:
1285 | resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==}
1286 | engines: {node: ^20.19.0 || >=22.12.0}
1287 | hasBin: true
1288 | peerDependencies:
1289 | '@types/node': ^20.19.0 || >=22.12.0
1290 | jiti: '>=1.21.0'
1291 | less: ^4.0.0
1292 | lightningcss: ^1.21.0
1293 | sass: ^1.70.0
1294 | sass-embedded: ^1.70.0
1295 | stylus: '>=0.54.8'
1296 | sugarss: ^5.0.0
1297 | terser: ^5.16.0
1298 | tsx: ^4.8.1
1299 | yaml: ^2.4.2
1300 | peerDependenciesMeta:
1301 | '@types/node':
1302 | optional: true
1303 | jiti:
1304 | optional: true
1305 | less:
1306 | optional: true
1307 | lightningcss:
1308 | optional: true
1309 | sass:
1310 | optional: true
1311 | sass-embedded:
1312 | optional: true
1313 | stylus:
1314 | optional: true
1315 | sugarss:
1316 | optional: true
1317 | terser:
1318 | optional: true
1319 | tsx:
1320 | optional: true
1321 | yaml:
1322 | optional: true
1323 |
1324 | vitefu@1.1.1:
1325 | resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==}
1326 | peerDependencies:
1327 | vite: ^7.2.4
1328 | peerDependenciesMeta:
1329 | vite:
1330 | optional: true
1331 |
1332 | webpack-virtual-modules@0.6.2:
1333 | resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
1334 |
1335 | workerd@1.20251125.0:
1336 | resolution: {integrity: sha512-oQYfgu3UZ15HlMcEyilKD1RdielRnKSG5MA0xoi1theVs99Rop9AEFYicYCyK1R4YjYblLRYEiL1tMgEFqpReA==}
1337 | engines: {node: '>=16'}
1338 | hasBin: true
1339 |
1340 | worktop@0.8.0-next.18:
1341 | resolution: {integrity: sha512-+TvsA6VAVoMC3XDKR5MoC/qlLqDixEfOBysDEKnPIPou/NvoPWCAuXHXMsswwlvmEuvX56lQjvELLyLuzTKvRw==}
1342 | engines: {node: '>=12'}
1343 |
1344 | wrangler@4.51.0:
1345 | resolution: {integrity: sha512-JHv+58UxM2//e4kf9ASDwg016xd/OdDNDUKW6zLQyE7Uc9ayYKX1QJ9NsYtpo4dC1dfg6rT67pf1aNK1cTzUDg==}
1346 | engines: {node: '>=20.0.0'}
1347 | hasBin: true
1348 | peerDependencies:
1349 | '@cloudflare/workers-types': ^4.20251125.0
1350 | peerDependenciesMeta:
1351 | '@cloudflare/workers-types':
1352 | optional: true
1353 |
1354 | ws@8.18.0:
1355 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
1356 | engines: {node: '>=10.0.0'}
1357 | peerDependencies:
1358 | bufferutil: ^4.0.1
1359 | utf-8-validate: '>=5.0.2'
1360 | peerDependenciesMeta:
1361 | bufferutil:
1362 | optional: true
1363 | utf-8-validate:
1364 | optional: true
1365 |
1366 | youch-core@0.3.3:
1367 | resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==}
1368 |
1369 | youch@4.1.0-beta.10:
1370 | resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==}
1371 |
1372 | zimmerframe@1.1.4:
1373 | resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==}
1374 |
1375 | zod@3.22.3:
1376 | resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==}
1377 |
1378 | snapshots:
1379 |
1380 | '@cloudflare/kv-asset-handler@0.4.1':
1381 | dependencies:
1382 | mime: 3.0.0
1383 |
1384 | '@cloudflare/unenv-preset@2.7.11(unenv@2.0.0-rc.24)(workerd@1.20251125.0)':
1385 | dependencies:
1386 | unenv: 2.0.0-rc.24
1387 | optionalDependencies:
1388 | workerd: 1.20251125.0
1389 |
1390 | '@cloudflare/vite-plugin@1.15.3(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))(workerd@1.20251125.0)(wrangler@4.51.0(@cloudflare/workers-types@4.20251128.0))':
1391 | dependencies:
1392 | '@cloudflare/unenv-preset': 2.7.11(unenv@2.0.0-rc.24)(workerd@1.20251125.0)
1393 | '@remix-run/node-fetch-server': 0.8.1
1394 | get-port: 7.1.0
1395 | miniflare: 4.20251125.0
1396 | picocolors: 1.1.1
1397 | tinyglobby: 0.2.15
1398 | unenv: 2.0.0-rc.24
1399 | vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)
1400 | wrangler: 4.51.0(@cloudflare/workers-types@4.20251128.0)
1401 | ws: 8.18.0
1402 | transitivePeerDependencies:
1403 | - bufferutil
1404 | - utf-8-validate
1405 | - workerd
1406 |
1407 | '@cloudflare/workerd-darwin-64@1.20251125.0':
1408 | optional: true
1409 |
1410 | '@cloudflare/workerd-darwin-arm64@1.20251125.0':
1411 | optional: true
1412 |
1413 | '@cloudflare/workerd-linux-64@1.20251125.0':
1414 | optional: true
1415 |
1416 | '@cloudflare/workerd-linux-arm64@1.20251125.0':
1417 | optional: true
1418 |
1419 | '@cloudflare/workerd-windows-64@1.20251125.0':
1420 | optional: true
1421 |
1422 | '@cloudflare/workers-types@4.20251128.0': {}
1423 |
1424 | '@cspotcode/source-map-support@0.8.1':
1425 | dependencies:
1426 | '@jridgewell/trace-mapping': 0.3.9
1427 |
1428 | '@emnapi/runtime@1.7.1':
1429 | dependencies:
1430 | tslib: 2.8.1
1431 | optional: true
1432 |
1433 | '@esbuild/aix-ppc64@0.25.12':
1434 | optional: true
1435 |
1436 | '@esbuild/aix-ppc64@0.25.4':
1437 | optional: true
1438 |
1439 | '@esbuild/android-arm64@0.25.12':
1440 | optional: true
1441 |
1442 | '@esbuild/android-arm64@0.25.4':
1443 | optional: true
1444 |
1445 | '@esbuild/android-arm@0.25.12':
1446 | optional: true
1447 |
1448 | '@esbuild/android-arm@0.25.4':
1449 | optional: true
1450 |
1451 | '@esbuild/android-x64@0.25.12':
1452 | optional: true
1453 |
1454 | '@esbuild/android-x64@0.25.4':
1455 | optional: true
1456 |
1457 | '@esbuild/darwin-arm64@0.25.12':
1458 | optional: true
1459 |
1460 | '@esbuild/darwin-arm64@0.25.4':
1461 | optional: true
1462 |
1463 | '@esbuild/darwin-x64@0.25.12':
1464 | optional: true
1465 |
1466 | '@esbuild/darwin-x64@0.25.4':
1467 | optional: true
1468 |
1469 | '@esbuild/freebsd-arm64@0.25.12':
1470 | optional: true
1471 |
1472 | '@esbuild/freebsd-arm64@0.25.4':
1473 | optional: true
1474 |
1475 | '@esbuild/freebsd-x64@0.25.12':
1476 | optional: true
1477 |
1478 | '@esbuild/freebsd-x64@0.25.4':
1479 | optional: true
1480 |
1481 | '@esbuild/linux-arm64@0.25.12':
1482 | optional: true
1483 |
1484 | '@esbuild/linux-arm64@0.25.4':
1485 | optional: true
1486 |
1487 | '@esbuild/linux-arm@0.25.12':
1488 | optional: true
1489 |
1490 | '@esbuild/linux-arm@0.25.4':
1491 | optional: true
1492 |
1493 | '@esbuild/linux-ia32@0.25.12':
1494 | optional: true
1495 |
1496 | '@esbuild/linux-ia32@0.25.4':
1497 | optional: true
1498 |
1499 | '@esbuild/linux-loong64@0.25.12':
1500 | optional: true
1501 |
1502 | '@esbuild/linux-loong64@0.25.4':
1503 | optional: true
1504 |
1505 | '@esbuild/linux-mips64el@0.25.12':
1506 | optional: true
1507 |
1508 | '@esbuild/linux-mips64el@0.25.4':
1509 | optional: true
1510 |
1511 | '@esbuild/linux-ppc64@0.25.12':
1512 | optional: true
1513 |
1514 | '@esbuild/linux-ppc64@0.25.4':
1515 | optional: true
1516 |
1517 | '@esbuild/linux-riscv64@0.25.12':
1518 | optional: true
1519 |
1520 | '@esbuild/linux-riscv64@0.25.4':
1521 | optional: true
1522 |
1523 | '@esbuild/linux-s390x@0.25.12':
1524 | optional: true
1525 |
1526 | '@esbuild/linux-s390x@0.25.4':
1527 | optional: true
1528 |
1529 | '@esbuild/linux-x64@0.25.12':
1530 | optional: true
1531 |
1532 | '@esbuild/linux-x64@0.25.4':
1533 | optional: true
1534 |
1535 | '@esbuild/netbsd-arm64@0.25.12':
1536 | optional: true
1537 |
1538 | '@esbuild/netbsd-arm64@0.25.4':
1539 | optional: true
1540 |
1541 | '@esbuild/netbsd-x64@0.25.12':
1542 | optional: true
1543 |
1544 | '@esbuild/netbsd-x64@0.25.4':
1545 | optional: true
1546 |
1547 | '@esbuild/openbsd-arm64@0.25.12':
1548 | optional: true
1549 |
1550 | '@esbuild/openbsd-arm64@0.25.4':
1551 | optional: true
1552 |
1553 | '@esbuild/openbsd-x64@0.25.12':
1554 | optional: true
1555 |
1556 | '@esbuild/openbsd-x64@0.25.4':
1557 | optional: true
1558 |
1559 | '@esbuild/openharmony-arm64@0.25.12':
1560 | optional: true
1561 |
1562 | '@esbuild/sunos-x64@0.25.12':
1563 | optional: true
1564 |
1565 | '@esbuild/sunos-x64@0.25.4':
1566 | optional: true
1567 |
1568 | '@esbuild/win32-arm64@0.25.12':
1569 | optional: true
1570 |
1571 | '@esbuild/win32-arm64@0.25.4':
1572 | optional: true
1573 |
1574 | '@esbuild/win32-ia32@0.25.12':
1575 | optional: true
1576 |
1577 | '@esbuild/win32-ia32@0.25.4':
1578 | optional: true
1579 |
1580 | '@esbuild/win32-x64@0.25.12':
1581 | optional: true
1582 |
1583 | '@esbuild/win32-x64@0.25.4':
1584 | optional: true
1585 |
1586 | '@img/sharp-darwin-arm64@0.33.5':
1587 | optionalDependencies:
1588 | '@img/sharp-libvips-darwin-arm64': 1.0.4
1589 | optional: true
1590 |
1591 | '@img/sharp-darwin-x64@0.33.5':
1592 | optionalDependencies:
1593 | '@img/sharp-libvips-darwin-x64': 1.0.4
1594 | optional: true
1595 |
1596 | '@img/sharp-libvips-darwin-arm64@1.0.4':
1597 | optional: true
1598 |
1599 | '@img/sharp-libvips-darwin-x64@1.0.4':
1600 | optional: true
1601 |
1602 | '@img/sharp-libvips-linux-arm64@1.0.4':
1603 | optional: true
1604 |
1605 | '@img/sharp-libvips-linux-arm@1.0.5':
1606 | optional: true
1607 |
1608 | '@img/sharp-libvips-linux-s390x@1.0.4':
1609 | optional: true
1610 |
1611 | '@img/sharp-libvips-linux-x64@1.0.4':
1612 | optional: true
1613 |
1614 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
1615 | optional: true
1616 |
1617 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
1618 | optional: true
1619 |
1620 | '@img/sharp-linux-arm64@0.33.5':
1621 | optionalDependencies:
1622 | '@img/sharp-libvips-linux-arm64': 1.0.4
1623 | optional: true
1624 |
1625 | '@img/sharp-linux-arm@0.33.5':
1626 | optionalDependencies:
1627 | '@img/sharp-libvips-linux-arm': 1.0.5
1628 | optional: true
1629 |
1630 | '@img/sharp-linux-s390x@0.33.5':
1631 | optionalDependencies:
1632 | '@img/sharp-libvips-linux-s390x': 1.0.4
1633 | optional: true
1634 |
1635 | '@img/sharp-linux-x64@0.33.5':
1636 | optionalDependencies:
1637 | '@img/sharp-libvips-linux-x64': 1.0.4
1638 | optional: true
1639 |
1640 | '@img/sharp-linuxmusl-arm64@0.33.5':
1641 | optionalDependencies:
1642 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
1643 | optional: true
1644 |
1645 | '@img/sharp-linuxmusl-x64@0.33.5':
1646 | optionalDependencies:
1647 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
1648 | optional: true
1649 |
1650 | '@img/sharp-wasm32@0.33.5':
1651 | dependencies:
1652 | '@emnapi/runtime': 1.7.1
1653 | optional: true
1654 |
1655 | '@img/sharp-win32-ia32@0.33.5':
1656 | optional: true
1657 |
1658 | '@img/sharp-win32-x64@0.33.5':
1659 | optional: true
1660 |
1661 | '@inlang/cli@3.0.12':
1662 | dependencies:
1663 | '@inlang/sdk': 2.4.9
1664 | esbuild-wasm: 0.19.12
1665 | transitivePeerDependencies:
1666 | - babel-plugin-macros
1667 |
1668 | '@inlang/paraglide-js@2.5.0':
1669 | dependencies:
1670 | '@inlang/recommend-sherlock': 0.2.1
1671 | '@inlang/sdk': 2.4.9
1672 | commander: 11.1.0
1673 | consola: 3.4.0
1674 | json5: 2.2.3
1675 | unplugin: 2.3.11
1676 | urlpattern-polyfill: 10.1.0
1677 | transitivePeerDependencies:
1678 | - babel-plugin-macros
1679 |
1680 | '@inlang/recommend-sherlock@0.2.1':
1681 | dependencies:
1682 | comment-json: 4.4.1
1683 |
1684 | '@inlang/sdk@2.4.9':
1685 | dependencies:
1686 | '@lix-js/sdk': 0.4.7
1687 | '@sinclair/typebox': 0.31.28
1688 | kysely: 0.27.6
1689 | sqlite-wasm-kysely: 0.3.0(kysely@0.27.6)
1690 | uuid: 10.0.0
1691 | transitivePeerDependencies:
1692 | - babel-plugin-macros
1693 |
1694 | '@jridgewell/gen-mapping@0.3.13':
1695 | dependencies:
1696 | '@jridgewell/sourcemap-codec': 1.5.5
1697 | '@jridgewell/trace-mapping': 0.3.31
1698 |
1699 | '@jridgewell/remapping@2.3.5':
1700 | dependencies:
1701 | '@jridgewell/gen-mapping': 0.3.13
1702 | '@jridgewell/trace-mapping': 0.3.31
1703 |
1704 | '@jridgewell/resolve-uri@3.1.2': {}
1705 |
1706 | '@jridgewell/sourcemap-codec@1.5.5': {}
1707 |
1708 | '@jridgewell/trace-mapping@0.3.31':
1709 | dependencies:
1710 | '@jridgewell/resolve-uri': 3.1.2
1711 | '@jridgewell/sourcemap-codec': 1.5.5
1712 |
1713 | '@jridgewell/trace-mapping@0.3.9':
1714 | dependencies:
1715 | '@jridgewell/resolve-uri': 3.1.2
1716 | '@jridgewell/sourcemap-codec': 1.5.5
1717 |
1718 | '@lix-js/sdk@0.4.7':
1719 | dependencies:
1720 | '@lix-js/server-protocol-schema': 0.1.1
1721 | dedent: 1.5.1
1722 | human-id: 4.1.3
1723 | js-sha256: 0.11.1
1724 | kysely: 0.27.6
1725 | sqlite-wasm-kysely: 0.3.0(kysely@0.27.6)
1726 | uuid: 10.0.0
1727 | transitivePeerDependencies:
1728 | - babel-plugin-macros
1729 |
1730 | '@lix-js/server-protocol-schema@0.1.1': {}
1731 |
1732 | '@polka/url@1.0.0-next.29': {}
1733 |
1734 | '@poppinss/colors@4.1.5':
1735 | dependencies:
1736 | kleur: 4.1.5
1737 |
1738 | '@poppinss/dumper@0.6.5':
1739 | dependencies:
1740 | '@poppinss/colors': 4.1.5
1741 | '@sindresorhus/is': 7.1.1
1742 | supports-color: 10.2.2
1743 |
1744 | '@poppinss/exception@1.2.2': {}
1745 |
1746 | '@remix-run/node-fetch-server@0.8.1': {}
1747 |
1748 | '@rollup/rollup-android-arm-eabi@4.53.3':
1749 | optional: true
1750 |
1751 | '@rollup/rollup-android-arm64@4.53.3':
1752 | optional: true
1753 |
1754 | '@rollup/rollup-darwin-arm64@4.53.3':
1755 | optional: true
1756 |
1757 | '@rollup/rollup-darwin-x64@4.53.3':
1758 | optional: true
1759 |
1760 | '@rollup/rollup-freebsd-arm64@4.53.3':
1761 | optional: true
1762 |
1763 | '@rollup/rollup-freebsd-x64@4.53.3':
1764 | optional: true
1765 |
1766 | '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
1767 | optional: true
1768 |
1769 | '@rollup/rollup-linux-arm-musleabihf@4.53.3':
1770 | optional: true
1771 |
1772 | '@rollup/rollup-linux-arm64-gnu@4.53.3':
1773 | optional: true
1774 |
1775 | '@rollup/rollup-linux-arm64-musl@4.53.3':
1776 | optional: true
1777 |
1778 | '@rollup/rollup-linux-loong64-gnu@4.53.3':
1779 | optional: true
1780 |
1781 | '@rollup/rollup-linux-ppc64-gnu@4.53.3':
1782 | optional: true
1783 |
1784 | '@rollup/rollup-linux-riscv64-gnu@4.53.3':
1785 | optional: true
1786 |
1787 | '@rollup/rollup-linux-riscv64-musl@4.53.3':
1788 | optional: true
1789 |
1790 | '@rollup/rollup-linux-s390x-gnu@4.53.3':
1791 | optional: true
1792 |
1793 | '@rollup/rollup-linux-x64-gnu@4.53.3':
1794 | optional: true
1795 |
1796 | '@rollup/rollup-linux-x64-musl@4.53.3':
1797 | optional: true
1798 |
1799 | '@rollup/rollup-openharmony-arm64@4.53.3':
1800 | optional: true
1801 |
1802 | '@rollup/rollup-win32-arm64-msvc@4.53.3':
1803 | optional: true
1804 |
1805 | '@rollup/rollup-win32-ia32-msvc@4.53.3':
1806 | optional: true
1807 |
1808 | '@rollup/rollup-win32-x64-gnu@4.53.3':
1809 | optional: true
1810 |
1811 | '@rollup/rollup-win32-x64-msvc@4.53.3':
1812 | optional: true
1813 |
1814 | '@sinclair/typebox@0.31.28': {}
1815 |
1816 | '@sindresorhus/is@7.1.1': {}
1817 |
1818 | '@speed-highlight/core@1.2.12': {}
1819 |
1820 | '@sqlite.org/sqlite-wasm@3.48.0-build4': {}
1821 |
1822 | '@standard-schema/spec@1.0.0': {}
1823 |
1824 | '@sveltejs/acorn-typescript@1.0.8(acorn@8.15.0)':
1825 | dependencies:
1826 | acorn: 8.15.0
1827 |
1828 | '@sveltejs/adapter-cloudflare@7.2.4(@sveltejs/kit@2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)))(wrangler@4.51.0(@cloudflare/workers-types@4.20251128.0))':
1829 | dependencies:
1830 | '@cloudflare/workers-types': 4.20251128.0
1831 | '@sveltejs/kit': 2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))
1832 | worktop: 0.8.0-next.18
1833 | wrangler: 4.51.0(@cloudflare/workers-types@4.20251128.0)
1834 |
1835 | '@sveltejs/kit@2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))':
1836 | dependencies:
1837 | '@standard-schema/spec': 1.0.0
1838 | '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0)
1839 | '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))
1840 | '@types/cookie': 0.6.0
1841 | acorn: 8.15.0
1842 | cookie: 0.6.0
1843 | devalue: 5.5.0
1844 | esm-env: 1.2.2
1845 | kleur: 4.1.5
1846 | magic-string: 0.30.21
1847 | mrmime: 2.0.1
1848 | sade: 1.8.1
1849 | set-cookie-parser: 2.7.2
1850 | sirv: 3.0.2
1851 | svelte: 5.45.2
1852 | vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)
1853 |
1854 | '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))':
1855 | dependencies:
1856 | '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))
1857 | debug: 4.4.3
1858 | svelte: 5.45.2
1859 | vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)
1860 | transitivePeerDependencies:
1861 | - supports-color
1862 |
1863 | '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))':
1864 | dependencies:
1865 | '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.45.2)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))
1866 | debug: 4.4.3
1867 | deepmerge: 4.3.1
1868 | magic-string: 0.30.21
1869 | svelte: 5.45.2
1870 | vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)
1871 | vitefu: 1.1.1(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))
1872 | transitivePeerDependencies:
1873 | - supports-color
1874 |
1875 | '@tailwindcss/node@4.1.17':
1876 | dependencies:
1877 | '@jridgewell/remapping': 2.3.5
1878 | enhanced-resolve: 5.18.3
1879 | jiti: 2.6.1
1880 | lightningcss: 1.30.2
1881 | magic-string: 0.30.21
1882 | source-map-js: 1.2.1
1883 | tailwindcss: 4.1.17
1884 |
1885 | '@tailwindcss/oxide-android-arm64@4.1.17':
1886 | optional: true
1887 |
1888 | '@tailwindcss/oxide-darwin-arm64@4.1.17':
1889 | optional: true
1890 |
1891 | '@tailwindcss/oxide-darwin-x64@4.1.17':
1892 | optional: true
1893 |
1894 | '@tailwindcss/oxide-freebsd-x64@4.1.17':
1895 | optional: true
1896 |
1897 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17':
1898 | optional: true
1899 |
1900 | '@tailwindcss/oxide-linux-arm64-gnu@4.1.17':
1901 | optional: true
1902 |
1903 | '@tailwindcss/oxide-linux-arm64-musl@4.1.17':
1904 | optional: true
1905 |
1906 | '@tailwindcss/oxide-linux-x64-gnu@4.1.17':
1907 | optional: true
1908 |
1909 | '@tailwindcss/oxide-linux-x64-musl@4.1.17':
1910 | optional: true
1911 |
1912 | '@tailwindcss/oxide-wasm32-wasi@4.1.17':
1913 | optional: true
1914 |
1915 | '@tailwindcss/oxide-win32-arm64-msvc@4.1.17':
1916 | optional: true
1917 |
1918 | '@tailwindcss/oxide-win32-x64-msvc@4.1.17':
1919 | optional: true
1920 |
1921 | '@tailwindcss/oxide@4.1.17':
1922 | optionalDependencies:
1923 | '@tailwindcss/oxide-android-arm64': 4.1.17
1924 | '@tailwindcss/oxide-darwin-arm64': 4.1.17
1925 | '@tailwindcss/oxide-darwin-x64': 4.1.17
1926 | '@tailwindcss/oxide-freebsd-x64': 4.1.17
1927 | '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.17
1928 | '@tailwindcss/oxide-linux-arm64-gnu': 4.1.17
1929 | '@tailwindcss/oxide-linux-arm64-musl': 4.1.17
1930 | '@tailwindcss/oxide-linux-x64-gnu': 4.1.17
1931 | '@tailwindcss/oxide-linux-x64-musl': 4.1.17
1932 | '@tailwindcss/oxide-wasm32-wasi': 4.1.17
1933 | '@tailwindcss/oxide-win32-arm64-msvc': 4.1.17
1934 | '@tailwindcss/oxide-win32-x64-msvc': 4.1.17
1935 |
1936 | '@tailwindcss/vite@4.1.17(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2))':
1937 | dependencies:
1938 | '@tailwindcss/node': 4.1.17
1939 | '@tailwindcss/oxide': 4.1.17
1940 | tailwindcss: 4.1.17
1941 | vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)
1942 |
1943 | '@types/cookie@0.6.0': {}
1944 |
1945 | '@types/estree@1.0.8': {}
1946 |
1947 | '@types/node@24.10.1':
1948 | dependencies:
1949 | undici-types: 7.16.0
1950 |
1951 | acorn-walk@8.3.2: {}
1952 |
1953 | acorn@8.14.0: {}
1954 |
1955 | acorn@8.15.0: {}
1956 |
1957 | aria-query@5.3.2: {}
1958 |
1959 | array-timsort@1.0.3: {}
1960 |
1961 | axobject-query@4.1.0: {}
1962 |
1963 | blake3-wasm@2.1.5: {}
1964 |
1965 | chokidar@4.0.3:
1966 | dependencies:
1967 | readdirp: 4.1.2
1968 |
1969 | clsx@2.1.1: {}
1970 |
1971 | color-convert@2.0.1:
1972 | dependencies:
1973 | color-name: 1.1.4
1974 |
1975 | color-name@1.1.4: {}
1976 |
1977 | color-string@1.9.1:
1978 | dependencies:
1979 | color-name: 1.1.4
1980 | simple-swizzle: 0.2.4
1981 |
1982 | color@4.2.3:
1983 | dependencies:
1984 | color-convert: 2.0.1
1985 | color-string: 1.9.1
1986 |
1987 | commander@11.1.0: {}
1988 |
1989 | comment-json@4.4.1:
1990 | dependencies:
1991 | array-timsort: 1.0.3
1992 | core-util-is: 1.0.3
1993 | esprima: 4.0.1
1994 |
1995 | consola@3.4.0: {}
1996 |
1997 | cookie@0.6.0: {}
1998 |
1999 | cookie@1.1.1: {}
2000 |
2001 | core-util-is@1.0.3: {}
2002 |
2003 | debug@4.4.3:
2004 | dependencies:
2005 | ms: 2.1.3
2006 |
2007 | dedent@1.5.1: {}
2008 |
2009 | deepmerge@4.3.1: {}
2010 |
2011 | detect-libc@2.1.2: {}
2012 |
2013 | devalue@5.5.0: {}
2014 |
2015 | enhanced-resolve@5.18.3:
2016 | dependencies:
2017 | graceful-fs: 4.2.11
2018 | tapable: 2.3.0
2019 |
2020 | error-stack-parser-es@1.0.5: {}
2021 |
2022 | esbuild-wasm@0.19.12: {}
2023 |
2024 | esbuild@0.25.12:
2025 | optionalDependencies:
2026 | '@esbuild/aix-ppc64': 0.25.12
2027 | '@esbuild/android-arm': 0.25.12
2028 | '@esbuild/android-arm64': 0.25.12
2029 | '@esbuild/android-x64': 0.25.12
2030 | '@esbuild/darwin-arm64': 0.25.12
2031 | '@esbuild/darwin-x64': 0.25.12
2032 | '@esbuild/freebsd-arm64': 0.25.12
2033 | '@esbuild/freebsd-x64': 0.25.12
2034 | '@esbuild/linux-arm': 0.25.12
2035 | '@esbuild/linux-arm64': 0.25.12
2036 | '@esbuild/linux-ia32': 0.25.12
2037 | '@esbuild/linux-loong64': 0.25.12
2038 | '@esbuild/linux-mips64el': 0.25.12
2039 | '@esbuild/linux-ppc64': 0.25.12
2040 | '@esbuild/linux-riscv64': 0.25.12
2041 | '@esbuild/linux-s390x': 0.25.12
2042 | '@esbuild/linux-x64': 0.25.12
2043 | '@esbuild/netbsd-arm64': 0.25.12
2044 | '@esbuild/netbsd-x64': 0.25.12
2045 | '@esbuild/openbsd-arm64': 0.25.12
2046 | '@esbuild/openbsd-x64': 0.25.12
2047 | '@esbuild/openharmony-arm64': 0.25.12
2048 | '@esbuild/sunos-x64': 0.25.12
2049 | '@esbuild/win32-arm64': 0.25.12
2050 | '@esbuild/win32-ia32': 0.25.12
2051 | '@esbuild/win32-x64': 0.25.12
2052 |
2053 | esbuild@0.25.4:
2054 | optionalDependencies:
2055 | '@esbuild/aix-ppc64': 0.25.4
2056 | '@esbuild/android-arm': 0.25.4
2057 | '@esbuild/android-arm64': 0.25.4
2058 | '@esbuild/android-x64': 0.25.4
2059 | '@esbuild/darwin-arm64': 0.25.4
2060 | '@esbuild/darwin-x64': 0.25.4
2061 | '@esbuild/freebsd-arm64': 0.25.4
2062 | '@esbuild/freebsd-x64': 0.25.4
2063 | '@esbuild/linux-arm': 0.25.4
2064 | '@esbuild/linux-arm64': 0.25.4
2065 | '@esbuild/linux-ia32': 0.25.4
2066 | '@esbuild/linux-loong64': 0.25.4
2067 | '@esbuild/linux-mips64el': 0.25.4
2068 | '@esbuild/linux-ppc64': 0.25.4
2069 | '@esbuild/linux-riscv64': 0.25.4
2070 | '@esbuild/linux-s390x': 0.25.4
2071 | '@esbuild/linux-x64': 0.25.4
2072 | '@esbuild/netbsd-arm64': 0.25.4
2073 | '@esbuild/netbsd-x64': 0.25.4
2074 | '@esbuild/openbsd-arm64': 0.25.4
2075 | '@esbuild/openbsd-x64': 0.25.4
2076 | '@esbuild/sunos-x64': 0.25.4
2077 | '@esbuild/win32-arm64': 0.25.4
2078 | '@esbuild/win32-ia32': 0.25.4
2079 | '@esbuild/win32-x64': 0.25.4
2080 |
2081 | esm-env@1.2.2: {}
2082 |
2083 | esprima@4.0.1: {}
2084 |
2085 | esrap@2.2.0:
2086 | dependencies:
2087 | '@jridgewell/sourcemap-codec': 1.5.5
2088 |
2089 | exit-hook@2.2.1: {}
2090 |
2091 | fdir@6.5.0(picomatch@4.0.3):
2092 | optionalDependencies:
2093 | picomatch: 4.0.3
2094 |
2095 | fsevents@2.3.3:
2096 | optional: true
2097 |
2098 | get-port@7.1.0: {}
2099 |
2100 | glob-to-regexp@0.4.1: {}
2101 |
2102 | graceful-fs@4.2.11: {}
2103 |
2104 | human-id@4.1.3: {}
2105 |
2106 | is-arrayish@0.3.4: {}
2107 |
2108 | is-reference@3.0.3:
2109 | dependencies:
2110 | '@types/estree': 1.0.8
2111 |
2112 | jiti@2.6.1: {}
2113 |
2114 | js-sha256@0.11.1: {}
2115 |
2116 | json5@2.2.3: {}
2117 |
2118 | kleur@4.1.5: {}
2119 |
2120 | kysely@0.27.6: {}
2121 |
2122 | lightningcss-android-arm64@1.30.2:
2123 | optional: true
2124 |
2125 | lightningcss-darwin-arm64@1.30.2:
2126 | optional: true
2127 |
2128 | lightningcss-darwin-x64@1.30.2:
2129 | optional: true
2130 |
2131 | lightningcss-freebsd-x64@1.30.2:
2132 | optional: true
2133 |
2134 | lightningcss-linux-arm-gnueabihf@1.30.2:
2135 | optional: true
2136 |
2137 | lightningcss-linux-arm64-gnu@1.30.2:
2138 | optional: true
2139 |
2140 | lightningcss-linux-arm64-musl@1.30.2:
2141 | optional: true
2142 |
2143 | lightningcss-linux-x64-gnu@1.30.2:
2144 | optional: true
2145 |
2146 | lightningcss-linux-x64-musl@1.30.2:
2147 | optional: true
2148 |
2149 | lightningcss-win32-arm64-msvc@1.30.2:
2150 | optional: true
2151 |
2152 | lightningcss-win32-x64-msvc@1.30.2:
2153 | optional: true
2154 |
2155 | lightningcss@1.30.2:
2156 | dependencies:
2157 | detect-libc: 2.1.2
2158 | optionalDependencies:
2159 | lightningcss-android-arm64: 1.30.2
2160 | lightningcss-darwin-arm64: 1.30.2
2161 | lightningcss-darwin-x64: 1.30.2
2162 | lightningcss-freebsd-x64: 1.30.2
2163 | lightningcss-linux-arm-gnueabihf: 1.30.2
2164 | lightningcss-linux-arm64-gnu: 1.30.2
2165 | lightningcss-linux-arm64-musl: 1.30.2
2166 | lightningcss-linux-x64-gnu: 1.30.2
2167 | lightningcss-linux-x64-musl: 1.30.2
2168 | lightningcss-win32-arm64-msvc: 1.30.2
2169 | lightningcss-win32-x64-msvc: 1.30.2
2170 |
2171 | locate-character@3.0.0: {}
2172 |
2173 | magic-string@0.30.21:
2174 | dependencies:
2175 | '@jridgewell/sourcemap-codec': 1.5.5
2176 |
2177 | mime@3.0.0: {}
2178 |
2179 | miniflare@4.20251125.0:
2180 | dependencies:
2181 | '@cspotcode/source-map-support': 0.8.1
2182 | acorn: 8.14.0
2183 | acorn-walk: 8.3.2
2184 | exit-hook: 2.2.1
2185 | glob-to-regexp: 0.4.1
2186 | sharp: 0.33.5
2187 | stoppable: 1.1.0
2188 | undici: 7.14.0
2189 | workerd: 1.20251125.0
2190 | ws: 8.18.0
2191 | youch: 4.1.0-beta.10
2192 | zod: 3.22.3
2193 | transitivePeerDependencies:
2194 | - bufferutil
2195 | - utf-8-validate
2196 |
2197 | mri@1.2.0: {}
2198 |
2199 | mrmime@2.0.1: {}
2200 |
2201 | ms@2.1.3: {}
2202 |
2203 | nanoid@3.3.11: {}
2204 |
2205 | path-to-regexp@6.3.0: {}
2206 |
2207 | pathe@2.0.3: {}
2208 |
2209 | picocolors@1.1.1: {}
2210 |
2211 | picomatch@4.0.3: {}
2212 |
2213 | postcss@8.5.6:
2214 | dependencies:
2215 | nanoid: 3.3.11
2216 | picocolors: 1.1.1
2217 | source-map-js: 1.2.1
2218 |
2219 | readdirp@4.1.2: {}
2220 |
2221 | regexparam@3.0.0: {}
2222 |
2223 | rollup@4.53.3:
2224 | dependencies:
2225 | '@types/estree': 1.0.8
2226 | optionalDependencies:
2227 | '@rollup/rollup-android-arm-eabi': 4.53.3
2228 | '@rollup/rollup-android-arm64': 4.53.3
2229 | '@rollup/rollup-darwin-arm64': 4.53.3
2230 | '@rollup/rollup-darwin-x64': 4.53.3
2231 | '@rollup/rollup-freebsd-arm64': 4.53.3
2232 | '@rollup/rollup-freebsd-x64': 4.53.3
2233 | '@rollup/rollup-linux-arm-gnueabihf': 4.53.3
2234 | '@rollup/rollup-linux-arm-musleabihf': 4.53.3
2235 | '@rollup/rollup-linux-arm64-gnu': 4.53.3
2236 | '@rollup/rollup-linux-arm64-musl': 4.53.3
2237 | '@rollup/rollup-linux-loong64-gnu': 4.53.3
2238 | '@rollup/rollup-linux-ppc64-gnu': 4.53.3
2239 | '@rollup/rollup-linux-riscv64-gnu': 4.53.3
2240 | '@rollup/rollup-linux-riscv64-musl': 4.53.3
2241 | '@rollup/rollup-linux-s390x-gnu': 4.53.3
2242 | '@rollup/rollup-linux-x64-gnu': 4.53.3
2243 | '@rollup/rollup-linux-x64-musl': 4.53.3
2244 | '@rollup/rollup-openharmony-arm64': 4.53.3
2245 | '@rollup/rollup-win32-arm64-msvc': 4.53.3
2246 | '@rollup/rollup-win32-ia32-msvc': 4.53.3
2247 | '@rollup/rollup-win32-x64-gnu': 4.53.3
2248 | '@rollup/rollup-win32-x64-msvc': 4.53.3
2249 | fsevents: 2.3.3
2250 |
2251 | sade@1.8.1:
2252 | dependencies:
2253 | mri: 1.2.0
2254 |
2255 | semver@7.7.3: {}
2256 |
2257 | set-cookie-parser@2.7.2: {}
2258 |
2259 | sharp@0.33.5:
2260 | dependencies:
2261 | color: 4.2.3
2262 | detect-libc: 2.1.2
2263 | semver: 7.7.3
2264 | optionalDependencies:
2265 | '@img/sharp-darwin-arm64': 0.33.5
2266 | '@img/sharp-darwin-x64': 0.33.5
2267 | '@img/sharp-libvips-darwin-arm64': 1.0.4
2268 | '@img/sharp-libvips-darwin-x64': 1.0.4
2269 | '@img/sharp-libvips-linux-arm': 1.0.5
2270 | '@img/sharp-libvips-linux-arm64': 1.0.4
2271 | '@img/sharp-libvips-linux-s390x': 1.0.4
2272 | '@img/sharp-libvips-linux-x64': 1.0.4
2273 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
2274 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
2275 | '@img/sharp-linux-arm': 0.33.5
2276 | '@img/sharp-linux-arm64': 0.33.5
2277 | '@img/sharp-linux-s390x': 0.33.5
2278 | '@img/sharp-linux-x64': 0.33.5
2279 | '@img/sharp-linuxmusl-arm64': 0.33.5
2280 | '@img/sharp-linuxmusl-x64': 0.33.5
2281 | '@img/sharp-wasm32': 0.33.5
2282 | '@img/sharp-win32-ia32': 0.33.5
2283 | '@img/sharp-win32-x64': 0.33.5
2284 |
2285 | simple-swizzle@0.2.4:
2286 | dependencies:
2287 | is-arrayish: 0.3.4
2288 |
2289 | sirv@3.0.2:
2290 | dependencies:
2291 | '@polka/url': 1.0.0-next.29
2292 | mrmime: 2.0.1
2293 | totalist: 3.0.1
2294 |
2295 | source-map-js@1.2.1: {}
2296 |
2297 | sqlite-wasm-kysely@0.3.0(kysely@0.27.6):
2298 | dependencies:
2299 | '@sqlite.org/sqlite-wasm': 3.48.0-build4
2300 | kysely: 0.27.6
2301 |
2302 | stoppable@1.1.0: {}
2303 |
2304 | supports-color@10.2.2: {}
2305 |
2306 | svelte-check@4.3.4(picomatch@4.0.3)(svelte@5.45.2)(typescript@5.9.3):
2307 | dependencies:
2308 | '@jridgewell/trace-mapping': 0.3.31
2309 | chokidar: 4.0.3
2310 | fdir: 6.5.0(picomatch@4.0.3)
2311 | picocolors: 1.1.1
2312 | sade: 1.8.1
2313 | svelte: 5.45.2
2314 | typescript: 5.9.3
2315 | transitivePeerDependencies:
2316 | - picomatch
2317 |
2318 | svelte@5.45.2:
2319 | dependencies:
2320 | '@jridgewell/remapping': 2.3.5
2321 | '@jridgewell/sourcemap-codec': 1.5.5
2322 | '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0)
2323 | '@types/estree': 1.0.8
2324 | acorn: 8.15.0
2325 | aria-query: 5.3.2
2326 | axobject-query: 4.1.0
2327 | clsx: 2.1.1
2328 | devalue: 5.5.0
2329 | esm-env: 1.2.2
2330 | esrap: 2.2.0
2331 | is-reference: 3.0.3
2332 | locate-character: 3.0.0
2333 | magic-string: 0.30.21
2334 | zimmerframe: 1.1.4
2335 |
2336 | tailwindcss@4.1.17: {}
2337 |
2338 | tapable@2.3.0: {}
2339 |
2340 | tinyglobby@0.2.15:
2341 | dependencies:
2342 | fdir: 6.5.0(picomatch@4.0.3)
2343 | picomatch: 4.0.3
2344 |
2345 | totalist@3.0.1: {}
2346 |
2347 | tslib@2.8.1:
2348 | optional: true
2349 |
2350 | typescript@5.9.3: {}
2351 |
2352 | undici-types@7.16.0: {}
2353 |
2354 | undici@7.14.0: {}
2355 |
2356 | unenv@2.0.0-rc.24:
2357 | dependencies:
2358 | pathe: 2.0.3
2359 |
2360 | unplugin@2.3.11:
2361 | dependencies:
2362 | '@jridgewell/remapping': 2.3.5
2363 | acorn: 8.15.0
2364 | picomatch: 4.0.3
2365 | webpack-virtual-modules: 0.6.2
2366 |
2367 | urlpattern-polyfill@10.1.0: {}
2368 |
2369 | uuid@10.0.0: {}
2370 |
2371 | uuid@11.1.0: {}
2372 |
2373 | vite-plugin-devtools-json@0.1.1(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)):
2374 | dependencies:
2375 | uuid: 11.1.0
2376 | vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)
2377 |
2378 | vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2):
2379 | dependencies:
2380 | esbuild: 0.25.12
2381 | fdir: 6.5.0(picomatch@4.0.3)
2382 | picomatch: 4.0.3
2383 | postcss: 8.5.6
2384 | rollup: 4.53.3
2385 | tinyglobby: 0.2.15
2386 | optionalDependencies:
2387 | '@types/node': 24.10.1
2388 | fsevents: 2.3.3
2389 | jiti: 2.6.1
2390 | lightningcss: 1.30.2
2391 |
2392 | vitefu@1.1.1(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)):
2393 | optionalDependencies:
2394 | vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)
2395 |
2396 | webpack-virtual-modules@0.6.2: {}
2397 |
2398 | workerd@1.20251125.0:
2399 | optionalDependencies:
2400 | '@cloudflare/workerd-darwin-64': 1.20251125.0
2401 | '@cloudflare/workerd-darwin-arm64': 1.20251125.0
2402 | '@cloudflare/workerd-linux-64': 1.20251125.0
2403 | '@cloudflare/workerd-linux-arm64': 1.20251125.0
2404 | '@cloudflare/workerd-windows-64': 1.20251125.0
2405 |
2406 | worktop@0.8.0-next.18:
2407 | dependencies:
2408 | mrmime: 2.0.1
2409 | regexparam: 3.0.0
2410 |
2411 | wrangler@4.51.0(@cloudflare/workers-types@4.20251128.0):
2412 | dependencies:
2413 | '@cloudflare/kv-asset-handler': 0.4.1
2414 | '@cloudflare/unenv-preset': 2.7.11(unenv@2.0.0-rc.24)(workerd@1.20251125.0)
2415 | blake3-wasm: 2.1.5
2416 | esbuild: 0.25.4
2417 | miniflare: 4.20251125.0
2418 | path-to-regexp: 6.3.0
2419 | unenv: 2.0.0-rc.24
2420 | workerd: 1.20251125.0
2421 | optionalDependencies:
2422 | '@cloudflare/workers-types': 4.20251128.0
2423 | fsevents: 2.3.3
2424 | transitivePeerDependencies:
2425 | - bufferutil
2426 | - utf-8-validate
2427 |
2428 | ws@8.18.0: {}
2429 |
2430 | youch-core@0.3.3:
2431 | dependencies:
2432 | '@poppinss/exception': 1.2.2
2433 | error-stack-parser-es: 1.0.5
2434 |
2435 | youch@4.1.0-beta.10:
2436 | dependencies:
2437 | '@poppinss/colors': 4.1.5
2438 | '@poppinss/dumper': 0.6.5
2439 | '@speed-highlight/core': 1.2.12
2440 | cookie: 1.1.1
2441 | youch-core: 0.3.3
2442 |
2443 | zimmerframe@1.1.4: {}
2444 |
2445 | zod@3.22.3: {}
2446 |
--------------------------------------------------------------------------------