diff --git a/.agents/skills/new-react-playground/SKILL.md b/.agents/skills/new-react-playground/SKILL.md new file mode 100644 index 0000000000..3e1469c8a0 --- /dev/null +++ b/.agents/skills/new-react-playground/SKILL.md @@ -0,0 +1,32 @@ +--- +name: new-react-playground +description: Use when an agent in this TanStack AI monorepo needs a playground app to try a new feature. Trigger: new feature to try in a Start React app in this repo. +--- + +# new-react-playground + +Pick a kebab-case name. Then generate a React chat lab under `examples//`. + +The generator writes a thin chat lab. The app includes: + +- BYOK +- Model picker +- `/api/chat` with `chat()` + +The index route is the chat shell. The dev server uses port `3100`. + +## Must + +1. Pick a kebab-case name. +2. From the repo root, run `pnpm nx g @tanstack/workspace-plugin:react-app `. +3. Run `pnpm install`. +4. Implement the feature on the index route. If the server must change, edit `/api/chat`. +5. Run `pnpm --filter dev` (port 3100). + +Do not commit the new example. After a human asks to keep it, you can commit it. + +## Later + +If you need live model keys, copy `.env.example` to `.env.local`. + +Open `http://localhost:3100`. The chat lab is live. Your feature is on the index route. diff --git a/.changeset/config.json b/.changeset/config.json index 4c907af7ce..7f4e25ea36 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -11,6 +11,7 @@ "fixed": [], "linked": [], "ignore": [ + "@tanstack/workspace-plugin", "@tanstack/ai-codemods", "@tanstack/ai-code-mode-models-eval", "@tanstack/ai-e2e", diff --git a/.claude/skills/new-react-playground/SKILL.md b/.claude/skills/new-react-playground/SKILL.md new file mode 100644 index 0000000000..3e1469c8a0 --- /dev/null +++ b/.claude/skills/new-react-playground/SKILL.md @@ -0,0 +1,32 @@ +--- +name: new-react-playground +description: Use when an agent in this TanStack AI monorepo needs a playground app to try a new feature. Trigger: new feature to try in a Start React app in this repo. +--- + +# new-react-playground + +Pick a kebab-case name. Then generate a React chat lab under `examples//`. + +The generator writes a thin chat lab. The app includes: + +- BYOK +- Model picker +- `/api/chat` with `chat()` + +The index route is the chat shell. The dev server uses port `3100`. + +## Must + +1. Pick a kebab-case name. +2. From the repo root, run `pnpm nx g @tanstack/workspace-plugin:react-app `. +3. Run `pnpm install`. +4. Implement the feature on the index route. If the server must change, edit `/api/chat`. +5. Run `pnpm --filter dev` (port 3100). + +Do not commit the new example. After a human asks to keep it, you can commit it. + +## Later + +If you need live model keys, copy `.env.example` to `.env.local`. + +Open `http://localhost:3100`. The chat lab is live. Your feature is on the index route. diff --git a/.grok/skills/new-react-playground/SKILL.md b/.grok/skills/new-react-playground/SKILL.md new file mode 100644 index 0000000000..3e1469c8a0 --- /dev/null +++ b/.grok/skills/new-react-playground/SKILL.md @@ -0,0 +1,32 @@ +--- +name: new-react-playground +description: Use when an agent in this TanStack AI monorepo needs a playground app to try a new feature. Trigger: new feature to try in a Start React app in this repo. +--- + +# new-react-playground + +Pick a kebab-case name. Then generate a React chat lab under `examples//`. + +The generator writes a thin chat lab. The app includes: + +- BYOK +- Model picker +- `/api/chat` with `chat()` + +The index route is the chat shell. The dev server uses port `3100`. + +## Must + +1. Pick a kebab-case name. +2. From the repo root, run `pnpm nx g @tanstack/workspace-plugin:react-app `. +3. Run `pnpm install`. +4. Implement the feature on the index route. If the server must change, edit `/api/chat`. +5. Run `pnpm --filter dev` (port 3100). + +Do not commit the new example. After a human asks to keep it, you can commit it. + +## Later + +If you need live model keys, copy `.env.example` to `.env.local`. + +Open `http://localhost:3100`. The chat lab is live. Your feature is on the index route. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c051e15e07..abd5d479a6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -92,6 +92,18 @@ All commands are run from the repo root. Nx handles affected detection and cachi Working on a single package? `cd packages/` and use its scripts directly (`pnpm test:lib`, `pnpm test:types`, etc.). +## Generate a React playground + +You need a TanStack Start chat app to try a feature. Do not copy `examples/ts-react-chat`. Run the generator. + +1. From the repo root, run `pnpm nx g @tanstack/workspace-plugin:react-app `. +2. Run `pnpm install`. +3. Copy `examples//.env.example` to `examples//.env.local` and add a key. +4. Run `pnpm --filter dev` (port 3100). +5. Change the index route for the feature. If the server must change, change `/api/chat`. + +Do not commit the new example unless you mean to keep it as a lasting example. + ## TypeScript configuration There is a single `tsconfig.base.json` at the repo root with the shared `compilerOptions`. Every package extends it and overrides only what's unique to that package (e.g. `outDir`, JSX runtime, framework lib). diff --git a/knip.json b/knip.json index 9a0cae481c..79455721d6 100644 --- a/knip.json +++ b/knip.json @@ -9,6 +9,7 @@ "ignoreWorkspaces": [ "examples/**", "testing/**", + "tools/**", "packages/ai-code-mode/models-eval" ], "ignore": [ diff --git a/nx.json b/nx.json index af38973f36..3e93aef4bd 100644 --- a/nx.json +++ b/nx.json @@ -4,6 +4,7 @@ "nxCloudId": "6928ccd60a2e27ab22f38ad0", "useDaemonProcess": true, "useInferencePlugins": false, + "plugins": ["@tanstack/workspace-plugin"], "analytics": false, "parallel": 15, "tui": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a090e1ac69..800546312a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 0.3.4 '@tanstack/vite-config': specifier: 0.6.0 - version: 0.6.0(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 0.6.0(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.2.4)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@types/node': specifier: ^24.10.1 version: 24.10.3 @@ -120,7 +120,7 @@ importers: version: 24.10.3 jscodeshift: specifier: ^17.1.1 - version: 17.3.0(supports-color@7.2.0) + version: 17.3.0(@babel/preset-env@7.29.7(@babel/core@7.28.5(supports-color@7.2.0)))(supports-color@7.2.0) prettier: specifier: ^3.7.4 version: 3.7.4 @@ -245,7 +245,7 @@ importers: version: 4.1.18(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/router-plugin': specifier: ^1.158.4 - version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@types/node': specifier: ^24.10.1 version: 24.10.3 @@ -330,7 +330,7 @@ importers: version: 4.1.18(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/router-plugin': specifier: ^1.158.4 - version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@types/node': specifier: ^24.10.1 version: 24.10.3 @@ -487,7 +487,7 @@ importers: version: 1.159.5(crossws@0.4.6(srvx@0.11.17))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/router-plugin': specifier: ^1.158.4 - version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/store': specifier: ^0.8.0 version: 0.8.0 @@ -599,7 +599,7 @@ importers: version: 1.159.5(crossws@0.4.6(srvx@0.11.17))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/router-plugin': specifier: ^1.158.4 - version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) capnweb: specifier: ^0.10.0 version: 0.10.0 @@ -789,7 +789,7 @@ importers: version: 0.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tanstack/router-plugin': specifier: ^1.158.4 - version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/store': specifier: ^0.8.0 version: 0.8.0 @@ -928,7 +928,7 @@ importers: version: 1.159.5(crossws@0.4.6(srvx@0.11.17))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/router-plugin': specifier: ^1.158.4 - version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) lucide-react: specifier: ^0.561.0 version: 0.561.0(react@19.2.3) @@ -1032,7 +1032,7 @@ importers: version: 1.159.5(crossws@0.4.6(srvx@0.11.17))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/router-plugin': specifier: ^1.158.4 - version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) lucide-react: specifier: ^0.561.0 version: 0.561.0(react@19.2.3) @@ -1111,7 +1111,7 @@ importers: version: 1.159.5(crossws@0.4.6(srvx@0.11.17))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/router-plugin': specifier: ^1.158.4 - version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/zod-adapter': specifier: ^1.140.1 version: 1.166.9(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(zod@4.3.6) @@ -1223,7 +1223,7 @@ importers: version: 1.159.5(crossws@0.4.6(srvx@0.11.17))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/router-plugin': specifier: ^1.158.4 - version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -1348,10 +1348,10 @@ importers: version: link:../../packages/ai-solid '@tanstack/nitro-v2-vite-plugin': specifier: ^1.155.0 - version: 1.155.0(@electric-sql/pglite@0.4.3)(aws4fetch@1.0.20)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260317.1)(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3)(rolldown@1.1.5)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.155.0(@electric-sql/pglite@0.4.3)(aws4fetch@1.0.20)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260317.1)(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3)(rolldown@1.2.4)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/router-plugin': specifier: ^1.158.4 - version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + version: 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/solid-ai-devtools': specifier: workspace:* version: link:../../packages/solid-ai-devtools @@ -2844,7 +2844,7 @@ importers: version: 1.9.10 tsdown: specifier: ^0.17.0-beta.6 - version: 0.17.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(oxc-resolver@11.21.3)(publint@0.3.16)(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3)) + version: 0.17.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(oxc-resolver@11.21.3)(publint@0.3.16)(synckit@0.11.13)(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 @@ -3005,7 +3005,7 @@ importers: version: 27.4.0(@noble/hashes@2.3.0)(postcss@8.5.26) tsdown: specifier: ^0.17.0-beta.6 - version: 0.17.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(oxc-resolver@11.21.3)(publint@0.3.16)(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3)) + version: 0.17.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(oxc-resolver@11.21.3)(publint@0.3.16)(synckit@0.11.13)(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 @@ -3475,6 +3475,12 @@ importers: specifier: 5.9.3 version: 5.9.3 + tools/workspace-plugin: + dependencies: + '@nx/devkit': + specifier: 23.1.1 + version: 23.1.1(nx@23.1.1) + packages: '@acemir/cssom@0.9.29': @@ -3865,8 +3871,8 @@ packages: resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.29.7': - resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': @@ -4049,6 +4055,47 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7': + resolution: {integrity: sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7': + resolution: {integrity: sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7': + resolution: {integrity: sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7': + resolution: {integrity: sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7': + resolution: {integrity: sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7': + resolution: {integrity: sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-proposal-decorators@7.29.7': resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==} engines: {node: '>=6.9.0'} @@ -4061,6 +4108,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-decorators@7.29.7': resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==} engines: {node: '>=6.9.0'} @@ -4084,6 +4137,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.29.7': + resolution: {integrity: sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.29.7': + resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} @@ -4112,6 +4177,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.29.7': + resolution: {integrity: sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.29.7': resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==} engines: {node: '>=6.9.0'} @@ -4124,6 +4201,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.29.7': + resolution: {integrity: sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoping@7.29.7': resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==} engines: {node: '>=6.9.0'} @@ -4136,6 +4219,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.29.7': + resolution: {integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-static-block@7.29.7': resolution: {integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==} engines: {node: '>=6.9.0'} @@ -4148,12 +4237,54 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.29.7': + resolution: {integrity: sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-destructuring@7.29.7': resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dotall-regex@7.29.7': + resolution: {integrity: sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.29.7': + resolution: {integrity: sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7': + resolution: {integrity: sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.29.7': + resolution: {integrity: sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.29.7': + resolution: {integrity: sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.29.7': + resolution: {integrity: sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.29.7': resolution: {integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==} engines: {node: '>=6.9.0'} @@ -4172,36 +4303,108 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.29.7': + resolution: {integrity: sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.29.7': + resolution: {integrity: sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.29.7': + resolution: {integrity: sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.29.7': resolution: {integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.29.7': + resolution: {integrity: sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.29.7': + resolution: {integrity: sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.27.1': resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.29.7': + resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.29.8': + resolution: {integrity: sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.29.7': + resolution: {integrity: sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-transform-new-target@7.29.7': + resolution: {integrity: sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': + resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.29.7': + resolution: {integrity: sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-rest-spread@7.29.7': resolution: {integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-super@7.29.7': + resolution: {integrity: sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-catch-binding@7.29.7': resolution: {integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==} engines: {node: '>=6.9.0'} @@ -4214,6 +4417,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-chaining@7.29.7': + resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.29.7': resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==} engines: {node: '>=6.9.0'} @@ -4226,12 +4435,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.29.7': + resolution: {integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.29.7': resolution: {integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.29.7': + resolution: {integrity: sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-display-name@7.29.7': resolution: {integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==} engines: {node: '>=6.9.0'} @@ -4268,30 +4489,107 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regenerator@7.29.8': + resolution: {integrity: sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.29.7': + resolution: {integrity: sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.29.7': + resolution: {integrity: sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-runtime@7.29.7': resolution: {integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-shorthand-properties@7.29.7': + resolution: {integrity: sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.29.8': + resolution: {integrity: sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.29.7': + resolution: {integrity: sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.29.7': + resolution: {integrity: sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.29.7': + resolution: {integrity: sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.28.5': resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.29.7': + resolution: {integrity: sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.29.7': + resolution: {integrity: sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.29.7': resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-sets-regex@7.29.7': + resolution: {integrity: sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.29.7': + resolution: {integrity: sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-flow@7.27.1': resolution: {integrity: sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/preset-typescript@7.28.5': resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} engines: {node: '>=6.9.0'} @@ -4324,8 +4622,8 @@ packages: resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.7': - resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} engines: {node: '>=6.9.0'} '@babel/types@7.28.5': @@ -4340,6 +4638,10 @@ packages: resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + '@balena/dockerignore@1.0.2': resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} @@ -6204,6 +6506,11 @@ packages: '@nothing-but/utils@0.17.0': resolution: {integrity: sha512-TuCHcHLOqDL0SnaAxACfuRHBNRgNJcNn9X0GiH5H3YSDBVquCr3qEIG3FOQAuMyZCbu9w8nk2CHhOsn7IvhIwQ==} + '@nx/devkit@23.1.1': + resolution: {integrity: sha512-FmBfS1xUkWYvDYH/ysO7gAqGlaRzugLac8SIC+X/p76WBmhM6tJhfRW/BQ8mxOFZoVLmwhIiR8X0dRPKdasFxw==} + peerDependencies: + nx: '>= 22 <= 24 || ^23.0.0-0' + '@nx/nx-darwin-arm64@23.1.1': resolution: {integrity: sha512-Rq/RXLX5uIvJQfb6kuUgEirquT5ARaAgQyNaMZVnOPAL5wuxaDvQag8WX/WUCIgbUKZuGkclJwM7Vlnvtn3bdg==} cpu: [arm64] @@ -6894,9 +7201,6 @@ packages: '@oxc-project/types@0.137.0': resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} - '@oxc-project/types@0.139.0': - resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} - '@oxc-project/types@0.144.0': resolution: {integrity: sha512-nuhZIOLuI6TFQ32I/WnUx+SCPY7SdSKwgnFHydAuoS1+Z4BRcaP+RRJmGzl9lw+0OFF7UmaESf7KQRXaNLHypg==} @@ -7410,24 +7714,48 @@ packages: cpu: [arm64] os: [android] + '@parcel/watcher-android-arm64@2.6.0': + resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + '@parcel/watcher-darwin-arm64@2.5.1': resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] + '@parcel/watcher-darwin-arm64@2.6.0': + resolution: {integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + '@parcel/watcher-darwin-x64@2.5.1': resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] + '@parcel/watcher-darwin-x64@2.6.0': + resolution: {integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + '@parcel/watcher-freebsd-x64@2.5.1': resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] + '@parcel/watcher-freebsd-x64@2.6.0': + resolution: {integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + '@parcel/watcher-linux-arm-glibc@2.5.1': resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} engines: {node: '>= 10.0.0'} @@ -7435,6 +7763,13 @@ packages: os: [linux] libc: [glibc] + '@parcel/watcher-linux-arm-glibc@2.6.0': + resolution: {integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} @@ -7442,6 +7777,13 @@ packages: os: [linux] libc: [musl] + '@parcel/watcher-linux-arm-musl@2.6.0': + resolution: {integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] + '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} @@ -7449,6 +7791,13 @@ packages: os: [linux] libc: [glibc] + '@parcel/watcher-linux-arm64-glibc@2.6.0': + resolution: {integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} @@ -7456,6 +7805,13 @@ packages: os: [linux] libc: [musl] + '@parcel/watcher-linux-arm64-musl@2.6.0': + resolution: {integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} @@ -7463,6 +7819,13 @@ packages: os: [linux] libc: [glibc] + '@parcel/watcher-linux-x64-glibc@2.6.0': + resolution: {integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} @@ -7470,6 +7833,13 @@ packages: os: [linux] libc: [musl] + '@parcel/watcher-linux-x64-musl@2.6.0': + resolution: {integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + '@parcel/watcher-wasm@2.3.0': resolution: {integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==} engines: {node: '>= 10.0.0'} @@ -7488,6 +7858,12 @@ packages: cpu: [arm64] os: [win32] + '@parcel/watcher-win32-arm64@2.6.0': + resolution: {integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + '@parcel/watcher-win32-ia32@2.5.1': resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} engines: {node: '>= 10.0.0'} @@ -7500,14 +7876,28 @@ packages: cpu: [x64] os: [win32] + '@parcel/watcher-win32-x64@2.6.0': + resolution: {integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + '@parcel/watcher@2.5.1': resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} + '@parcel/watcher@2.6.0': + resolution: {integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==} + engines: {node: '>= 10.0.0'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@pkgr/core@0.3.6': + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} + engines: {node: ^14.18.0 || >=16.0.0} + '@playwright/test@1.57.0': resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==} engines: {node: '>=18'} @@ -8594,12 +8984,6 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.1.5': - resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - '@rolldown/binding-android-arm64@1.2.4': resolution: {integrity: sha512-jHC2cnyKz5xU2fhECtFl8OZ83cYNt13GZQD+0uMJ/X3o+ijmd56okHhTUwxVSHPx1IRVIJEZ1/1pPzeLCU6XKA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8618,12 +9002,6 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.1.5': - resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - '@rolldown/binding-darwin-arm64@1.2.4': resolution: {integrity: sha512-Dc5mPD8F5F/FS8i01syd7FTF6yB2fVthH/TRkjwJkzUK6EpoxHtqvZQP5Zwq80/5z19TWYHIg1KOHboCgVx/aQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8642,12 +9020,6 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.5': - resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - '@rolldown/binding-darwin-x64@1.2.4': resolution: {integrity: sha512-fpDm4oBo6SqLvWUYCmFhdde3U9KH2fRNNMeAnAPAIwxRL345xutL0EtEUcuoxsoazdJGv/MuDBQHlCDrtbvqOg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8666,12 +9038,6 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.1.5': - resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - '@rolldown/binding-freebsd-x64@1.2.4': resolution: {integrity: sha512-rSJoreDE/HoIzoaib6MTp5jQtCTdMHKIvItAKT/ImS6Y6Ww76oUaeMyp4Vc/fAgd/ehji068IxetHXAnqUwN9A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8690,12 +9056,6 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': - resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.2.4': resolution: {integrity: sha512-/jm8OGHgn7oGaJu3i/qZI9spUGcJ+y/lk43ttQ/iO1tOd9NissG6o97bighBCiL+BKRngmcDuR6ikfwYdJmVuQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8716,13 +9076,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-gnu@1.1.5': - resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-arm64-gnu@1.2.4': resolution: {integrity: sha512-tIP06BeD9EqvECBrPZ+sqdPlYrT+aYaAiu1wYziVx5elRK/ftm33JxVDy2bXGbr6J0CrtirCkR87/X5a2euEng==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8744,13 +9097,6 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-arm64-musl@1.1.5': - resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rolldown/binding-linux-arm64-musl@1.2.4': resolution: {integrity: sha512-Ql1Q0EQqVThvn9VAVlwNzsUvbSFtCMGjLpRRi4pk5i7NZZ4n5ISiLMjHYtus4VQ2PvkSw24zyaCVsiS+sXPj1w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8758,13 +9104,6 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.1.5': - resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-ppc64-gnu@1.2.4': resolution: {integrity: sha512-GjbjXD4XXfN19D0LZNbmiCBUoDiRACsYHr0yaIbbn8aFsXjHZifcYqu/W5Er5X2X990WjHXFrxarn5chzItorQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8772,13 +9111,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.1.5': - resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.4': resolution: {integrity: sha512-p5WR0NOwaRmJ/B1b6IjEFLLivwEsf3PrdBIhRbhTCQisbo2SvHHpG4ELB/+FgQNnB88LTOF86upmJmbvZdQ2lw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8800,13 +9132,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.1.5': - resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.4': resolution: {integrity: sha512-4/GyVjmhR+Tc6HLJvwc1sOhPqAZtySiSMesOZyX6JQ5XBxoTDEMKQzvo07NIK6nTon/SivlZqvhzvuVBNQhObQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8828,13 +9153,6 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-musl@1.1.5': - resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - '@rolldown/binding-linux-x64-musl@1.2.4': resolution: {integrity: sha512-l9eeLsCNvPpmSXUej0etw/J1eqV0Jj1D5G/xG6YTijmE6dkv6E2QezgWbTfQk63v952DPqrjOCoiqxq7Bw0YUQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8854,12 +9172,6 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.1.5': - resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.2.4': resolution: {integrity: sha512-e0F355MSTMm3+UOqtV3L24gFUp2N5m1f8L/7d56deik6va+AXdrt9F8LbzGpeWGWRbZEDq4m8NVnJDeBtf9DZg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8876,11 +9188,6 @@ packages: engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.1.5': - resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': resolution: {integrity: sha512-s27uU7tpCWSjHBnxyVXHt3rMrQdJq5MHNv3BzsewCIroIw3DJFjMH1dzCPPMUFxnh1r52Nf9IJ/eWp6LDoyGcw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8893,12 +9200,6 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.1.5': - resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.2.4': resolution: {integrity: sha512-AWLi0uBRYh6QlE7OKhiz+phZC0qwtij2QZmhmOdsLdFn64m7oMpooE9ICE3lhm9xMb4SpDo2WbHcxX1iFLFtqw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8917,12 +9218,6 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.5': - resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.4': resolution: {integrity: sha512-UwSDJOg3dqCAejWdxclJjCsh3Qq4vLYMDxmyHqo1btz3stK2VqgwNd3mm5tuIwzSlGIQ/1H9Hr+Zn09mrezNqQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -11160,6 +11455,11 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs3@0.14.2: + resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-regenerator@0.6.8: resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} peerDependencies: @@ -11340,10 +11640,6 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - brace-expansion@5.0.6: - resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} - engines: {node: 18 || 20 || >=22} - brace-expansion@5.0.8: resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} engines: {node: 20 || >=22} @@ -12530,6 +12826,7 @@ packages: eslint@9.39.4: resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true peerDependencies: jiti: '*' @@ -15926,11 +16223,6 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.1.5: - resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - rolldown@1.2.4: resolution: {integrity: sha512-rSr7irW0K7QRWzjdJXqZowkcRdDtjRduh43rBltnVKd0VFq839l1lJoDvGJb6gl7+4rTTCrPWu+YfujUL8Ug7w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -16539,6 +16831,10 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + synckit@0.11.13: + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} + engines: {node: ^14.18.0 || >=16.0.0} + system-architecture@0.1.0: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} @@ -16788,11 +17084,6 @@ packages: typescript: optional: true - tsx@4.21.0: - resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} - engines: {node: '>=18.0.0'} - hasBin: true - tsx@4.23.12: resolution: {integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==} engines: {node: '>=18.0.0'} @@ -18005,7 +18296,7 @@ snapshots: '@angular/compiler-cli@21.2.17(@angular/compiler@21.2.20)(typescript@5.9.3)': dependencies: '@angular/compiler': 21.2.20 - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 5.0.0 convert-source-map: 1.9.0 @@ -18524,17 +18815,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.29.0(supports-color@7.2.0)': + '@babel/core@7.29.0': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0(supports-color@7.2.0)) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0) '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3(supports-color@7.2.0) @@ -18547,14 +18838,14 @@ snapshots: '@babel/core@7.29.7': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3(supports-color@7.2.0) @@ -18574,16 +18865,16 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/generator@7.29.7': + '@babel/generator@7.29.8': dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -18594,7 +18885,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.29.7': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/helper-compilation-targets@7.27.2': dependencies: @@ -18620,7 +18911,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5(supports-color@7.2.0)) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -18633,7 +18924,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.7) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -18646,20 +18937,20 @@ snapshots: '@babel/helper-optimise-call-expression': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 semver: 6.3.1 transitivePeerDependencies: - supports-color '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-member-expression-to-functions': 7.29.7 '@babel/helper-optimise-call-expression': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0) '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -18672,11 +18963,19 @@ snapshots: '@babel/helper-optimise-call-expression': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 semver: 6.3.1 transitivePeerDependencies: - supports-color + '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-annotate-as-pure': 7.29.7 + regexpu-core: 6.4.0 + semver: 6.3.1 + optional: true + '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -18684,7 +18983,19 @@ snapshots: regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)(supports-color@7.2.0)': + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + debug: 4.4.3(supports-color@7.2.0) + lodash.debounce: 4.0.8 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 @@ -18701,33 +19012,33 @@ snapshots: '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-member-expression-to-functions@7.29.7': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.18.6': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.29.7': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -18736,7 +19047,7 @@ snapshots: '@babel/core': 7.28.5(supports-color@7.2.0) '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -18745,16 +19056,16 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-module-transforms@7.28.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -18763,16 +19074,26 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.0(supports-color@7.2.0))': + '@babel/helper-module-transforms@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.28.5(supports-color@7.2.0) '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -18781,17 +19102,17 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/helper-optimise-call-expression@7.29.7': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/helper-plugin-utils@7.27.1': {} @@ -18799,12 +19120,22 @@ snapshots: '@babel/helper-plugin-utils@7.29.7': {} + '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-wrap-function': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-wrap-function': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -18813,7 +19144,7 @@ snapshots: '@babel/core': 7.28.5(supports-color@7.2.0) '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -18822,7 +19153,7 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -18831,16 +19162,16 @@ snapshots: '@babel/core': 7.28.5(supports-color@7.2.0) '@babel/helper-member-expression-to-functions': 7.29.7 '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-member-expression-to-functions': 7.29.7 '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -18849,21 +19180,21 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-member-expression-to-functions': 7.29.7 '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.29.7': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -18886,24 +19217,24 @@ snapshots: '@babel/helper-wrap-function@7.29.7': dependencies: '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/helpers@7.29.7': dependencies: '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/parser@7.28.5': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@babel/parser@7.29.0': dependencies: @@ -18911,7 +19242,60 @@ snapshots: '@babel/parser@7.29.7': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 + + '@babel/parser@7.29.8': + dependencies: + '@babel/types': 7.29.8 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + optional: true '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7)': dependencies: @@ -18927,6 +19311,11 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + optional: true + '@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -18952,6 +19341,18 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5(supports-color@7.2.0))': dependencies: '@babel/core': 7.28.5(supports-color@7.2.0) @@ -18959,7 +19360,7 @@ snapshots: '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.7)': @@ -18969,7 +19370,7 @@ snapshots: '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': @@ -18994,7 +19395,7 @@ snapshots: '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.7)': @@ -19002,15 +19403,48 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19020,6 +19454,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19041,6 +19487,24 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19049,6 +19513,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-classes@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19057,18 +19534,81 @@ snapshots: '@babel/helper-globals': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/template': 7.29.7 + optional: true + + '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color + optional: true '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19086,6 +19626,15 @@ snapshots: '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.29.7) + '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19094,11 +19643,54 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-literals@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5(supports-color@7.2.0))': dependencies: '@babel/core': 7.28.5(supports-color@7.2.0) @@ -19109,7 +19701,7 @@ snapshots: '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-module-transforms': 7.28.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: @@ -19123,12 +19715,54 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-modules-systemjs@7.29.8(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.28.5(supports-color@7.2.0))': dependencies: '@babel/core': 7.28.5(supports-color@7.2.0) @@ -19139,6 +19773,30 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19146,9 +19804,24 @@ snapshots: '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) transitivePeerDependencies: - supports-color + optional: true + + '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19171,6 +19844,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19192,6 +19880,25 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19201,6 +19908,12 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19230,7 +19943,7 @@ snapshots: '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -19240,18 +19953,70 @@ snapshots: '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7)(supports-color@7.2.0)': + '@babel/plugin-transform-regenerator@7.29.8(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7)(supports-color@7.2.0) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7) babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7) semver: 6.3.1 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-spread@7.29.8(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5(supports-color@7.2.0))': dependencies: '@babel/core': 7.28.5(supports-color@7.2.0) @@ -19265,7 +20030,7 @@ snapshots: '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.29.7 @@ -19285,12 +20050,117 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/helper-plugin-utils': 7.29.7 + optional: true + + '@babel/preset-env@7.29.7(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-modules-systemjs': 7.29.8(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-regenerator': 7.29.8(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-spread': 7.29.8(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5(supports-color@7.2.0)) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.28.5(supports-color@7.2.0)) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.28.5(supports-color@7.2.0)) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.28.5(supports-color@7.2.0)) + core-js-compat: 3.49.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/preset-flow@7.27.1(@babel/core@7.28.5(supports-color@7.2.0))': dependencies: '@babel/core': 7.28.5(supports-color@7.2.0) @@ -19298,6 +20168,14 @@ snapshots: '@babel/helper-validator-option': 7.27.1 '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.5(supports-color@7.2.0)) + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5(supports-color@7.2.0))': + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/types': 7.29.8 + esutils: 2.0.3 + optional: true + '@babel/preset-typescript@7.28.5(@babel/core@7.28.5(supports-color@7.2.0))': dependencies: '@babel/core': 7.28.5(supports-color@7.2.0) @@ -19311,7 +20189,7 @@ snapshots: '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) @@ -19345,14 +20223,14 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@babel/template@7.29.7': dependencies: '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@babel/traverse@7.28.5': dependencies: @@ -19369,23 +20247,23 @@ snapshots: '@babel/traverse@7.29.0': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 debug: 4.4.3(supports-color@7.2.0) transitivePeerDependencies: - supports-color - '@babel/traverse@7.29.7': + '@babel/traverse@7.29.8': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 debug: 4.4.3(supports-color@7.2.0) transitivePeerDependencies: - supports-color @@ -19405,6 +20283,11 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@balena/dockerignore@1.0.2': {} '@bcoe/v8-coverage@1.0.2': {} @@ -20165,7 +21048,7 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.1 + js-yaml: 4.2.0 minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -20488,7 +21371,7 @@ snapshots: '@expo/metro-config@56.0.13(expo@56.0.5)(typescript@5.9.3)': dependencies: '@babel/code-frame': 7.29.0 - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/generator': 7.29.1 '@expo/config': 56.0.9(typescript@5.9.3) '@expo/env': 2.3.0 @@ -21387,6 +22270,16 @@ snapshots: '@nothing-but/utils@0.17.0': {} + '@nx/devkit@23.1.1(nx@23.1.1)': + dependencies: + ejs: 5.0.1 + enquirer: 2.3.6 + minimatch: 10.2.5 + nx: 23.1.1 + semver: 7.8.4 + tslib: 2.8.1 + yargs-parser: 21.1.1 + '@nx/nx-darwin-arm64@23.1.1': optional: true @@ -21936,8 +22829,6 @@ snapshots: '@oxc-project/types@0.137.0': {} - '@oxc-project/types@0.139.0': {} - '@oxc-project/types@0.144.0': {} '@oxc-resolver/binding-android-arm-eabi@11.21.3': @@ -22201,33 +23092,63 @@ snapshots: '@parcel/watcher-android-arm64@2.5.1': optional: true + '@parcel/watcher-android-arm64@2.6.0': + optional: true + '@parcel/watcher-darwin-arm64@2.5.1': optional: true + '@parcel/watcher-darwin-arm64@2.6.0': + optional: true + '@parcel/watcher-darwin-x64@2.5.1': optional: true + '@parcel/watcher-darwin-x64@2.6.0': + optional: true + '@parcel/watcher-freebsd-x64@2.5.1': optional: true + '@parcel/watcher-freebsd-x64@2.6.0': + optional: true + '@parcel/watcher-linux-arm-glibc@2.5.1': optional: true + '@parcel/watcher-linux-arm-glibc@2.6.0': + optional: true + '@parcel/watcher-linux-arm-musl@2.5.1': optional: true + '@parcel/watcher-linux-arm-musl@2.6.0': + optional: true + '@parcel/watcher-linux-arm64-glibc@2.5.1': optional: true + '@parcel/watcher-linux-arm64-glibc@2.6.0': + optional: true + '@parcel/watcher-linux-arm64-musl@2.5.1': optional: true + '@parcel/watcher-linux-arm64-musl@2.6.0': + optional: true + '@parcel/watcher-linux-x64-glibc@2.5.1': optional: true + '@parcel/watcher-linux-x64-glibc@2.6.0': + optional: true + '@parcel/watcher-linux-x64-musl@2.5.1': optional: true + '@parcel/watcher-linux-x64-musl@2.6.0': + optional: true + '@parcel/watcher-wasm@2.3.0': dependencies: is-glob: 4.0.3 @@ -22241,12 +23162,18 @@ snapshots: '@parcel/watcher-win32-arm64@2.5.1': optional: true + '@parcel/watcher-win32-arm64@2.6.0': + optional: true + '@parcel/watcher-win32-ia32@2.5.1': optional: true '@parcel/watcher-win32-x64@2.5.1': optional: true + '@parcel/watcher-win32-x64@2.6.0': + optional: true + '@parcel/watcher@2.5.1': dependencies: detect-libc: 1.0.3 @@ -22268,9 +23195,33 @@ snapshots: '@parcel/watcher-win32-ia32': 2.5.1 '@parcel/watcher-win32-x64': 2.5.1 + '@parcel/watcher@2.6.0': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.5 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.6.0 + '@parcel/watcher-darwin-arm64': 2.6.0 + '@parcel/watcher-darwin-x64': 2.6.0 + '@parcel/watcher-freebsd-x64': 2.6.0 + '@parcel/watcher-linux-arm-glibc': 2.6.0 + '@parcel/watcher-linux-arm-musl': 2.6.0 + '@parcel/watcher-linux-arm64-glibc': 2.6.0 + '@parcel/watcher-linux-arm64-musl': 2.6.0 + '@parcel/watcher-linux-x64-glibc': 2.6.0 + '@parcel/watcher-linux-x64-musl': 2.6.0 + '@parcel/watcher-win32-arm64': 2.6.0 + '@parcel/watcher-win32-x64': 2.6.0 + optional: true + '@pkgjs/parseargs@0.11.0': optional: true + '@pkgr/core@0.3.6': + optional: true + '@playwright/test@1.57.0': dependencies: playwright: 1.57.0 @@ -23981,7 +24932,7 @@ snapshots: '@react-native/babel-plugin-codegen@0.85.3(@babel/core@7.29.7)': dependencies: - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 '@react-native/codegen': 0.85.3(@babel/core@7.29.7) transitivePeerDependencies: - '@babel/core' @@ -24365,9 +25316,6 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-android-arm64@1.1.5': - optional: true - '@rolldown/binding-android-arm64@1.2.4': optional: true @@ -24377,9 +25325,6 @@ snapshots: '@rolldown/binding-darwin-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-darwin-arm64@1.1.5': - optional: true - '@rolldown/binding-darwin-arm64@1.2.4': optional: true @@ -24389,9 +25334,6 @@ snapshots: '@rolldown/binding-darwin-x64@1.0.0-rc.4': optional: true - '@rolldown/binding-darwin-x64@1.1.5': - optional: true - '@rolldown/binding-darwin-x64@1.2.4': optional: true @@ -24401,9 +25343,6 @@ snapshots: '@rolldown/binding-freebsd-x64@1.0.0-rc.4': optional: true - '@rolldown/binding-freebsd-x64@1.1.5': - optional: true - '@rolldown/binding-freebsd-x64@1.2.4': optional: true @@ -24413,9 +25352,6 @@ snapshots: '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': - optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.4': optional: true @@ -24425,9 +25361,6 @@ snapshots: '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.5': - optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.4': optional: true @@ -24437,21 +25370,12 @@ snapshots: '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.5': - optional: true - '@rolldown/binding-linux-arm64-musl@1.2.4': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.5': - optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.4': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.5': - optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.4': optional: true @@ -24461,9 +25385,6 @@ snapshots: '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.5': - optional: true - '@rolldown/binding-linux-x64-gnu@1.2.4': optional: true @@ -24473,9 +25394,6 @@ snapshots: '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': optional: true - '@rolldown/binding-linux-x64-musl@1.1.5': - optional: true - '@rolldown/binding-linux-x64-musl@1.2.4': optional: true @@ -24485,9 +25403,6 @@ snapshots: '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-openharmony-arm64@1.1.5': - optional: true - '@rolldown/binding-openharmony-arm64@1.2.4': optional: true @@ -24507,22 +25422,12 @@ snapshots: - '@emnapi/runtime' optional: true - '@rolldown/binding-wasm32-wasi@1.1.5': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4': optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.5': - optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.4': optional: true @@ -24532,9 +25437,6 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.5': - optional: true - '@rolldown/binding-win32-x64-msvc@1.2.4': optional: true @@ -25278,8 +26180,8 @@ snapshots: dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@tanstack/router-utils': 1.131.2 babel-dead-code-elimination: 1.0.12 tiny-invariant: 1.3.3 @@ -25291,8 +26193,8 @@ snapshots: dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@tanstack/router-utils': 1.141.0 babel-dead-code-elimination: 1.0.12 pathe: 2.0.3 @@ -25343,9 +26245,9 @@ snapshots: - uploadthing - xml2js - '@tanstack/nitro-v2-vite-plugin@1.155.0(@electric-sql/pglite@0.4.3)(aws4fetch@1.0.20)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260317.1)(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3)(rolldown@1.1.5)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0))': + '@tanstack/nitro-v2-vite-plugin@1.155.0(@electric-sql/pglite@0.4.3)(aws4fetch@1.0.20)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260317.1)(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3)(rolldown@1.2.4)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0))': dependencies: - nitropack: 2.13.1(@electric-sql/pglite@0.4.3)(aws4fetch@1.0.20)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260317.1)(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3)(rolldown@1.1.5) + nitropack: 2.13.1(@electric-sql/pglite@0.4.3)(aws4fetch@1.0.20)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260317.1)(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3)(rolldown@1.2.4) pathe: 2.0.3 vite: 8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: @@ -25693,7 +26595,7 @@ snapshots: prettier: 3.7.4 recast: 0.23.11 source-map: 0.7.6 - tsx: 4.21.0 + tsx: 4.23.12 zod: 3.25.76 transitivePeerDependencies: - supports-color @@ -25706,7 +26608,7 @@ snapshots: prettier: 3.7.4 recast: 0.23.11 source-map: 0.7.6 - tsx: 4.21.0 + tsx: 4.23.12 zod: 3.25.76 transitivePeerDependencies: - supports-color @@ -25719,7 +26621,7 @@ snapshots: prettier: 3.7.4 recast: 0.23.11 source-map: 0.7.6 - tsx: 4.21.0 + tsx: 4.23.12 zod: 3.25.76 transitivePeerDependencies: - supports-color @@ -25730,8 +26632,8 @@ snapshots: '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.7) '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@tanstack/router-core': 1.131.50 '@tanstack/router-generator': 1.131.50 '@tanstack/router-utils': 1.131.2 @@ -25753,13 +26655,13 @@ snapshots: '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.7) '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@tanstack/router-core': 1.141.1 '@tanstack/router-generator': 1.141.1 '@tanstack/router-utils': 1.141.0 '@tanstack/virtual-file-routes': 1.141.0 - babel-dead-code-elimination: 1.0.10 + babel-dead-code-elimination: 1.0.12 chokidar: 3.6.0 unplugin: 2.3.11 zod: 3.25.76 @@ -25770,14 +26672,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0))': + '@tanstack/router-plugin@1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0))': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.0) + '@babel/core': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.7) '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@tanstack/router-core': 1.159.4 '@tanstack/router-generator': 1.159.4 '@tanstack/router-utils': 1.158.0 @@ -25805,8 +26707,8 @@ snapshots: '@tanstack/router-utils@1.131.2': dependencies: '@babel/core': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.8 '@babel/preset-typescript': 7.28.5(@babel/core@7.29.7) ansis: 4.2.0 diff: 8.0.2 @@ -25816,8 +26718,8 @@ snapshots: '@tanstack/router-utils@1.141.0': dependencies: '@babel/core': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.8 '@babel/preset-typescript': 7.28.5(@babel/core@7.29.7) ansis: 4.2.0 diff: 8.0.2 @@ -25828,10 +26730,10 @@ snapshots: '@tanstack/router-utils@1.158.0': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) - '@babel/generator': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/core': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 ansis: 4.2.0 babel-dead-code-elimination: 1.0.12 diff: 8.0.2 @@ -25847,8 +26749,8 @@ snapshots: '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.7) '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@tanstack/directive-functions-plugin': 1.131.2(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) babel-dead-code-elimination: 1.0.10 tiny-invariant: 1.3.3 @@ -25863,10 +26765,10 @@ snapshots: '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.7) '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@tanstack/directive-functions-plugin': 1.141.0(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) - babel-dead-code-elimination: 1.0.10 + babel-dead-code-elimination: 1.0.12 tiny-invariant: 1.3.3 transitivePeerDependencies: - supports-color @@ -26049,7 +26951,7 @@ snapshots: '@tanstack/react-router': 1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tanstack/react-start-plugin': 1.131.50(e7a157c953e155a2765d901b34df38b3) '@tanstack/router-generator': 1.159.4 - '@tanstack/router-plugin': 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + '@tanstack/router-plugin': 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/server-functions-plugin': 1.141.0(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/start-server-functions-handler': 1.120.19(crossws@0.4.6(srvx@0.11.17)) '@vitejs/plugin-react': 4.7.0(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) @@ -26116,7 +27018,7 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@tanstack/router-core': 1.131.50 '@tanstack/router-generator': 1.131.50 '@tanstack/router-plugin': 1.131.50(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) @@ -26132,7 +27034,7 @@ snapshots: pathe: 2.0.3 ufo: 1.6.3 vite: 8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0) - vitefu: 1.1.1(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + vitefu: 1.1.3(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) xmlbuilder2: 3.1.1 zod: 3.25.76 transitivePeerDependencies: @@ -26173,7 +27075,7 @@ snapshots: '@tanstack/start-plugin-core@1.141.1(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(crossws@0.4.6(srvx@0.11.17))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@babel/code-frame': 7.26.2 - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/types': 7.29.0 '@rolldown/pluginutils': 1.0.0-beta.40 '@tanstack/router-core': 1.141.1 @@ -26205,12 +27107,12 @@ snapshots: '@tanstack/start-plugin-core@1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(crossws@0.4.6(srvx@0.11.17))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@babel/code-frame': 7.27.1 - '@babel/core': 7.29.0(supports-color@7.2.0) - '@babel/types': 7.29.7 + '@babel/core': 7.29.7 + '@babel/types': 7.29.8 '@rolldown/pluginutils': 1.0.0-beta.40 '@tanstack/router-core': 1.159.4 '@tanstack/router-generator': 1.159.4 - '@tanstack/router-plugin': 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(supports-color@7.2.0)(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + '@tanstack/router-plugin': 1.159.5(@tanstack/react-router@1.159.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.14(solid-js@1.9.10)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) '@tanstack/router-utils': 1.158.0 '@tanstack/start-client-core': 1.159.4 '@tanstack/start-server-core': 1.159.4(crossws@0.4.6(srvx@0.11.17)) @@ -26221,7 +27123,7 @@ snapshots: tinyglobby: 0.2.17 ufo: 1.6.3 vite: 8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0) - vitefu: 1.1.1(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + vitefu: 1.1.3(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) xmlbuilder2: 4.0.3 zod: 3.25.76 transitivePeerDependencies: @@ -26402,10 +27304,10 @@ snapshots: '@tanstack/virtual-file-routes@1.154.7': {} - '@tanstack/vite-config@0.6.0(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0))': + '@tanstack/vite-config@0.6.0(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.2.4)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0))': dependencies: vite: 8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0) - vite-plugin-dts: 5.0.3(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + vite-plugin-dts: 5.0.3(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.2.4)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) vite-plugin-externalize-deps: 0.10.0(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) vite-tsconfig-paths: 6.1.1(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) transitivePeerDependencies: @@ -26514,16 +27416,16 @@ snapshots: '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 '@types/braces@3.0.5': {} @@ -27222,7 +28124,7 @@ snapshots: '@vue/compiler-core@3.5.25': dependencies: - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 '@vue/shared': 3.5.25 entities: 4.5.0 estree-walker: 2.0.2 @@ -27525,7 +28427,7 @@ snapshots: ast-kit@2.2.0: dependencies: - '@babel/parser': 7.29.7 + '@babel/parser': 7.29.8 pathe: 2.0.3 ast-types@0.13.4: @@ -27594,27 +28496,27 @@ snapshots: babel-dead-code-elimination@1.0.10: dependencies: '@babel/core': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color babel-dead-code-elimination@1.0.12: dependencies: '@babel/core': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color babel-plugin-jsx-dom-expressions@0.40.3(@babel/core@7.29.0): dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.18.6 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.0) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 html-entities: 2.3.3 parse5: 7.3.0 @@ -27623,15 +28525,25 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-module-imports': 7.18.6 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 html-entities: 2.3.3 parse5: 7.3.0 - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7)(supports-color@7.2.0): + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.28.5(supports-color@7.2.0)): + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.28.5(supports-color@7.2.0)) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + optional: true + + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7): dependencies: '@babel/compat-data': 7.29.7 '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)(supports-color@7.2.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -27639,21 +28551,38 @@ snapshots: babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7): dependencies: '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)(supports-color@7.2.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.28.5(supports-color@7.2.0)): + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.28.5(supports-color@7.2.0)) + core-js-compat: 3.49.0 + transitivePeerDependencies: + - supports-color + optional: true + + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.28.5(supports-color@7.2.0)): + dependencies: + '@babel/core': 7.28.5(supports-color@7.2.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.28.5(supports-color@7.2.0)) + transitivePeerDependencies: + - supports-color + optional: true + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7): dependencies: '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)(supports-color@7.2.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) transitivePeerDependencies: - supports-color babel-plugin-react-compiler@1.0.0: dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 babel-plugin-react-native-web@0.21.2: {} @@ -27701,7 +28630,7 @@ snapshots: '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7)(supports-color@7.2.0) + '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.29.7) '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.7) @@ -27753,7 +28682,7 @@ snapshots: '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7)(supports-color@7.2.0) + '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.29.7) '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.7) @@ -27773,7 +28702,7 @@ snapshots: babel-preset-solid@1.9.10(@babel/core@7.29.0)(solid-js@1.9.10): dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 babel-plugin-jsx-dom-expressions: 0.40.3(@babel/core@7.29.0) optionalDependencies: solid-js: 1.9.10 @@ -27940,10 +28869,6 @@ snapshots: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.6: - dependencies: - balanced-match: 4.0.4 - brace-expansion@5.0.8: dependencies: balanced-match: 4.0.4 @@ -28974,7 +29899,7 @@ snapshots: esbuild-plugin-solid@0.5.0(esbuild@0.28.1)(solid-js@1.9.10): dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) babel-preset-solid: 1.9.10(@babel/core@7.29.0)(solid-js@1.9.10) esbuild: 0.28.1 @@ -30612,7 +31537,7 @@ snapshots: jsc-safe-url@0.2.4: {} - jscodeshift@17.3.0(supports-color@7.2.0): + jscodeshift@17.3.0(@babel/preset-env@7.29.7(@babel/core@7.28.5(supports-color@7.2.0)))(supports-color@7.2.0): dependencies: '@babel/core': 7.28.5(supports-color@7.2.0) '@babel/parser': 7.29.0 @@ -30632,6 +31557,8 @@ snapshots: recast: 0.23.11 tmp: 0.2.5 write-file-atomic: 5.0.1 + optionalDependencies: + '@babel/preset-env': 7.29.7(@babel/core@7.28.5(supports-color@7.2.0)) transitivePeerDependencies: - supports-color @@ -31128,8 +32055,8 @@ snapshots: magicast@0.5.2: dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 source-map-js: 1.2.1 make-dir@2.1.0: @@ -31447,9 +32374,9 @@ snapshots: metro-transform-plugins@0.84.4: dependencies: '@babel/core': 7.29.7 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -31458,9 +32385,9 @@ snapshots: metro-transform-worker@0.84.4: dependencies: '@babel/core': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 metro: 0.84.4 metro-babel-transformer: 0.84.4 @@ -31479,11 +32406,11 @@ snapshots: dependencies: '@babel/code-frame': 7.29.7 '@babel/core': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/parser': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.8 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 accepts: 2.0.0 ci-info: 2.0.0 connect: 3.7.0 @@ -31791,7 +32718,7 @@ snapshots: minimatch@10.2.5: dependencies: - brace-expansion: 5.0.6 + brace-expansion: 5.0.8 minimatch@3.0.8: dependencies: @@ -31978,7 +32905,7 @@ snapshots: ocache: 0.1.5 ofetch: 2.0.0-alpha.3 ohash: 2.0.11 - rolldown: 1.1.5 + rolldown: 1.2.4 srvx: 0.11.17 unenv: 2.0.0-rc.24 unstorage: 2.0.0-alpha.7(aws4fetch@1.0.20)(chokidar@5.0.0)(db0@0.3.4(@electric-sql/pglite@0.4.3)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3))(ofetch@2.0.0-alpha.3) @@ -32032,7 +32959,7 @@ snapshots: ocache: 0.1.5 ofetch: 2.0.0-alpha.3 ohash: 2.0.11 - rolldown: 1.1.5 + rolldown: 1.2.4 srvx: 0.11.17 unenv: 2.0.0-rc.24 unstorage: 2.0.0-alpha.7(aws4fetch@1.0.20)(chokidar@5.0.0)(db0@0.3.4(@electric-sql/pglite@0.4.3)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react-dom@19.2.3(@types/react@19.2.18))(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3))(ofetch@2.0.0-alpha.3) @@ -32086,7 +33013,7 @@ snapshots: ocache: 0.1.5 ofetch: 2.0.0-alpha.3 ohash: 2.0.11 - rolldown: 1.1.5 + rolldown: 1.2.4 srvx: 0.11.17 unenv: 2.0.0-rc.24 unstorage: 2.0.0-alpha.7(aws4fetch@1.0.20)(chokidar@5.0.0)(db0@0.3.4(@electric-sql/pglite@0.4.3)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3))(ofetch@2.0.0-alpha.3) @@ -32230,7 +33157,7 @@ snapshots: - supports-color - uploadthing - nitropack@2.13.1(@electric-sql/pglite@0.4.3)(aws4fetch@1.0.20)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260317.1)(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3)(rolldown@1.1.5): + nitropack@2.13.1(@electric-sql/pglite@0.4.3)(aws4fetch@1.0.20)(better-sqlite3@12.11.1)(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260317.1)(@electric-sql/pglite@0.4.3)(@opentelemetry/api@1.9.1)(@prisma/client@7.9.0(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(better-sqlite3@12.11.1)(bun-types@1.3.14)(mysql2@3.15.3)(postgres@3.4.7)(prisma@7.9.0(@types/react@19.2.18)(better-sqlite3@12.11.1)(magicast@0.5.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mysql2@3.15.3)(rolldown@1.2.4): dependencies: '@cloudflare/kv-asset-handler': 0.4.2 '@rollup/plugin-alias': 6.0.0(rollup@4.60.1) @@ -32283,7 +33210,7 @@ snapshots: pretty-bytes: 7.1.0 radix3: 1.1.2 rollup: 4.60.1 - rollup-plugin-visualizer: 6.0.5(rolldown@1.1.5)(rollup@4.60.1) + rollup-plugin-visualizer: 6.0.5(rolldown@1.2.4)(rollup@4.60.1) scule: 1.3.0 semver: 7.8.4 serve-placeholder: 2.0.2 @@ -34168,27 +35095,6 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' - rolldown@1.1.5: - dependencies: - '@oxc-project/types': 0.139.0 - '@rolldown/pluginutils': 1.0.1 - optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.5 - '@rolldown/binding-darwin-arm64': 1.1.5 - '@rolldown/binding-darwin-x64': 1.1.5 - '@rolldown/binding-freebsd-x64': 1.1.5 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 - '@rolldown/binding-linux-arm64-gnu': 1.1.5 - '@rolldown/binding-linux-arm64-musl': 1.1.5 - '@rolldown/binding-linux-ppc64-gnu': 1.1.5 - '@rolldown/binding-linux-s390x-gnu': 1.1.5 - '@rolldown/binding-linux-x64-gnu': 1.1.5 - '@rolldown/binding-linux-x64-musl': 1.1.5 - '@rolldown/binding-openharmony-arm64': 1.1.5 - '@rolldown/binding-wasm32-wasi': 1.1.5 - '@rolldown/binding-win32-arm64-msvc': 1.1.5 - '@rolldown/binding-win32-x64-msvc': 1.1.5 - rolldown@1.2.4: dependencies: '@oxc-project/types': 0.144.0 @@ -34220,16 +35126,6 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.29.7 - rollup-plugin-visualizer@6.0.5(rolldown@1.1.5)(rollup@4.60.1): - dependencies: - open: 8.4.2 - picomatch: 4.0.5 - source-map: 0.7.6 - yargs: 17.7.2 - optionalDependencies: - rolldown: 1.1.5 - rollup: 4.60.1 - rollup-plugin-visualizer@6.0.5(rolldown@1.2.4)(rollup@4.60.1): dependencies: open: 8.4.2 @@ -34353,7 +35249,7 @@ snapshots: immutable: 5.1.6 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.1 + '@parcel/watcher': 2.6.0 sass@1.97.3: dependencies: @@ -34698,9 +35594,9 @@ snapshots: solid-refresh@0.6.3(solid-js@1.9.10): dependencies: - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/helper-module-imports': 7.29.7 - '@babel/types': 7.29.7 + '@babel/types': 7.29.8 solid-js: 1.9.10 transitivePeerDependencies: - supports-color @@ -34951,6 +35847,11 @@ snapshots: symbol-tree@3.2.4: {} + synckit@0.11.13: + dependencies: + '@pkgr/core': 0.3.6 + optional: true + system-architecture@0.1.0: {} tagged-tag@1.0.0: {} @@ -35139,7 +36040,7 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.17.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(oxc-resolver@11.21.3)(publint@0.3.16)(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3)): + tsdown@0.17.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(oxc-resolver@11.21.3)(publint@0.3.16)(synckit@0.11.13)(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3)): dependencies: ansis: 4.2.0 cac: 6.7.14 @@ -35155,7 +36056,7 @@ snapshots: tinyglobby: 0.2.17 tree-kill: 1.2.2 unconfig-core: 7.4.2 - unrun: 0.2.19(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + unrun: 0.2.19(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13) optionalDependencies: publint: 0.3.16 typescript: 5.9.3 @@ -35237,13 +36138,6 @@ snapshots: - tsx - yaml - tsx@4.21.0: - dependencies: - esbuild: 0.27.7 - get-tsconfig: 4.14.0 - optionalDependencies: - fsevents: 2.3.3 - tsx@4.23.12: dependencies: esbuild: 0.28.1 @@ -35475,7 +36369,7 @@ snapshots: unpipe@1.0.0: {} - unplugin-dts@1.0.3(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)): + unplugin-dts@1.0.3(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.2.4)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.60.1) '@volar/typescript': 2.4.27 @@ -35489,7 +36383,7 @@ snapshots: optionalDependencies: '@microsoft/api-extractor': 7.47.7(@types/node@24.10.3) esbuild: 0.28.1 - rolldown: 1.1.5 + rolldown: 1.2.4 rollup: 4.60.1 vite: 8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: @@ -35503,13 +36397,15 @@ snapshots: unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 + acorn: 8.18.0 picomatch: 4.0.5 webpack-virtual-modules: 0.6.2 - unrun@0.2.19(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1): + unrun@0.2.19(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(synckit@0.11.13): dependencies: rolldown: 1.0.0-beta.53(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optionalDependencies: + synckit: 0.11.13 transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -35769,9 +36665,9 @@ snapshots: - xml2js - yaml - vite-plugin-dts@5.0.3(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)): + vite-plugin-dts@5.0.3(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.2.4)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)): dependencies: - unplugin-dts: 1.0.3(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.1.5)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) + unplugin-dts: 1.0.3(@microsoft/api-extractor@7.47.7(@types/node@24.10.3))(esbuild@0.28.1)(rolldown@1.2.4)(rollup@4.60.1)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.2.1(@types/node@24.10.3)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.6)(sass@1.101.0)(terser@5.44.1)(tsx@4.23.12)(yaml@2.9.0)) optionalDependencies: '@microsoft/api-extractor': 7.47.7(@types/node@24.10.3) rollup: 4.60.1 @@ -36235,7 +37131,7 @@ snapshots: '@oozcitak/dom': 2.0.2 '@oozcitak/infra': 2.0.2 '@oozcitak/util': 10.0.0 - js-yaml: 4.1.1 + js-yaml: 4.2.0 xmlbuilder@11.0.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 377e2bd14d..0c4793510b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -151,6 +151,7 @@ packages: - 'examples/*' - 'testing/*' - 'codemods' + - 'tools/*' allowBuilds: # Vite + every transitive bundler-step needs the platform-specific binary. diff --git a/tools/workspace-plugin/generators.json b/tools/workspace-plugin/generators.json new file mode 100644 index 0000000000..bc3ea6ce16 --- /dev/null +++ b/tools/workspace-plugin/generators.json @@ -0,0 +1,9 @@ +{ + "generators": { + "react-app": { + "factory": "./src/generators/react-app/generator", + "schema": "./src/generators/react-app/schema.json", + "description": "Create a TanStack Start React chat app under examples/" + } + } +} diff --git a/tools/workspace-plugin/package.json b/tools/workspace-plugin/package.json new file mode 100644 index 0000000000..33037533ff --- /dev/null +++ b/tools/workspace-plugin/package.json @@ -0,0 +1,10 @@ +{ + "name": "@tanstack/workspace-plugin", + "version": "0.0.0", + "private": true, + "main": "./src/index.ts", + "generators": "./generators.json", + "dependencies": { + "@nx/devkit": "23.1.1" + } +} diff --git a/tools/workspace-plugin/src/generators/react-app/files/.env.example b/tools/workspace-plugin/src/generators/react-app/files/.env.example new file mode 100644 index 0000000000..60eb9bdc41 --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/.env.example @@ -0,0 +1,41 @@ +# OpenAI +OPENAI_API_KEY= + +# Anthropic +ANTHROPIC_API_KEY= + +# Google Gemini. The adapter reads GOOGLE_API_KEY, then GEMINI_API_KEY. +GOOGLE_API_KEY= +GEMINI_API_KEY= + +# OpenRouter +OPENROUTER_API_KEY= + +# Groq +GROQ_API_KEY= + +# xAI Grok. The adapter reads XAI_API_KEY. GROK_API_KEY is an alias you can set. +XAI_API_KEY= +GROK_API_KEY= + +# BytePlus ModelArk. The adapter reads ARK_API_KEY, then BYTEPLUS_API_KEY. +ARK_API_KEY= +BYTEPLUS_API_KEY= + +# BytePlus Voice (Seed Speech). This is a different key from ModelArk. +BYTEPLUS_VOICE_API_KEY= + +# Cloudflare Workers AI. Account id: `wrangler whoami`. Token: dashboard API tokens. +CLOUDFLARE_ACCOUNT_ID= +CLOUDFLARE_API_TOKEN= +# Optional. Send chat through this AI Gateway (caching, logs, stored keys). +# CLOUDFLARE_AI_GATEWAY_ID=default + +# Amazon Bedrock (default Converse API) +# Create a key at: https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html +BEDROCK_API_KEY= +# AWS_BEARER_TOKEN_BEDROCK= +# AWS_REGION=us-east-1 +# To use SigV4 instead of the API key: set BEDROCK_AUTH=sigv4 and provide AWS +# IAM credentials via env vars or `aws configure`. +# BEDROCK_AUTH=sigv4 diff --git a/tools/workspace-plugin/src/generators/react-app/files/.gitignore b/tools/workspace-plugin/src/generators/react-app/files/.gitignore new file mode 100644 index 0000000000..b6ceee9913 --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/.gitignore @@ -0,0 +1,7 @@ +node_modules +dist +.env +.env.local +.nitro +.tanstack +.output diff --git a/tools/workspace-plugin/src/generators/react-app/files/README.md b/tools/workspace-plugin/src/generators/react-app/files/README.md new file mode 100644 index 0000000000..db20853576 --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/README.md @@ -0,0 +1,14 @@ +# <%= name %> + +A thin TanStack Start chat lab. Use this app to try a feature in this repo. + +## Run + +1. Copy `.env.example` to `.env.local`. +2. Put at least one provider key in `.env.local`. +3. Run `pnpm install` from the repo root. +4. Run `pnpm --filter <%= name %> dev`. +5. Open http://localhost:3100. + +The index route is the chat shell. Change that page to show your feature. +Change `/api/chat` only when the server must change. diff --git a/tools/workspace-plugin/src/generators/react-app/files/package.json b/tools/workspace-plugin/src/generators/react-app/files/package.json new file mode 100644 index 0000000000..804e8d1f59 --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/package.json @@ -0,0 +1,86 @@ +{ + "name": "<%= name %>", + "private": true, + "type": "module", + "scripts": { + "dev": "vite dev --port 3100", + "build": "vite build", + "test:types": "tsc" + }, + "dependencies": { + "@tailwindcss/vite": "^4.1.18", + "@tanstack/ai": "workspace:*", + "@tanstack/ai-acp": "workspace:*", + "@tanstack/ai-anthropic": "workspace:*", + "@tanstack/ai-bedrock": "workspace:*", + "@tanstack/ai-byteplus": "workspace:*", + "@tanstack/ai-claude-code": "workspace:*", + "@tanstack/ai-client": "workspace:*", + "@tanstack/ai-cloudflare": "workspace:*", + "@tanstack/ai-code-mode": "workspace:*", + "@tanstack/ai-code-mode-snippets": "workspace:*", + "@tanstack/ai-codex": "workspace:*", + "@tanstack/ai-cohere": "workspace:*", + "@tanstack/ai-compaction": "workspace:*", + "@tanstack/ai-devtools-core": "workspace:*", + "@tanstack/ai-durable-stream": "workspace:*", + "@tanstack/ai-elevenlabs": "workspace:*", + "@tanstack/ai-event-client": "workspace:*", + "@tanstack/ai-fal": "workspace:*", + "@tanstack/ai-gemini": "workspace:*", + "@tanstack/ai-grok": "workspace:*", + "@tanstack/ai-grok-build": "workspace:*", + "@tanstack/ai-groq": "workspace:*", + "@tanstack/ai-isolate-cloudflare": "workspace:*", + "@tanstack/ai-isolate-daytona": "workspace:*", + "@tanstack/ai-isolate-node": "workspace:*", + "@tanstack/ai-isolate-quickjs": "workspace:*", + "@tanstack/ai-isolate-quickjs-bun": "workspace:*", + "@tanstack/ai-llmgateway": "workspace:*", + "@tanstack/ai-lovable": "workspace:*", + "@tanstack/ai-mcp": "workspace:*", + "@tanstack/ai-memory": "workspace:*", + "@tanstack/ai-mistral": "workspace:*", + "@tanstack/ai-ollama": "workspace:*", + "@tanstack/ai-openai": "workspace:*", + "@tanstack/ai-opencode": "workspace:*", + "@tanstack/ai-openrouter": "workspace:*", + "@tanstack/ai-perplexity": "workspace:*", + "@tanstack/ai-persistence": "workspace:*", + "@tanstack/ai-react": "workspace:*", + "@tanstack/ai-react-ui": "workspace:*", + "@tanstack/ai-reactor": "workspace:*", + "@tanstack/ai-sandbox": "workspace:*", + "@tanstack/ai-sandbox-blaxel": "workspace:*", + "@tanstack/ai-sandbox-cloudflare": "workspace:*", + "@tanstack/ai-sandbox-daytona": "workspace:*", + "@tanstack/ai-sandbox-docker": "workspace:*", + "@tanstack/ai-sandbox-local-process": "workspace:*", + "@tanstack/ai-sandbox-sprites": "workspace:*", + "@tanstack/ai-sandbox-upstash-box": "workspace:*", + "@tanstack/ai-sandbox-vercel": "workspace:*", + "@tanstack/ai-skills": "workspace:*", + "@tanstack/ai-utils": "workspace:*", + "@tanstack/ai-vercel-gateway": "workspace:*", + "@tanstack/ai-vertex": "workspace:*", + "@tanstack/openai-base": "workspace:*", + "@tanstack/react-ai-devtools": "workspace:*", + "@tanstack/react-router": "^1.158.4", + "@tanstack/react-start": "^1.159.0", + "@tanstack/router-plugin": "^1.158.4", + "lucide-react": "^0.561.0", + "nitro": "3.0.260610-beta", + "react": "^19.2.3", + "react-dom": "^19.2.3", + "tailwindcss": "^4.1.18", + "zod": "^4.2.0" + }, + "devDependencies": { + "@types/node": "^24.10.1", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.2.0", + "typescript": "5.9.3", + "vite": "^8.2.1" + } +} diff --git a/tools/workspace-plugin/src/generators/react-app/files/src/components/ByokKeyDialog.tsx__tmpl__ b/tools/workspace-plugin/src/generators/react-app/files/src/components/ByokKeyDialog.tsx__tmpl__ new file mode 100644 index 0000000000..a65d5c3b89 --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/src/components/ByokKeyDialog.tsx__tmpl__ @@ -0,0 +1,501 @@ +import { useState } from 'react' +import { KeyRound, X } from 'lucide-react' +import { useByok } from '@tanstack/ai-react' +import { byok, KEYED_PROVIDERS, KEY_GROUPS } from '@/lib/byok' +import type { KeyStatus } from '@tanstack/ai-client/byok' +import type { ProviderId } from '@tanstack/ai/byok' +import type { ReactNode } from 'react' + +export type ByokKeyDialogProps = { + open: boolean + onOpenChange: (open: boolean) => void + envStatus?: Record + activeProvider?: ProviderId | null + highlightProvider?: ProviderId | null + openRouter?: { + onLogin: () => void + completing?: boolean + error?: string | null + } + trigger?: ReactNode + description?: string +} + +const STATUS_LABEL: Record< + KeyStatus['state'], + { label: string; className: string } +> = { + empty: { label: 'Not set', className: 'text-gray-500' }, + set: { label: 'Saved', className: 'text-gray-400' }, + locked: { label: 'Locked', className: 'text-amber-400' }, + error: { label: 'Check failed', className: 'text-red-400' }, +} + +export function ByokKeyDialog({ + open, + onOpenChange, + envStatus, + activeProvider = null, + highlightProvider = null, + openRouter, + trigger, + description = 'Keys stay in your browser and are sent per-request in a header — never stored on the server. Providers with a server key already work without one.', +}: ByokKeyDialogProps) { + const snapshot = useByok(byok) + const [unlocking, setUnlocking] = useState(false) + const [actionError, setActionError] = useState('') + + const activeStatus = activeProvider + ? snapshot.status[activeProvider] + : undefined + const activeNeedsKey = + activeProvider != null && + !envStatus?.[activeProvider] && + (!activeStatus || activeStatus.state === 'empty') + + return ( + <> + {trigger ?? ( + + )} + + {open ? ( +
onOpenChange(false)} + > +
+
event.stopPropagation()} + > +
+

API keys

+ +
+

+ {description} +

+ + {snapshot.locked ? ( +
+ + Your saved keys are locked ({byok.storage.label}). + + +
+ ) : null} + + {byok.storage.warning ? ( +

+ {byok.storage.warning} +

+ ) : null} + {snapshot.storageError ? ( +

+ {snapshot.storageError} +

+ ) : null} + {actionError ? ( +

{actionError}

+ ) : null} + {openRouter?.completing ? ( +

+ Completing OpenRouter sign-in… +

+ ) : null} + {openRouter?.error ? ( +

{openRouter.error}

+ ) : null} + +
+ {KEYED_PROVIDERS.map((provider) => { + const group = KEY_GROUPS.find((g) => + g.fields.some((f) => f.provider.id === provider.id), + ) + if (group) { + // Render the group once, where its first field sits. + if (group.fields[0].provider.id !== provider.id) return null + return ( + f.provider.id === highlightProvider, + )} + /> + ) + } + return ( + + ) + })} +
+
+
+
+ ) : null} + + ) +} + +function ProviderRow({ + id, + label, + status, + locked, + hasEnvKey, + highlight, + openRouter, +}: { + id: ProviderId + label: string + status: KeyStatus | undefined + locked: boolean + hasEnvKey: boolean + highlight: boolean + openRouter?: ByokKeyDialogProps['openRouter'] +}) { + const [draft, setDraft] = useState('') + const [rowError, setRowError] = useState('') + const state = status?.state ?? 'empty' + const masked = status && 'masked' in status ? status.masked : undefined + const isLocked = locked || state === 'locked' + const hasKey = state !== 'empty' + + return ( +
+
+ {label} + +
+ + {hasKey && masked ? ( +
+ + {masked} + +
+ +
+
+ ) : null} + + {id === 'openrouter' && openRouter && !hasKey ? ( + + ) : null} + + {state === 'error' && status && 'message' in status ? ( +

{status.message}

+ ) : null} + {rowError ?

{rowError}

: null} + +
{ + event.preventDefault() + const next = draft.trim() + if (!next || isLocked) return + setRowError('') + void byok + .update(id, next) + .then(() => setDraft('')) + .catch((error: unknown) => + setRowError( + error instanceof Error ? error.message : 'Could not save key', + ), + ) + }} + > + setDraft(event.target.value)} + className="flex-1 rounded-md border border-gray-600 bg-gray-950 px-2 py-1.5 text-sm text-white placeholder-gray-500 disabled:opacity-50" + /> + +
+
+ ) +} + +/** + * One card for a credential made of several stored values (for example + * Cloudflare's account id + API token). Each field saves to its own id. + */ +function GroupRow({ + label, + fields, + statuses, + locked, + envStatus, + highlight, +}: { + label: string + fields: ReadonlyArray<{ + provider: { id: ProviderId; label: string } + label: string + secret: boolean + }> + statuses: Record + locked: boolean + envStatus?: Record + highlight: boolean +}) { + const [drafts, setDrafts] = useState>({}) + const [rowError, setRowError] = useState('') + const states = fields.map((f) => statuses[f.provider.id]?.state ?? 'empty') + const allSet = states.every((s) => s !== 'empty') + const anyLocked = locked || states.some((s) => s === 'locked') + const allEnv = fields.every((f) => Boolean(envStatus?.[f.provider.id])) + const state: KeyStatus['state'] = anyLocked + ? 'locked' + : states.includes('error') + ? 'error' + : allSet + ? 'set' + : 'empty' + const filled = fields.filter((f) => drafts[f.provider.id]?.trim()) + + return ( +
+
+ {label} + +
+ + {rowError ?

{rowError}

: null} + +
{ + event.preventDefault() + if (filled.length === 0 || anyLocked) return + setRowError('') + // One at a time: passkey-backed storage runs a WebAuthn ceremony + // per write, and the browser rejects a second concurrent request. + void (async () => { + for (const f of filled) { + await byok.update(f.provider.id, drafts[f.provider.id]!.trim()) + } + })() + .then(() => setDrafts({})) + .catch((error: unknown) => + setRowError( + error instanceof Error ? error.message : 'Could not save keys', + ), + ) + }} + > + {fields.map((field) => { + const status = statuses[field.provider.id] + const masked = + status && 'masked' in status ? status.masked : undefined + const hasKey = (status?.state ?? 'empty') !== 'empty' + return ( + + ) + })} +
+ {allSet ? ( + + ) : null} + +
+
+
+ ) +} + +function PresenceBadge({ + state, + hasKey, + isLocked, + hasEnvKey, +}: { + state: KeyStatus['state'] + hasKey: boolean + isLocked: boolean + hasEnvKey: boolean +}) { + if (hasKey && !isLocked) { + return ( + Your key + ) + } + if (isLocked) { + return Locked + } + if (hasEnvKey) { + return ( + Server key + ) + } + const { label, className } = STATUS_LABEL[state] + return {label} +} diff --git a/tools/workspace-plugin/src/generators/react-app/files/src/lib/byok.ts__tmpl__ b/tools/workspace-plugin/src/generators/react-app/files/src/lib/byok.ts__tmpl__ new file mode 100644 index 0000000000..418931bc8c --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/src/lib/byok.ts__tmpl__ @@ -0,0 +1,73 @@ +import { anthropicByok } from '@tanstack/ai-anthropic/byok' +import { defineByok, defaultByokStorage } from '@tanstack/ai-client/byok' +import { byteplusByok, byteplusVoiceByok } from '@tanstack/ai-byteplus/byok' +import { + cloudflareAccountByok, + cloudflareByok, +} from '@tanstack/ai-cloudflare/byok' +import { geminiByok } from '@tanstack/ai-gemini/byok' +import { grokByok } from '@tanstack/ai-grok/byok' +import { groqByok } from '@tanstack/ai-groq/byok' +import { openaiByok } from '@tanstack/ai-openai/byok' +import { openrouterByok } from '@tanstack/ai-openrouter/byok' +import { createServerFn } from '@tanstack/react-start' +import type { ProviderId } from '@tanstack/ai/byok' +import type { Provider } from '@/lib/model-selection' + +export const KEYED_PROVIDERS = [ + openaiByok, + anthropicByok, + geminiByok, + openrouterByok, + groqByok, + grokByok, + byteplusByok, + byteplusVoiceByok, + cloudflareByok, + cloudflareAccountByok, +] as const + +/** + * Providers whose credential is more than one value. The store still keeps + * one entry per id (so env fallback and relay headers work per value), but + * the key dialog shows each group as a single card. + */ +export const KEY_GROUPS = [ + { + id: 'cloudflare', + label: 'Cloudflare', + fields: [ + { provider: cloudflareAccountByok, label: 'Account ID', secret: false }, + { provider: cloudflareByok, label: 'API token', secret: true }, + ], + }, +] as const + +export const byok = defineByok({ + storage: defaultByokStorage(), + providers: KEYED_PROVIDERS, +}) + +// Let the relay decide when a key is missing. The server prefers the +// `x-byok-*` header, then env. Without coverage, the client would block +// the send before env fallback can run. +byok.setServerCoverage(true) + +export function toByokProvider(provider: Provider): ProviderId | undefined { + if (provider === 'gemini-interactions') return geminiByok.id + const match = KEYED_PROVIDERS.find((entry) => entry.id === provider) + return match?.id +} + +/** Booleans only — which keyed providers have an env key on the relay. */ +export const getEnvKeyStatus = createServerFn({ method: 'GET' }).handler( + (): Record => { + const status: Record = {} + for (const provider of KEYED_PROVIDERS) { + status[provider.id] = (provider.env ?? []).some((name) => + Boolean(process.env[name]), + ) + } + return status + }, +) diff --git a/tools/workspace-plugin/src/generators/react-app/files/src/lib/model-selection.ts__tmpl__ b/tools/workspace-plugin/src/generators/react-app/files/src/lib/model-selection.ts__tmpl__ new file mode 100644 index 0000000000..7963dd720d --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/src/lib/model-selection.ts__tmpl__ @@ -0,0 +1,341 @@ +export type Provider = + | 'openai' + | 'anthropic' + | 'gemini' + | 'gemini-interactions' + | 'ollama' + | 'grok' + | 'groq' + | 'openrouter' + | 'bedrock' + | 'byteplus' + | 'cloudflare' + +export interface ModelOption { + provider: Provider + model: string + label: string +} + +export const MODEL_OPTIONS: Array = [ + // OpenAI + { provider: 'openai', model: 'gpt-5.6', label: 'OpenAI - GPT-5.6' }, + { provider: 'openai', model: 'gpt-5.6-sol', label: 'OpenAI - GPT-5.6 Sol' }, + { + provider: 'openai', + model: 'gpt-5.6-terra', + label: 'OpenAI - GPT-5.6 Terra', + }, + { provider: 'openai', model: 'gpt-5.6-luna', label: 'OpenAI - GPT-5.6 Luna' }, + { provider: 'openai', model: 'gpt-5.5', label: 'OpenAI - GPT-5.5' }, + { provider: 'openai', model: 'gpt-5.2', label: 'OpenAI - GPT-5.2' }, + { provider: 'openai', model: 'gpt-5.2-pro', label: 'OpenAI - GPT-5.2 Pro' }, + { provider: 'openai', model: 'gpt-5.1', label: 'OpenAI - GPT-5.1' }, + { provider: 'openai', model: 'gpt-5', label: 'OpenAI - GPT-5' }, + { provider: 'openai', model: 'gpt-5-mini', label: 'OpenAI - GPT-5 Mini' }, + { provider: 'openai', model: 'gpt-5-nano', label: 'OpenAI - GPT-5 Nano' }, + { provider: 'openai', model: 'gpt-4.1', label: 'OpenAI - GPT-4.1' }, + { provider: 'openai', model: 'gpt-4o', label: 'OpenAI - GPT-4o' }, + { provider: 'openai', model: 'gpt-4o-mini', label: 'OpenAI - GPT-4o Mini' }, + + // Cloudflare Workers AI. `provider/model` ids route through AI Gateway. + { + provider: 'cloudflare', + model: '@cf/zai-org/glm-5.3-flash', + label: 'Cloudflare - GLM 5.3 Flash', + }, + { + provider: 'cloudflare', + model: '@cf/meta/llama-3.3-70b-instruct-fp8-fast', + label: 'Cloudflare - Llama 3.3 70B', + }, + { + provider: 'cloudflare', + model: 'openai/gpt-5.5', + label: 'Cloudflare Gateway - GPT-5.5', + }, + + // Anthropic + { + provider: 'anthropic', + model: 'claude-opus-4-7', + label: 'Anthropic - Claude Opus 4.7', + }, + { + provider: 'anthropic', + model: 'claude-opus-4-6', + label: 'Anthropic - Claude Opus 4.6', + }, + { + provider: 'anthropic', + model: 'claude-sonnet-4-6', + label: 'Anthropic - Claude Sonnet 4.6', + }, + { + provider: 'anthropic', + model: 'claude-sonnet-4-5', + label: 'Anthropic - Claude Sonnet 4.5', + }, + { + provider: 'anthropic', + model: 'claude-haiku-4-5', + label: 'Anthropic - Claude Haiku 4.5', + }, + + // Gemini (stateless `geminiText`) + { + provider: 'gemini', + model: 'gemini-3.8-flash', + label: 'Gemini - 3.8 Flash', + }, + { + provider: 'gemini', + model: 'gemini-3.7-flash', + label: 'Gemini - 3.7 Flash', + }, + { + provider: 'gemini', + model: 'gemini-3.6-flash', + label: 'Gemini - 3.6 Flash', + }, + { + provider: 'gemini', + model: 'gemini-3.5-flash', + label: 'Gemini - 3.5 Flash', + }, + { + provider: 'gemini', + model: 'gemini-3.5-flash-lite', + label: 'Gemini - 3.5 Flash Lite', + }, + { + provider: 'gemini', + model: 'gemini-3.1-pro-preview', + label: 'Gemini - 3.1 Pro Preview', + }, + { + provider: 'gemini', + model: 'gemini-3.1-flash-lite-preview', + label: 'Gemini - 3.1 Flash Lite Preview', + }, + { + provider: 'gemini', + model: 'gemini-2.5-pro', + label: 'Gemini - 2.5 Pro', + }, + { + provider: 'gemini', + model: 'gemini-2.5-flash', + label: 'Gemini - 2.5 Flash', + }, + + // Gemini Interactions (stateful, experimental — `@tanstack/ai-gemini/experimental`) + { + provider: 'gemini-interactions', + model: 'gemini-3.8-flash', + label: 'Gemini Interactions - 3.8 Flash (experimental)', + }, + { + provider: 'gemini-interactions', + model: 'gemini-3.7-flash', + label: 'Gemini Interactions - 3.7 Flash (experimental)', + }, + { + provider: 'gemini-interactions', + model: 'gemini-3.6-flash', + label: 'Gemini Interactions - 3.6 Flash (experimental)', + }, + { + provider: 'gemini-interactions', + model: 'gemini-3.5-flash', + label: 'Gemini Interactions - 3.5 Flash (experimental)', + }, + { + provider: 'gemini-interactions', + model: 'gemini-3.5-flash-lite', + label: 'Gemini Interactions - 3.5 Flash Lite (experimental)', + }, + { + provider: 'gemini-interactions', + model: 'gemini-3.1-pro-preview', + label: 'Gemini Interactions - 3.1 Pro Preview (experimental)', + }, + { + provider: 'gemini-interactions', + model: 'gemini-3-flash-preview', + label: 'Gemini Interactions - 3 Flash Preview (experimental)', + }, + { + provider: 'gemini-interactions', + model: 'gemini-3.1-flash-lite-preview', + label: 'Gemini Interactions - 3.1 Flash Lite Preview (experimental)', + }, + + // Openrouter — multi-provider via OpenRouter's unified API + { + provider: 'openrouter', + model: 'openai/gpt-5.2', + label: 'OpenRouter - OpenAI GPT-5.2', + }, + { + provider: 'openrouter', + model: 'openai/gpt-5.1', + label: 'OpenRouter - OpenAI GPT-5.1', + }, + { + provider: 'openrouter', + model: 'openai/gpt-5', + label: 'OpenRouter - OpenAI GPT-5', + }, + { + provider: 'openrouter', + model: 'openai/gpt-4o', + label: 'OpenRouter - OpenAI GPT-4o', + }, + { + provider: 'openrouter', + model: 'anthropic/claude-opus-4.7', + label: 'OpenRouter - Anthropic Claude Opus 4.7', + }, + { + provider: 'openrouter', + model: 'anthropic/claude-sonnet-4.6', + label: 'OpenRouter - Anthropic Claude Sonnet 4.6', + }, + { + provider: 'openrouter', + model: 'anthropic/claude-haiku-4.5', + label: 'OpenRouter - Anthropic Claude Haiku 4.5', + }, + { + provider: 'openrouter', + model: 'google/gemini-2.5-pro', + label: 'OpenRouter - Google Gemini 2.5 Pro', + }, + { + provider: 'openrouter', + model: 'x-ai/grok-4', + label: 'OpenRouter - xAI Grok 4', + }, + { + provider: 'openrouter', + model: 'meta-llama/llama-3.3-70b-instruct', + label: 'OpenRouter - Meta Llama 3.3 70B (Groq-routed)', + }, + + // Ollama + { + provider: 'ollama', + model: 'gpt-oss:20b', + label: 'Ollama - GPT-OSS 20B', + }, + { + provider: 'ollama', + model: 'granite4:3b', + label: 'Ollama - Granite4 3B', + }, + { + provider: 'ollama', + model: 'mistral', + label: 'Ollama - Mistral', + }, + + // Groq + { + provider: 'groq', + model: 'openai/gpt-oss-120b', + label: 'Groq - GPT-OSS 120B', + }, + { + provider: 'groq', + model: 'moonshotai/kimi-k2-instruct-0905', + label: 'Groq - Kimi K2 Instruct', + }, + { + provider: 'groq', + model: 'meta-llama/llama-4-maverick-17b-128e-instruct', + label: 'Groq - Llama 4 Maverick', + }, + { + provider: 'groq', + model: 'qwen/qwen3-32b', + label: 'Groq - Qwen3 32B', + }, + + // Grok + { + provider: 'grok', + model: 'grok-build-0.1', + label: 'Grok - Grok Build 0.1', + }, + { + provider: 'grok', + model: 'grok-4.3', + label: 'Grok - Grok 4.3', + }, + + // Bedrock (default Converse API — reaches Claude, Nova, Llama, gpt-oss, …) + { + provider: 'bedrock', + model: 'us.anthropic.claude-haiku-4-5-20251001-v1:0', + label: 'Bedrock - Claude Haiku 4.5 (Converse)', + }, + { + provider: 'bedrock', + model: 'us.amazon.nova-pro-v1:0', + label: 'Bedrock - Nova Pro (Converse)', + }, + { + provider: 'bedrock', + model: 'openai.gpt-oss-120b-1:0', + label: 'Bedrock - GPT-OSS 120B (Converse)', + }, + + // BytePlus ModelArk (ARK_API_KEY) — Seed models plus third-party models + // (GLM, DeepSeek, gpt-oss) served from the same Ark endpoint. + { + provider: 'byteplus', + model: 'dola-seed-2-1-turbo-260628', + label: 'BytePlus - Seed 2.1 Turbo', + }, + { + provider: 'byteplus', + model: 'seed-2-0-pro-260328', + label: 'BytePlus - Seed 2.0 Pro', + }, + { + provider: 'byteplus', + model: 'seed-2-0-lite-260428', + label: 'BytePlus - Seed 2.0 Lite', + }, + { + provider: 'byteplus', + model: 'seed-2-0-mini-260428', + label: 'BytePlus - Seed 2.0 Mini', + }, + { + provider: 'byteplus', + model: 'seed-2-0-code-preview-260328', + label: 'BytePlus - Seed 2.0 Code Preview', + }, + { + provider: 'byteplus', + model: 'seed-1-6-flash-250715', + label: 'BytePlus - Seed 1.6 Flash', + }, + { + provider: 'byteplus', + model: 'glm-5-2-260617', + label: 'BytePlus - GLM 5.2', + }, + { + provider: 'byteplus', + model: 'deepseek-v4-pro-260425', + label: 'BytePlus - DeepSeek V4 Pro', + }, + // gpt-oss-120b-250805 is deliberately absent: this route always merges the + // server tool set into the request, and that model's tool support is + // undeclared in model-meta and unverified against the live API. +] + +export const DEFAULT_MODEL_OPTION = MODEL_OPTIONS[0] diff --git a/tools/workspace-plugin/src/generators/react-app/files/src/router.tsx__tmpl__ b/tools/workspace-plugin/src/generators/react-app/files/src/router.tsx__tmpl__ new file mode 100644 index 0000000000..a595444648 --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/src/router.tsx__tmpl__ @@ -0,0 +1,10 @@ +import { createRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' + +export const getRouter = () => { + return createRouter({ + routeTree, + scrollRestoration: true, + defaultPreloadStaleTime: 0, + }) +} diff --git a/tools/workspace-plugin/src/generators/react-app/files/src/routes/__root.tsx__tmpl__ b/tools/workspace-plugin/src/generators/react-app/files/src/routes/__root.tsx__tmpl__ new file mode 100644 index 0000000000..73e7279050 --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/src/routes/__root.tsx__tmpl__ @@ -0,0 +1,41 @@ +import { HeadContent, Scripts, createRootRoute } from '@tanstack/react-router' +import appCss from '../styles.css?url' + +export const Route = createRootRoute({ + head: () => ({ + meta: [ + { + charSet: 'utf-8', + }, + { + name: 'viewport', + content: 'width=device-width, initial-scale=1', + }, + { + title: '<%= name %>', + }, + ], + links: [ + { + rel: 'stylesheet', + href: appCss, + }, + ], + }), + + shellComponent: RootDocument, +}) + +function RootDocument({ children }: { children: React.ReactNode }) { + return ( + + + + + + {children} + + + + ) +} diff --git a/tools/workspace-plugin/src/generators/react-app/files/src/routes/api.chat.ts__tmpl__ b/tools/workspace-plugin/src/generators/react-app/files/src/routes/api.chat.ts__tmpl__ new file mode 100644 index 0000000000..1fb61d0b4b --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/src/routes/api.chat.ts__tmpl__ @@ -0,0 +1,290 @@ +import { createFileRoute } from '@tanstack/react-router' +import { + chat, + chatParamsFromRequestBody, + createChatOptions, + toServerSentEventsResponse, +} from '@tanstack/ai' +import { OPENAI_CHAT_MODELS, createOpenaiChat } from '@tanstack/ai-openai' +import { openaiByok } from '@tanstack/ai-openai/byok' +import { OllamaTextModels, ollamaText } from '@tanstack/ai-ollama' +import { ANTHROPIC_MODELS, createAnthropicChat } from '@tanstack/ai-anthropic' +import { anthropicByok } from '@tanstack/ai-anthropic/byok' +import { GEMINI_MODELS, createGeminiChat } from '@tanstack/ai-gemini' +import { geminiByok } from '@tanstack/ai-gemini/byok' +import { createGeminiTextInteractions } from '@tanstack/ai-gemini/experimental' +import { createOpenRouterText } from '@tanstack/ai-openrouter' +import { OPENROUTER_CHAT_MODELS } from '@tanstack/ai-openrouter/model-meta' +import { openrouterByok } from '@tanstack/ai-openrouter/byok' +import { GROK_CHAT_MODELS, createGrokText } from '@tanstack/ai-grok' +import { grokByok } from '@tanstack/ai-grok/byok' +import { GROQ_CHAT_MODELS, createGroqText } from '@tanstack/ai-groq' +import { groqByok } from '@tanstack/ai-groq/byok' +import { createCloudflareText } from '@tanstack/ai-cloudflare' +import { + cloudflareAccountByok, + cloudflareByok, +} from '@tanstack/ai-cloudflare/byok' +import { BEDROCK_CONVERSE_MODELS, bedrockText } from '@tanstack/ai-bedrock' +import { BYTEPLUS_CHAT_MODELS, createBytePlusText } from '@tanstack/ai-byteplus' +import { byteplusByok } from '@tanstack/ai-byteplus/byok' +import { byokMissing, getByokKey } from '@tanstack/ai/byok/server' +import { z } from 'zod' +import type { ByokProvider } from '@tanstack/ai/byok' + +/** + * Client-supplied provider + model, validated once per request. An unknown + * provider falls back to OpenAI and an unknown model falls back to that + * provider's default, so arbitrary client strings never reach an adapter. + * The parsed `model` is narrowed to each adapter's literal model union. + */ +const modelSelectionSchema = z + .discriminatedUnion('provider', [ + z.object({ + provider: z.literal('openai'), + model: z.enum(OPENAI_CHAT_MODELS).catch('gpt-5.2'), + }), + z.object({ + provider: z.literal('anthropic'), + model: z.enum(ANTHROPIC_MODELS).catch('claude-sonnet-4-6'), + }), + z.object({ + provider: z.literal('gemini'), + model: z.enum(GEMINI_MODELS).catch('gemini-3.1-pro-preview'), + }), + z.object({ + provider: z.literal('gemini-interactions'), + model: z.enum(GEMINI_MODELS).catch('gemini-3.1-pro-preview'), + }), + z.object({ + provider: z.literal('ollama'), + model: z.enum(OllamaTextModels).catch('gpt-oss:20b'), + }), + z.object({ + provider: z.literal('grok'), + model: z.enum(GROK_CHAT_MODELS).catch('grok-build-0.1'), + }), + z.object({ + provider: z.literal('groq'), + model: z.enum(GROQ_CHAT_MODELS).catch('openai/gpt-oss-120b'), + }), + z.object({ + provider: z.literal('openrouter'), + model: z.enum(OPENROUTER_CHAT_MODELS).catch('openai/gpt-5.1'), + }), + z.object({ + provider: z.literal('bedrock'), + model: z + .enum(BEDROCK_CONVERSE_MODELS) + .catch('us.anthropic.claude-haiku-4-5-20251001-v1:0'), + }), + z.object({ + provider: z.literal('byteplus'), + model: z.enum(BYTEPLUS_CHAT_MODELS).catch('seed-2-0-lite-260428'), + }), + z.object({ + provider: z.literal('cloudflare'), + model: z.string().catch('@cf/zai-org/glm-5.3-flash'), + }), + ]) + .catch({ provider: 'openai', model: 'gpt-5.2' }) + +type ModelSelection = z.infer +type Provider = ModelSelection['provider'] + +const BYOK_PROVIDERS: Partial> = { + openai: openaiByok, + anthropic: anthropicByok, + gemini: geminiByok, + openrouter: openrouterByok, + groq: groqByok, + grok: grokByok, + byteplus: byteplusByok, + cloudflare: cloudflareByok, +} + +function chatByokProvider(provider: Provider) { + if (provider === 'gemini-interactions') return geminiByok + return BYOK_PROVIDERS[provider] +} + +function resolveByokApiKey(request: Request, provider: Provider) { + const byokProvider = chatByokProvider(provider) + if (!byokProvider) return { missing: false as const, apiKey: null } + const apiKey = getByokKey(request, byokProvider) + if (!apiKey) return { missing: true as const, provider: byokProvider } + return { missing: false as const, apiKey } +} + +function requireApiKey(apiKey: string | null) { + if (!apiKey) { + throw new Error('API key is required') + } + return apiKey +} + +const SYSTEM_PROMPT = 'You are a helpful assistant.' + +export const Route = createFileRoute('/api/chat')({ + server: { + handlers: { + POST: async ({ request }) => { + const requestSignal = request.signal + + if (requestSignal.aborted) { + return new Response(null, { status: 499 }) + } + + const abortController = new AbortController() + + let params + try { + params = await chatParamsFromRequestBody(await request.json()) + } catch (error) { + return new Response( + error instanceof Error ? error.message : 'Bad request', + { status: 400 }, + ) + } + + const selection = modelSelectionSchema.parse({ + provider: params.forwardedProps.provider, + model: params.forwardedProps.model, + }) + const previousInteractionId = + typeof params.forwardedProps.previousInteractionId === 'string' + ? params.forwardedProps.previousInteractionId + : undefined + + const buildChatOptions = ( + { provider, model }: ModelSelection, + apiKey: string | null, + cloudflareAccountId: string | null, + ) => { + switch (provider) { + case 'anthropic': + return createChatOptions({ + adapter: createAnthropicChat(model, requireApiKey(apiKey)), + }) + case 'openrouter': + return createChatOptions({ + adapter: createOpenRouterText(model, requireApiKey(apiKey)), + modelOptions: { + reasoning: { + effort: 'medium', + }, + }, + }) + case 'gemini': + return createChatOptions({ + adapter: createGeminiChat(model, requireApiKey(apiKey)), + modelOptions: { + thinkingConfig: { + includeThoughts: true, + thinkingBudget: 100, + }, + }, + }) + case 'gemini-interactions': + return createChatOptions({ + adapter: createGeminiTextInteractions( + model, + requireApiKey(apiKey), + ), + modelOptions: { + previous_interaction_id: previousInteractionId, + store: true, + }, + }) + case 'grok': + return createChatOptions({ + adapter: createGrokText(model, requireApiKey(apiKey)), + modelOptions: {}, + }) + case 'groq': + return createChatOptions({ + adapter: createGroqText(model, requireApiKey(apiKey)), + }) + case 'bedrock': + return createChatOptions({ + adapter: bedrockText(model, { + region: process.env.AWS_REGION || 'us-east-1', + ...(process.env.BEDROCK_AUTH === 'sigv4' && { + auth: 'sigv4' as const, + }), + }), + }) + case 'byteplus': + return createChatOptions({ + adapter: createBytePlusText(model, requireApiKey(apiKey)), + }) + case 'cloudflare': + return createChatOptions({ + adapter: createCloudflareText(model, { + accountId: requireApiKey(cloudflareAccountId), + apiKey: requireApiKey(apiKey), + ...(process.env.CLOUDFLARE_AI_GATEWAY_ID && { + gateway: { id: process.env.CLOUDFLARE_AI_GATEWAY_ID }, + }), + }), + }) + case 'ollama': + return createChatOptions({ + adapter: ollamaText(model), + modelOptions: { think: 'low', options: { top_k: 1 } }, + }) + case 'openai': + return createChatOptions({ + adapter: createOpenaiChat(model, requireApiKey(apiKey)), + modelOptions: { + prompt_cache_key: 'user-session-12345', + prompt_cache_retention: '24h', + }, + }) + } + } + + try { + const provider: Provider = selection.provider + const resolvedKey = resolveByokApiKey(request, provider) + if (resolvedKey.missing) { + return byokMissing(resolvedKey.provider) + } + const cloudflareAccountId = + provider === 'cloudflare' + ? getByokKey(request, cloudflareAccountByok) + : null + if (provider === 'cloudflare' && !cloudflareAccountId) { + return byokMissing(cloudflareAccountByok) + } + const options = buildChatOptions( + selection, + resolvedKey.apiKey, + cloudflareAccountId, + ) + + const stream = chat({ + ...options, + systemPrompts: [SYSTEM_PROMPT], + messages: params.messages, + threadId: params.threadId, + runId: params.runId, + abortController, + }) + return toServerSentEventsResponse(stream, { abortController }) + } catch (error: unknown) { + const message = + error instanceof Error ? error.message : 'An error occurred' + const name = error instanceof Error ? error.name : '' + if (name === 'AbortError' || abortController.signal.aborted) { + return new Response(null, { status: 499 }) + } + return new Response(JSON.stringify({ error: message }), { + status: 500, + headers: { 'Content-Type': 'application/json' }, + }) + } + }, + }, + }, +}) diff --git a/tools/workspace-plugin/src/generators/react-app/files/src/routes/index.tsx__tmpl__ b/tools/workspace-plugin/src/generators/react-app/files/src/routes/index.tsx__tmpl__ new file mode 100644 index 0000000000..958d06280c --- /dev/null +++ b/tools/workspace-plugin/src/generators/react-app/files/src/routes/index.tsx__tmpl__ @@ -0,0 +1,302 @@ +import { useEffect, useMemo, useRef, useState } from 'react' +import { createFileRoute } from '@tanstack/react-router' +import { Send, Square } from 'lucide-react' +import { fetchServerSentEvents, useByok, useChat } from '@tanstack/ai-react' +import { + completeOpenRouterPkceIntoByok, + startOpenRouterPkceLogin, +} from '@tanstack/ai-openrouter/pkce' +import { ThinkingPart } from '@tanstack/ai-react/ui' +import type { UIMessage } from '@tanstack/ai-react' +import type { GeminiInteractionsCustomEventValue } from '@tanstack/ai-gemini/experimental' +import type { ProviderId } from '@tanstack/ai/byok' +import type { ModelOption } from '@/lib/model-selection' +import { DEFAULT_MODEL_OPTION, MODEL_OPTIONS } from '@/lib/model-selection' +import { byok, getEnvKeyStatus, toByokProvider } from '@/lib/byok' +import { ByokKeyDialog } from '@/components/ByokKeyDialog' + +function Messages({ messages }: { messages: Array }) { + const messagesContainerRef = useRef(null) + const visibleMessages = messages.filter((message) => + message.parts.some( + (part) => + part.type === 'thinking' || + (part.type === 'text' && part.content.trim()), + ), + ) + + useEffect(() => { + if (messagesContainerRef.current) { + messagesContainerRef.current.scrollTop = + messagesContainerRef.current.scrollHeight + } + }, [visibleMessages]) + + if (!visibleMessages.length) { + return ( +
+
+

+ Welcome to TanStack AI +

+

Start a conversation below.

+
+
+ ) + } + + return ( +
+ {visibleMessages.map((message) => ( +
+
+
+ {message.role === 'assistant' ? 'AI' : 'U'} +
+
+ {message.parts.map((part, index) => { + if (part.type === 'thinking') { + const isComplete = message.parts + .slice(index + 1) + .some((p) => p.type === 'text') + return ( +
+ +
+ ) + } + if (part.type === 'text' && part.content) { + return ( +
+ {part.content} +
+ ) + } + return null + })} +
+
+
+ ))} +
+ ) +} + +function ChatPage() { + const [selectedModel, setSelectedModel] = + useState(DEFAULT_MODEL_OPTION) + const [interactionId, setInteractionId] = useState( + undefined, + ) + const selectedProviderRef = useRef(selectedModel.provider) + selectedProviderRef.current = selectedModel.provider + const snapshot = useByok(byok) + const [envKeyStatus, setEnvKeyStatus] = useState>({}) + const [keyDialog, setKeyDialog] = useState<{ + open: boolean + provider: ProviderId | null + }>({ open: false, provider: null }) + const [openRouterCompleting, setOpenRouterCompleting] = useState(false) + const [openRouterError, setOpenRouterError] = useState(null) + const [input, setInput] = useState('') + + useEffect(() => { + void getEnvKeyStatus().then(setEnvKeyStatus) + }, []) + + useEffect(() => { + setOpenRouterCompleting(true) + void completeOpenRouterPkceIntoByok(byok) + .catch((error: unknown) => + setOpenRouterError( + error instanceof Error ? error.message : 'OpenRouter sign-in failed', + ), + ) + .finally(() => setOpenRouterCompleting(false)) + }, []) + + useEffect(() => { + if (snapshot.prompt?.reason === 'missing') { + setKeyDialog({ open: true, provider: snapshot.prompt.provider }) + } + }, [snapshot.prompt]) + + const activeByokId = toByokProvider(selectedModel.provider) + + const forwardedProps = useMemo( + () => ({ + provider: selectedModel.provider, + model: selectedModel.model, + ...(selectedModel.provider === 'gemini-interactions' && interactionId + ? { previousInteractionId: interactionId } + : {}), + }), + [selectedModel.provider, selectedModel.model, interactionId], + ) + + const { messages, setMessages, sendMessage, isLoading, error, stop } = + useChat({ + connection: fetchServerSentEvents('/api/chat'), + byok, + byokProvider: () => toByokProvider(selectedProviderRef.current), + forwardedProps, + onCustomEvent: (eventType, data) => { + if (eventType === 'gemini.interactionId') { + const value = data as + | GeminiInteractionsCustomEventValue<'gemini.interactionId'> + | undefined + if (value?.interactionId) setInteractionId(value.interactionId) + } + }, + }) + + useEffect(() => { + setInteractionId(undefined) + setMessages([]) + }, [selectedModel.provider, selectedModel.model, setMessages]) + + const handleSendMessage = () => { + if (!input.trim()) return + sendMessage(input.trim()) + setInput('') + } + + return ( +
+
+
+
+
+ + +
+ setKeyDialog((s) => ({ ...s, open }))} + envStatus={envKeyStatus} + activeProvider={activeByokId} + highlightProvider={keyDialog.provider} + openRouter={{ + onLogin: () => { + setOpenRouterError(null) + void startOpenRouterPkceLogin().catch((error: unknown) => + setOpenRouterError( + error instanceof Error + ? error.message + : 'OpenRouter sign-in failed', + ), + ) + }, + completing: openRouterCompleting, + error: openRouterError, + }} + /> +
+
+ + + + {error ? ( +
+ {error.message} +
+ ) : null} + +
+
+ {isLoading ? ( +
+ +
+ ) : null} +
+