diff --git a/README.md b/README.md index 5bbc68c..d6f9097 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Plugin build: `tsdown` (`packages/astro/tsdown.config.ts`). Module Federation plugin: `@module-federation/vite`. Astro bridge package in this repo: `@module-federation/astro`. Published package source: `packages/astro`. -Example apps: `apps/example` (see `apps/example/README.md`). +Example apps: `apps/example` (see `apps/example/README.md`) and `apps/react`. ## Package usage @@ -36,6 +36,7 @@ export default defineConfig({ - SSR remote imports in Astro frontmatter are handled by an SSR transform path in `@module-federation/astro`. - That SSR path supports remote Astro components as well as plain server functions, including `await import('remote/Component')` followed by ``. - Dev target defaults to runtime inference (`ENV_TARGET = undefined`) so client/server contexts can coexist. +- A host consuming React remotes should configure `@astrojs/react`, `react`, and `react-dom` explicitly on the host. ## Build checks diff --git a/apps/react/README.md b/apps/react/README.md new file mode 100644 index 0000000..7970e9d --- /dev/null +++ b/apps/react/README.md @@ -0,0 +1,18 @@ +# React federation example + +Scenario: + +- host Astro app consumes a federated React component +- host owns React setup explicitly with `@astrojs/react` +- federation handles the remote module loading only + +Apps: + +- host: `apps/react/host` -> `http://localhost:4331` +- remote: `apps/react/remote` -> `http://localhost:4332` + +Run both: + +```sh +pnpm dev:react +``` diff --git a/apps/react/host/astro.config.mjs b/apps/react/host/astro.config.mjs new file mode 100644 index 0000000..caff247 --- /dev/null +++ b/apps/react/host/astro.config.mjs @@ -0,0 +1,34 @@ +// @ts-check +import { defineConfig } from 'astro/config'; +import node from '@astrojs/node'; +import react from '@astrojs/react'; +import { moduleFederation } from '@module-federation/astro'; + +export default defineConfig({ + output: 'server', + server: { + port: 4331, + strictPort: true, + }, + preview: { + port: 4331, + strictPort: true, + }, + adapter: node({ + mode: 'standalone', + }), + integrations: [ + react(), + moduleFederation({ + name: 'react_host', + remotes: { + react_remote: 'react_remote@http://localhost:4332/mf-manifest.json', + }, + ssr: { + localRemotes: { + react_remote: '../remote', + }, + }, + }), + ], +}); diff --git a/apps/react/host/package.json b/apps/react/host/package.json new file mode 100644 index 0000000..0e075c9 --- /dev/null +++ b/apps/react/host/package.json @@ -0,0 +1,23 @@ +{ + "name": "react-host", + "private": true, + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "astro dev --host localhost --port 4331", + "build": "astro build", + "preview": "astro preview", + "astro": "astro" + }, + "dependencies": { + "@astrojs/node": "^10.0.4", + "@astrojs/react": "^5.0.2", + "@module-federation/astro": "workspace:*", + "astro": "^6.1.1", + "react": "^19.2.4", + "react-dom": "^19.2.4" + }, + "devDependencies": { + "vite": "^6.4.1" + } +} diff --git a/apps/react/host/src/pages/index.astro b/apps/react/host/src/pages/index.astro new file mode 100644 index 0000000..2c65dfb --- /dev/null +++ b/apps/react/host/src/pages/index.astro @@ -0,0 +1,78 @@ +--- +import CounterCard from 'react_remote/components/CounterCard'; + +const ssrCount = 0; +const ssrTitle = 'Server-rendered federated React card'; +--- + + + + + + + React host + + +
+
+

host app

+

Astro host; React explicit, remote federated.

+

+ The host owns its React setup through @astrojs/react, react, and react-dom. + Federation only loads the remote module boundary. +

+
+ +
+

SSR render

+
+ +
+
+ +
+

Client-only render

+
+
+
+ + + + diff --git a/apps/react/host/tsconfig.json b/apps/react/host/tsconfig.json new file mode 100644 index 0000000..8bf91d3 --- /dev/null +++ b/apps/react/host/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] +} diff --git a/apps/react/remote/astro.config.mjs b/apps/react/remote/astro.config.mjs new file mode 100644 index 0000000..2c90118 --- /dev/null +++ b/apps/react/remote/astro.config.mjs @@ -0,0 +1,44 @@ +// @ts-check +import { defineConfig } from 'astro/config'; +import node from '@astrojs/node'; +import react from '@astrojs/react'; +import { moduleFederation } from '@module-federation/astro'; + +export default defineConfig({ + output: 'server', + server: { + port: 4332, + strictPort: true, + headers: { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'GET, HEAD, OPTIONS', + }, + }, + preview: { + port: 4332, + strictPort: true, + }, + vite: { + server: { + cors: true, + origin: 'http://localhost:4332', + }, + }, + adapter: node({ + mode: 'standalone', + }), + integrations: [ + react(), + moduleFederation({ + name: 'react_remote', + filename: 'remoteEntry.js', + publicPath: 'http://localhost:4332/', + varFilename: 'remoteEntry.global.js', + manifest: true, + dts: false, + exposes: { + './components/CounterCard': './src/components/CounterCard.tsx', + }, + }), + ], +}); diff --git a/apps/react/remote/package.json b/apps/react/remote/package.json new file mode 100644 index 0000000..79b20e6 --- /dev/null +++ b/apps/react/remote/package.json @@ -0,0 +1,25 @@ +{ + "name": "react-remote", + "private": true, + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "pnpm run build && astro preview --host localhost --port 4332", + "build": "astro build", + "preview": "astro preview", + "astro": "astro" + }, + "dependencies": { + "@astrojs/node": "^10.0.4", + "@astrojs/react": "^5.0.2", + "@module-federation/astro": "workspace:*", + "astro": "^6.1.1", + "react": "^19.2.4", + "react-dom": "^19.2.4" + }, + "devDependencies": { + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "vite": "^6.4.1" + } +} diff --git a/apps/react/remote/src/components/CounterCard.tsx b/apps/react/remote/src/components/CounterCard.tsx new file mode 100644 index 0000000..042546c --- /dev/null +++ b/apps/react/remote/src/components/CounterCard.tsx @@ -0,0 +1,100 @@ +import React from 'react'; + +type CounterCardProps = { + title: string; + count: number; + onIncrement?: () => void; + tone?: 'sun' | 'ink'; +}; + +const THEMES = { + sun: { + background: 'linear-gradient(135deg, rgba(107,57,18,0.96), rgba(55,29,8,0.96))', + border: '#c97a1d', + label: '#ffbf47', + buttonBackground: '#ffbf47', + buttonText: '#18181b', + }, + ink: { + background: 'linear-gradient(135deg, rgba(9,24,41,0.98), rgba(24,71,99,0.96))', + border: '#38bdf8', + label: '#7dd3fc', + buttonBackground: '#38bdf8', + buttonText: '#082f49', + }, +} as const; + +export default function CounterCard({ + title, + count, + onIncrement, + tone = 'sun', +}: CounterCardProps) { + const theme = THEMES[tone]; + + return ( +
+
+

+ remote: react +

+

{title}

+
+ +
+
+

+ count +

+ {count} +
+ + +
+
+ ); +} diff --git a/apps/react/remote/src/pages/index.astro b/apps/react/remote/src/pages/index.astro new file mode 100644 index 0000000..a4bb1fc --- /dev/null +++ b/apps/react/remote/src/pages/index.astro @@ -0,0 +1,10 @@ +
+

React remote

+

+ This app exposes react_remote/components/CounterCard through Module Federation. + Use the host on http://localhost:4331 to verify SSR plus client rendering. +

+

+ Manifest: /mf-manifest.json +

+
diff --git a/apps/react/remote/tsconfig.json b/apps/react/remote/tsconfig.json new file mode 100644 index 0000000..8bf91d3 --- /dev/null +++ b/apps/react/remote/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "astro/tsconfigs/strict", + "include": [".astro/types.d.ts", "**/*"], + "exclude": ["dist"] +} diff --git a/docs/astro-source-integration-points.md b/docs/astro-source-integration-points.md index 80afd6e..be42aa7 100644 --- a/docs/astro-source-integration-points.md +++ b/docs/astro-source-integration-points.md @@ -70,5 +70,6 @@ Implemented in this PoC package: ## Remaining Constraints - SSR path depends on SSR-safe remote modules (no DOM usage). +- React remotes are not zero-dependency on the host. Astro still needs a local renderer package plus `react`/`react-dom` available to resolve `clientEntrypoint` and `serverEntrypoint`; host config should own that setup explicitly. - For non-Astro providers, server manifests need `ssrRemoteEntry`; MF runtime will prefer that entry in Node/server execution. - `mf-vite` still emits serve-time warnings around `plugin:add-entry` (`emitFile()` in serve mode). diff --git a/package.json b/package.json index 746a09b..941c0d4 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,15 @@ "dev": "pnpm --filter @module-federation/astro build && turbo run dev --filter=example-remote --filter=example-host", "dev:host": "pnpm --filter @module-federation/astro build && turbo run dev --filter=example-host", "dev:remote": "pnpm --filter @module-federation/astro build && turbo run dev --filter=example-remote", + "dev:react": "node ./scripts/dev-react.mjs && pnpm --filter @module-federation/astro build && turbo run dev --filter=react-remote --filter=react-host", + "dev:react:host": "pnpm --filter @module-federation/astro build && turbo run dev --filter=react-host", + "dev:react:remote": "pnpm --filter @module-federation/astro build && turbo run dev --filter=react-remote", "build:package": "pnpm --filter @module-federation/astro build", "build": "turbo run build --filter=@module-federation/astro", "build:host": "turbo run build --filter=example-host", "build:remote": "turbo run build --filter=example-remote", + "build:react:host": "turbo run build --filter=react-host", + "build:react:remote": "turbo run build --filter=react-remote", "lint": "turbo run lint --filter=@module-federation/astro", "fmt": "turbo run fmt --filter=@module-federation/astro", "fmt.check": "turbo run fmt.check --filter=@module-federation/astro", diff --git a/packages/astro/README.md b/packages/astro/README.md index 3793db0..17de103 100644 --- a/packages/astro/README.md +++ b/packages/astro/README.md @@ -29,6 +29,7 @@ Notes: - In `astro dev`, `ENV_TARGET` defaults to `undefined` so runtime infers browser vs node context. - `mode: 'client' | 'server'` maps to MF target `'web' | 'node'` if you want to force one side. - SSR `.astro` remote imports are transformed through an Astro SSR runtime path. +- React remotes still need explicit host setup for `@astrojs/react`, `react`, and `react-dom`. ## `.astro` usage diff --git a/packages/astro/package.json b/packages/astro/package.json index 557664d..0f4b5fd 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -46,7 +46,7 @@ "dependencies": { "@module-federation/runtime": "2.2.3", "@module-federation/sdk": "2.2.3", - "@module-federation/vite": "^1.13.5" + "@module-federation/vite": "^1.13.6" }, "peerDependencies": { "astro": "^5.0.0" diff --git a/packages/astro/src/index.ts b/packages/astro/src/index.ts index 8069efc..95baea0 100644 --- a/packages/astro/src/index.ts +++ b/packages/astro/src/index.ts @@ -361,10 +361,14 @@ function resolveSsrLocalModuleFile( const baseDir = path.join(localRemoteRoot, "src"); const candidates = [ path.join(baseDir, `${normalizedSubpath}.astro`), + path.join(baseDir, `${normalizedSubpath}.tsx`), + path.join(baseDir, `${normalizedSubpath}.jsx`), path.join(baseDir, `${normalizedSubpath}.ts`), path.join(baseDir, `${normalizedSubpath}.js`), path.join(baseDir, `${normalizedSubpath}.mjs`), path.join(baseDir, normalizedSubpath, "index.astro"), + path.join(baseDir, normalizedSubpath, "index.tsx"), + path.join(baseDir, normalizedSubpath, "index.jsx"), path.join(baseDir, normalizedSubpath, "index.ts"), path.join(baseDir, normalizedSubpath, "index.js"), path.join(baseDir, normalizedSubpath, "index.mjs"), @@ -487,7 +491,9 @@ export function moduleFederationAstro(options: AstroModuleFederationOptions): As return { name: "@module-federation/astro", hooks: { - "astro:config:setup": ({ command, injectScript, updateConfig }) => { + "astro:config:setup": async (setupArgs) => { + const { command, injectScript, updateConfig } = setupArgs; + const applyConfigUpdate = updateConfig as (config: unknown) => void; const federationOptions = normalizeOptions(options); const ssrLocalRemotes = resolveSsrLocalRemotes(options.ssr, process.cwd()); const hasRemotes = hasConfiguredRemotes(federationOptions.remotes); @@ -504,11 +510,11 @@ export function moduleFederationAstro(options: AstroModuleFederationOptions): As injectScript("page", injectedImport); } - updateConfig({ + applyConfigUpdate({ vite: { plugins: [ ssrLoadRemoteRuntimePlugin(federationOptions, ssrLocalRemotes, command), - ...federation(federationOptions), + ...(federation(federationOptions) as unknown[]), ], build: { target: "esnext", @@ -552,5 +558,5 @@ export function moduleFederationAstro(options: AstroModuleFederationOptions): As export const moduleFederation = moduleFederationAstro; export { buildHostAutoInitImportId }; export { normalizeAstroExposesForFederation }; -export { normalizeRemotes }; +export { normalizeRemotes, toSsrRuntimeRemotes }; export default moduleFederationAstro; diff --git a/packages/astro/test/normalize-remotes.test.ts b/packages/astro/test/normalize-remotes.test.ts index c49533d..d80ce93 100644 --- a/packages/astro/test/normalize-remotes.test.ts +++ b/packages/astro/test/normalize-remotes.test.ts @@ -116,7 +116,7 @@ test("auto-wraps .astro exposes into generated TS wrappers", () => { } }); -test("injects host auto-init and web target define for remotes in dev", () => { +test("injects host auto-init and web target define for remotes in dev", async () => { const injectedScripts = []; const updatedConfigs = []; const integration = moduleFederationAstro({ @@ -138,7 +138,7 @@ test("injects host auto-init and web target define for remotes in dev", () => { }, } as unknown as Parameters<(typeof integration.hooks)["astro:config:setup"]>[0]; - integration.hooks["astro:config:setup"](setupArgs); + await integration.hooks["astro:config:setup"](setupArgs); expect(injectedScripts).toHaveLength(1); expect(injectedScripts[0].stage).toBe("page"); @@ -152,7 +152,7 @@ test("injects host auto-init and web target define for remotes in dev", () => { expect(updatedConfigs[0].vite.optimizeDeps.exclude[0]).toMatch(/hostAutoInit/); }); -test("does not inject host auto-init when no remotes are configured", () => { +test("does not inject host auto-init when no remotes are configured", async () => { const injectedScripts = []; const updatedConfigs = []; const integration = moduleFederationAstro({ @@ -170,7 +170,7 @@ test("does not inject host auto-init when no remotes are configured", () => { }, } as unknown as Parameters<(typeof integration.hooks)["astro:config:setup"]>[0]; - integration.hooks["astro:config:setup"](setupArgs); + await integration.hooks["astro:config:setup"](setupArgs); expect(injectedScripts).toHaveLength(0); expect(updatedConfigs).toHaveLength(1); @@ -189,7 +189,7 @@ test("ssr runtime plugin resolves configured local remotes to local source files fs.mkdirSync(path.join(remoteRoot, "src"), { recursive: true }); fs.mkdirSync(hostRoot, { recursive: true }); fs.writeFileSync( - path.join(remoteRoot, "src", "server.ts"), + path.join(remoteRoot, "src", "server.tsx"), 'export const getMessage = () => "remote";\n', "utf8", ); @@ -218,7 +218,7 @@ test("ssr runtime plugin resolves configured local remotes to local source files }, } as unknown as Parameters<(typeof integration.hooks)["astro:config:setup"]>[0]; - integration.hooks["astro:config:setup"](setupArgs); + await integration.hooks["astro:config:setup"](setupArgs); const runtimePlugin = updatedConfigs[0].vite.plugins.find( (plugin) => plugin?.name === "@module-federation/astro:ssr-load-remote-runtime", @@ -235,7 +235,7 @@ test("ssr runtime plugin resolves configured local remotes to local source files expect(transformed).toBeTruthy(); expect(transformed.code).toMatch(/import \* as __mf_local_module__/); expect(transformed.code).toMatch(/file:\/\//); - expect(transformed.code).toMatch(/remote\/src\/server\.ts/); + expect(transformed.code).toMatch(/remote\/src\/server\.tsx/); expect(transformed.code).toMatch(/export \* from/); } finally { process.chdir(previousCwd); @@ -244,7 +244,7 @@ test("ssr runtime plugin resolves configured local remotes to local source files }); test("ssr runtime plugin only injects source fallback in dev", async () => { - const createPlugin = (command: "dev" | "build") => { + const createPlugin = async (command: "dev" | "build") => { const updatedConfigs = []; const integration = moduleFederationAstro({ name: "astro_host", @@ -262,15 +262,15 @@ test("ssr runtime plugin only injects source fallback in dev", async () => { }, } as unknown as Parameters<(typeof integration.hooks)["astro:config:setup"]>[0]; - integration.hooks["astro:config:setup"](setupArgs); + await integration.hooks["astro:config:setup"](setupArgs); return updatedConfigs[0].vite.plugins.find( (plugin) => plugin?.name === "@module-federation/astro:ssr-load-remote-runtime", ); }; - const devPlugin = createPlugin("dev"); - const buildPlugin = createPlugin("build"); + const devPlugin = await createPlugin("dev"); + const buildPlugin = await createPlugin("build"); expect(devPlugin).toBeTruthy(); expect(buildPlugin).toBeTruthy(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d7736b..0ff36ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,6 +50,62 @@ importers: specifier: ^6.4.1 version: 6.4.1(@types/node@24.12.0) + apps/react/host: + dependencies: + '@astrojs/node': + specifier: ^10.0.4 + version: 10.0.4(astro@6.1.2(@types/node@24.12.0)(rollup@4.59.0)(typescript@5.9.3)) + '@astrojs/react': + specifier: ^5.0.2 + version: 5.0.2(@types/node@24.12.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@module-federation/astro': + specifier: workspace:* + version: link:../../../packages/astro + astro: + specifier: ^6.1.1 + version: 6.1.2(@types/node@24.12.0)(rollup@4.59.0)(typescript@5.9.3) + react: + specifier: ^19.2.4 + version: 19.2.4 + react-dom: + specifier: ^19.2.4 + version: 19.2.4(react@19.2.4) + devDependencies: + vite: + specifier: ^6.4.1 + version: 6.4.1(@types/node@24.12.0) + + apps/react/remote: + dependencies: + '@astrojs/node': + specifier: ^10.0.4 + version: 10.0.4(astro@6.1.2(@types/node@24.12.0)(rollup@4.59.0)(typescript@5.9.3)) + '@astrojs/react': + specifier: ^5.0.2 + version: 5.0.2(@types/node@24.12.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@module-federation/astro': + specifier: workspace:* + version: link:../../../packages/astro + astro: + specifier: ^6.1.1 + version: 6.1.2(@types/node@24.12.0)(rollup@4.59.0)(typescript@5.9.3) + react: + specifier: ^19.2.4 + version: 19.2.4 + react-dom: + specifier: ^19.2.4 + version: 19.2.4(react@19.2.4) + devDependencies: + '@types/react': + specifier: ^19.2.14 + version: 19.2.14 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.14) + vite: + specifier: ^6.4.1 + version: 6.4.1(@types/node@24.12.0) + packages/astro: dependencies: '@module-federation/runtime': @@ -59,8 +115,8 @@ importers: specifier: 2.2.3 version: 2.2.3 '@module-federation/vite': - specifier: ^1.13.5 - version: 1.13.5(rollup@4.59.0)(typescript@5.9.3)(vite@6.4.1(@types/node@24.12.0)) + specifier: ^1.13.6 + version: 1.13.6(rollup@4.59.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0)) astro: specifier: ^5.0.0 version: 5.18.0(@types/node@24.12.0)(rollup@4.59.0)(typescript@5.9.3) @@ -76,19 +132,33 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.2 - version: 4.1.2(@types/node@24.12.0)(vite@6.4.1(@types/node@24.12.0)) + version: 4.1.2(@types/node@24.12.0)(vite@7.3.1(@types/node@24.12.0)) packages: '@astrojs/compiler@2.13.1': resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} + '@astrojs/compiler@3.0.1': + resolution: {integrity: sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA==} + '@astrojs/internal-helpers@0.7.5': resolution: {integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==} + '@astrojs/internal-helpers@0.8.0': + resolution: {integrity: sha512-J56GrhEiV+4dmrGLPNOl2pZjpHXAndWVyiVDYGDuw6MWKpBSEMLdFxHzeM/6sqaknw9M+HFfHZAcvi3OfT3D/w==} + '@astrojs/markdown-remark@6.3.10': resolution: {integrity: sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==} + '@astrojs/markdown-remark@7.1.0': + resolution: {integrity: sha512-P+HnCsu2js3BoTc8kFmu+E9gOcFeMdPris75g+Zl4sY8+bBRbSQV6xzcBDbZ27eE7yBGEGQoqjpChx+KJYIPYQ==} + + '@astrojs/node@10.0.4': + resolution: {integrity: sha512-7pVgiVSscQHRC2WqjlXcnbbcKMYp2GXrYpmuvdGg5zgA8J1lFm2vmwVhHZFuZK3Ik5PzoxiDROaEgoDGLbfhLw==} + peerDependencies: + astro: ^6.0.0 + '@astrojs/node@9.5.4': resolution: {integrity: sha512-AbPSZsMGu8hXPR2XxV79RaKy8h6wijhtoqZGeUf4OXg2w1mxXlx4VnIc1D+QvtsgauSz7P5PLhmvf6w/J41GJg==} peerDependencies: @@ -98,14 +168,65 @@ packages: resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + '@astrojs/prism@4.0.1': + resolution: {integrity: sha512-nksZQVjlferuWzhPsBpQ1JE5XuKAf1id1/9Hj4a9KG4+ofrlzxUUwX4YGQF/SuDiuiGKEnzopGOt38F3AnVWsQ==} + engines: {node: '>=22.12.0'} + + '@astrojs/react@5.0.2': + resolution: {integrity: sha512-BDpPrapV3Wgp9sD7aTMvP+ORH0jFEue9OmkBu98KcBbTlsQCnvisDW3m7PQrMptXwEDlX5HGfP/CHmkEVY2tZA==} + engines: {node: '>=22.12.0'} + peerDependencies: + '@types/react': ^17.0.50 || ^18.0.21 || ^19.0.0 + '@types/react-dom': ^17.0.17 || ^18.0.6 || ^19.0.0 + react: ^17.0.2 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0 + '@astrojs/telemetry@3.3.0': resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + '@babel/generator@8.0.0-rc.3': resolution: {integrity: sha512-em37/13/nR320G4jab/nIIHZgc2Wz2y/D39lxnTyxB4/D/omPQncl/lSdlnJY1OhQcRGugTSIF2l/69o31C9dA==} engines: {node: ^20.19.0 || >=22.12.0} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -122,6 +243,14 @@ packages: resolution: {integrity: sha512-8AWCJ2VJJyDFlGBep5GpaaQ9AAaE/FjAcrqI7jyssYhtL7WGV0DOKpJsQqM037xDbpRLHXsY8TwU7zDma7coOw==} engines: {node: ^20.19.0 || >=22.12.0} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.29.0': resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} @@ -132,10 +261,30 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/runtime@7.29.2': resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} @@ -203,6 +352,12 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + '@clack/core@1.1.0': + resolution: {integrity: sha512-SVcm4Dqm2ukn64/8Gub2wnlA5nS2iWJyCkdNHcvNHPIeBTGojpdJ+9cZKwLfmqy7irD4N5qLteSilJlE0WLAtA==} + + '@clack/prompts@1.1.0': + resolution: {integrity: sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g==} + '@emnapi/core@1.9.1': resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} @@ -689,6 +844,9 @@ packages: '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -705,8 +863,8 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@module-federation/dts-plugin@2.2.3': - resolution: {integrity: sha512-a7Rv2nPJGLufeeOFiLmgRNxw97peAB+SjyBZdpPa3g5ojOEdhZYxdpB15RYiyOtPUc7PhZsSvfYKgj4cEU8f1w==} + '@module-federation/dts-plugin@2.3.0': + resolution: {integrity: sha512-2Y11IjQNuMuIXhsOeW7Vd/Ui/RzRPhR+6XFzQaJKuxy6xNk6j/s9iIZVg66gxvSQlUtPzvlpeXEAc6NLPlg3Ew==} peerDependencies: typescript: ^4.9.0 || ^5.0.0 vue-tsc: '>=1.0.24' @@ -717,15 +875,24 @@ packages: '@module-federation/error-codes@2.2.3': resolution: {integrity: sha512-3+qOylnuljh1XulzXd3iNhALXuVXPVGFUupz9qnUL1paWX48F89Wex3egu6psZhxi3F7y7TA7ykjfWpP0vlrjQ==} - '@module-federation/managers@2.2.3': - resolution: {integrity: sha512-xBv2hg88K4QIPVYKNAYm+LnH5hRuTPGeFya2obSxalagnMb6lEw7Gko5QqXAZDgCK44dkuqslu8/YtMEXc3v7w==} + '@module-federation/error-codes@2.3.0': + resolution: {integrity: sha512-O8jXi0Wv/dFc7BkJkFC0SlW8dT0OjOWvBHakVaOAKVlAKNuQBXfZzLe48bIYAvMhPe0lFppyWoN/SyuIfVBvkg==} + + '@module-federation/managers@2.3.0': + resolution: {integrity: sha512-LDPzSJV4RvGDABkhwwNYUVWakbfHDySHDoEJIlc6KhvdwUlivtn90Ay7uNIdz9FhhGeb338io87IctfxquSqWQ==} '@module-federation/runtime-core@2.2.3': resolution: {integrity: sha512-muGMkv1AQIkCQy8mIa6lmgHu3qTasl/se+bZHERulD3gddK6ninM/Hc7mHyUVNO9rVhb+5Fv7QiCYahH4pRrIg==} + '@module-federation/runtime-core@2.3.0': + resolution: {integrity: sha512-OvBNIAGM7Xj0dUOBG5jx7zuZaRLDHb5Wcb7pstwqJo5WYqj7gzA9X+QmI+jsQ9jY74Nlfx9vrvW6LlHukIRH/A==} + '@module-federation/runtime@2.2.3': resolution: {integrity: sha512-5xAIPhzNPLXL7J61ZJxNiM+kpKfKw2IKf4oAT1KFVxntZnnWZiZFAkzTeRiNlfIjwbgasKqBoARTLbu1GEaydA==} + '@module-federation/runtime@2.3.0': + resolution: {integrity: sha512-9vv0Ah8Tg3E5mBlj29n1boN0bPKbqhw7QBWZCDm2Mou0uXb8x/ycgFR1EPq937LCScBUl0LiFp53KSjeyT75aQ==} + '@module-federation/sdk@2.2.3': resolution: {integrity: sha512-DUXqwxQRqxlBz7XWW5mEsdTvYEZPWVAgwfh9JtLW1fkxfdG+Czzzs1sXGz8MPF76H3PGzbRdzeCEfiANlANWiw==} peerDependencies: @@ -734,11 +901,19 @@ packages: node-fetch: optional: true - '@module-federation/third-party-dts-extractor@2.2.3': - resolution: {integrity: sha512-PweNCC79K+fV/BxBjnkJnK1xrrSq9rWmqZat2CfmxStwPhO9yy5Q7XikZnwwUF7mb4p7WoniQRsz//h1aYUdqw==} + '@module-federation/sdk@2.3.0': + resolution: {integrity: sha512-xj90q4eILkFA1J30wVQYEIWAEh39tfLbCIw1dz3QXUL2TtD/h19H1rZlRkrtAyUxV6xKjp17EMkyGSHzstf1OA==} + peerDependencies: + node-fetch: ^3.3.2 + peerDependenciesMeta: + node-fetch: + optional: true + + '@module-federation/third-party-dts-extractor@2.3.0': + resolution: {integrity: sha512-UMGujleD7+rsKqMz/If/8N2Pws219PuJmwz8E/frFUpUW7zo/4Txekhh6Jfz1HnbHdxr0vWqQMx1rqnpPlzeuQ==} - '@module-federation/vite@1.13.5': - resolution: {integrity: sha512-CZ/uJUxPgL3PoW+bOFQyWsgp2pIr1rLearKONHHo7SkMoZxPHB+6Hr6mgalucr2fxS4fCV8D0FTlayu9qwJTUQ==} + '@module-federation/vite@1.13.6': + resolution: {integrity: sha512-7w8xGdWDaZ4jo0gHb74vI/D6ivHlF1HjGTlWB+YVGX5rgootYpI8FHZliF9z8o4ptZuUnnQSKIWW857WHph/CA==} peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1111,6 +1286,9 @@ packages: '@rolldown/pluginutils@1.0.0-rc.12': resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} + '@rolldown/pluginutils@1.0.0-rc.3': + resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} @@ -1261,21 +1439,49 @@ packages: '@shikijs/core@3.23.0': resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} + '@shikijs/core@4.0.2': + resolution: {integrity: sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==} + engines: {node: '>=20'} + '@shikijs/engine-javascript@3.23.0': resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} + '@shikijs/engine-javascript@4.0.2': + resolution: {integrity: sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==} + engines: {node: '>=20'} + '@shikijs/engine-oniguruma@3.23.0': resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} + '@shikijs/engine-oniguruma@4.0.2': + resolution: {integrity: sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==} + engines: {node: '>=20'} + '@shikijs/langs@3.23.0': resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} + '@shikijs/langs@4.0.2': + resolution: {integrity: sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==} + engines: {node: '>=20'} + + '@shikijs/primitive@4.0.2': + resolution: {integrity: sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw==} + engines: {node: '>=20'} + '@shikijs/themes@3.23.0': resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} + '@shikijs/themes@4.0.2': + resolution: {integrity: sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==} + engines: {node: '>=20'} + '@shikijs/types@3.23.0': resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} + '@shikijs/types@4.0.2': + resolution: {integrity: sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==} + engines: {node: '>=20'} + '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -1315,6 +1521,18 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} @@ -1348,12 +1566,26 @@ packages: '@types/node@24.12.0': resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@vitejs/plugin-react@5.2.0': + resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + '@vitest/expect@4.1.2': resolution: {integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==} @@ -1453,6 +1685,11 @@ packages: engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true + astro@6.1.2: + resolution: {integrity: sha512-r3iIvmB6JvQxsdJLvapybKKq7Bojd1iQK6CCx5P55eRnXJIyUpHx/1UB/GdMm+em/lwaCUasxHCmIO0lCLV2uA==} + engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1460,8 +1697,8 @@ packages: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} - axios@1.13.6: - resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + axios@1.14.0: + resolution: {integrity: sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} @@ -1473,6 +1710,11 @@ packages: base-64@1.0.0: resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + baseline-browser-mapping@2.10.12: + resolution: {integrity: sha512-qyq26DxfY4awP2gIRXhhLWfwzwI+N5Nxk6iQi8EFizIaWIjqicQTE4sLnZZVdeKPRcVNoJOkkpfzoIYuvCKaIQ==} + engines: {node: '>=6.0.0'} + hasBin: true + better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -1491,6 +1733,11 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + cac@7.0.0: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} @@ -1503,6 +1750,9 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} + caniuse-lite@1.0.30001782: + resolution: {integrity: sha512-dZcaJLJeDMh4rELYFw1tvSn1bhZWYFOt468FcbHHxx/Z/dFidd1I6ciyFdi3iwfQCyOjqo9upF6lGQYtMiJWxw==} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1567,6 +1817,10 @@ packages: common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + common-ancestor-path@2.0.0: + resolution: {integrity: sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==} + engines: {node: '>= 18'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1612,9 +1866,8 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - date-format@4.0.14: - resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} - engines: {node: '>=4.0'} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -1661,6 +1914,9 @@ packages: devalue@5.6.3: resolution: {integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==} + devalue@5.6.4: + resolution: {integrity: sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==} + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -1708,6 +1964,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-to-chromium@1.5.329: + resolution: {integrity: sha512-/4t+AS1l4S3ZC0Ja7PHFIWeBIxGA3QGqV8/yKsP36v7NcyUCl+bIcmw6s5zVuMIECWwBrAK/6QLzTmbJChBboQ==} + emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1766,6 +2025,10 @@ packages: engines: {node: '>=18'} hasBin: true + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -1837,9 +2100,6 @@ packages: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} - flatted@3.3.4: - resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} - flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} @@ -1888,6 +2148,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + get-east-asian-width@1.5.0: resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} @@ -2080,6 +2344,9 @@ packages: peerDependencies: ws: '*' + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-yaml@3.14.2: resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true @@ -2093,6 +2360,11 @@ packages: engines: {node: '>=6'} hasBin: true + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -2113,10 +2385,6 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - log4js@6.9.1: - resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} - engines: {node: '>=8.0'} - long-timeout@0.1.1: resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} @@ -2127,6 +2395,9 @@ packages: resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} engines: {node: 20 || >=22} + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + luxon@3.7.2: resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} engines: {node: '>=12'} @@ -2326,6 +2597,9 @@ packages: node-mock-http@1.0.4: resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} + node-releases@2.0.36: + resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + node-schedule@2.1.1: resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} engines: {node: '>=6'} @@ -2386,6 +2660,10 @@ packages: resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} + p-limit@7.3.0: + resolution: {integrity: sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==} + engines: {node: '>=20'} + p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -2398,10 +2676,18 @@ packages: resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} engines: {node: '>=18'} + p-queue@9.1.0: + resolution: {integrity: sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==} + engines: {node: '>=20'} + p-timeout@6.1.4: resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} engines: {node: '>=14.16'} + p-timeout@7.0.1: + resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} + engines: {node: '>=20'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -2482,8 +2768,9 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} @@ -2504,6 +2791,19 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} + peerDependencies: + react: ^19.2.4 + + react-refresh@0.18.0: + resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} + engines: {node: '>=0.10.0'} + + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + engines: {node: '>=0.10.0'} + read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} @@ -2580,9 +2880,6 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rolldown-plugin-dts@0.23.2: resolution: {integrity: sha512-PbSqLawLgZBGcOGT3yqWBGn4cX+wh2nt5FuBGdcMHyOhoukmjbhYAl8NT9sE4U38Cm9tqLOIQeOrvzeayM0DLQ==} engines: {node: '>=20.19.0'} @@ -2622,6 +2919,13 @@ packages: resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} engines: {node: '>=11.0.0'} + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -2652,6 +2956,10 @@ packages: shiki@3.23.0: resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} + shiki@4.0.2: + resolution: {integrity: sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==} + engines: {node: '>=20'} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -2696,10 +3004,6 @@ packages: std-env@4.0.0: resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} - streamroller@3.1.5: - resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} - engines: {node: '>=8.0'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2746,6 +3050,10 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyclip@0.1.12: + resolution: {integrity: sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA==} + engines: {node: ^16.14.0 || >= 17.3.0} + tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -2966,6 +3274,12 @@ packages: uploadthing: optional: true + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -3015,6 +3329,46 @@ packages: yaml: optional: true + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitefu@1.1.2: resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==} peerDependencies: @@ -3102,10 +3456,17 @@ packages: xxhash-wasm@1.1.0: resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yocto-queue@1.2.2: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} @@ -3132,6 +3493,9 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -3139,8 +3503,14 @@ snapshots: '@astrojs/compiler@2.13.1': {} + '@astrojs/compiler@3.0.1': {} + '@astrojs/internal-helpers@0.7.5': {} + '@astrojs/internal-helpers@0.8.0': + dependencies: + picomatch: 4.0.4 + '@astrojs/markdown-remark@6.3.10': dependencies: '@astrojs/internal-helpers': 0.7.5 @@ -3167,6 +3537,41 @@ snapshots: transitivePeerDependencies: - supports-color + '@astrojs/markdown-remark@7.1.0': + dependencies: + '@astrojs/internal-helpers': 0.8.0 + '@astrojs/prism': 4.0.1 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-to-text: 4.0.2 + js-yaml: 4.1.1 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.1 + remark-gfm: 4.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + remark-smartypants: 3.0.2 + retext-smartypants: 6.2.0 + shiki: 4.0.2 + smol-toml: 1.6.0 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@astrojs/node@10.0.4(astro@6.1.2(@types/node@24.12.0)(rollup@4.59.0)(typescript@5.9.3))': + dependencies: + '@astrojs/internal-helpers': 0.8.0 + astro: 6.1.2(@types/node@24.12.0)(rollup@4.59.0)(typescript@5.9.3) + send: 1.2.1 + server-destroy: 1.0.1 + transitivePeerDependencies: + - supports-color + '@astrojs/node@9.5.4(astro@5.18.0(@types/node@24.12.0)(rollup@4.59.0)(typescript@5.9.3))': dependencies: '@astrojs/internal-helpers': 0.7.5 @@ -3180,6 +3585,35 @@ snapshots: dependencies: prismjs: 1.30.0 + '@astrojs/prism@4.0.1': + dependencies: + prismjs: 1.30.0 + + '@astrojs/react@5.0.2(@types/node@24.12.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@astrojs/internal-helpers': 0.8.0 + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@vitejs/plugin-react': 5.2.0(vite@7.3.1(@types/node@24.12.0)) + devalue: 5.6.4 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + ultrahtml: 1.6.0 + vite: 7.3.1(@types/node@24.12.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + '@astrojs/telemetry@3.3.0': dependencies: ci-info: 4.4.0 @@ -3192,6 +3626,42 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.0': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/generator@8.0.0-rc.3': dependencies: '@babel/parser': 8.0.0-rc.3 @@ -3201,6 +3671,34 @@ snapshots: '@types/jsesc': 2.5.1 jsesc: 3.1.0 + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.28.6': {} + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-string-parser@8.0.0-rc.3': {} @@ -3209,6 +3707,13 @@ snapshots: '@babel/helper-validator-identifier@8.0.0-rc.3': {} + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.29.2': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + '@babel/parser@7.29.0': dependencies: '@babel/types': 7.29.0 @@ -3217,8 +3722,36 @@ snapshots: dependencies: '@babel/types': 8.0.0-rc.3 + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/runtime@7.29.2': {} + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -3376,6 +3909,15 @@ snapshots: human-id: 4.1.3 prettier: 2.8.8 + '@clack/core@1.1.0': + dependencies: + sisteransi: 1.0.5 + + '@clack/prompts@1.1.0': + dependencies: + '@clack/core': 1.1.0 + sisteransi: 1.0.5 + '@emnapi/core@1.9.1': dependencies: '@emnapi/wasi-threads': 1.2.0 @@ -3657,6 +4199,11 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} @@ -3682,20 +4229,19 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@module-federation/dts-plugin@2.2.3(typescript@5.9.3)': + '@module-federation/dts-plugin@2.3.0(typescript@5.9.3)': dependencies: - '@module-federation/error-codes': 2.2.3 - '@module-federation/managers': 2.2.3 - '@module-federation/sdk': 2.2.3 - '@module-federation/third-party-dts-extractor': 2.2.3 + '@module-federation/error-codes': 2.3.0 + '@module-federation/managers': 2.3.0 + '@module-federation/sdk': 2.3.0 + '@module-federation/third-party-dts-extractor': 2.3.0 adm-zip: 0.5.16 ansi-colors: 4.1.3 - axios: 1.13.6 + axios: 1.14.0 chalk: 3.0.0 fs-extra: 9.1.0 isomorphic-ws: 5.0.0(ws@8.18.0) lodash.clonedeepwith: 4.5.0 - log4js: 6.9.1 node-schedule: 2.1.1 rambda: 9.4.2 typescript: 5.9.3 @@ -3704,14 +4250,15 @@ snapshots: - bufferutil - debug - node-fetch - - supports-color - utf-8-validate '@module-federation/error-codes@2.2.3': {} - '@module-federation/managers@2.2.3': + '@module-federation/error-codes@2.3.0': {} + + '@module-federation/managers@2.3.0': dependencies: - '@module-federation/sdk': 2.2.3 + '@module-federation/sdk': 2.3.0 find-pkg: 2.0.0 fs-extra: 9.1.0 transitivePeerDependencies: @@ -3724,6 +4271,13 @@ snapshots: transitivePeerDependencies: - node-fetch + '@module-federation/runtime-core@2.3.0': + dependencies: + '@module-federation/error-codes': 2.3.0 + '@module-federation/sdk': 2.3.0 + transitivePeerDependencies: + - node-fetch + '@module-federation/runtime@2.2.3': dependencies: '@module-federation/error-codes': 2.2.3 @@ -3732,32 +4286,41 @@ snapshots: transitivePeerDependencies: - node-fetch + '@module-federation/runtime@2.3.0': + dependencies: + '@module-federation/error-codes': 2.3.0 + '@module-federation/runtime-core': 2.3.0 + '@module-federation/sdk': 2.3.0 + transitivePeerDependencies: + - node-fetch + '@module-federation/sdk@2.2.3': {} - '@module-federation/third-party-dts-extractor@2.2.3': + '@module-federation/sdk@2.3.0': {} + + '@module-federation/third-party-dts-extractor@2.3.0': dependencies: find-pkg: 2.0.0 fs-extra: 9.1.0 resolve: 1.22.8 - '@module-federation/vite@1.13.5(rollup@4.59.0)(typescript@5.9.3)(vite@6.4.1(@types/node@24.12.0))': + '@module-federation/vite@1.13.6(rollup@4.59.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.12.0))': dependencies: - '@module-federation/dts-plugin': 2.2.3(typescript@5.9.3) - '@module-federation/runtime': 2.2.3 - '@module-federation/sdk': 2.2.3 + '@module-federation/dts-plugin': 2.3.0(typescript@5.9.3) + '@module-federation/runtime': 2.3.0 + '@module-federation/sdk': 2.3.0 '@rollup/pluginutils': 5.3.0(rollup@4.59.0) defu: 6.1.4 es-module-lexer: 2.0.0 estree-walker: 3.0.3 magic-string: 0.30.21 pathe: 2.0.3 - vite: 6.4.1(@types/node@24.12.0) + vite: 7.3.1(@types/node@24.12.0) transitivePeerDependencies: - bufferutil - debug - node-fetch - rollup - - supports-color - typescript - utf-8-validate - vue-tsc @@ -3955,6 +4518,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.12': {} + '@rolldown/pluginutils@1.0.0-rc.3': {} + '@rollup/pluginutils@5.3.0(rollup@4.59.0)': dependencies: '@types/estree': 1.0.8 @@ -4045,30 +4610,68 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 + '@shikijs/core@4.0.2': + dependencies: + '@shikijs/primitive': 4.0.2 + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + '@shikijs/engine-javascript@3.23.0': dependencies: '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.4 + '@shikijs/engine-javascript@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + '@shikijs/engine-oniguruma@3.23.0': dependencies: '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 + '@shikijs/engine-oniguruma@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@shikijs/langs@3.23.0': dependencies: '@shikijs/types': 3.23.0 + '@shikijs/langs@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + + '@shikijs/primitive@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + '@shikijs/themes@3.23.0': dependencies: '@shikijs/types': 3.23.0 + '@shikijs/themes@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/types@3.23.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 + '@shikijs/types@4.0.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + '@shikijs/vscode-textmate@10.0.2': {} '@standard-schema/spec@1.1.0': {} @@ -4096,6 +4699,27 @@ snapshots: tslib: 2.8.1 optional: true + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.0 + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 @@ -4131,10 +4755,30 @@ snapshots: dependencies: undici-types: 7.16.0 + '@types/react-dom@19.2.3(@types/react@19.2.14)': + dependencies: + '@types/react': 19.2.14 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + '@types/unist@3.0.3': {} '@ungap/structured-clone@1.3.0': {} + '@vitejs/plugin-react@5.2.0(vite@7.3.1(@types/node@24.12.0))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-rc.3 + '@types/babel__core': 7.20.5 + react-refresh: 0.18.0 + vite: 7.3.1(@types/node@24.12.0) + transitivePeerDependencies: + - supports-color + '@vitest/expect@4.1.2': dependencies: '@standard-schema/spec': 1.1.0 @@ -4144,13 +4788,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(vite@6.4.1(@types/node@24.12.0))': + '@vitest/mocker@4.1.2(vite@7.3.1(@types/node@24.12.0))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.1(@types/node@24.12.0) + vite: 7.3.1(@types/node@24.12.0) '@vitest/pretty-format@4.1.2': dependencies: @@ -4325,15 +4969,109 @@ snapshots: - uploadthing - yaml + astro@6.1.2(@types/node@24.12.0)(rollup@4.59.0)(typescript@5.9.3): + dependencies: + '@astrojs/compiler': 3.0.1 + '@astrojs/internal-helpers': 0.8.0 + '@astrojs/markdown-remark': 7.1.0 + '@astrojs/telemetry': 3.3.0 + '@capsizecss/unpack': 4.0.0 + '@clack/prompts': 1.1.0 + '@oslojs/encoding': 1.1.0 + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + aria-query: 5.3.2 + axobject-query: 4.1.0 + ci-info: 4.4.0 + clsx: 2.1.1 + common-ancestor-path: 2.0.0 + cookie: 1.1.1 + devalue: 5.6.3 + diff: 8.0.3 + dlv: 1.1.3 + dset: 3.1.4 + es-module-lexer: 2.0.0 + esbuild: 0.27.3 + flattie: 1.1.1 + fontace: 0.4.1 + github-slugger: 2.0.0 + html-escaper: 3.0.3 + http-cache-semantics: 4.2.0 + js-yaml: 4.1.1 + magic-string: 0.30.21 + magicast: 0.5.2 + mrmime: 2.0.1 + neotraverse: 0.6.18 + obug: 2.1.1 + p-limit: 7.3.0 + p-queue: 9.1.0 + package-manager-detector: 1.6.0 + piccolore: 0.1.3 + picomatch: 4.0.4 + rehype: 13.0.2 + semver: 7.7.4 + shiki: 4.0.2 + smol-toml: 1.6.0 + svgo: 4.0.1 + tinyclip: 0.1.12 + tinyexec: 1.0.4 + tinyglobby: 0.2.15 + tsconfck: 3.1.6(typescript@5.9.3) + ultrahtml: 1.6.0 + unifont: 0.7.4 + unist-util-visit: 5.1.0 + unstorage: 1.17.4 + vfile: 6.0.3 + vite: 7.3.1(@types/node@24.12.0) + vitefu: 1.1.2(vite@7.3.1(@types/node@24.12.0)) + xxhash-wasm: 1.1.0 + yargs-parser: 22.0.0 + zod: 4.3.6 + optionalDependencies: + sharp: 0.34.5 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti + - less + - lightningcss + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - uploadthing + - yaml + asynckit@0.4.0: {} at-least-node@1.0.0: {} - axios@1.13.6: + axios@1.14.0: dependencies: follow-redirects: 1.15.11 form-data: 4.0.5 - proxy-from-env: 1.1.0 + proxy-from-env: 2.1.0 transitivePeerDependencies: - debug @@ -4343,6 +5081,8 @@ snapshots: base-64@1.0.0: {} + baseline-browser-mapping@2.10.12: {} + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -4366,6 +5106,14 @@ snapshots: dependencies: fill-range: 7.1.1 + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.12 + caniuse-lite: 1.0.30001782 + electron-to-chromium: 1.5.329 + node-releases: 2.0.36 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + cac@7.0.0: {} call-bind-apply-helpers@1.0.2: @@ -4375,6 +5123,8 @@ snapshots: camelcase@8.0.0: {} + caniuse-lite@1.0.30001782: {} + ccount@2.0.1: {} chai@6.2.2: {} @@ -4420,6 +5170,8 @@ snapshots: common-ancestor-path@1.0.1: {} + common-ancestor-path@2.0.0: {} + convert-source-map@2.0.0: {} cookie-es@1.2.2: {} @@ -4466,7 +5218,7 @@ snapshots: dependencies: css-tree: 2.2.1 - date-format@4.0.14: {} + csstype@3.2.3: {} debug@4.4.3: dependencies: @@ -4497,6 +5249,8 @@ snapshots: devalue@5.6.3: {} + devalue@5.6.4: {} + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -4539,6 +5293,8 @@ snapshots: ee-first@1.1.1: {} + electron-to-chromium@1.5.329: {} + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -4633,6 +5389,8 @@ snapshots: '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 + escalade@3.2.0: {} + escape-html@1.0.3: {} escape-string-regexp@5.0.0: {} @@ -4696,8 +5454,6 @@ snapshots: locate-path: 5.0.0 path-exists: 4.0.0 - flatted@3.3.4: {} - flattie@1.1.1: {} follow-redirects@1.15.11: {} @@ -4744,6 +5500,8 @@ snapshots: function-bind@1.1.2: {} + gensync@1.0.0-beta.2: {} + get-east-asian-width@1.5.0: {} get-intrinsic@1.3.0: @@ -4988,6 +5746,8 @@ snapshots: dependencies: ws: 8.18.0 + js-tokens@4.0.0: {} + js-yaml@3.14.2: dependencies: argparse: 1.0.10 @@ -4999,6 +5759,8 @@ snapshots: jsesc@3.1.0: {} + json5@2.2.3: {} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -5019,22 +5781,16 @@ snapshots: lodash.startcase@4.4.0: {} - log4js@6.9.1: - dependencies: - date-format: 4.0.14 - debug: 4.4.3 - flatted: 3.3.4 - rfdc: 1.4.1 - streamroller: 3.1.5 - transitivePeerDependencies: - - supports-color - long-timeout@0.1.1: {} longest-streak@3.1.0: {} lru-cache@11.2.6: {} + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + luxon@3.7.2: {} magic-string@0.30.21: @@ -5403,6 +6159,8 @@ snapshots: node-mock-http@1.0.4: {} + node-releases@2.0.36: {} + node-schedule@2.1.1: dependencies: cron-parser: 4.9.0 @@ -5497,6 +6255,10 @@ snapshots: dependencies: yocto-queue: 1.2.2 + p-limit@7.3.0: + dependencies: + yocto-queue: 1.2.2 + p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -5508,8 +6270,15 @@ snapshots: eventemitter3: 5.0.4 p-timeout: 6.1.4 + p-queue@9.1.0: + dependencies: + eventemitter3: 5.0.4 + p-timeout: 7.0.1 + p-timeout@6.1.4: {} + p-timeout@7.0.1: {} + p-try@2.2.0: {} package-manager-detector@0.2.11: @@ -5572,7 +6341,7 @@ snapshots: property-information@7.1.0: {} - proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} quansync@0.2.11: {} @@ -5586,6 +6355,15 @@ snapshots: range-parser@1.2.1: {} + react-dom@19.2.4(react@19.2.4): + dependencies: + react: 19.2.4 + scheduler: 0.27.0 + + react-refresh@0.18.0: {} + + react@19.2.4: {} + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -5713,8 +6491,6 @@ snapshots: reusify@1.1.0: {} - rfdc@1.4.1: {} - rolldown-plugin-dts@0.23.2(rolldown@1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.8.1))(typescript@5.9.3): dependencies: '@babel/generator': 8.0.0-rc.3 @@ -5796,6 +6572,10 @@ snapshots: sax@1.5.0: {} + scheduler@0.27.0: {} + + semver@6.3.1: {} + semver@7.7.4: {} send@1.2.1: @@ -5867,6 +6647,17 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 + shiki@4.0.2: + dependencies: + '@shikijs/core': 4.0.2 + '@shikijs/engine-javascript': 4.0.2 + '@shikijs/engine-oniguruma': 4.0.2 + '@shikijs/langs': 4.0.2 + '@shikijs/themes': 4.0.2 + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + siginfo@2.0.0: {} signal-exit@4.1.0: {} @@ -5896,14 +6687,6 @@ snapshots: std-env@4.0.0: {} - streamroller@3.1.5: - dependencies: - date-format: 4.0.14 - debug: 4.4.3 - fs-extra: 8.1.0 - transitivePeerDependencies: - - supports-color - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -5953,6 +6736,8 @@ snapshots: tinybench@2.9.0: {} + tinyclip@0.1.12: {} + tinyexec@1.0.2: {} tinyexec@1.0.4: {} @@ -6120,6 +6905,12 @@ snapshots: ofetch: 1.5.1 ufo: 1.6.3 + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 @@ -6147,14 +6938,30 @@ snapshots: '@types/node': 24.12.0 fsevents: 2.3.3 + vite@7.3.1(@types/node@24.12.0): + dependencies: + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.8 + rollup: 4.59.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.12.0 + fsevents: 2.3.3 + vitefu@1.1.2(vite@6.4.1(@types/node@24.12.0)): optionalDependencies: vite: 6.4.1(@types/node@24.12.0) - vitest@4.1.2(@types/node@24.12.0)(vite@6.4.1(@types/node@24.12.0)): + vitefu@1.1.2(vite@7.3.1(@types/node@24.12.0)): + optionalDependencies: + vite: 7.3.1(@types/node@24.12.0) + + vitest@4.1.2(@types/node@24.12.0)(vite@7.3.1(@types/node@24.12.0)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@6.4.1(@types/node@24.12.0)) + '@vitest/mocker': 4.1.2(vite@7.3.1(@types/node@24.12.0)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -6171,7 +6978,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 6.4.1(@types/node@24.12.0) + vite: 7.3.1(@types/node@24.12.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.12.0 @@ -6209,8 +7016,12 @@ snapshots: xxhash-wasm@1.1.0: {} + yallist@3.1.1: {} + yargs-parser@21.1.1: {} + yargs-parser@22.0.0: {} + yocto-queue@1.2.2: {} yocto-spinner@0.2.3: @@ -6230,4 +7041,6 @@ snapshots: zod@3.25.76: {} + zod@4.3.6: {} + zwitch@2.0.4: {} diff --git a/scripts/dev-react.mjs b/scripts/dev-react.mjs new file mode 100644 index 0000000..643828d --- /dev/null +++ b/scripts/dev-react.mjs @@ -0,0 +1,23 @@ +import { execSync } from "node:child_process"; + +const ports = [4331, 4332]; + +for (const port of ports) { + let pids = []; + + try { + const stdout = execSync(`lsof -tiTCP:${port} -sTCP:LISTEN`, { + encoding: "utf8", + stdio: ["ignore", "pipe", "ignore"], + }).trim(); + pids = stdout ? stdout.split("\n").filter(Boolean) : []; + } catch { + pids = []; + } + + for (const pid of pids) { + try { + process.kill(Number(pid), "SIGTERM"); + } catch {} + } +}