diff --git a/.cursor/rules/actor-core-rules.mdc b/.cursor/rules/actor-core-rules.mdc index 4de859b00..c407cdbf0 100644 --- a/.cursor/rules/actor-core-rules.mdc +++ b/.cursor/rules/actor-core-rules.mdc @@ -1,6 +1,6 @@ --- description: ActorCore rules -globs: +globs: alwaysApply: false --- # ActorCore Development Guide @@ -59,11 +59,11 @@ When importing from workspace packages, always check the package's `package.json - **Formatting:** Uses Biome for consistent formatting - **Imports:** Organized imports enforced, unused imports warned - **TypeScript:** Strict mode enabled, target ESNext -- **Naming:** +- **Naming:** - camelCase for variables, functions - PascalCase for classes, interfaces, types - UPPER_CASE for constants -- **Error Handling:** +- **Error Handling:** - Use `UserError` for client-safe errors - Use `InternalError` for internal errors @@ -105,7 +105,7 @@ When importing from workspace packages, always check the package's `package.json - `createState()`: Function that returns initial actor state - `onStart(c)`: Called any time actor is started (after restart/upgrade) -- `onStateChange(c, newState)`: Called when actor state changes +- `onStateChange(c,prevState, newState)`: Called when actor state changes - `onBeforeConnect(c)`: Called when new client connects - `onConnect(c)`: Executed after client connection succeeds - `onDisconnect(c)`: Called when client disconnects @@ -144,4 +144,4 @@ When importing from workspace packages, always check the package's `package.json - Use `assertUnreachable(x: never)` for exhaustive type checking - Add proper JSDoc comments for public APIs - Run `yarn check-types` regularly during development -- Use `tsx` CLI to execute TypeScript scripts directly \ No newline at end of file +- Use `tsx` CLI to execute TypeScript scripts directly diff --git a/.gitignore b/.gitignore index fbba480f7..696fba77e 100644 --- a/.gitignore +++ b/.gitignore @@ -93,7 +93,12 @@ out # Nuxt.js build / generate output .nuxt -dist + +# Build output - ignore dist folders except in packages/actor +dist/ +packages/*/dist/ +examples/*/dist/ +!packages/actor/dist/ # Gatsby files .cache/ diff --git a/examples/svelte/.gitignore b/examples/svelte/.gitignore new file mode 100644 index 000000000..3b462cb0c --- /dev/null +++ b/examples/svelte/.gitignore @@ -0,0 +1,23 @@ +node_modules + +# Output +.output +.vercel +.netlify +.wrangler +/.svelte-kit +/build + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/examples/svelte/.npmrc b/examples/svelte/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/examples/svelte/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/examples/svelte/README.md b/examples/svelte/README.md new file mode 100644 index 000000000..75842c404 --- /dev/null +++ b/examples/svelte/README.md @@ -0,0 +1,38 @@ +# sv + +Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```sh +# create a new project in the current directory +npx sv create + +# create a new project in my-app +npx sv create my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```sh +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```sh +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/examples/svelte/backend/index.ts b/examples/svelte/backend/index.ts new file mode 100644 index 000000000..ed20d2c55 --- /dev/null +++ b/examples/svelte/backend/index.ts @@ -0,0 +1,9 @@ +import { registry } from "./registry"; + +export type Registry = typeof registry; + +registry.runServer({ + cors: { + origin: "http://localhost:5173", + }, +}); diff --git a/examples/svelte/backend/registry.ts b/examples/svelte/backend/registry.ts new file mode 100644 index 000000000..575edd974 --- /dev/null +++ b/examples/svelte/backend/registry.ts @@ -0,0 +1,25 @@ +import { actor, setup } from "@rivetkit/actor"; + +export const counter = actor({ + onAuth: () => { + // Configure auth here + }, + state: { count: 0 }, + actions: { + increment: (c, x: number) => { + console.log("incrementing by", x); + c.state.count += x; + c.broadcast("newCount", c.state.count); + return c.state.count; + }, + reset: (c) => { + c.state.count = 0; + c.broadcast("newCount", c.state.count); + return c.state.count; + }, + }, +}); + +export const registry = setup({ + use: { counter }, +}); diff --git a/examples/svelte/package.json b/examples/svelte/package.json new file mode 100644 index 000000000..b0595b124 --- /dev/null +++ b/examples/svelte/package.json @@ -0,0 +1,30 @@ +{ + "name": "svelte-rivetkit-example", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "dev": "run-p dev:web dev:api", + "dev:web": "vite dev", + "dev:api": "tsx --watch backend/index.ts", + "build": "vite build", + "preview": "vite preview", + "prepare": "svelte-kit sync || echo ''", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" + }, + "devDependencies": { + "@rivetkit/actor": "workspace:*", + "@rivetkit/svelte": "workspace:*", + "@sveltejs/adapter-auto": "^6.0.0", + "@sveltejs/kit": "^2.22.0", + "@sveltejs/vite-plugin-svelte": "^6.0.0", + "@types/node": "^22.13.9", + "svelte": "^5.0.0", + "svelte-check": "^4.0.0", + "typescript": "^5.0.0", + "vite": "^7.0.4", + "npm-run-all": "^4.1.5", + "tsx": "^3.12.7" + } +} diff --git a/examples/svelte/src/app.d.ts b/examples/svelte/src/app.d.ts new file mode 100644 index 000000000..da08e6da5 --- /dev/null +++ b/examples/svelte/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://svelte.dev/docs/kit/types#app.d.ts +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/examples/svelte/src/app.html b/examples/svelte/src/app.html new file mode 100644 index 000000000..f273cc58f --- /dev/null +++ b/examples/svelte/src/app.html @@ -0,0 +1,11 @@ + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/examples/svelte/src/lib/actor-client.ts b/examples/svelte/src/lib/actor-client.ts new file mode 100644 index 000000000..3e1952c67 --- /dev/null +++ b/examples/svelte/src/lib/actor-client.ts @@ -0,0 +1,5 @@ +import { createClient, createRivetKit } from "@rivetkit/svelte"; +import type { Registry } from "../../backend"; + +const client = createClient(`http://localhost:8080`); +export const { useActor } = createRivetKit(client); diff --git a/examples/svelte/src/lib/assets/favicon.svg b/examples/svelte/src/lib/assets/favicon.svg new file mode 100644 index 000000000..cc5dc66a3 --- /dev/null +++ b/examples/svelte/src/lib/assets/favicon.svg @@ -0,0 +1 @@ +svelte-logo \ No newline at end of file diff --git a/examples/svelte/src/lib/index.ts b/examples/svelte/src/lib/index.ts new file mode 100644 index 000000000..856f2b6c3 --- /dev/null +++ b/examples/svelte/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/examples/svelte/src/routes/+layout.server.ts b/examples/svelte/src/routes/+layout.server.ts new file mode 100644 index 000000000..a3d15781a --- /dev/null +++ b/examples/svelte/src/routes/+layout.server.ts @@ -0,0 +1 @@ +export const ssr = false; diff --git a/examples/svelte/src/routes/+layout.svelte b/examples/svelte/src/routes/+layout.svelte new file mode 100644 index 000000000..20f8d044f --- /dev/null +++ b/examples/svelte/src/routes/+layout.svelte @@ -0,0 +1,11 @@ + + + + + + +{@render children?.()} diff --git a/examples/svelte/src/routes/+page.svelte b/examples/svelte/src/routes/+page.svelte new file mode 100644 index 000000000..31fdeeb0f --- /dev/null +++ b/examples/svelte/src/routes/+page.svelte @@ -0,0 +1,40 @@ + + +
+

Counter: {count}

+ + +
diff --git a/examples/svelte/static/robots.txt b/examples/svelte/static/robots.txt new file mode 100644 index 000000000..b6dd6670c --- /dev/null +++ b/examples/svelte/static/robots.txt @@ -0,0 +1,3 @@ +# allow crawling everything by default +User-agent: * +Disallow: diff --git a/examples/svelte/svelte.config.js b/examples/svelte/svelte.config.js new file mode 100644 index 000000000..ee7b6dcdc --- /dev/null +++ b/examples/svelte/svelte.config.js @@ -0,0 +1,24 @@ +import adapter from "@sveltejs/adapter-auto"; +import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://svelte.dev/docs/kit/integrations + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. + // If your environment is not supported, or you settled on a specific environment, switch out the adapter. + // See https://svelte.dev/docs/kit/adapters for more information about adapters. + adapter: adapter(), + alias: { + $: "./src", + "$/*": "./src/*", + $backend: "./backend", + "$backend/*": "./backend/*", + }, + }, +}; + +export default config; diff --git a/examples/svelte/tsconfig.json b/examples/svelte/tsconfig.json new file mode 100644 index 000000000..3fa098ab6 --- /dev/null +++ b/examples/svelte/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler", + "baseUrl": "./", + "paths": { + "$/": ["./src/"], + "$backend/": ["./backend/"] + } + } + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/examples/svelte/turbo.json b/examples/svelte/turbo.json new file mode 100644 index 000000000..95960709b --- /dev/null +++ b/examples/svelte/turbo.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://turbo.build/schema.json", + "extends": ["//"] +} diff --git a/examples/svelte/vite.config.ts b/examples/svelte/vite.config.ts new file mode 100644 index 000000000..6b9eb5d39 --- /dev/null +++ b/examples/svelte/vite.config.ts @@ -0,0 +1,6 @@ +import { sveltekit } from "@sveltejs/kit/vite"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [sveltekit()], +}); diff --git a/examples/sync/tsconfig.json b/examples/sync/tsconfig.json index 4232a7296..670d5b1d3 100644 --- a/examples/sync/tsconfig.json +++ b/examples/sync/tsconfig.json @@ -15,6 +15,6 @@ "noUnusedParameters": true, "noFallthroughCasesInSwitch": true }, - "include": ["src", "tests"], + "include": ["src", "backend"], "exclude": ["node_modules", "dist"] } diff --git a/package.json b/package.json index 3f9f44d26..c754cea57 100644 --- a/package.json +++ b/package.json @@ -37,5 +37,10 @@ "@hono/node-ws": "^1.1.7", "esbuild": "^0.25.1" }, - "packageManager": "pnpm@10.7.1+sha512.2d92c86b7928dc8284f53494fb4201f983da65f0fb4f0d40baafa5cf628fa31dae3e5968f12466f17df7e97310e30f343a648baea1b9b350685dafafffdf5808" + "packageManager": "pnpm@10.7.1+sha512.2d92c86b7928dc8284f53494fb4201f983da65f0fb4f0d40baafa5cf628fa31dae3e5968f12466f17df7e97310e30f343a648baea1b9b350685dafafffdf5808", + "pnpm": { + "onlyBuiltDependencies": [ + "esbuild" + ] + } } diff --git a/packages/actor/dist/client.cjs b/packages/actor/dist/client.cjs new file mode 100644 index 000000000..b97d204bc --- /dev/null +++ b/packages/actor/dist/client.cjs @@ -0,0 +1,3 @@ +"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }// src/client.ts +var _client = require('@rivetkit/core/client'); _createStarExport(_client); +//# sourceMappingURL=client.cjs.map \ No newline at end of file diff --git a/packages/actor/dist/client.cjs.map b/packages/actor/dist/client.cjs.map new file mode 100644 index 000000000..e3db939c2 --- /dev/null +++ b/packages/actor/dist/client.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["/Users/josi/Documents/ShiftLabs/Projects/rivetkit/packages/actor/dist/client.cjs","../src/client.ts"],"names":[],"mappings":"AAAA;ACAA,2EAAc","file":"/Users/josi/Documents/ShiftLabs/Projects/rivetkit/packages/actor/dist/client.cjs","sourcesContent":[null,"export * from \"@rivetkit/core/client\";\n"]} \ No newline at end of file diff --git a/packages/actor/dist/client.d.cts b/packages/actor/dist/client.d.cts new file mode 100644 index 000000000..d1b593b7b --- /dev/null +++ b/packages/actor/dist/client.d.cts @@ -0,0 +1,5 @@ +export * from '@rivetkit/core/client'; +import '@rivetkit/core/errors'; +import '@rivetkit/core/log'; +import '@rivetkit/core'; +import '@rivetkit/core/test'; diff --git a/packages/actor/dist/client.d.ts b/packages/actor/dist/client.d.ts new file mode 100644 index 000000000..7657d1596 --- /dev/null +++ b/packages/actor/dist/client.d.ts @@ -0,0 +1,5 @@ +export * from "@rivetkit/core/client"; +import "@rivetkit/core/errors"; +import "@rivetkit/core/log"; +import "@rivetkit/core"; +import "@rivetkit/core/test"; diff --git a/packages/actor/dist/client.js b/packages/actor/dist/client.js new file mode 100644 index 000000000..95f65ea7c --- /dev/null +++ b/packages/actor/dist/client.js @@ -0,0 +1,3 @@ +// src/client.ts +export * from "@rivetkit/core/client"; +//# sourceMappingURL=client.js.map diff --git a/packages/actor/dist/client.js.map b/packages/actor/dist/client.js.map new file mode 100644 index 000000000..09d2cd2c5 --- /dev/null +++ b/packages/actor/dist/client.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/client.ts"],"sourcesContent":["export * from \"@rivetkit/core/client\";\n"],"mappings":";AAAA,cAAc;","names":[]} \ No newline at end of file diff --git a/packages/actor/dist/errors.cjs b/packages/actor/dist/errors.cjs new file mode 100644 index 000000000..970bd23a1 --- /dev/null +++ b/packages/actor/dist/errors.cjs @@ -0,0 +1,3 @@ +"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }// src/errors.ts +var _errors = require('@rivetkit/core/errors'); _createStarExport(_errors); +//# sourceMappingURL=errors.cjs.map \ No newline at end of file diff --git a/packages/actor/dist/errors.cjs.map b/packages/actor/dist/errors.cjs.map new file mode 100644 index 000000000..3669f0751 --- /dev/null +++ b/packages/actor/dist/errors.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["/Users/josi/Documents/ShiftLabs/Projects/rivetkit/packages/actor/dist/errors.cjs","../src/errors.ts"],"names":[],"mappings":"AAAA;ACAA,2EAAc","file":"/Users/josi/Documents/ShiftLabs/Projects/rivetkit/packages/actor/dist/errors.cjs","sourcesContent":[null,"export * from \"@rivetkit/core/errors\";\n"]} \ No newline at end of file diff --git a/packages/actor/dist/errors.d.cts b/packages/actor/dist/errors.d.cts new file mode 100644 index 000000000..162d2c1ba --- /dev/null +++ b/packages/actor/dist/errors.d.cts @@ -0,0 +1 @@ +export * from '@rivetkit/core/errors'; diff --git a/packages/actor/dist/errors.d.ts b/packages/actor/dist/errors.d.ts new file mode 100644 index 000000000..ef2b8676a --- /dev/null +++ b/packages/actor/dist/errors.d.ts @@ -0,0 +1 @@ +export * from "@rivetkit/core/errors"; diff --git a/packages/actor/dist/errors.js b/packages/actor/dist/errors.js new file mode 100644 index 000000000..f6a9f276d --- /dev/null +++ b/packages/actor/dist/errors.js @@ -0,0 +1,3 @@ +// src/errors.ts +export * from "@rivetkit/core/errors"; +//# sourceMappingURL=errors.js.map diff --git a/packages/actor/dist/errors.js.map b/packages/actor/dist/errors.js.map new file mode 100644 index 000000000..4d55ed9c2 --- /dev/null +++ b/packages/actor/dist/errors.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/errors.ts"],"sourcesContent":["export * from \"@rivetkit/core/errors\";\n"],"mappings":";AAAA,cAAc;","names":[]} \ No newline at end of file diff --git a/packages/actor/dist/log.cjs b/packages/actor/dist/log.cjs new file mode 100644 index 000000000..8dd16117a --- /dev/null +++ b/packages/actor/dist/log.cjs @@ -0,0 +1,3 @@ +"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }// src/log.ts +var _log = require('@rivetkit/core/log'); _createStarExport(_log); +//# sourceMappingURL=log.cjs.map \ No newline at end of file diff --git a/packages/actor/dist/log.cjs.map b/packages/actor/dist/log.cjs.map new file mode 100644 index 000000000..d25b8b262 --- /dev/null +++ b/packages/actor/dist/log.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["/Users/josi/Documents/ShiftLabs/Projects/rivetkit/packages/actor/dist/log.cjs","../src/log.ts"],"names":[],"mappings":"AAAA;ACAA,kEAAc","file":"/Users/josi/Documents/ShiftLabs/Projects/rivetkit/packages/actor/dist/log.cjs","sourcesContent":[null,"export * from \"@rivetkit/core/log\";\n"]} \ No newline at end of file diff --git a/packages/actor/dist/log.d.cts b/packages/actor/dist/log.d.cts new file mode 100644 index 000000000..ac3f460ea --- /dev/null +++ b/packages/actor/dist/log.d.cts @@ -0,0 +1 @@ +export * from '@rivetkit/core/log'; diff --git a/packages/actor/dist/log.d.ts b/packages/actor/dist/log.d.ts new file mode 100644 index 000000000..dd1ff77fe --- /dev/null +++ b/packages/actor/dist/log.d.ts @@ -0,0 +1 @@ +export * from "@rivetkit/core/log"; diff --git a/packages/actor/dist/log.js b/packages/actor/dist/log.js new file mode 100644 index 000000000..96ecf2866 --- /dev/null +++ b/packages/actor/dist/log.js @@ -0,0 +1,3 @@ +// src/log.ts +export * from "@rivetkit/core/log"; +//# sourceMappingURL=log.js.map diff --git a/packages/actor/dist/log.js.map b/packages/actor/dist/log.js.map new file mode 100644 index 000000000..00e32eacf --- /dev/null +++ b/packages/actor/dist/log.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/log.ts"],"sourcesContent":["export * from \"@rivetkit/core/log\";\n"],"mappings":";AAAA,cAAc;","names":[]} \ No newline at end of file diff --git a/packages/actor/dist/mod.cjs b/packages/actor/dist/mod.cjs new file mode 100644 index 000000000..e32fe24db --- /dev/null +++ b/packages/actor/dist/mod.cjs @@ -0,0 +1,3 @@ +"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }// src/mod.ts +var _core = require('@rivetkit/core'); _createStarExport(_core); +//# sourceMappingURL=mod.cjs.map \ No newline at end of file diff --git a/packages/actor/dist/mod.cjs.map b/packages/actor/dist/mod.cjs.map new file mode 100644 index 000000000..cf0966536 --- /dev/null +++ b/packages/actor/dist/mod.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["/Users/josi/Documents/ShiftLabs/Projects/rivetkit/packages/actor/dist/mod.cjs","../src/mod.ts"],"names":[],"mappings":"AAAA;ACAA,gEAAc","file":"/Users/josi/Documents/ShiftLabs/Projects/rivetkit/packages/actor/dist/mod.cjs","sourcesContent":[null,"export * from \"@rivetkit/core\";\n"]} \ No newline at end of file diff --git a/packages/actor/dist/mod.d.cts b/packages/actor/dist/mod.d.cts new file mode 100644 index 000000000..4a4a25ff6 --- /dev/null +++ b/packages/actor/dist/mod.d.cts @@ -0,0 +1 @@ +export * from '@rivetkit/core'; diff --git a/packages/actor/dist/mod.d.ts b/packages/actor/dist/mod.d.ts new file mode 100644 index 000000000..d00787ee2 --- /dev/null +++ b/packages/actor/dist/mod.d.ts @@ -0,0 +1 @@ +export * from "@rivetkit/core"; diff --git a/packages/actor/dist/mod.js b/packages/actor/dist/mod.js new file mode 100644 index 000000000..0a2ea159c --- /dev/null +++ b/packages/actor/dist/mod.js @@ -0,0 +1,3 @@ +// src/mod.ts +export * from "@rivetkit/core"; +//# sourceMappingURL=mod.js.map diff --git a/packages/actor/dist/mod.js.map b/packages/actor/dist/mod.js.map new file mode 100644 index 000000000..7f62cc3d3 --- /dev/null +++ b/packages/actor/dist/mod.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/mod.ts"],"sourcesContent":["export * from \"@rivetkit/core\";\n"],"mappings":";AAAA,cAAc;","names":[]} \ No newline at end of file diff --git a/packages/actor/dist/test.cjs b/packages/actor/dist/test.cjs new file mode 100644 index 000000000..22c09e7c5 --- /dev/null +++ b/packages/actor/dist/test.cjs @@ -0,0 +1,3 @@ +"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }// src/test.ts +var _test = require('@rivetkit/core/test'); _createStarExport(_test); +//# sourceMappingURL=test.cjs.map \ No newline at end of file diff --git a/packages/actor/dist/test.cjs.map b/packages/actor/dist/test.cjs.map new file mode 100644 index 000000000..8b1139df2 --- /dev/null +++ b/packages/actor/dist/test.cjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["/Users/josi/Documents/ShiftLabs/Projects/rivetkit/packages/actor/dist/test.cjs","../src/test.ts"],"names":[],"mappings":"AAAA;ACAA,qEAAc","file":"/Users/josi/Documents/ShiftLabs/Projects/rivetkit/packages/actor/dist/test.cjs","sourcesContent":[null,"export * from \"@rivetkit/core/test\";\n"]} \ No newline at end of file diff --git a/packages/actor/dist/test.d.cts b/packages/actor/dist/test.d.cts new file mode 100644 index 000000000..7b539cbee --- /dev/null +++ b/packages/actor/dist/test.d.cts @@ -0,0 +1 @@ +export * from '@rivetkit/core/test'; diff --git a/packages/actor/dist/test.d.ts b/packages/actor/dist/test.d.ts new file mode 100644 index 000000000..1356b6872 --- /dev/null +++ b/packages/actor/dist/test.d.ts @@ -0,0 +1 @@ +export * from "@rivetkit/core/test"; diff --git a/packages/actor/dist/test.js b/packages/actor/dist/test.js new file mode 100644 index 000000000..111c48292 --- /dev/null +++ b/packages/actor/dist/test.js @@ -0,0 +1,3 @@ +// src/test.ts +export * from "@rivetkit/core/test"; +//# sourceMappingURL=test.js.map diff --git a/packages/actor/dist/test.js.map b/packages/actor/dist/test.js.map new file mode 100644 index 000000000..de6a64cdb --- /dev/null +++ b/packages/actor/dist/test.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/test.ts"],"sourcesContent":["export * from \"@rivetkit/core/test\";\n"],"mappings":";AAAA,cAAc;","names":[]} \ No newline at end of file diff --git a/packages/frameworks/svelte/.gitignore b/packages/frameworks/svelte/.gitignore new file mode 100644 index 000000000..294b38578 --- /dev/null +++ b/packages/frameworks/svelte/.gitignore @@ -0,0 +1,24 @@ +node_modules + +# Output +.output +.vercel +.netlify +.wrangler +/.svelte-kit +/build +/dist + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/packages/frameworks/svelte/.npmrc b/packages/frameworks/svelte/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/packages/frameworks/svelte/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/packages/frameworks/svelte/README.md b/packages/frameworks/svelte/README.md new file mode 100644 index 000000000..db0de8214 --- /dev/null +++ b/packages/frameworks/svelte/README.md @@ -0,0 +1,342 @@ +# RivetKit Svelte + +A Svelte 5 integration for [RivetKit](https://rivetkit.com) that provides reactive actor connections using Svelte's new runes system. + +## Installation + +```sh +pnpm add @rivetkit/svelte + +# or + +npm i @rivetkit/svelte +``` + +## Overview + +RivetKit Svelte provides seamless integration between RivetKit's actor system and Svelte 5's reactive runes. It allows you to connect to RivetKit actors from your Svelte components with automatic reactivity, real-time event handling, and type safety. + +## Features + +- **Svelte 5 Runes Integration** - Built specifically for Svelte 5's new reactivity system +- **Real-time Actor Connections** - Connect to RivetKit actors with automatic state synchronization +- **Event Handling** - Listen to actor events with automatic cleanup +- **Type Safety** - Full TypeScript support with proper type inference +- **SSR Compatible** - Works with SvelteKit's server-side rendering +- **Automatic Reconnection** - Handles connection states and errors gracefully + +## Quick Start + +### Step 1: Set Up Your RivetKit Backend + +First, create your RivetKit actors and registry. Here's a simple counter example: + +```typescript +// backend/registry.ts +import { actor, setup } from "@rivetkit/actor"; + +export const counter = actor({ + onAuth: () => { + // Configure auth here if needed + }, + state: { count: 0 }, + actions: { + increment: (c, x: number) => { + console.log("incrementing by", x); + c.state.count += x; + c.broadcast("newCount", c.state.count); + return c.state.count; + }, + reset: (c) => { + c.state.count = 0; + c.broadcast("newCount", c.state.count); + return c.state.count; + }, + }, +}); + +export const registry = setup({ + use: { counter }, +}); +``` + +### Step 2: Start Your RivetKit Server + +```typescript +// backend/index.ts +import { registry } from "./registry"; + +export type Registry = typeof registry; + +registry.runServer({ + cors: { + origin: "http://localhost:5173", // Your Svelte app URL + }, +}); +``` + +### Step 3: Create the Client Connection + +In your Svelte app, create a client connection to your RivetKit server: + +```typescript +// src/lib/actor-client.ts +import { createClient, createRivetKit } from "@rivetkit/svelte"; +import type { Registry } from "../../backend"; + +const client = createClient(`http://localhost:8080`); +export const { useActor } = createRivetKit(client); +``` + +### Step 4: Use Actors in Your Svelte Components + +Now you can use the `useActor` function in your Svelte 5 components: + +```svelte + + + +
+

Counter: {count}

+ + +
+``` + +## Core Concepts + +### useActor Hook + +The `useActor` function is the main way to connect to RivetKit actors from your Svelte components. It returns a reactive object with the following properties: + +- **`connection`** - The actor connection object for calling actions +- **`handle`** - The actor handle for advanced operations +- **`isConnected`** - Boolean indicating if the actor is connected +- **`isConnecting`** - Boolean indicating if the actor is currently connecting +- **`isError`** - Boolean indicating if there's an error +- **`error`** - The error object if one exists +- **`useEvent`** - Function to listen for actor events + +### Actor Options + +When calling `useActor`, you need to provide: + +```typescript +const actor = useActor({ + name: 'counter', // The actor name from your registry + key: ['test-counter'], // Unique key for this actor instance + params: { /* ... */ }, // Optional parameters + enabled: true // Optional, defaults to true +}); +``` + +## Event Handling + +### Using useEvent + +The `useEvent` function allows you to listen for events broadcast by actors: + +```svelte + +``` + +### Alternative Event Listening + +You can also listen to events directly on the connection: + +```svelte + +``` + +## Advanced Usage + +### Conditional Actor Connections + +You can conditionally enable/disable actor connections: + +```svelte + +``` + +### Multiple Actor Instances + +You can connect to multiple instances of the same actor: + +```svelte + +``` + +### Error Handling + +Handle connection errors gracefully: + +```svelte + + +{#if actor?.isError} +
+ Connection failed: {actor.error?.message} +
+{:else if actor?.isConnecting} +
Connecting...
+{:else if actor?.isConnected} +
Connected!
+{/if} +``` + +## API Reference + +### createClient(url: string) + +Creates a client connection to your RivetKit server. + +```typescript +import { createClient } from "@rivetkit/svelte"; + +const client = createClient("http://localhost:8080"); +``` + +### createRivetKit(client: Client) + +Creates the RivetKit integration with your client. + +```typescript +import { createRivetKit } from "@rivetkit/svelte"; + +const { useActor } = createRivetKit(client); +``` + +### useActor(options: ActorOptions) + +Connects to a RivetKit actor and returns reactive state. + +**Parameters:** +- `name: string` - The actor name from your registry +- `key: string | string[]` - Unique identifier for the actor instance +- `params?: Record` - Optional parameters to pass to the actor +- `enabled?: boolean` - Whether the connection is enabled (default: true) + +**Returns:** +- `connection` - Actor connection for calling actions +- `handle` - Actor handle for advanced operations +- `isConnected` - Connection status +- `isConnecting` - Loading state +- `isError` - Error state +- `error` - Error object +- `useEvent` - Function to listen for events + +## TypeScript Support + +RivetKit Svelte provides full TypeScript support. Make sure to type your registry: + +```typescript +// backend/index.ts +export type Registry = typeof registry; + +// frontend/actor-client.ts +import type { Registry } from "../../backend"; +const client = createClient("http://localhost:8080"); +``` + +## SvelteKit Integration + +RivetKit Svelte works seamlessly with SvelteKit. The library automatically detects browser environment and handles SSR appropriately. + +```svelte + + +``` + +## Examples + +Check out the `examples` folder in this repository for a complete working example with: +- Backend RivetKit server setup +- Frontend Svelte integration +- Real-time counter with events +- TypeScript configuration + +## Contributing + +Contributions are welcome! Please read our contributing guidelines and submit pull requests to our repository. + +## License + +MIT License - see LICENSE file for details. diff --git a/packages/frameworks/svelte/package.json b/packages/frameworks/svelte/package.json new file mode 100644 index 000000000..a11e15420 --- /dev/null +++ b/packages/frameworks/svelte/package.json @@ -0,0 +1,53 @@ +{ + "name": "@rivetkit/svelte", + "version": "0.9.9", + "license": "Apache-2.0", + "keywords": [ + "rivetkit", + "svelte", + "framework", + "actors", + "stateful", + "serverless" + ], + "sideEffects": false, + "type": "module", + "files": [ + "dist", + "package.json" + ], + "exports": { + ".": { + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + } + }, + "scripts": { + "dev": "vite build --watch", + "build": "tsc && vite build", + "check-types": "tsc --noEmit", + "check": "tsc --noEmit" + }, + "peerDependencies": { + "@rivetkit/core": "*", + "svelte": "^5.0.0" + }, + "dependencies": { + "@rivetkit/framework-base": "workspace:*", + "esm-env": "^1.2.1" + }, + "devDependencies": { + "@rivetkit/core": "workspace:*", + "svelte": "^5.0.0", + "typescript": "^5.5.2", + "vite": "^6.3.5", + "vite-plugin-dts": "^4.5.4" + }, + "stableVersion": "0.8.0" +} diff --git a/packages/frameworks/svelte/src/app.d.ts b/packages/frameworks/svelte/src/app.d.ts new file mode 100644 index 000000000..da08e6da5 --- /dev/null +++ b/packages/frameworks/svelte/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://svelte.dev/docs/kit/types#app.d.ts +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/packages/frameworks/svelte/src/app.html b/packages/frameworks/svelte/src/app.html new file mode 100644 index 000000000..ed39a5af8 --- /dev/null +++ b/packages/frameworks/svelte/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/packages/frameworks/svelte/src/index.ts b/packages/frameworks/svelte/src/index.ts new file mode 100644 index 000000000..d2a27dea3 --- /dev/null +++ b/packages/frameworks/svelte/src/index.ts @@ -0,0 +1 @@ +export * from "./rivet.svelte.js"; diff --git a/packages/frameworks/svelte/src/lib/index.ts b/packages/frameworks/svelte/src/lib/index.ts new file mode 100644 index 000000000..d2a27dea3 --- /dev/null +++ b/packages/frameworks/svelte/src/lib/index.ts @@ -0,0 +1 @@ +export * from "./rivet.svelte.js"; diff --git a/packages/frameworks/svelte/src/lib/rivet.svelte.ts b/packages/frameworks/svelte/src/lib/rivet.svelte.ts new file mode 100644 index 000000000..21ab40e12 --- /dev/null +++ b/packages/frameworks/svelte/src/lib/rivet.svelte.ts @@ -0,0 +1,190 @@ +import type { + ActorConn, + ActorHandle, + AnyActorDefinition, + Client, + ExtractActorsFromRegistry, +} from "@rivetkit/core/client"; +import { + type ActorOptions, + type AnyActorRegistry, + type CreateRivetKitOptions, + createRivetKit as createVanillaRivetKit, +} from "@rivetkit/framework-base"; +import { useStore } from "@tanstack/svelte-store"; + +export interface ActorStateReference { + /** + * The unique identifier for the actor. + * This is a hash generated from the actor's options. + * It is used to identify the actor instance in the store. + * @internal + */ + hash: string; + /** + * The state of the actor, derived from the store. + * This includes the actor's connection and handle. + */ + handle: ActorHandle | null; + /** + * The connection to the actor. + * This is used to communicate with the actor in realtime. + */ + connection: ActorConn | null; + /** + * Whether the actor is enabled. + */ + isConnected?: boolean; + /** + * Whether the actor is currently connecting, indicating that a connection attempt is in progress. + */ + isConnecting?: boolean; + /** + * Whether there was an error connecting to the actor. + */ + isError?: boolean; + /** + * The error that occurred while trying to connect to the actor, if any. + */ + error: Error | null; + /** + * Options for the actor, including its name, key, parameters, and whether it is enabled. + */ + opts: { + name: keyof AD; + /** + * Unique key for the actor instance. + * This can be a string or an array of strings to create multiple instances. + * @example "abc" or ["abc", "def"] + */ + key: string | string[]; + /** + * Parameters for the actor. + * These are additional options that can be passed to the actor. + */ + params?: Record; + /** Region to create the actor in if it doesn't exist. */ + createInRegion?: string; + /** Input data to pass to the actor. */ + createWithInput?: unknown; + /** + * Whether the actor is enabled. + * Defaults to true. + */ + enabled?: boolean; + }; +} + +export { createClient } from "@rivetkit/core/client"; + +export function createRivetKit( + client: Client, + opts: CreateRivetKitOptions = {}, +) { + const { getOrCreateActor } = createVanillaRivetKit< + Registry, + ExtractActorsFromRegistry, + keyof ExtractActorsFromRegistry + >(client, opts); + + /** + * Svelte 5 rune-based function to connect to an actor and retrieve its state. + * Using this function with the same options will return the same actor instance. + * This simplifies passing around the actor state in your components. + * It also provides a method to listen for events emitted by the actor. + * @param opts - Options for the actor, including its name, key, and parameters. + * @returns An object containing reactive state and event listener function. + */ + function useActor< + ActorName extends keyof ExtractActorsFromRegistry, + >( + opts: ActorOptions, + ): { + current: Omit< + ActorStateReference>, + "handle" | "connection" + > & { + handle: ActorHandle< + ExtractActorsFromRegistry[ActorName] + > | null; + connection: ActorConn< + ExtractActorsFromRegistry[ActorName] + > | null; + }; + useEvent: (eventName: string, handler: (...args: any[]) => void) => void; + } { + const { mount, setState, state } = getOrCreateActor(opts); + + // Update options reactively + $effect.root(() => { + setState((prev) => { + prev.opts = { + ...opts, + enabled: opts.enabled ?? true, + } as any; + return prev; + }); + }); + + // Mount and subscribe to state changes + $effect.root(() => { + mount(); + }); + const actorState = useStore(state); + + function useEvent( + eventName: string, + // biome-ignore lint/suspicious/noExplicitAny: strong typing of handler is not supported yet + handler: (...args: any[]) => void, + ) { + let ref = $state(handler); + const actorState = useStore(state) || {}; + + $effect(() => { + ref = handler; + }); + $effect(() => { + if (!actorState?.current?.connection) return; + function eventHandler(...args: any[]) { + ref(...args); + } + return actorState.current.connection.on(eventName, eventHandler); + }); + } + + const current = { + get connection() { + return actorState.current?.connection; + }, + get handle() { + return actorState.current?.handle; + }, + get isConnected() { + return actorState.current?.isConnected; + }, + get isConnecting() { + return actorState.current?.isConnecting; + }, + get isError() { + return actorState.current?.isError; + }, + get error() { + return actorState.current?.error; + }, + get opts() { + return actorState.current?.opts; + }, + get hash() { + return actorState.current?.hash; + }, + }; + return { + current, + useEvent, + }; + } + + return { + useActor, + }; +} diff --git a/packages/frameworks/svelte/src/rivet.svelte.ts b/packages/frameworks/svelte/src/rivet.svelte.ts new file mode 100644 index 000000000..8c466f6ac --- /dev/null +++ b/packages/frameworks/svelte/src/rivet.svelte.ts @@ -0,0 +1,154 @@ +import type { Client, ExtractActorsFromRegistry } from "@rivetkit/core/client"; +import { + type ActorOptions, + type AnyActorRegistry, + type CreateRivetKitOptions, + createRivetKit as createVanillaRivetKit, +} from "@rivetkit/framework-base"; +import { BROWSER } from "esm-env"; + +export { createClient } from "@rivetkit/core/client"; + +export function createRivetKit( + client: Client, + opts: CreateRivetKitOptions = {}, +) { + const { getOrCreateActor } = createVanillaRivetKit< + Registry, + ExtractActorsFromRegistry, + keyof ExtractActorsFromRegistry + >(client, opts); + + /** + * Svelte 5 rune-based function to connect to an actor and retrieve its state. + * Using this function with the same options will return the same actor instance. + * This simplifies passing around the actor state in your components. + * It also provides a method to listen for events emitted by the actor. + * @param opts - Options for the actor, including its name, key, and parameters. + * @returns An object containing reactive state and event listener function. + */ + function useActor< + ActorName extends keyof ExtractActorsFromRegistry, + >(opts: ActorOptions) { + const { mount, setState, state } = getOrCreateActor(opts); + + // Create reactive state using Svelte 5 runes with proper typing + type ActorConnection = + ExtractActorsFromRegistry[ActorName] extends { + connection: infer C; + } + ? C + : any; + type ActorHandle = ExtractActorsFromRegistry[ActorName] extends { + handle: infer H; + } + ? H + : any; + + let connection = $state(null); + let handle = $state(null); + let isConnected = $state(false); + let isConnecting = $state(false); + let actorOpts = $state<{ + name: keyof ExtractActorsFromRegistry; + key: string | string[]; + params?: Record; + enabled?: boolean; + }>({} as any); + let isError = $state(undefined); + let error = $state(null); + let hash = $state(""); + + // Only run in browser to avoid SSR issues + if (BROWSER) { + // Subscribe to state changes from the base framework + state.subscribe((newData) => { + connection = newData.currentVal.connection; + handle = newData.currentVal.handle; + isConnected = newData.currentVal.isConnected; + isConnecting = newData.currentVal.isConnecting; + actorOpts = newData.currentVal.opts; + isError = newData.currentVal.isError; + error = newData.currentVal.error; + hash = newData.currentVal.hash; + }); + + // Update options reactively + $effect.root(() => { + setState((prev) => { + prev.opts = { + ...opts, + enabled: opts.enabled ?? true, + }; + return prev; + }); + }); + + // Mount and subscribe to state changes + $effect.root(() => { + mount(); + }); + } + + /** + * Function to listen for events emitted by the actor. + * This function allows you to subscribe to specific events emitted by the actor + * and execute a handler function when the event occurs. + * It automatically manages the event listener lifecycle. + * @param eventName The name of the event to listen for. + * @param handler The function to call when the event is emitted. + */ + function useEvent( + eventName: string, + // biome-ignore lint/suspicious/noExplicitAny: strong typing of handler is not supported yet + handler: (...args: any[]) => void, + ) { + // Get the current connection reactively + const connection = $derived(state.state.connection); + let connSubs: (() => void) | undefined; + + $effect.root(() => { + // Set up event listener if connection exists + connSubs = connection?.on(eventName, handler); + + // Cleanup function + return () => { + connSubs?.(); + }; + }); + } + + // Return reactive state with proper typing + return { + get connection(): ActorConnection | null { + return connection; + }, + get handle(): ActorHandle | null { + return handle; + }, + get isConnected() { + return isConnected; + }, + get isConnecting() { + return isConnecting; + }, + get actorOpts() { + return actorOpts; + }, + get isError() { + return isError; + }, + get error() { + return error; + }, + get hash() { + return hash; + }, + useEvent, + }; + } + + return { + useActor, + }; +} diff --git a/packages/frameworks/svelte/src/routes/+page.svelte b/packages/frameworks/svelte/src/routes/+page.svelte new file mode 100644 index 000000000..ac6f1db25 --- /dev/null +++ b/packages/frameworks/svelte/src/routes/+page.svelte @@ -0,0 +1,4 @@ + +

Welcome to your library project

+

Create your package using @sveltejs/package and preview/showcase your work with SvelteKit

+

Visit svelte.dev/docs/kit to read the documentation

diff --git a/packages/frameworks/svelte/static/favicon.svg b/packages/frameworks/svelte/static/favicon.svg new file mode 100644 index 000000000..cc5dc66a3 --- /dev/null +++ b/packages/frameworks/svelte/static/favicon.svg @@ -0,0 +1 @@ +svelte-logo \ No newline at end of file diff --git a/packages/frameworks/svelte/svelte.config.js b/packages/frameworks/svelte/svelte.config.js new file mode 100644 index 000000000..a8bb58ace --- /dev/null +++ b/packages/frameworks/svelte/svelte.config.js @@ -0,0 +1,18 @@ +import adapter from "@sveltejs/adapter-auto"; +import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://svelte.dev/docs/kit/integrations + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. + // If your environment is not supported, or you settled on a specific environment, switch out the adapter. + // See https://svelte.dev/docs/kit/adapters for more information about adapters. + adapter: adapter(), + }, +}; + +export default config; diff --git a/packages/frameworks/svelte/tsconfig.json b/packages/frameworks/svelte/tsconfig.json new file mode 100644 index 000000000..8ed3dd7f2 --- /dev/null +++ b/packages/frameworks/svelte/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "module": "NodeNext", + "moduleResolution": "NodeNext" + } +} diff --git a/packages/frameworks/svelte/vite.config.ts b/packages/frameworks/svelte/vite.config.ts new file mode 100644 index 000000000..b6d927a8f --- /dev/null +++ b/packages/frameworks/svelte/vite.config.ts @@ -0,0 +1,44 @@ +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import { defineConfig } from "vite"; +import dts from "vite-plugin-dts"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default defineConfig({ + plugins: [ + dts({ + include: ["src/**/*"], + exclude: ["**/*.test.*", "**/*.spec.*"], + insertTypesEntry: true, + rollupTypes: true, + strictOutput: true, + copyDtsFiles: false, + }), + ], + build: { + lib: { + entry: { + index: resolve(__dirname, "src/index.ts"), + "rivet.svelte": resolve(__dirname, "src/rivet.svelte.ts"), + }, + formats: ["cjs", "es"], + }, + rollupOptions: { + external: [ + "svelte", + "svelte/store", + "@rivetkit/core", + "@rivetkit/core/client", + "@rivetkit/framework-base", + "esm-env", + ], + output: { + preserveModules: false, + exports: "named", + }, + }, + sourcemap: true, + minify: false, + }, +}); diff --git a/packages/rivetkit/src/actor/config.ts b/packages/rivetkit/src/actor/config.ts index ccdbdca4b..ceb0073cc 100644 --- a/packages/rivetkit/src/actor/config.ts +++ b/packages/rivetkit/src/actor/config.ts @@ -252,7 +252,16 @@ interface BaseActorConfig< * @param newState The updated state */ onStateChange?: ( - c: ActorContext, + c: ActorContext< + TState, + TConnParams, + TConnState, + TVars, + TInput, + TAuthData, + TDatabase + >, + prevState: TState, newState: TState, ) => void; diff --git a/packages/rivetkit/src/actor/instance.ts b/packages/rivetkit/src/actor/instance.ts index ae90e88e9..76b1e3407 100644 --- a/packages/rivetkit/src/actor/instance.ts +++ b/packages/rivetkit/src/actor/instance.ts @@ -659,7 +659,7 @@ export class ActorInstance { }); } this.#persistChanged = true; - + const previousState = structuredClone(this.#persist.s); // Inform the inspector about state changes this.inspector.emitter.emit("stateUpdated", this.#persist.state); diff --git a/packages/rivetkit/src/drivers/file-system/global-state.ts b/packages/rivetkit/src/drivers/file-system/global-state.ts index d6a6ee2d0..7984a4935 100644 --- a/packages/rivetkit/src/drivers/file-system/global-state.ts +++ b/packages/rivetkit/src/drivers/file-system/global-state.ts @@ -472,13 +472,13 @@ export class FileSystemGlobalState { try { // Create actor const definition = lookupInRegistry(registryConfig, entry.state.name); - entry.actor = definition.instantiate(); + const actor = definition.instantiate(); // Start actor const connDrivers = createGenericConnDrivers( entry.genericConnGlobalState, ); - await entry.actor.start( + await actor.start( connDrivers, actorDriver, inlineClient, @@ -488,6 +488,9 @@ export class FileSystemGlobalState { "unknown", ); + // Only set entry.actor after the actor is fully started + entry.actor = actor; + // Finish entry.startPromise.resolve(); entry.startPromise = undefined; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b6208ca1..a3528cf79 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -832,6 +832,45 @@ importers: specifier: ^3.1.1 version: 3.2.4(@types/node@20.19.9)(tsx@4.20.3)(yaml@2.8.0) + examples/svelte: + devDependencies: + '@rivetkit/actor': + specifier: workspace:* + version: link:../../packages/actor + '@rivetkit/svelte': + specifier: workspace:* + version: link:../../packages/frameworks/svelte + '@sveltejs/adapter-auto': + specifier: ^6.0.0 + version: 6.1.0(@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0))) + '@sveltejs/kit': + specifier: ^2.22.0 + version: 2.28.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)) + '@sveltejs/vite-plugin-svelte': + specifier: ^6.0.0 + version: 6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)) + '@types/node': + specifier: ^22.13.9 + version: 22.15.32 + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 + svelte: + specifier: ^5.0.0 + version: 5.38.1 + svelte-check: + specifier: ^4.0.0 + version: 4.3.1(picomatch@4.0.3)(svelte@5.38.1)(typescript@5.8.3) + tsx: + specifier: ^3.12.7 + version: 3.14.0 + typescript: + specifier: ^5.0.0 + version: 5.8.3 + vite: + specifier: ^7.0.4 + version: 7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0) + examples/sync: dependencies: '@rivetkit/react': @@ -2376,6 +2415,9 @@ packages: resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -2396,6 +2438,9 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@kayahr/text-encoding@2.0.1': + resolution: {integrity: sha512-OUsJJVn85VrfNiiT6CSbHK2Jr9YS6tVsgQhly+EkcbYTT2SXeibU4nQNO2IzCRttKJt4zw4W60KtLifRRJBIng==} + '@levischuck/tiny-cbor@0.2.11': resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==} @@ -2658,6 +2703,47 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@sveltejs/acorn-typescript@1.0.5': + resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==} + peerDependencies: + acorn: ^8.9.0 + + '@sveltejs/adapter-auto@6.1.0': + resolution: {integrity: sha512-shOuLI5D2s+0zTv2ab5M5PqfknXqWbKi+0UwB9yLTRIdzsK1R93JOO8jNhIYSHdW+IYXIYnLniu+JZqXs7h9Wg==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + + '@sveltejs/kit@2.28.0': + resolution: {integrity: sha512-qrhygwHV5r6JrvCw4gwNqqxYGDi5YbajocxfKgFXmSFpFo8wQobUvsM0OfakN4h+0LEmXtqHRrC6BcyAkOwyoQ==} + engines: {node: '>=18.13'} + hasBin: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 + + '@sveltejs/package@2.4.1': + resolution: {integrity: sha512-dFj78EMy8Vgqsj5Tv2rPuPmtpyqYiJDL1QGhWjK4xW3g77ffF26ovoNBHNg/NZG9ZdTUUDb4rov6We3gW1pamg==} + engines: {node: ^16.14 || >=18} + hasBin: true + peerDependencies: + svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 + + '@sveltejs/vite-plugin-svelte-inspector@5.0.0': + resolution: {integrity: sha512-iwQ8Z4ET6ZFSt/gC+tVfcsSBHwsqc6RumSaiLUkAurW3BCpJam65cmHw0oOlDMTO0u+PZi9hilBRYN+LZNHTUQ==} + engines: {node: ^20.19 || ^22.12 || >=24} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^6.0.0-next.0 + svelte: ^5.0.0 + vite: ^6.3.0 || ^7.0.0 + + '@sveltejs/vite-plugin-svelte@6.1.2': + resolution: {integrity: sha512-7v+7OkUYelC2dhhYDAgX1qO2LcGscZ18Hi5kKzJQq7tQeXpH215dd0+J/HnX2zM5B3QKcIrTVqCGkZXAy5awYw==} + engines: {node: ^20.19 || ^22.12 || >=24} + peerDependencies: + svelte: ^5.0.0 + vite: ^6.3.0 || ^7.0.0 + '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} @@ -2670,6 +2756,14 @@ packages: '@tanstack/store@0.7.1': resolution: {integrity: sha512-PjUQKXEXhLYj2X5/6c1Xn/0/qKY0IVFxTJweopRfF26xfjVyb14yALydJrHupDh3/d+1WKmfEgZPBVCmDkzzwg==} + '@tanstack/store@0.7.4': + resolution: {integrity: sha512-F1XqZQici1Aq6WigEfcxJSml92nW+85Om8ElBMokPNg5glCYVOmPkZGIQeieYFxcPiKTfwo0MTOQpUyJtwncrg==} + + '@tanstack/svelte-store@0.7.4': + resolution: {integrity: sha512-oE9g10IXIAqpWLDWmh1oWXDUuffYZfi5q+jM9j4nXCo/ByMRUshd9IVtB9Zywc6ZrXmcNQiB988Fle8PTgZfDA==} + peerDependencies: + svelte: ^5.0.0 + '@tokenizer/inflate@0.2.7': resolution: {integrity: sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==} engines: {node: '>=18'} @@ -2715,6 +2809,9 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -2924,6 +3021,10 @@ packages: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -2938,6 +3039,18 @@ packages: argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + as-table@1.0.55: resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} @@ -3016,6 +3129,10 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + call-bound@1.0.4: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} @@ -3034,6 +3151,10 @@ packages: resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} engines: {node: '>=12'} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -3064,6 +3185,9 @@ packages: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -3127,6 +3251,10 @@ packages: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} @@ -3135,6 +3263,10 @@ packages: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} + cross-spawn@6.0.6: + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} + engines: {node: '>=4.8'} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -3145,6 +3277,9 @@ packages: data-uri-to-buffer@2.0.2: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + resolution: {integrity: sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==} + engines: {node: '>=12.20'} + date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} @@ -3165,6 +3300,9 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + dedent-js@1.0.1: + resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} + dedent@1.6.0: resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} peerDependencies: @@ -3181,6 +3319,18 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} @@ -3196,6 +3346,9 @@ packages: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} + devalue@5.1.1: + resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} + diff-match-patch@1.0.5: resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} @@ -3332,6 +3485,13 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + engines: {node: '>= 0.4'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -3347,6 +3507,14 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + esbuild-register@3.6.0: resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} peerDependencies: @@ -3379,6 +3547,16 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + esm-env@1.2.2: + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} + + esrap@2.1.0: + resolution: {integrity: sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==} + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -3466,6 +3644,10 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} @@ -3512,6 +3694,10 @@ packages: get-source@2.0.12: resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} @@ -3536,14 +3722,33 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -3556,6 +3761,9 @@ packages: resolution: {integrity: sha512-jYZ6ZtfWjzBdh8H/0CIFfCBHaFL75k+KMzaM177hrWWm2TWL39YMYaJgB74uK/niRc866NMlH9B8uCvIo284WQ==} engines: {node: '>=16.9.0'} + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -3577,6 +3785,10 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -3584,9 +3796,32 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -3602,6 +3837,48 @@ packages: is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-reference@3.0.3: + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -3632,6 +3909,9 @@ packages: engines: {node: '>=6'} hasBin: true + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -3655,6 +3935,10 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -3728,6 +4012,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3749,6 +4037,9 @@ packages: loupe@3.1.4: resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -3770,6 +4061,10 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + merge-descriptors@2.0.0: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} @@ -3816,6 +4111,10 @@ packages: mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -3879,6 +4178,12 @@ packages: sass: optional: true + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-abi@3.75.0: resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==} engines: {node: '>=10'} @@ -3890,6 +4195,14 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -3898,6 +4211,14 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} @@ -3922,6 +4243,10 @@ packages: openapi3-ts@4.5.0: resolution: {integrity: sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + p-retry@6.2.1: resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} engines: {node: '>=16.17'} @@ -3929,13 +4254,27 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -3988,6 +4327,10 @@ packages: pkg-types@2.1.0: resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -4096,6 +4439,10 @@ packages: resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -4108,6 +4455,14 @@ packages: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -4147,6 +4502,14 @@ packages: rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -4166,6 +4529,10 @@ packages: secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -4191,6 +4558,18 @@ packages: set-cookie-parser@2.7.1: resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -4202,10 +4581,18 @@ packages: resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -4299,6 +4686,10 @@ packages: std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} @@ -4315,6 +4706,22 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string.prototype.padend@3.1.6: + resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -4326,6 +4733,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -4359,6 +4770,10 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -4371,6 +4786,24 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svelte-check@4.3.1: + resolution: {integrity: sha512-lkh8gff5gpHLjxIV+IaApMxQhTGnir2pNUAqcNgeKkvK5bT/30Ey/nzBxNLDlkztCH4dP7PixkMt9SWEKFPBWg==} + engines: {node: '>= 18.0.0'} + hasBin: true + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + typescript: '>=5.0.0' + + svelte2tsx@0.7.42: + resolution: {integrity: sha512-PSNrKS16aVdAajoFjpF5M0t6TA7ha7GcKbBajD9RG3M+vooAuvLnWAGUSC6eJL4zEOVbOWKtcS2BuY4rxPljoA==} + peerDependencies: + svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 + typescript: ^4.9.4 || ^5.0.0 + + svelte@5.38.1: + resolution: {integrity: sha512-fO6CLDfJYWHgfo6lQwkQU2vhCiHc2MBl6s3vEhK+sSZru17YL4R5s1v14ndRpqKAIkq8nCz6MTk1yZbESZWeyQ==} + engines: {node: '>=18'} + swr@2.3.4: resolution: {integrity: sha512-bYd2lrhc+VarcpkgWclcUi92wYCpOgMws9Sd1hG1ntAu0NEy+14CbotuFjshBU2kt9rYj9TSmDcybpxpeTU1fg==} peerDependencies: @@ -4513,6 +4946,22 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + typescript@5.8.2: resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} @@ -4530,6 +4979,10 @@ packages: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -4664,6 +5117,54 @@ packages: yaml: optional: true + vite@7.1.2: + resolution: {integrity: sha512-J0SQBPlQiEXAF7tajiH+rUooJPo0l8KQgyg4/aMunNtrOa7bwuZJsJbDWzeljqQpgftxuq5yNJxQ91O9ts29UQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitefu@1.1.1: + resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 + peerDependenciesMeta: + vite: + optional: true + vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -4701,6 +5202,26 @@ packages: whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -4803,6 +5324,9 @@ packages: youch@3.3.4: resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} + zimmerframe@1.1.2: + resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} + zod-to-json-schema@3.24.6: resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} peerDependencies: @@ -5620,6 +6144,11 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} @@ -5638,6 +6167,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 + '@kayahr/text-encoding@2.0.1': {} + '@levischuck/tiny-cbor@0.2.11': {} '@microsoft/api-extractor-model@7.30.6(@types/node@22.15.32)': @@ -5947,19 +6478,131 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@swc/helpers@0.5.15': + '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)': dependencies: - tslib: 2.8.1 + acorn: 8.15.0 - '@tanstack/react-store@0.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@sveltejs/adapter-auto@6.1.0(@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)))': dependencies: - '@tanstack/store': 0.7.1 + '@sveltejs/kit': 2.28.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)) + + '@sveltejs/adapter-auto@6.1.0(@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)))': + dependencies: + '@sveltejs/kit': 2.28.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)) + + '@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0))': + dependencies: + '@standard-schema/spec': 1.0.0 + '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) + '@sveltejs/vite-plugin-svelte': 6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)) + '@types/cookie': 0.6.0 + acorn: 8.15.0 + cookie: 0.6.0 + devalue: 5.1.1 + esm-env: 1.2.2 + kleur: 4.1.5 + magic-string: 0.30.17 + mrmime: 2.0.1 + sade: 1.8.1 + set-cookie-parser: 2.7.1 + sirv: 3.0.1 + svelte: 5.38.1 + vite: 7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0) + + '@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0))': + dependencies: + '@standard-schema/spec': 1.0.0 + '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) + '@sveltejs/vite-plugin-svelte': 6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)) + '@types/cookie': 0.6.0 + acorn: 8.15.0 + cookie: 0.6.0 + devalue: 5.1.1 + esm-env: 1.2.2 + kleur: 4.1.5 + magic-string: 0.30.17 + mrmime: 2.0.1 + sade: 1.8.1 + set-cookie-parser: 2.7.1 + sirv: 3.0.1 + svelte: 5.38.1 + vite: 7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0) + + '@sveltejs/package@2.4.1(svelte@5.38.1)(typescript@5.8.3)': + dependencies: + chokidar: 4.0.3 + kleur: 4.1.5 + sade: 1.8.1 + semver: 7.7.2 + svelte: 5.38.1 + svelte2tsx: 0.7.42(svelte@5.38.1)(typescript@5.8.3) + transitivePeerDependencies: + - typescript + + '@sveltejs/vite-plugin-svelte-inspector@5.0.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0))': + dependencies: + '@sveltejs/vite-plugin-svelte': 6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)) + debug: 4.4.1 + svelte: 5.38.1 + vite: 7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte-inspector@5.0.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0))': + dependencies: + '@sveltejs/vite-plugin-svelte': 6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)) + debug: 4.4.1 + svelte: 5.38.1 + vite: 7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 5.0.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)) + debug: 4.4.1 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.17 + svelte: 5.38.1 + vite: 7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0) + vitefu: 1.1.1(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 5.0.0(@sveltejs/vite-plugin-svelte@6.1.2(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)))(svelte@5.38.1)(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)) + debug: 4.4.1 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.17 + svelte: 5.38.1 + vite: 7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0) + vitefu: 1.1.1(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)) + transitivePeerDependencies: + - supports-color + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@tanstack/react-store@0.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@tanstack/store': 0.7.1 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) use-sync-external-store: 1.5.0(react@19.1.0) '@tanstack/store@0.7.1': {} + '@tanstack/store@0.7.4': {} + + '@tanstack/svelte-store@0.7.4(svelte@5.38.1)': + dependencies: + '@tanstack/store': 0.7.4 + svelte: 5.38.1 + '@tokenizer/inflate@0.2.7': dependencies: debug: 4.4.1 @@ -6019,6 +6662,8 @@ snapshots: dependencies: '@types/node': 22.15.32 + '@types/cookie@0.6.0': {} + '@types/deep-eql@4.0.2': {} '@types/diff-match-patch@1.0.36': {} @@ -6321,6 +6966,10 @@ snapshots: ansi-regex@6.1.0: {} + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -6333,6 +6982,23 @@ snapshots: dependencies: sprintf-js: 1.0.3 + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + as-table@1.0.55: dependencies: printable-characters: 1.0.42 @@ -6441,6 +7107,13 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 @@ -6472,6 +7145,12 @@ snapshots: loupe: 3.1.4 pathval: 2.0.0 + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -6499,6 +7178,8 @@ snapshots: dependencies: color-name: 1.1.4 + color-name@1.1.3: {} + color-name@1.1.4: {} color-string@1.9.1: @@ -6559,10 +7240,20 @@ snapshots: cookie-signature@1.2.2: {} + cookie@0.6.0: {} + cookie@0.7.2: {} cookie@1.0.2: {} + cross-spawn@6.0.6: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -6587,12 +7278,28 @@ snapshots: dependencies: mimic-response: 3.1.0 + dedent-js@1.0.1: {} + dedent@1.6.0: {} deep-eql@5.0.2: {} deep-extend@0.6.0: {} + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + defu@6.1.4: {} depd@2.0.0: {} @@ -6601,6 +7308,8 @@ snapshots: detect-libc@2.0.4: {} + devalue@5.1.1: {} + diff-match-patch@1.0.5: {} drizzle-kit@0.31.2: @@ -6655,6 +7364,67 @@ snapshots: entities@4.5.0: {} + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.24.0: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -6665,6 +7435,19 @@ snapshots: dependencies: es-errors: 1.3.0 + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + esbuild-register@3.6.0(esbuild@0.25.5): dependencies: debug: 4.4.1 @@ -6783,6 +7566,14 @@ snapshots: escape-html@1.0.3: {} + escape-string-regexp@1.0.5: {} + + esm-env@1.2.2: {} + + esrap@2.1.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.4 + estree-walker@2.0.2: {} estree-walker@3.0.3: @@ -6885,6 +7676,10 @@ snapshots: flatted@3.3.3: {} + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 @@ -6934,6 +7729,12 @@ snapshots: data-uri-to-buffer: 2.0.2 source-map: 0.6.1 + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + get-tsconfig@4.10.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -6957,10 +7758,26 @@ snapshots: graceful-fs@4.2.11: {} + has-bigints@1.1.0: {} + + has-flag@3.0.0: {} + has-flag@4.0.0: {} + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + has-symbols@1.1.0: {} + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -6969,6 +7786,8 @@ snapshots: hono@4.8.3: {} + hosted-git-info@2.8.9: {} + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -6989,14 +7808,47 @@ snapshots: ini@1.3.8: {} + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + invariant@2.2.4: dependencies: loose-envify: 1.4.0 ipaddr.js@1.9.1: {} + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + is-arrayish@0.3.2: {} + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -7007,6 +7859,51 @@ snapshots: is-promise@4.0.0: {} + is-reference@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@2.0.5: {} + isexe@2.0.0: {} isomorphic.js@0.2.5: {} @@ -7029,6 +7926,8 @@ snapshots: jsesc@3.1.0: {} + json-parse-better-errors@1.0.2: {} + json-schema-traverse@1.0.0: {} json-schema@0.4.0: {} @@ -7049,6 +7948,8 @@ snapshots: kleur@3.0.3: {} + kleur@4.1.5: {} + kolorist@1.8.0: {} kysely@0.28.2: {} @@ -7104,6 +8005,13 @@ snapshots: lines-and-columns@1.2.4: {} + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + load-tsconfig@0.2.5: {} local-pkg@1.1.1: @@ -7122,6 +8030,10 @@ snapshots: loupe@3.1.4: {} + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + lru-cache@10.4.3: {} lru-cache@5.1.1: @@ -7140,6 +8052,8 @@ snapshots: media-typer@1.1.0: {} + memorystream@0.3.1: {} + merge-descriptors@2.0.0: {} mime-db@1.54.0: {} @@ -7191,6 +8105,8 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.1 + mri@1.2.0: {} + mrmime@2.0.1: {} ms@2.1.3: {} @@ -7241,6 +8157,13 @@ snapshots: - '@babel/core' - babel-plugin-macros + nice-try@1.0.5: {} + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + node-abi@3.75.0: dependencies: semver: 7.7.2 @@ -7252,10 +8175,40 @@ snapshots: node-releases@2.0.19: {} + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + npm-run-all@4.1.5: + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.6 + memorystream: 0.3.1 + minimatch: 3.0.8 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.3 + string.prototype.padend: 3.1.6 + object-assign@4.1.1: {} object-inspect@1.13.4: {} + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + ohash@2.0.11: {} on-change@5.0.1: {} @@ -7277,6 +8230,12 @@ snapshots: dependencies: yaml: 2.8.0 + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-retry@6.2.1: dependencies: '@types/retry': 0.12.2 @@ -7285,10 +8244,24 @@ snapshots: package-json-from-dist@1.0.1: {} + package-manager-detector@1.3.0: {} + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + parseurl@1.3.3: {} + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + path-browserify@1.0.1: {} + path-key@2.0.1: {} + path-key@3.1.1: {} path-parse@1.0.7: {} @@ -7344,6 +8317,8 @@ snapshots: exsolve: 1.0.7 pathe: 2.0.3 + possible-typed-array-names@1.1.0: {} + postcss-load-config@6.0.1(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.0): dependencies: lilconfig: 3.1.3 @@ -7455,6 +8430,12 @@ snapshots: react@19.1.0: {} + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -7465,6 +8446,26 @@ snapshots: real-require@0.2.0: {} + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -7523,6 +8524,18 @@ snapshots: dependencies: tslib: 2.8.1 + sade@1.8.1: + dependencies: + mri: 1.2.0 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + safe-buffer@5.2.1: {} safe-stable-stringify@2.5.0: {} @@ -7537,6 +8550,8 @@ snapshots: secure-json-parse@2.7.0: {} + semver@5.7.2: {} + semver@6.3.1: {} semver@7.5.4: @@ -7572,6 +8587,28 @@ snapshots: set-cookie-parser@2.7.1: {} + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + setprototypeof@1.2.0: {} sharp@0.33.5: @@ -7630,10 +8667,16 @@ snapshots: '@img/sharp-win32-x64': 0.34.3 optional: true + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 + shebang-regex@1.0.0: {} + shebang-regex@3.0.0: {} shell-quote@1.8.3: {} @@ -7726,6 +8769,11 @@ snapshots: std-env@3.9.0: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + stoppable@1.1.0: {} string-argv@0.3.2: {} @@ -7742,6 +8790,36 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string.prototype.padend@3.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -7754,6 +8832,8 @@ snapshots: dependencies: ansi-regex: 6.1.0 + strip-bom@3.0.0: {} + strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -7781,6 +8861,10 @@ snapshots: pirates: 4.0.7 ts-interface-checker: 0.1.13 + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -7791,6 +8875,42 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svelte-check@4.3.1(picomatch@4.0.3)(svelte@5.38.1)(typescript@5.8.3): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 4.0.3 + fdir: 6.4.6(picomatch@4.0.3) + picocolors: 1.1.1 + sade: 1.8.1 + svelte: 5.38.1 + typescript: 5.8.3 + transitivePeerDependencies: + - picomatch + + svelte2tsx@0.7.42(svelte@5.38.1)(typescript@5.8.3): + dependencies: + dedent-js: 1.0.1 + pascal-case: 3.1.2 + svelte: 5.38.1 + typescript: 5.8.3 + + svelte@5.38.1: + dependencies: + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.4 + '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) + '@types/estree': 1.0.8 + acorn: 8.15.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + clsx: 2.1.1 + esm-env: 1.2.2 + esrap: 2.1.0 + is-reference: 3.0.3 + locate-character: 3.0.0 + magic-string: 0.30.17 + zimmerframe: 1.1.2 + swr@2.3.4(react@18.3.1): dependencies: dequal: 2.0.3 @@ -7971,6 +9091,39 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.1 + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + typescript@5.8.2: {} typescript@5.8.3: {} @@ -8202,6 +9355,42 @@ snapshots: tsx: 4.20.3 yaml: 2.8.0 + vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.44.0 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 22.15.32 + fsevents: 2.3.3 + tsx: 3.14.0 + yaml: 2.8.0 + + vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.44.0 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 24.0.4 + fsevents: 2.3.3 + tsx: 4.20.3 + yaml: 2.8.0 + + vitefu@1.1.1(vite@7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0)): + optionalDependencies: + vite: 7.1.2(@types/node@22.15.32)(tsx@3.14.0)(yaml@2.8.0) + + vitefu@1.1.1(vite@7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0)): + optionalDependencies: + vite: 7.1.2(@types/node@24.0.4)(tsx@4.20.3)(yaml@2.8.0) + vitest@3.2.4(@types/node@20.19.9)(tsx@4.20.3)(yaml@2.8.0): dependencies: '@types/chai': 5.2.2 @@ -8418,6 +9607,51 @@ snapshots: tr46: 1.0.1 webidl-conversions: 4.0.2 + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -8502,6 +9736,8 @@ snapshots: mustache: 4.2.0 stacktracey: 2.1.8 + zimmerframe@1.1.2: {} + zod-to-json-schema@3.24.6(zod@3.25.76): dependencies: zod: 3.25.76