diff --git a/apps/lynx-host/.gitignore b/apps/lynx-host/.gitignore new file mode 100644 index 00000000000..2381db762fb --- /dev/null +++ b/apps/lynx-host/.gitignore @@ -0,0 +1,16 @@ +# Local +.DS_Store +*.local +*.log* + +# Dist +node_modules +dist/ + +# IDE +.vscode/* +!.vscode/extensions.json +.idea + +# TypeScript +*.tsbuildinfo diff --git a/apps/lynx-host/README.md b/apps/lynx-host/README.md new file mode 100644 index 00000000000..412d3e2d006 --- /dev/null +++ b/apps/lynx-host/README.md @@ -0,0 +1,95 @@ +## Lynx Module Federation Demo + +This is a ReactLynx project with Module Federation support, demonstrating the `@module-federation/rspeedy-core-plugin`. + +## Features + +- ✅ **Lynx/Rspeedy Integration**: Built with `@lynx-js/rspeedy` +- ✅ **Module Federation**: Uses `@module-federation/rsbuild-plugin` for build-time setup +- ✅ **Runtime Plugin**: Implements `@module-federation/rspeedy-core-plugin` for native script loading +- ✅ **Error Handling**: Comprehensive error handling and fallback components +- ✅ **TypeScript**: Full TypeScript support with proper typing + +## Architecture + +### Build-time Configuration +- **`lynx.config.ts`**: Configures Module Federation with `pluginModuleFederation` +- **Shared Dependencies**: React, react-dom, and @lynx-js/react are shared between remotes +- **Remote Loading**: Configured to load remote applications via manifest files + +### Runtime Configuration +- **`src/module-federation-setup.ts`**: Initializes Module Federation runtime +- **`RspeedyCorePlugin`**: Bridges MF runtime with Lynx's `nativeApp.loadScript()` +- **Remote Loader**: Custom component for loading and displaying remote modules + +## Getting Started + +First, install the dependencies: + +```bash +pnpm install +``` + +Then, run the development server: + +```bash +pnpm run dev +``` + +Scan the QRCode in the terminal with your LynxExplorer App to see the result. + +## Module Federation Demo + +The app includes an interactive demo that showcases: + +1. **Plugin Status**: Shows that the rspeedy-core-plugin is active +2. **Remote Loading**: Demonstrates loading remote modules (with error handling) +3. **Fallback Behavior**: Shows how the system handles failed remote loads +4. **Native Bridge**: Explains how the plugin bridges to Lynx's native script loading + +## Key Files + +- **`src/module-federation-setup.ts`**: MF runtime initialization with rspeedy plugin +- **`src/components/ModuleFederationDemo.tsx`**: Interactive demo component +- **`src/components/RemoteLoader.tsx`**: Generic remote module loader +- **`lynx.config.ts`**: Build configuration with Module Federation + +## Adding Remote Applications + +To add actual remote applications: + +1. **Update `lynx.config.ts`**: +```typescript +pluginModuleFederation({ + name: 'lynx-host', + remotes: { + 'my-remote': 'my-remote@http://localhost:3001/mf-manifest.json', + }, + // ... +}) +``` + +2. **Update `src/module-federation-setup.ts`**: +```typescript +const mfInstance = createInstance({ + name: 'lynx-host', + remotes: [{ + name: 'my-remote', + entry: 'http://localhost:3001/mf-manifest.json', + }], + plugins: [RspeedyCorePlugin()], +}); +``` + +3. **Use in components**: +```tsx + +``` + +## Development + +You can start editing the page by modifying `src/App.tsx`. The page auto-updates as you edit the file. diff --git a/apps/lynx-host/docs.md b/apps/lynx-host/docs.md new file mode 100644 index 00000000000..d6d44cfbabb --- /dev/null +++ b/apps/lynx-host/docs.md @@ -0,0 +1,58 @@ +• I dug into the dev artifacts to see what changes when we flip the Rspeedy MF plugin on. + +1. Run pnpm --filter lynx-host exec rspeedy build --mode development once with the plugin enabled and once with it commented out. That writes the dev + bundles to apps/lynx-host/dist/.rspeedy/main. +2. Compare background.js between the two runs: + + - Plugin enabled (apps/lynx-host/dist/.rspeedy/main/background.js, ~lines 25 530–25 610): the MF runtime injects the standard webpack JSONP loader: + + **webpack_require**.hmrM = () => { + if (typeof fetch === "undefined") + throw new Error("No browser support: need fetch API"); + return fetch(**webpack_require**.p + **webpack_require**.hmrF()).then(...) + }; + var chunkLoadingGlobal = self["chunk_lynx_host"] = self["chunk_lynx_host"] || []; + chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); + chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); + self["webpackHotUpdatelynx_host"] = (chunkId, moreModules, runtime) => { ... }; + That’s exactly what shows up in the Lynx runtime logs: self["webpackHotUpdatelynx_host"] ... and the fetch-based manifest loader. Lynx’s JS VM + doesn’t expose self or the browser fetch API inside the background thread, so processData, renderPage, and the hot-update globals all explode as + soon as the dev bundle executes. + soon as the dev bundle executes. + + - Plugin disabled (apps/lynx-host/dist/.rspeedy/main/background.js, ~lines 20 820–20 980): the original chunk loader is still intact and uses + Lynx’s native APIs: + + **webpack_require**.hmrM = function () { + return new Promise((resolve, reject) => + lynx.requireModuleAsync(**webpack_require**.p + **webpack_require**.hmrF(), (err, ret) => { + if (err) return reject(err); + resolve(ret); + }) + )['catch']((err) => { if (err.code !== 'MODULE_NOT_FOUND') throw err; }); + }; + **webpack_require**.hmrI.require = function(...) { ... } + **webpack_require**.hmrC.require = function(chunkIds, ...) { ... } + + No JSONP callback, no self["chunk_lynx_host"], and HMR updates flow through lynx.requireModuleAsync, which is why dev mode works when the plugin + is off. + +So the regression isn’t the shared modules themselves—it’s that the stock ModuleFederationPlugin swaps in the browser chunk/HMR runtime (JSONP + self + +fetch) even though Rspeedy’s target has chunkLoading: 'lynx'. We need the Rspeedy-specific plugin to preserve the Lynx chunk loader and manifest loader +instead of letting the MF runtime fall back to JSONP. + +Next steps to unblock dev: + +1. Adjust the new @module-federation/rspeedy-plugin so that, after it calls pluginModuleFederation, it forces the Rspack config back to the Lynx chunk + loader. The simplest fix is to hook api.modifyRsbuildConfig and, for each environment, set: + + bundlerConfig.output.chunkLoading = 'lynx'; + bundlerConfig.output.hotUpdateGlobal = undefined; + bundlerConfig.plugins = bundlerConfig.plugins?.filter(p => p.name !== 'JsonpTemplatePlugin'); + and re-inject the Lynx HMR runtime if necessary (the code that emits lynx.requireModuleAsync lives in the original Rspeedy template). + and re-inject the Lynx HMR runtime if necessary (the code that emits lynx.requireModuleAsync lives in the original Rspeedy template). + +2. Alternatively, tap into api.modifyBundlerChain and override the target to lynx-main/lynx-background before Federation runs so it can’t stomp the + loader. + +Once we keep the custom chunk loader in place, the dev bundle will go back to using lynx.requireModuleAsync and the self/fetch errors disappear. diff --git a/apps/lynx-host/lynx.config.ts b/apps/lynx-host/lynx.config.ts new file mode 100644 index 00000000000..c612d420ee5 --- /dev/null +++ b/apps/lynx-host/lynx.config.ts @@ -0,0 +1,45 @@ +import { defineConfig } from '@lynx-js/rspeedy'; + +import { pluginQRCode } from '@lynx-js/qrcode-rsbuild-plugin'; +import { pluginReactLynx } from '@lynx-js/react-rsbuild-plugin'; +import { pluginTypeCheck } from '@rsbuild/plugin-type-check'; +import { pluginModuleFederationRspeedy } from '@module-federation/rspeedy-plugin'; + +export default defineConfig({ + server: { + host: '10.210.20.64', + }, + dev: { + // Lynx main thread doesn't have `self`; disable HMR runtime to avoid `webpackHotUpdate` injections. + hmr: false, + }, + plugins: [ + pluginQRCode({ + schema(url) { + // We use `?fullscreen=true` to open the page in LynxExplorer in full screen mode + return `${url}?fullscreen=true`; + }, + }), + pluginReactLynx(), + // Test with remotes and shared config + pluginModuleFederationRspeedy({ + name: 'lynx_host', + remotes: { + lynx_remote: 'lynx_remote@http://localhost:3001/mf-manifest.json', + }, + // shared: { + // '@lynx-js/react': { + // singleton: true, + // eager: false, + // }, + // }, + dts: false, + dev: { + disableDynamicRemoteTypeHints: true, + disableLiveReload: true, + disableHotTypesReload: true, + }, + }), + // pluginTypeCheck(), // Temporarily disabled for MF testing + ], +}); diff --git a/apps/lynx-host/package.json b/apps/lynx-host/package.json new file mode 100644 index 00000000000..0489fadc239 --- /dev/null +++ b/apps/lynx-host/package.json @@ -0,0 +1,34 @@ +{ + "name": "lynx-host", + "version": "0.0.0", + "type": "module", + "scripts": { + "build": "rspeedy build", + "dev": "rspeedy dev", + "preview": "rspeedy preview", + "test": "vitest run" + }, + "dependencies": { + "@lynx-js/react": "^0.112.6", + "@module-federation/enhanced": "workspace:*", + "@module-federation/rspeedy-core-plugin": "workspace:*", + "@module-federation/rspeedy-plugin": "workspace:*" + }, + "devDependencies": { + "@lynx-js/preact-devtools": "^5.0.1-6664329", + "@lynx-js/qrcode-rsbuild-plugin": "^0.4.1", + "@lynx-js/react-rsbuild-plugin": "^0.10.13", + "@lynx-js/rspeedy": "^0.11.1", + "@lynx-js/types": "3.4.11", + "@module-federation/rsbuild-plugin": "workspace:*", + "@rsbuild/plugin-type-check": "1.2.4", + "@testing-library/jest-dom": "^6.8.0", + "@types/react": "^18.3.23", + "jsdom": "^26.1.0", + "typescript": "~5.9.2", + "vitest": "^3.2.4" + }, + "engines": { + "node": ">=18" + } +} diff --git a/apps/lynx-host/src/App.css b/apps/lynx-host/src/App.css new file mode 100644 index 00000000000..650e423282b --- /dev/null +++ b/apps/lynx-host/src/App.css @@ -0,0 +1,119 @@ +:root { + background-color: #000; + --color-text: #fff; +} + +.Background { + position: fixed; + background: radial-gradient( + 71.43% 62.3% at 46.43% 36.43%, + rgba(18, 229, 229, 0) 15%, + rgba(239, 155, 255, 0.3) 56.35%, + #ff6448 100% + ); + box-shadow: 0px 12.93px 28.74px 0px #ffd28db2 inset; + border-radius: 50%; + width: 200vw; + height: 200vw; + top: -60vw; + left: -14.27vw; + transform: rotate(15.25deg); +} + +.App { + position: relative; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +text { + color: var(--color-text); +} + +.Banner { + flex: 5; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + z-index: 100; +} + +.Logo { + flex-direction: column; + align-items: center; + justify-content: center; + margin-bottom: 8px; +} + +.Logo--react { + width: 100px; + height: 100px; + animation: Logo--spin infinite 20s linear; +} + +.Logo--lynx { + width: 100px; + height: 100px; + animation: Logo--shake infinite 0.5s ease; +} + +@keyframes Logo--spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@keyframes Logo--shake { + 0% { + transform: scale(1); + } + 50% { + transform: scale(0.9); + } + 100% { + transform: scale(1); + } +} + +.Content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.Arrow { + width: 24px; + height: 24px; +} + +.Title { + font-size: 36px; + font-weight: 700; +} + +.Subtitle { + font-style: italic; + font-size: 22px; + font-weight: 600; + margin-bottom: 8px; +} + +.Description { + font-size: 20px; + color: rgba(255, 255, 255, 0.85); + margin: 15rpx; +} + +.Hint { + font-size: 12px; + margin: 5px; + color: rgba(255, 255, 255, 0.65); +} diff --git a/apps/lynx-host/src/App.tsx b/apps/lynx-host/src/App.tsx new file mode 100644 index 00000000000..5043e380222 --- /dev/null +++ b/apps/lynx-host/src/App.tsx @@ -0,0 +1,60 @@ +import { useCallback, useEffect, useState } from '@lynx-js/react'; + +import './App.css'; +import arrow from './assets/arrow.png'; +import lynxLogo from './assets/lynx-logo.png'; +import reactLynxLogo from './assets/react-logo.png'; +import { SimpleMFDemo } from './components/SimpleMFDemo'; + +export function App(props: { onRender?: () => void }) { + const [alterLogo, setAlterLogo] = useState(false); + + useEffect(() => { + console.info('Hello, ReactLynx'); + }, []); + props.onRender?.(); + + const onTap = useCallback(() => { + 'background only'; + setAlterLogo((prevAlterLogo) => !prevAlterLogo); + }, []); + + return ( + + + + + + {alterLogo ? ( + + ) : ( + + )} + + React + on Lynx + + + + Tap the logo and have fun! + + Edit + + {' src/App.tsx '} + + to see updates! + + + + + {/* Module Federation Demo */} + + + + ); +} diff --git a/apps/lynx-host/src/__tests__/index.test.tsx b/apps/lynx-host/src/__tests__/index.test.tsx new file mode 100644 index 00000000000..45cdc1b90e5 --- /dev/null +++ b/apps/lynx-host/src/__tests__/index.test.tsx @@ -0,0 +1,100 @@ +// Copyright 2024 The Lynx Authors. All rights reserved. +// Licensed under the Apache License Version 2.0 that can be found in the +// LICENSE file in the root directory of this source tree. +import '@testing-library/jest-dom'; +import { expect, test, vi } from 'vitest'; +import { render, getQueriesForElement } from '@lynx-js/react/testing-library'; + +import { App } from '../App.jsx'; + +test('App', async () => { + const cb = vi.fn(); + + render( + { + cb(`__MAIN_THREAD__: ${__MAIN_THREAD__}`); + }} + />, + ); + expect(cb).toBeCalledTimes(1); + expect(cb.mock.calls).toMatchInlineSnapshot(` + [ + [ + "__MAIN_THREAD__: false", + ], + ] + `); + expect(elementTree.root).toMatchInlineSnapshot(` + + + + + + + + + Tap the logo and have fun! + + + Edit + + src/App.tsx + + to see updates! + + + + + + + `); + const { findByText } = getQueriesForElement(elementTree.root!); + const element = await findByText('Tap the logo and have fun!'); + expect(element).toBeInTheDocument(); + expect(element).toMatchInlineSnapshot(` + + Tap the logo and have fun! + + `); +}); diff --git a/apps/lynx-host/src/assets/arrow.png b/apps/lynx-host/src/assets/arrow.png new file mode 100644 index 00000000000..435c8ad4d1e Binary files /dev/null and b/apps/lynx-host/src/assets/arrow.png differ diff --git a/apps/lynx-host/src/assets/lynx-logo.png b/apps/lynx-host/src/assets/lynx-logo.png new file mode 100644 index 00000000000..fe44bf0e3c2 Binary files /dev/null and b/apps/lynx-host/src/assets/lynx-logo.png differ diff --git a/apps/lynx-host/src/assets/react-logo.png b/apps/lynx-host/src/assets/react-logo.png new file mode 100644 index 00000000000..4ad12a6b55c Binary files /dev/null and b/apps/lynx-host/src/assets/react-logo.png differ diff --git a/apps/lynx-host/src/components/SimpleMFDemo.tsx b/apps/lynx-host/src/components/SimpleMFDemo.tsx new file mode 100644 index 00000000000..3bf18aabbad --- /dev/null +++ b/apps/lynx-host/src/components/SimpleMFDemo.tsx @@ -0,0 +1,52 @@ +/** + * Module Federation demo - testing host configuration first + */ +import { useState } from '@lynx-js/react'; +import { + createInstance, + loadRemote, +} from '@module-federation/enhanced/runtime'; +import RspeedyCorePlugin from '@module-federation/rspeedy-core-plugin'; + +export function SimpleMFDemo() { + const [status] = useState('Host App Ready'); + // Initialize Module Federation with the rspeedy runtime plugin + createInstance({ + name: 'lynx_host', + remotes: [ + // Add your remote applications here + { + name: 'remote-app', + entry: 'http://localhost:3001/mf-manifest.json', + }, + ], + plugins: [ + // Use the rspeedy core plugin to bridge with Lynx's native script loading + RspeedyCorePlugin(), + ], + }); + const component = loadRemote('remote-app/SimpleMFDemo'); + return ( + + + 🏠 Module Federation Host + Rspeedy + + + + Status: {status} + + + + + Host app is configured for Module Federation + + + + + + Ready to load remote components from lynx_remote + + + + ); +} diff --git a/apps/lynx-host/src/index.tsx b/apps/lynx-host/src/index.tsx new file mode 100644 index 00000000000..b7f8e882abe --- /dev/null +++ b/apps/lynx-host/src/index.tsx @@ -0,0 +1,14 @@ +import '@lynx-js/preact-devtools'; +import '@lynx-js/react/debug'; +import { root } from '@lynx-js/react'; +/** + * Module Federation setup for Lynx/rspeedy + */ + +import { App } from './App.jsx'; + +root.render(); + +if (import.meta.webpackHot) { + import.meta.webpackHot.accept(); +} diff --git a/apps/lynx-host/src/rspeedy-env.d.ts b/apps/lynx-host/src/rspeedy-env.d.ts new file mode 100644 index 00000000000..1c813a68b03 --- /dev/null +++ b/apps/lynx-host/src/rspeedy-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/lynx-host/src/tsconfig.json b/apps/lynx-host/src/tsconfig.json new file mode 100644 index 00000000000..ae332024420 --- /dev/null +++ b/apps/lynx-host/src/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "composite": true, + "rootDir": ".", + + "jsx": "react-jsx", + "jsxImportSource": "@lynx-js/react", + + "module": "ESNext", + "moduleResolution": "Bundler", + + "noEmit": true + }, + "include": ["./**/*.ts", "./**/*.tsx"] +} diff --git a/apps/lynx-host/tsconfig.json b/apps/lynx-host/tsconfig.json new file mode 100644 index 00000000000..e22fb453d70 --- /dev/null +++ b/apps/lynx-host/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "strict": true, + "isolatedModules": true, + "verbatimModuleSyntax": true, + + "esModuleInterop": true, + "skipLibCheck": true, + + "noEmit": true, + "rootDir": "./" + }, + "references": [{ "path": "./tsconfig.node.json" }, { "path": "./src" }], + "files": [] +} diff --git a/apps/lynx-host/tsconfig.node.json b/apps/lynx-host/tsconfig.node.json new file mode 100644 index 00000000000..211c07de221 --- /dev/null +++ b/apps/lynx-host/tsconfig.node.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "composite": true, + + // Rspeedy uses Node.js's module resolution + "module": "node16", + "moduleResolution": "node16", + "erasableSyntaxOnly": true, + + // Node.js 18+ + "lib": ["es2023"], + "target": "es2022", + + "noEmit": true + }, + "include": ["./lynx.config.ts", "./vitest.config.ts"] +} diff --git a/apps/lynx-host/vitest.config.ts b/apps/lynx-host/vitest.config.ts new file mode 100644 index 00000000000..2bd6a9e4385 --- /dev/null +++ b/apps/lynx-host/vitest.config.ts @@ -0,0 +1,9 @@ +import { defineConfig, mergeConfig } from 'vitest/config'; +import { createVitestConfig } from '@lynx-js/react/testing-library/vitest-config'; + +const defaultConfig = await createVitestConfig(); +const config = defineConfig({ + test: {}, +}); + +export default mergeConfig(defaultConfig, config); diff --git a/apps/lynx-remote/.gitignore b/apps/lynx-remote/.gitignore new file mode 100644 index 00000000000..2381db762fb --- /dev/null +++ b/apps/lynx-remote/.gitignore @@ -0,0 +1,16 @@ +# Local +.DS_Store +*.local +*.log* + +# Dist +node_modules +dist/ + +# IDE +.vscode/* +!.vscode/extensions.json +.idea + +# TypeScript +*.tsbuildinfo diff --git a/apps/lynx-remote/README.md b/apps/lynx-remote/README.md new file mode 100644 index 00000000000..412d3e2d006 --- /dev/null +++ b/apps/lynx-remote/README.md @@ -0,0 +1,95 @@ +## Lynx Module Federation Demo + +This is a ReactLynx project with Module Federation support, demonstrating the `@module-federation/rspeedy-core-plugin`. + +## Features + +- ✅ **Lynx/Rspeedy Integration**: Built with `@lynx-js/rspeedy` +- ✅ **Module Federation**: Uses `@module-federation/rsbuild-plugin` for build-time setup +- ✅ **Runtime Plugin**: Implements `@module-federation/rspeedy-core-plugin` for native script loading +- ✅ **Error Handling**: Comprehensive error handling and fallback components +- ✅ **TypeScript**: Full TypeScript support with proper typing + +## Architecture + +### Build-time Configuration +- **`lynx.config.ts`**: Configures Module Federation with `pluginModuleFederation` +- **Shared Dependencies**: React, react-dom, and @lynx-js/react are shared between remotes +- **Remote Loading**: Configured to load remote applications via manifest files + +### Runtime Configuration +- **`src/module-federation-setup.ts`**: Initializes Module Federation runtime +- **`RspeedyCorePlugin`**: Bridges MF runtime with Lynx's `nativeApp.loadScript()` +- **Remote Loader**: Custom component for loading and displaying remote modules + +## Getting Started + +First, install the dependencies: + +```bash +pnpm install +``` + +Then, run the development server: + +```bash +pnpm run dev +``` + +Scan the QRCode in the terminal with your LynxExplorer App to see the result. + +## Module Federation Demo + +The app includes an interactive demo that showcases: + +1. **Plugin Status**: Shows that the rspeedy-core-plugin is active +2. **Remote Loading**: Demonstrates loading remote modules (with error handling) +3. **Fallback Behavior**: Shows how the system handles failed remote loads +4. **Native Bridge**: Explains how the plugin bridges to Lynx's native script loading + +## Key Files + +- **`src/module-federation-setup.ts`**: MF runtime initialization with rspeedy plugin +- **`src/components/ModuleFederationDemo.tsx`**: Interactive demo component +- **`src/components/RemoteLoader.tsx`**: Generic remote module loader +- **`lynx.config.ts`**: Build configuration with Module Federation + +## Adding Remote Applications + +To add actual remote applications: + +1. **Update `lynx.config.ts`**: +```typescript +pluginModuleFederation({ + name: 'lynx-host', + remotes: { + 'my-remote': 'my-remote@http://localhost:3001/mf-manifest.json', + }, + // ... +}) +``` + +2. **Update `src/module-federation-setup.ts`**: +```typescript +const mfInstance = createInstance({ + name: 'lynx-host', + remotes: [{ + name: 'my-remote', + entry: 'http://localhost:3001/mf-manifest.json', + }], + plugins: [RspeedyCorePlugin()], +}); +``` + +3. **Use in components**: +```tsx + +``` + +## Development + +You can start editing the page by modifying `src/App.tsx`. The page auto-updates as you edit the file. diff --git a/apps/lynx-remote/lynx.config.ts b/apps/lynx-remote/lynx.config.ts new file mode 100644 index 00000000000..ae2d7232428 --- /dev/null +++ b/apps/lynx-remote/lynx.config.ts @@ -0,0 +1,45 @@ +import { defineConfig } from '@lynx-js/rspeedy'; + +import { pluginQRCode } from '@lynx-js/qrcode-rsbuild-plugin'; +import { pluginReactLynx } from '@lynx-js/react-rsbuild-plugin'; +import { pluginTypeCheck } from '@rsbuild/plugin-type-check'; +import { pluginModuleFederationRspeedy } from '@module-federation/rspeedy-plugin'; + +export default defineConfig({ + server: { + port: 3001, + host: '10.210.20.64', + }, + dev: { + hmr: false, + }, + plugins: [ + pluginQRCode({ + schema(url) { + // We use `?fullscreen=true` to open the page in LynxExplorer in full screen mode + return `${url}?fullscreen=true`; + }, + }), + pluginReactLynx(), + pluginModuleFederationRspeedy({ + name: 'lynx_remote', + filename: 'lynx_remote.container.bundle', + exposes: { + './SimpleMFDemo': './src/components/SimpleMFDemoCompiled.tsx', + }, + // shared: { + // '@lynx-js/react': { + // singleton: true, + // eager: false, + // }, + // }, + dts: false, + dev: { + disableDynamicRemoteTypeHints: true, + disableLiveReload: true, + disableHotTypesReload: true, + }, + }), + pluginTypeCheck(), + ], +}); diff --git a/apps/lynx-remote/package.json b/apps/lynx-remote/package.json new file mode 100644 index 00000000000..42d608fe030 --- /dev/null +++ b/apps/lynx-remote/package.json @@ -0,0 +1,35 @@ +{ + "name": "lynx_remote", + "version": "0.0.0", + "type": "module", + "scripts": { + "build": "rspeedy build", + "dev": "rspeedy dev", + "preview": "rspeedy preview", + "test": "vitest run" + }, + "dependencies": { + "@lynx-js/react": "^0.112.6", + "@module-federation/enhanced": "workspace:*", + "@module-federation/rspeedy-core-plugin": "workspace:*", + "react": "^19.1.1" + }, + "devDependencies": { + "@lynx-js/preact-devtools": "^5.0.1-6664329", + "@lynx-js/qrcode-rsbuild-plugin": "^0.4.1", + "@lynx-js/react-rsbuild-plugin": "^0.10.13", + "@lynx-js/rspeedy": "^0.11.1", + "@lynx-js/types": "3.4.11", + "@module-federation/rsbuild-plugin": "workspace:*", + "@module-federation/rspeedy-plugin": "workspace:*", + "@rsbuild/plugin-type-check": "1.2.4", + "@testing-library/jest-dom": "^6.8.0", + "@types/react": "^18.3.23", + "jsdom": "^26.1.0", + "typescript": "~5.9.2", + "vitest": "^3.2.4" + }, + "engines": { + "node": ">=18" + } +} diff --git a/apps/lynx-remote/src/App.css b/apps/lynx-remote/src/App.css new file mode 100644 index 00000000000..650e423282b --- /dev/null +++ b/apps/lynx-remote/src/App.css @@ -0,0 +1,119 @@ +:root { + background-color: #000; + --color-text: #fff; +} + +.Background { + position: fixed; + background: radial-gradient( + 71.43% 62.3% at 46.43% 36.43%, + rgba(18, 229, 229, 0) 15%, + rgba(239, 155, 255, 0.3) 56.35%, + #ff6448 100% + ); + box-shadow: 0px 12.93px 28.74px 0px #ffd28db2 inset; + border-radius: 50%; + width: 200vw; + height: 200vw; + top: -60vw; + left: -14.27vw; + transform: rotate(15.25deg); +} + +.App { + position: relative; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +text { + color: var(--color-text); +} + +.Banner { + flex: 5; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + z-index: 100; +} + +.Logo { + flex-direction: column; + align-items: center; + justify-content: center; + margin-bottom: 8px; +} + +.Logo--react { + width: 100px; + height: 100px; + animation: Logo--spin infinite 20s linear; +} + +.Logo--lynx { + width: 100px; + height: 100px; + animation: Logo--shake infinite 0.5s ease; +} + +@keyframes Logo--spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@keyframes Logo--shake { + 0% { + transform: scale(1); + } + 50% { + transform: scale(0.9); + } + 100% { + transform: scale(1); + } +} + +.Content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.Arrow { + width: 24px; + height: 24px; +} + +.Title { + font-size: 36px; + font-weight: 700; +} + +.Subtitle { + font-style: italic; + font-size: 22px; + font-weight: 600; + margin-bottom: 8px; +} + +.Description { + font-size: 20px; + color: rgba(255, 255, 255, 0.85); + margin: 15rpx; +} + +.Hint { + font-size: 12px; + margin: 5px; + color: rgba(255, 255, 255, 0.65); +} diff --git a/apps/lynx-remote/src/App.tsx b/apps/lynx-remote/src/App.tsx new file mode 100644 index 00000000000..5043e380222 --- /dev/null +++ b/apps/lynx-remote/src/App.tsx @@ -0,0 +1,60 @@ +import { useCallback, useEffect, useState } from '@lynx-js/react'; + +import './App.css'; +import arrow from './assets/arrow.png'; +import lynxLogo from './assets/lynx-logo.png'; +import reactLynxLogo from './assets/react-logo.png'; +import { SimpleMFDemo } from './components/SimpleMFDemo'; + +export function App(props: { onRender?: () => void }) { + const [alterLogo, setAlterLogo] = useState(false); + + useEffect(() => { + console.info('Hello, ReactLynx'); + }, []); + props.onRender?.(); + + const onTap = useCallback(() => { + 'background only'; + setAlterLogo((prevAlterLogo) => !prevAlterLogo); + }, []); + + return ( + + + + + + {alterLogo ? ( + + ) : ( + + )} + + React + on Lynx + + + + Tap the logo and have fun! + + Edit + + {' src/App.tsx '} + + to see updates! + + + + + {/* Module Federation Demo */} + + + + ); +} diff --git a/apps/lynx-remote/src/__tests__/index.test.tsx b/apps/lynx-remote/src/__tests__/index.test.tsx new file mode 100644 index 00000000000..45cdc1b90e5 --- /dev/null +++ b/apps/lynx-remote/src/__tests__/index.test.tsx @@ -0,0 +1,100 @@ +// Copyright 2024 The Lynx Authors. All rights reserved. +// Licensed under the Apache License Version 2.0 that can be found in the +// LICENSE file in the root directory of this source tree. +import '@testing-library/jest-dom'; +import { expect, test, vi } from 'vitest'; +import { render, getQueriesForElement } from '@lynx-js/react/testing-library'; + +import { App } from '../App.jsx'; + +test('App', async () => { + const cb = vi.fn(); + + render( + { + cb(`__MAIN_THREAD__: ${__MAIN_THREAD__}`); + }} + />, + ); + expect(cb).toBeCalledTimes(1); + expect(cb.mock.calls).toMatchInlineSnapshot(` + [ + [ + "__MAIN_THREAD__: false", + ], + ] + `); + expect(elementTree.root).toMatchInlineSnapshot(` + + + + + + + + + Tap the logo and have fun! + + + Edit + + src/App.tsx + + to see updates! + + + + + + + `); + const { findByText } = getQueriesForElement(elementTree.root!); + const element = await findByText('Tap the logo and have fun!'); + expect(element).toBeInTheDocument(); + expect(element).toMatchInlineSnapshot(` + + Tap the logo and have fun! + + `); +}); diff --git a/apps/lynx-remote/src/assets/arrow.png b/apps/lynx-remote/src/assets/arrow.png new file mode 100644 index 00000000000..435c8ad4d1e Binary files /dev/null and b/apps/lynx-remote/src/assets/arrow.png differ diff --git a/apps/lynx-remote/src/assets/lynx-logo.png b/apps/lynx-remote/src/assets/lynx-logo.png new file mode 100644 index 00000000000..fe44bf0e3c2 Binary files /dev/null and b/apps/lynx-remote/src/assets/lynx-logo.png differ diff --git a/apps/lynx-remote/src/assets/react-logo.png b/apps/lynx-remote/src/assets/react-logo.png new file mode 100644 index 00000000000..4ad12a6b55c Binary files /dev/null and b/apps/lynx-remote/src/assets/react-logo.png differ diff --git a/apps/lynx-remote/src/components/SimpleMFDemo.tsx b/apps/lynx-remote/src/components/SimpleMFDemo.tsx new file mode 100644 index 00000000000..0946b9bf436 --- /dev/null +++ b/apps/lynx-remote/src/components/SimpleMFDemo.tsx @@ -0,0 +1,37 @@ +/** + * Simple Module Federation demo for Lynx + * Uses Lynx components that should be transformed by pluginReactLynx + */ +import { useState } from '@lynx-js/react'; + +const SimpleMFDemo = () => { + const [status] = useState('Plugin Active'); + + return ( + + + 🚀 Module Federation + Rspeedy + + + + Status: {status} + + + + + This app is configured with @module-federation/rspeedy-core-plugin + + + + + + The plugin bridges Module Federation with Lynx's + nativeApp.loadScript() + + + + ); +}; + +export default SimpleMFDemo; +export { SimpleMFDemo }; diff --git a/apps/lynx-remote/src/components/SimpleMFDemoCompiled.tsx b/apps/lynx-remote/src/components/SimpleMFDemoCompiled.tsx new file mode 100644 index 00000000000..8079255040f --- /dev/null +++ b/apps/lynx-remote/src/components/SimpleMFDemoCompiled.tsx @@ -0,0 +1,74 @@ +/** + * Pre-compiled version of SimpleMFDemo for Module Federation + * Uses React.createElement to avoid Lynx JSX transformation issues + */ +import { useState } from '@lynx-js/react'; +import * as React from 'react'; + +export function SimpleMFDemo() { + const [status] = useState('Plugin Active'); + + return React.createElement( + 'view', + { + style: { padding: '20px' }, + }, + [ + React.createElement( + 'text', + { + key: 'title', + style: { fontSize: '18px', fontWeight: 'bold', color: '#00b894' }, + }, + '🚀 Module Federation + Rspeedy', + ), + + React.createElement( + 'view', + { + key: 'status', + style: { marginTop: '10px' }, + }, + React.createElement( + 'text', + { + style: { fontSize: '14px' }, + }, + `Status: ${status}`, + ), + ), + + React.createElement( + 'view', + { + key: 'info1', + style: { marginTop: '10px' }, + }, + React.createElement( + 'text', + { + style: { fontSize: '12px', color: '#666' }, + }, + 'This app is configured with @module-federation/rspeedy-core-plugin', + ), + ), + + React.createElement( + 'view', + { + key: 'info2', + style: { marginTop: '15px' }, + }, + React.createElement( + 'text', + { + style: { fontSize: '12px', color: '#666' }, + }, + "The plugin bridges Module Federation with Lynx's nativeApp.loadScript()", + ), + ), + ], + ); +} + +export default SimpleMFDemo; diff --git a/apps/lynx-remote/src/components/SimpleMFDemoWrapper.js b/apps/lynx-remote/src/components/SimpleMFDemoWrapper.js new file mode 100644 index 00000000000..2c5314d059e --- /dev/null +++ b/apps/lynx-remote/src/components/SimpleMFDemoWrapper.js @@ -0,0 +1,9 @@ +/** + * Plain JS wrapper for the Lynx SimpleMFDemo component + * This avoids JSX transformation issues in Module Federation container + */ +import { SimpleMFDemo } from './SimpleMFDemo'; + +// Export the component without JSX syntax +export default SimpleMFDemo; +export { SimpleMFDemo }; diff --git a/apps/lynx-remote/src/federation-exports.ts b/apps/lynx-remote/src/federation-exports.ts new file mode 100644 index 00000000000..efa6e49e860 --- /dev/null +++ b/apps/lynx-remote/src/federation-exports.ts @@ -0,0 +1,21 @@ +/** + * Federation exports for lynx-remote + * This file makes components available globally after the bundle is loaded + * Similar to how Re.Pack handles component registration + */ +import { SimpleMFDemo } from './components/SimpleMFDemo'; + +// Register components in global namespace for Module Federation access +declare const globalThis: any; + +// Create a registry object +if (!globalThis.lynx_remote_registry) { + globalThis.lynx_remote_registry = {}; +} + +// Register our components +globalThis.lynx_remote_registry.SimpleMFDemo = SimpleMFDemo; + +// Also export for ES module access +export { SimpleMFDemo }; +export default { SimpleMFDemo }; diff --git a/apps/lynx-remote/src/index.tsx b/apps/lynx-remote/src/index.tsx new file mode 100644 index 00000000000..b4e459e6bfe --- /dev/null +++ b/apps/lynx-remote/src/index.tsx @@ -0,0 +1,14 @@ +import '@lynx-js/preact-devtools'; +import '@lynx-js/react/debug'; +import { root } from '@lynx-js/react'; + +// Import federation exports to register components globally +import './federation-exports'; + +import { App } from './App.jsx'; + +root.render(); + +if (import.meta.webpackHot) { + import.meta.webpackHot.accept(); +} diff --git a/apps/lynx-remote/src/rspeedy-env.d.ts b/apps/lynx-remote/src/rspeedy-env.d.ts new file mode 100644 index 00000000000..1c813a68b03 --- /dev/null +++ b/apps/lynx-remote/src/rspeedy-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/lynx-remote/src/tsconfig.json b/apps/lynx-remote/src/tsconfig.json new file mode 100644 index 00000000000..ae332024420 --- /dev/null +++ b/apps/lynx-remote/src/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "composite": true, + "rootDir": ".", + + "jsx": "react-jsx", + "jsxImportSource": "@lynx-js/react", + + "module": "ESNext", + "moduleResolution": "Bundler", + + "noEmit": true + }, + "include": ["./**/*.ts", "./**/*.tsx"] +} diff --git a/apps/lynx-remote/tsconfig.json b/apps/lynx-remote/tsconfig.json new file mode 100644 index 00000000000..e22fb453d70 --- /dev/null +++ b/apps/lynx-remote/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "strict": true, + "isolatedModules": true, + "verbatimModuleSyntax": true, + + "esModuleInterop": true, + "skipLibCheck": true, + + "noEmit": true, + "rootDir": "./" + }, + "references": [{ "path": "./tsconfig.node.json" }, { "path": "./src" }], + "files": [] +} diff --git a/apps/lynx-remote/tsconfig.node.json b/apps/lynx-remote/tsconfig.node.json new file mode 100644 index 00000000000..211c07de221 --- /dev/null +++ b/apps/lynx-remote/tsconfig.node.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "composite": true, + + // Rspeedy uses Node.js's module resolution + "module": "node16", + "moduleResolution": "node16", + "erasableSyntaxOnly": true, + + // Node.js 18+ + "lib": ["es2023"], + "target": "es2022", + + "noEmit": true + }, + "include": ["./lynx.config.ts", "./vitest.config.ts"] +} diff --git a/apps/lynx-remote/vitest.config.ts b/apps/lynx-remote/vitest.config.ts new file mode 100644 index 00000000000..2bd6a9e4385 --- /dev/null +++ b/apps/lynx-remote/vitest.config.ts @@ -0,0 +1,9 @@ +import { defineConfig, mergeConfig } from 'vitest/config'; +import { createVitestConfig } from '@lynx-js/react/testing-library/vitest-config'; + +const defaultConfig = await createVitestConfig(); +const config = defineConfig({ + test: {}, +}); + +export default mergeConfig(defaultConfig, config); diff --git a/packages/rspeedy-core-plugin/package.json b/packages/rspeedy-core-plugin/package.json new file mode 100644 index 00000000000..93bd6ba2927 --- /dev/null +++ b/packages/rspeedy-core-plugin/package.json @@ -0,0 +1,21 @@ +{ + "name": "@module-federation/rspeedy-core-plugin", + "version": "0.0.0", + "type": "module", + "license": "MIT", + "sideEffects": false, + "main": "./src/index.js", + "types": "./src/index.d.ts", + "files": [ + "src" + ], + "repository": { + "type": "git", + "url": "https://github.com/module-federation/core", + "directory": "packages/rspeedy-core-plugin" + }, + "peerDependencies": { + "@module-federation/runtime": "workspace:*", + "@module-federation/runtime-core": "workspace:*" + } +} diff --git a/packages/rspeedy-core-plugin/src/index.d.ts b/packages/rspeedy-core-plugin/src/index.d.ts new file mode 100644 index 00000000000..fe18ba75cd5 --- /dev/null +++ b/packages/rspeedy-core-plugin/src/index.d.ts @@ -0,0 +1,7 @@ +import type { ModuleFederationRuntimePlugin } from '@module-federation/runtime'; + +/** + * Runtime plugin that makes Module Federation use Lynx's native chunk loader + * (`lynx.requireModuleAsync`) instead of DOM-based JSONP/script tags. + */ +export default function RspeedyCorePlugin(): ModuleFederationRuntimePlugin; diff --git a/packages/rspeedy-core-plugin/src/index.js b/packages/rspeedy-core-plugin/src/index.js new file mode 100644 index 00000000000..492a09cfd34 --- /dev/null +++ b/packages/rspeedy-core-plugin/src/index.js @@ -0,0 +1,48 @@ +const pluginName = '@module-federation/rspeedy-core-plugin'; + +/** + * Runtime plugin that loads remote entries via Lynx native loaders instead of DOM script tags. + * It avoids the JSONP/script-path entirely and delegates to `lynx.requireModuleAsync`, which + * is the same primitive used by rspeedy's chunk loader for background and main-thread bundles. + */ +export default function RspeedyCorePlugin() { + return { + name: pluginName, + /* + * Intercept remote entry loading and use lynx.requireModuleAsync. + * If lynx is not available we fall back to the default runtime behaviour. + */ + async loadEntry({ remoteInfo }) { + const lynx = globalThis?.lynx; + if (!lynx || typeof lynx.requireModuleAsync !== 'function') { + return; + } + + const entryUrl = remoteInfo.entry; + const entryGlobalName = + remoteInfo.entryGlobalName || remoteInfo.name || 'remote'; + + const exportsFromRequire = await new Promise((resolve, reject) => { + try { + lynx.requireModuleAsync(entryUrl, (err, mod) => { + if (err) { + reject(err); + return; + } + resolve(mod); + }); + } catch (err) { + reject(err); + } + }); + + // Prefer the module returned by requireModuleAsync, but also + // check the global init hook that MF containers normally register. + return ( + exportsFromRequire || + globalThis[entryGlobalName] || + globalThis[remoteInfo.name] + ); + }, + }; +} diff --git a/packages/rspeedy-plugin/package.json b/packages/rspeedy-plugin/package.json new file mode 100644 index 00000000000..8d037a0b85d --- /dev/null +++ b/packages/rspeedy-plugin/package.json @@ -0,0 +1,21 @@ +{ + "name": "@module-federation/rspeedy-plugin", + "version": "0.0.0", + "type": "module", + "license": "MIT", + "sideEffects": false, + "main": "./src/index.js", + "types": "./src/index.d.ts", + "files": [ + "src" + ], + "repository": { + "type": "git", + "url": "https://github.com/module-federation/core", + "directory": "packages/rspeedy-plugin" + }, + "peerDependencies": { + "@module-federation/rsbuild-plugin": "workspace:*", + "@module-federation/rspeedy-core-plugin": "workspace:*" + } +} diff --git a/packages/rspeedy-plugin/src/index.d.ts b/packages/rspeedy-plugin/src/index.d.ts new file mode 100644 index 00000000000..b4aa4359b5c --- /dev/null +++ b/packages/rspeedy-plugin/src/index.d.ts @@ -0,0 +1,13 @@ +import type { + ModuleFederationOptions, + RsbuildPlugin, +} from '@module-federation/rsbuild-plugin'; + +export declare function pluginModuleFederationRspeedy( + options?: ModuleFederationOptions & { + runtimePlugins?: Array | string; + environment?: string; + }, +): RsbuildPlugin; + +export default pluginModuleFederationRspeedy; diff --git a/packages/rspeedy-plugin/src/index.js b/packages/rspeedy-plugin/src/index.js new file mode 100644 index 00000000000..3696cda3af2 --- /dev/null +++ b/packages/rspeedy-plugin/src/index.js @@ -0,0 +1,107 @@ +import { createRequire } from 'node:module'; +import { fileURLToPath } from 'node:url'; +import { pluginModuleFederation } from '@module-federation/rsbuild-plugin'; +import { normalizeRuntimePlugins } from './utils.js'; + +const require = createRequire(import.meta.url); +const MF_RUNTIME_PACKAGES = [ + '@module-federation/runtime', + '@module-federation/runtime-core', + '@module-federation/sdk', + '@module-federation/webpack-bundler-runtime', +]; + +/** + * Rspeedy-friendly wrapper around the standard Rsbuild Module Federation plugin. + * + * - Forces the Lynx runtime plugin so remotes load through `lynx.requireModuleAsync` + * instead of DOM JSONP. + * - Leaves user-provided MF options untouched. + */ +export function pluginModuleFederationRspeedy(options = {}) { + const { runtimePlugins, ...rest } = options; + + const mfPlugin = pluginModuleFederation( + { + ...rest, + runtimePlugins: normalizeRuntimePlugins(runtimePlugins), + }, + { + // Rspeedy uses a single environment; keeping the default environment name + // ensures manifests line up with the runtime. + environment: rest.environment || 'mf', + }, + ); + + // Wrap the original plugin so we can add Lynx-specific transpilation hints. + return { + name: 'rspeedy:module-federation', + setup(api) { + api.modifyBundlerChain((chain) => { + const mfRuntimeRule = chain.module.rule('rspeedy:mf-runtime-transpile'); + mfRuntimeRule + .test( + /([\\/]@module-federation[\\/](runtime|runtime-core|sdk|webpack-bundler-runtime)[\\/]|[\\/]webpack-bundler-runtime[\\/]).*\\.(js|cjs|mjs)$/, + ) + .use('swc') + .loader('builtin:swc-loader') + .options({ + jsc: { + parser: { syntax: 'ecmascript' }, + target: 'es2019', + }, + }); + }); + + // Ensure the MF runtime libraries are transpiled for the main-thread bundle + // so operators like `??=` are down-leveled for Lepus. + api.modifyRsbuildConfig((config, { mergeRsbuildConfig }) => { + const mfRuntimeDirs = + MF_RUNTIME_PACKAGES.map(pathDirOf).filter(Boolean); + + const include = Array.isArray(config.source?.include) + ? config.source.include.slice() + : config.source?.include + ? [config.source.include] + : []; + + mfRuntimeDirs.forEach((dir) => { + if (!include.includes(dir)) { + include.push(dir); + } + }); + + return mergeRsbuildConfig(config, { + source: { + include, + }, + }); + }); + + mfPlugin.setup(api); + }, + }; +} + +export default pluginModuleFederationRspeedy; + +function pathDirOf(pkgName) { + try { + const pkgPath = require.resolve(`${pkgName}/package.json`); + return pkgPath && pkgPath.replace(/\/package\.json$/, ''); + } catch { + if (pkgName === '@module-federation/webpack-bundler-runtime') { + // Workspace fallback when the bundler runtime is linked but not published. + try { + const pkgUrl = new URL( + '../../webpack-bundler-runtime', + import.meta.url, + ); + return fileURLToPath(pkgUrl); + } catch { + // ignore + } + } + return undefined; + } +} diff --git a/packages/rspeedy-plugin/src/utils.js b/packages/rspeedy-plugin/src/utils.js new file mode 100644 index 00000000000..0d099b8e08a --- /dev/null +++ b/packages/rspeedy-plugin/src/utils.js @@ -0,0 +1,19 @@ +import { createRequire } from 'node:module'; + +const require = createRequire(import.meta.url); +const RSPEEDY_RUNTIME_PLUGIN = require.resolve( + '@module-federation/rspeedy-core-plugin', +); + +export function normalizeRuntimePlugins(runtimePlugins = []) { + const normalized = Array.isArray(runtimePlugins) + ? runtimePlugins.filter(Boolean) + : [runtimePlugins]; + + // Ensure the rspeedy runtime plugin is always first so it can short-circuit DOM script creation. + if (!normalized.includes(RSPEEDY_RUNTIME_PLUGIN)) { + normalized.unshift(RSPEEDY_RUNTIME_PLUGIN); + } + + return normalized; +} diff --git a/packages/webpack-bundler-runtime/src/updateOptions.ts b/packages/webpack-bundler-runtime/src/updateOptions.ts index 2d0fa498a85..f337f2c7798 100644 --- a/packages/webpack-bundler-runtime/src/updateOptions.ts +++ b/packages/webpack-bundler-runtime/src/updateOptions.ts @@ -160,7 +160,9 @@ export function updateRemoteOptions(options: RemotesOptions) { } if (!idToRemoteMap[moduleId] && remoteInfos[data.remoteName]) { const items = remoteInfos[data.remoteName]; - idToRemoteMap[moduleId] ||= []; + if (!idToRemoteMap[moduleId]) { + idToRemoteMap[moduleId] = []; + } items.forEach((item) => { if (!idToRemoteMap[moduleId].includes(item)) { idToRemoteMap[moduleId].push(item); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 12d1f391818..9567b844a24 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -196,7 +196,7 @@ importers: version: 11.0.3(semantic-release@25.0.1) '@storybook/addon-docs': specifier: 9.0.17 - version: 9.0.17(@types/react@18.3.11)(storybook@9.0.9) + version: 9.0.17(@types/react@18.3.27)(storybook@9.0.9) '@storybook/nextjs': specifier: 9.0.9 version: 9.0.9(@rspack/core@1.3.9)(@swc/core@1.7.26)(esbuild@0.25.0)(next@14.2.16)(react-dom@18.3.1)(react@18.3.1)(storybook@9.0.9)(typescript@5.8.3)(webpack-cli@5.1.4)(webpack@5.98.0) @@ -223,7 +223,7 @@ importers: version: 0.5.9(tailwindcss@3.4.13) '@testing-library/react': specifier: 16.1.0 - version: 16.1.0(@testing-library/dom@10.4.1)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1) + version: 16.1.0(@testing-library/dom@10.4.1)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1) '@types/adm-zip': specifier: 0.5.5 version: 0.5.5 @@ -689,6 +689,113 @@ importers: specifier: ^4.8.2 version: 4.9.5 + apps/lynx-host: + dependencies: + '@lynx-js/react': + specifier: ^0.112.6 + version: 0.112.6(@lynx-js/types@3.4.11)(@types/react@18.3.27) + '@module-federation/enhanced': + specifier: workspace:* + version: link:../../packages/enhanced + '@module-federation/rspeedy-core-plugin': + specifier: workspace:* + version: link:../../packages/rspeedy-core-plugin + '@module-federation/rspeedy-plugin': + specifier: workspace:* + version: link:../../packages/rspeedy-plugin + devDependencies: + '@lynx-js/preact-devtools': + specifier: ^5.0.1-6664329 + version: 5.0.1-cf9aef5 + '@lynx-js/qrcode-rsbuild-plugin': + specifier: ^0.4.1 + version: 0.4.3 + '@lynx-js/react-rsbuild-plugin': + specifier: ^0.10.13 + version: 0.10.14(@lynx-js/react@0.112.6)(webpack@5.98.0) + '@lynx-js/rspeedy': + specifier: ^0.11.1 + version: 0.11.9(@rspack/core@1.3.9)(esbuild@0.25.0)(typescript@5.9.3)(webpack@5.98.0) + '@lynx-js/types': + specifier: 3.4.11 + version: 3.4.11 + '@module-federation/rsbuild-plugin': + specifier: workspace:* + version: link:../../packages/rsbuild-plugin + '@rsbuild/plugin-type-check': + specifier: 1.2.4 + version: 1.2.4(@rsbuild/core@1.4.12)(@rspack/core@1.3.9)(typescript@5.9.3) + '@testing-library/jest-dom': + specifier: ^6.8.0 + version: 6.9.1 + '@types/react': + specifier: ^18.3.23 + version: 18.3.27 + jsdom: + specifier: ^26.1.0 + version: 26.1.0 + typescript: + specifier: ~5.9.2 + version: 5.9.3 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@26.1.0)(less@4.4.2)(msw@1.3.4)(stylus@0.64.0) + + apps/lynx-remote: + dependencies: + '@lynx-js/react': + specifier: ^0.112.6 + version: 0.112.6(@lynx-js/types@3.4.11)(@types/react@18.3.27) + '@module-federation/enhanced': + specifier: workspace:* + version: link:../../packages/enhanced + '@module-federation/rspeedy-core-plugin': + specifier: workspace:* + version: link:../../packages/rspeedy-core-plugin + react: + specifier: ^19.1.1 + version: 19.1.1 + devDependencies: + '@lynx-js/preact-devtools': + specifier: ^5.0.1-6664329 + version: 5.0.1-cf9aef5 + '@lynx-js/qrcode-rsbuild-plugin': + specifier: ^0.4.1 + version: 0.4.3 + '@lynx-js/react-rsbuild-plugin': + specifier: ^0.10.13 + version: 0.10.14(@lynx-js/react@0.112.6)(webpack@5.98.0) + '@lynx-js/rspeedy': + specifier: ^0.11.1 + version: 0.11.9(@rspack/core@1.3.9)(esbuild@0.25.0)(typescript@5.9.3)(webpack@5.98.0) + '@lynx-js/types': + specifier: 3.4.11 + version: 3.4.11 + '@module-federation/rsbuild-plugin': + specifier: workspace:* + version: link:../../packages/rsbuild-plugin + '@module-federation/rspeedy-plugin': + specifier: workspace:* + version: link:../../packages/rspeedy-plugin + '@rsbuild/plugin-type-check': + specifier: 1.2.4 + version: 1.2.4(@rsbuild/core@1.4.12)(@rspack/core@1.3.9)(typescript@5.9.3) + '@testing-library/jest-dom': + specifier: ^6.8.0 + version: 6.9.1 + '@types/react': + specifier: ^18.3.23 + version: 18.3.27 + jsdom: + specifier: ^26.1.0 + version: 26.1.0 + typescript: + specifier: ~5.9.2 + version: 5.9.3 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@26.1.0)(less@4.4.2)(msw@1.3.4)(stylus@0.64.0) + apps/manifest-demo/3009-webpack-provider: dependencies: antd: @@ -2472,7 +2579,7 @@ importers: version: 1.0.6(@rsbuild/core@1.3.21) '@rslib/core': specifier: ^0.9.0 - version: 0.9.0(typescript@5.8.3) + version: 0.9.0(typescript@5.9.3) '@types/react': specifier: ^18.3.11 version: 18.3.11 @@ -2490,10 +2597,10 @@ importers: version: 8.4.2(prettier@3.3.3) storybook-addon-rslib: specifier: ^1.0.1 - version: 1.0.1(@rsbuild/core@1.3.21)(@rslib/core@0.9.0)(storybook-builder-rsbuild@2.1.2)(typescript@5.8.3) + version: 1.0.1(@rsbuild/core@1.3.21)(@rslib/core@0.9.0)(storybook-builder-rsbuild@2.1.2)(typescript@5.9.3) storybook-react-rsbuild: specifier: ^1.0.1 - version: 1.0.1(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1)(rollup@4.40.0)(storybook@8.4.2)(typescript@5.8.3)(webpack@5.98.0) + version: 1.0.1(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1)(rollup@4.40.0)(storybook@8.4.2)(typescript@5.9.3)(webpack@5.98.0) apps/runtime-demo/3005-runtime-host: dependencies: @@ -3064,7 +3171,7 @@ importers: version: 18.3.1(react@18.3.1) ts-jest: specifier: 29.0.1 - version: 29.0.1(@babel/core@7.28.5)(babel-jest@29.7.0)(esbuild@0.25.0)(jest@29.7.0)(typescript@5.8.3) + version: 29.0.1(@babel/core@7.28.5)(babel-jest@29.7.0)(esbuild@0.25.0)(jest@29.7.0)(typescript@5.9.3) webpack: specifier: 5.75.0 version: 5.75.0(@swc/core@1.7.26)(esbuild@0.25.0)(webpack-cli@5.1.4) @@ -3658,6 +3765,24 @@ importers: specifier: ^1.0.2 version: 1.0.8(@swc/helpers@0.5.13) + packages/rspeedy-core-plugin: + dependencies: + '@module-federation/runtime': + specifier: workspace:* + version: link:../runtime + '@module-federation/runtime-core': + specifier: workspace:* + version: link:../runtime-core + + packages/rspeedy-plugin: + dependencies: + '@module-federation/rsbuild-plugin': + specifier: workspace:* + version: link:../rsbuild-plugin + '@module-federation/rspeedy-core-plugin': + specifier: workspace:* + version: link:../rspeedy-core-plugin + packages/rspress-plugin: dependencies: '@module-federation/enhanced': @@ -3749,10 +3874,10 @@ importers: version: link:../sdk '@nx/react': specifier: '>= 16.0.0' - version: 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(eslint@8.57.1)(nx@21.2.3)(react-dom@18.3.1)(react@18.3.1)(typescript@5.8.3)(verdaccio@6.1.2)(vue-tsc@2.2.10)(webpack@5.94.0) + version: 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(eslint@8.57.1)(nx@21.2.3)(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)(verdaccio@6.1.2)(vue-tsc@2.2.10)(webpack@5.94.0) '@nx/webpack': specifier: '>= 16.0.0' - version: 20.1.1(@rspack/core@1.3.9)(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(esbuild@0.24.0)(html-webpack-plugin@5.6.2)(nx@21.2.3)(react-dom@18.3.1)(react@18.3.1)(typescript@5.8.3)(verdaccio@6.1.2)(vue-tsc@2.2.10)(webpack-cli@5.1.4) + version: 20.1.1(@rspack/core@1.3.9)(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(esbuild@0.24.0)(html-webpack-plugin@5.6.2)(nx@21.2.3)(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)(verdaccio@6.1.2)(vue-tsc@2.2.10)(webpack-cli@5.1.4) devDependencies: '@module-federation/utilities': specifier: workspace:* @@ -4064,6 +4189,16 @@ packages: - '@types/react' dev: false + /@asamuzakjp/css-color@3.2.0: + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + dev: true + /@ast-grep/napi-darwin-arm64@0.35.0: resolution: {integrity: sha512-T+MN4Oinc+sXjXCIHzfxDDWY7r2pKgPxM6zVeVlkMTrJV2mJtyKYBIS+CABhRM6kflps2T2I6l4DGaKV/8Ym9w==} engines: {node: '>= 10'} @@ -4270,6 +4405,15 @@ packages: '@babel/highlight': 7.25.7 picocolors: 1.1.1 + /@babel/code-frame@7.26.2: + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + dev: true + /@babel/code-frame@7.27.1: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -7929,6 +8073,35 @@ packages: '@csstools/css-tokenizer': 2.4.1 dev: true + /@csstools/color-helpers@5.1.0: + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} + engines: {node: '>=18'} + dev: true + + /@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4): + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + dev: true + + /@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4): + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + dependencies: + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + dev: true + /@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1): resolution: {integrity: sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==} engines: {node: ^14 || ^16 || >=18} @@ -7938,11 +8111,25 @@ packages: '@csstools/css-tokenizer': 2.4.1 dev: true + /@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4): + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + dependencies: + '@csstools/css-tokenizer': 3.0.4 + dev: true + /@csstools/css-tokenizer@2.4.1: resolution: {integrity: sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==} engines: {node: ^14 || ^16 || >=18} dev: true + /@csstools/css-tokenizer@3.0.4: + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + dev: true + /@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.1.2): resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} engines: {node: ^14 || ^16 || >=18} @@ -9885,6 +10072,9 @@ packages: react: 19.0.0-rc-cd22717c-20241013 dev: false + /@hongzhiyuan/preact@10.24.0-00213bad: + resolution: {integrity: sha512-bHWp4ZDK5ZimcY+bTWw3S3xGiB8eROpZj0RK3FClNIaTOajb0b11CsT3K+pdeakgPgq1jWN3T2e2rfrPm40JsQ==} + /@humanwhocodes/config-array@0.12.3: resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} engines: {node: '>=10.10.0'} @@ -10581,6 +10771,208 @@ packages: lodash: 4.17.21 react: 18.3.1 + /@lynx-js/cache-events-webpack-plugin@0.0.2: + resolution: {integrity: sha512-N/SjplWsDznC+Kqg0iZGJLi08l5/ezWxHGj3X+GdXhmh3EGI37b6r3wPtjkXpalb9KmZcA3j1vUJDTcVI5Weqw==} + engines: {node: '>=18'} + dependencies: + '@lynx-js/webpack-runtime-globals': 0.0.6 + dev: true + + /@lynx-js/chunk-loading-webpack-plugin@0.3.3: + resolution: {integrity: sha512-RS399O/03gpBFbztnsRlwarkMoS2bSVWL8YUnEwy/w9rKewO7CqhX0IUFUZXrzRv0JR17eZJ+YN+14ga+g5FyA==} + engines: {node: '>=18'} + dependencies: + '@lynx-js/webpack-runtime-globals': 0.0.6 + dev: true + + /@lynx-js/css-extract-webpack-plugin@0.6.2(@lynx-js/template-webpack-plugin@0.8.6)(webpack@5.98.0): + resolution: {integrity: sha512-bxnC+snXCl1L29QcZFLBcVTzgSw2BGkMDD4xzJQPJgoGvHmQDEvEpFatQC8ykcMA3284q9HEfVQhICtOBQ7FWQ==} + engines: {node: '>=18'} + peerDependencies: + '@lynx-js/template-webpack-plugin': ^0.8.0 + dependencies: + '@lynx-js/template-webpack-plugin': 0.8.6 + mini-css-extract-plugin: 2.9.4(webpack@5.98.0) + transitivePeerDependencies: + - webpack + dev: true + + /@lynx-js/css-serializer@0.1.3: + resolution: {integrity: sha512-AngMqNr8qvGeejv68MjbVNiuYAjzMm3S/t6lrCbtRn8jwa8gVU0Std2mVCMDeIoWzfjjliyRQMd6AzGydOh8dg==} + dependencies: + css-tree: 3.1.0 + dev: true + + /@lynx-js/preact-devtools@5.0.1-cf9aef5: + resolution: {integrity: sha512-e2OwROwoarzjVl8NxkjBlc6Jt0Ba7dIi9jX1y/mVsGp9y5jI3+5YpgYJYy7pTQYCscu/6omuACKNDk5N86ldkQ==} + dependencies: + errorstacks: 2.4.1 + htm: 3.1.1 + dev: true + + /@lynx-js/qrcode-rsbuild-plugin@0.4.3: + resolution: {integrity: sha512-3WAW4kwNk33UujJjO691TnQyGLL8WrtUVK+p2zzWZOSAUlfhoKZkV6+Seh80II8WJfMlZBAIuT62edQteuew8A==} + engines: {node: '>=18'} + dev: true + + /@lynx-js/react-alias-rsbuild-plugin@0.10.14: + resolution: {integrity: sha512-6gLVMEVN87A3B55gV6qA/K4i6nVstxuWtPxINHlgixF3i+NRZAH5jt1WVV6llws8NPLrAKzM+XvugSC+1yLCCg==} + engines: {node: '>=18'} + dependencies: + unrs-resolver: 1.11.1 + dev: true + + /@lynx-js/react-refresh-webpack-plugin@0.3.4(@lynx-js/react-webpack-plugin@0.7.0): + resolution: {integrity: sha512-R5hpuih6TAzxtKngrrg7i6MQUBeMMQWZWR31UMF9ld98wH1WnRrMeq0ZjkmYZhDhQQA2ViQDaHkOvOrtU4yjhg==} + engines: {node: '>=18'} + peerDependencies: + '@lynx-js/react-webpack-plugin': ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 + dependencies: + '@lynx-js/react-webpack-plugin': 0.7.0(@lynx-js/react@0.112.6)(@lynx-js/template-webpack-plugin@0.8.6) + dev: true + + /@lynx-js/react-rsbuild-plugin@0.10.14(@lynx-js/react@0.112.6)(webpack@5.98.0): + resolution: {integrity: sha512-kq8tRypwcBNwmz/DkJpErfzd+zVbYyD8mYioQV0GGQwfXAuQJ/lxrzXRmdC9He5rHz0kyESuMLa+ZES20lOPIg==} + engines: {node: '>=18'} + peerDependencies: + '@lynx-js/react': ^0.103.0 || ^0.104.0 || ^0.105.0 || ^0.106.0 || ^0.107.0 || ^0.108.0 || ^0.109.0 || ^0.110.0 || ^0.111.0 || ^0.112.0 || ^0.113.0 + peerDependenciesMeta: + '@lynx-js/react': + optional: true + dependencies: + '@lynx-js/css-extract-webpack-plugin': 0.6.2(@lynx-js/template-webpack-plugin@0.8.6)(webpack@5.98.0) + '@lynx-js/react': 0.112.6(@lynx-js/types@3.4.11)(@types/react@18.3.27) + '@lynx-js/react-alias-rsbuild-plugin': 0.10.14 + '@lynx-js/react-refresh-webpack-plugin': 0.3.4(@lynx-js/react-webpack-plugin@0.7.0) + '@lynx-js/react-webpack-plugin': 0.7.0(@lynx-js/react@0.112.6)(@lynx-js/template-webpack-plugin@0.8.6) + '@lynx-js/runtime-wrapper-webpack-plugin': 0.1.3 + '@lynx-js/template-webpack-plugin': 0.8.6 + '@lynx-js/use-sync-external-store': 1.5.0(@lynx-js/react@0.112.6) + background-only: 0.0.1 + transitivePeerDependencies: + - webpack + dev: true + + /@lynx-js/react-webpack-plugin@0.7.0(@lynx-js/react@0.112.6)(@lynx-js/template-webpack-plugin@0.8.6): + resolution: {integrity: sha512-E0++Cqw8INgAGPlil5rM4LWtqY6nNBfOOAcFwGAyzXJc1rTodAb7LU4l908qIdk+lcHQzTUpBM+CyL0MNh9GsA==} + engines: {node: '>=18'} + peerDependencies: + '@lynx-js/react': '*' + '@lynx-js/template-webpack-plugin': ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 || ^0.8.0 + peerDependenciesMeta: + '@lynx-js/react': + optional: true + dependencies: + '@lynx-js/react': 0.112.6(@lynx-js/types@3.4.11)(@types/react@18.3.27) + '@lynx-js/template-webpack-plugin': 0.8.6 + '@lynx-js/webpack-runtime-globals': 0.0.6 + tiny-invariant: 1.3.3 + dev: true + + /@lynx-js/react@0.112.6(@lynx-js/types@3.4.11)(@types/react@18.3.27): + resolution: {integrity: sha512-HBzWidMk8/1EdMi6Ej5f1onT5xt2tG8CL1+scsZ0ArURemcqiWKSSktb4zrvIl2u/Ele0Np3m7fy8Cm9YWXAjA==} + peerDependencies: + '@lynx-js/types': '*' + '@types/react': ^18 + peerDependenciesMeta: + '@lynx-js/types': + optional: true + dependencies: + '@lynx-js/types': 3.4.11 + '@types/react': 18.3.27 + preact: /@hongzhiyuan/preact@10.24.0-00213bad + + /@lynx-js/rspeedy@0.11.9(@rspack/core@1.3.9)(esbuild@0.25.0)(typescript@5.9.3)(webpack@5.98.0): + resolution: {integrity: sha512-4BQWsw9xJPpr6NdqcplpKcvHnSEp4s4mHBC8T7zHue9IKD6XgVc7HQW+3DhH5tU0fOHAKk1ljSkY53s8z1f8Xg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: 5.1.6 - 5.9.x + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@lynx-js/cache-events-webpack-plugin': 0.0.2 + '@lynx-js/chunk-loading-webpack-plugin': 0.3.3 + '@lynx-js/web-rsbuild-server-middleware': 0.18.3 + '@lynx-js/webpack-dev-transport': 0.2.0 + '@lynx-js/websocket': 0.0.4 + '@rsbuild/core': 1.5.17 + '@rsbuild/plugin-css-minimizer': 1.0.3(@rsbuild/core@1.5.17)(esbuild@0.25.0)(webpack@5.98.0) + '@rsdoctor/rspack-plugin': 1.2.3(@rsbuild/core@1.5.17)(@rspack/core@1.3.9)(webpack@5.98.0) + typescript: 5.9.3 + transitivePeerDependencies: + - '@parcel/css' + - '@rspack/core' + - '@swc/css' + - bufferutil + - clean-css + - csso + - debug + - esbuild + - lightningcss + - supports-color + - utf-8-validate + - webpack + dev: true + + /@lynx-js/runtime-wrapper-webpack-plugin@0.1.3: + resolution: {integrity: sha512-F/spRqXWE5XS4h36mN89ulGGXjvs7DEiBFUO/Xf6barstKXbhLM485CwMzXz/Zh07ZIFvnHFtRZprOT0jNrrag==} + engines: {node: '>=18'} + dependencies: + '@lynx-js/webpack-runtime-globals': 0.0.6 + dev: true + + /@lynx-js/tasm@0.0.18: + resolution: {integrity: sha512-6Kl1eUxooceWcSLYnCtys38r9KPIouTam/fU81pzOrH/xIal60+WY47nj+MzDXq94i9jbUusM+IQSZAkeRistw==} + dev: true + + /@lynx-js/template-webpack-plugin@0.8.6: + resolution: {integrity: sha512-VNW24YdZw45/PvaIBB0M9YJjYGK7wG5S0sZY6hZZtdyX9+T8VTdVXOf5ZV91mElz9a6cbfTkQs0CjNKrA0XsTg==} + engines: {node: '>=18'} + dependencies: + '@lynx-js/css-serializer': 0.1.3 + '@lynx-js/tasm': 0.0.18 + '@lynx-js/webpack-runtime-globals': 0.0.6 + '@rspack/lite-tapable': 1.0.1 + css-tree: 3.1.0 + object.groupby: 1.0.3 + dev: true + + /@lynx-js/types@3.4.11: + resolution: {integrity: sha512-k4mu4d2xmMqMIP1e7WGPdzO/k9x9W35b/OE/awalQUbcLlruFatagEOEM6TANK/VuRvEl0eLXQjhBnSwGkgt5w==} + dependencies: + csstype: 3.1.3 + + /@lynx-js/use-sync-external-store@1.5.0(@lynx-js/react@0.112.6): + resolution: {integrity: sha512-iXwLiGUBgfWLozCIh3ICe07x534p9CVlFS3/iGEiFOce58MLX6/PbAvWcE8qEhYaOKiQNe9hqUnS2RbyCqoqGg==} + peerDependencies: + '@lynx-js/react': '*' + dependencies: + '@lynx-js/react': 0.112.6(@lynx-js/types@3.4.11)(@types/react@18.3.27) + dev: true + + /@lynx-js/web-rsbuild-server-middleware@0.18.3: + resolution: {integrity: sha512-LEZg2HnofoSVXiVLwZVL4vAH74RYKL+AIJEeKjL4KfGp6i6chhqmGIIBqJeM6i3vduDp9br9EWP0CCw1yQJsEg==} + dev: true + + /@lynx-js/webpack-dev-transport@0.2.0: + resolution: {integrity: sha512-RSy02FSoMsavEn2wna4khSJwT2uGW4XeLduKH8UDT3aCsBNM/rXndUyG6PbwMcywXCeyb8UofkhaQDtJvNJklA==} + engines: {node: '>=18'} + dev: true + + /@lynx-js/webpack-runtime-globals@0.0.6: + resolution: {integrity: sha512-VzpJc/w7v38/SHaZ+f3WBVBrsgXOG13YX9mRRxRrCgJQa+wZ6waRz7OIjntuTYJk2p7rQ0wKRGzsMgMfRBs/3g==} + engines: {node: '>=18'} + dev: true + + /@lynx-js/websocket@0.0.4: + resolution: {integrity: sha512-yXuMiTALLNvkDz8hG+0KdkBodnyJDvyfr8bdIq6zMP9X8JAoBC/czc1HIhUgYEJ3Zee5F/vGKjNxcoSx2t1E6w==} + engines: {node: '>=18'} + dependencies: + eventemitter3: 5.0.1 + dev: true + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: @@ -10736,7 +11128,7 @@ packages: react: '>=16' dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.11 + '@types/react': 18.3.27 react: 19.1.1 dev: false @@ -10751,6 +11143,17 @@ packages: react: 18.3.1 dev: true + /@mdx-js/react@3.1.0(@types/react@18.3.27)(react@18.3.1): + resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 18.3.27 + react: 18.3.1 + dev: true + /@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.1): resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} peerDependencies: @@ -12664,7 +13067,7 @@ packages: '@module-federation/third-party-dts-extractor': 0.21.2 adm-zip: 0.5.16 ansi-colors: 4.1.3 - axios: 1.12.2 + axios: 1.13.1 chalk: 3.0.0 fs-extra: 9.1.0 isomorphic-ws: 5.0.0(ws@8.18.0) @@ -12683,7 +13086,7 @@ packages: - utf-8-validate dev: true - /@module-federation/dts-plugin@0.6.9(typescript@5.8.3)(vue-tsc@2.2.10): + /@module-federation/dts-plugin@0.6.9(typescript@5.9.3)(vue-tsc@2.2.10): resolution: {integrity: sha512-uiMjjEFcMlOvRtNu8/tt7sJ5y7WTosTVym0V7lMQjgoeX0QesvZqRhgzw5gQcPcFvbk54RwTUI2rS8OEGScCFw==} peerDependencies: typescript: ^4.9.0 || ^5.0.0 @@ -12706,7 +13109,7 @@ packages: log4js: 6.9.1 node-schedule: 2.1.1 rambda: 9.3.0 - typescript: 5.8.3 + typescript: 5.9.3 vue-tsc: 2.2.10(typescript@5.8.3) ws: 8.17.1 transitivePeerDependencies: @@ -12800,7 +13203,7 @@ packages: - utf-8-validate dev: true - /@module-federation/enhanced@0.6.9(react-dom@18.3.1)(react@18.3.1)(typescript@5.8.3)(vue-tsc@2.2.10)(webpack@5.94.0): + /@module-federation/enhanced@0.6.9(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)(vue-tsc@2.2.10)(webpack@5.94.0): resolution: {integrity: sha512-4bEGQSE6zJ2FMdBTOrRiVjNNzWhUqzWEJGWbsr0bpLNAl4BVx2ah5MyKTrSYqaW//BRA2qc8rmrIreaIawr3kQ==} peerDependencies: typescript: ^4.9.0 || ^5.0.0 @@ -12816,14 +13219,14 @@ packages: dependencies: '@module-federation/bridge-react-webpack-plugin': 0.6.9 '@module-federation/data-prefetch': 0.6.9(react-dom@18.3.1)(react@18.3.1) - '@module-federation/dts-plugin': 0.6.9(typescript@5.8.3)(vue-tsc@2.2.10) + '@module-federation/dts-plugin': 0.6.9(typescript@5.9.3)(vue-tsc@2.2.10) '@module-federation/managers': 0.6.9 - '@module-federation/manifest': 0.6.9(typescript@5.8.3)(vue-tsc@2.2.10) - '@module-federation/rspack': 0.6.9(typescript@5.8.3)(vue-tsc@2.2.10) + '@module-federation/manifest': 0.6.9(typescript@5.9.3)(vue-tsc@2.2.10) + '@module-federation/rspack': 0.6.9(typescript@5.9.3)(vue-tsc@2.2.10) '@module-federation/runtime-tools': 0.6.9 '@module-federation/sdk': 0.6.9 btoa: 1.2.1 - typescript: 5.8.3 + typescript: 5.9.3 upath: 2.0.1 vue-tsc: 2.2.10(typescript@5.8.3) webpack: 5.94.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) @@ -12836,7 +13239,7 @@ packages: - utf-8-validate dev: false - /@module-federation/enhanced@0.6.9(react-dom@18.3.1)(react@18.3.1)(typescript@5.8.3)(vue-tsc@2.2.10)(webpack@5.98.0): + /@module-federation/enhanced@0.6.9(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)(vue-tsc@2.2.10)(webpack@5.98.0): resolution: {integrity: sha512-4bEGQSE6zJ2FMdBTOrRiVjNNzWhUqzWEJGWbsr0bpLNAl4BVx2ah5MyKTrSYqaW//BRA2qc8rmrIreaIawr3kQ==} peerDependencies: typescript: ^4.9.0 || ^5.0.0 @@ -12852,14 +13255,14 @@ packages: dependencies: '@module-federation/bridge-react-webpack-plugin': 0.6.9 '@module-federation/data-prefetch': 0.6.9(react-dom@18.3.1)(react@18.3.1) - '@module-federation/dts-plugin': 0.6.9(typescript@5.8.3)(vue-tsc@2.2.10) + '@module-federation/dts-plugin': 0.6.9(typescript@5.9.3)(vue-tsc@2.2.10) '@module-federation/managers': 0.6.9 - '@module-federation/manifest': 0.6.9(typescript@5.8.3)(vue-tsc@2.2.10) - '@module-federation/rspack': 0.6.9(typescript@5.8.3)(vue-tsc@2.2.10) + '@module-federation/manifest': 0.6.9(typescript@5.9.3)(vue-tsc@2.2.10) + '@module-federation/rspack': 0.6.9(typescript@5.9.3)(vue-tsc@2.2.10) '@module-federation/runtime-tools': 0.6.9 '@module-federation/sdk': 0.6.9 btoa: 1.2.1 - typescript: 5.8.3 + typescript: 5.9.3 upath: 2.0.1 vue-tsc: 2.2.10(typescript@5.8.3) webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) @@ -12974,10 +13377,10 @@ packages: - vue-tsc dev: true - /@module-federation/manifest@0.6.9(typescript@5.8.3)(vue-tsc@2.2.10): + /@module-federation/manifest@0.6.9(typescript@5.9.3)(vue-tsc@2.2.10): resolution: {integrity: sha512-JMSPDpHODXOmTyJes8GJ950mbN7tqjQzqgFVUubDOVFOmlC0/MYaRzRPmkApz6d8nUfMbLZYzxNSaBHx8GP0/Q==} dependencies: - '@module-federation/dts-plugin': 0.6.9(typescript@5.8.3)(vue-tsc@2.2.10) + '@module-federation/dts-plugin': 0.6.9(typescript@5.9.3)(vue-tsc@2.2.10) '@module-federation/managers': 0.6.9 '@module-federation/sdk': 0.6.9 chalk: 3.0.0 @@ -13086,7 +13489,7 @@ packages: - utf-8-validate dev: true - /@module-federation/rspack@0.6.9(typescript@5.8.3)(vue-tsc@2.2.10): + /@module-federation/rspack@0.6.9(typescript@5.9.3)(vue-tsc@2.2.10): resolution: {integrity: sha512-N5yBqN8ijSRZKd0kbIvpZNil0y8rFa8cREKI1QsW1+EYUKwOUBFwF55tFdTmNCKmpZqSEBtcNjRGZXknsYPQxg==} peerDependencies: typescript: ^4.9.0 || ^5.0.0 @@ -13098,12 +13501,12 @@ packages: optional: true dependencies: '@module-federation/bridge-react-webpack-plugin': 0.6.9 - '@module-federation/dts-plugin': 0.6.9(typescript@5.8.3)(vue-tsc@2.2.10) + '@module-federation/dts-plugin': 0.6.9(typescript@5.9.3)(vue-tsc@2.2.10) '@module-federation/managers': 0.6.9 - '@module-federation/manifest': 0.6.9(typescript@5.8.3)(vue-tsc@2.2.10) + '@module-federation/manifest': 0.6.9(typescript@5.9.3)(vue-tsc@2.2.10) '@module-federation/runtime-tools': 0.6.9 '@module-federation/sdk': 0.6.9 - typescript: 5.8.3 + typescript: 5.9.3 vue-tsc: 2.2.10(typescript@5.8.3) transitivePeerDependencies: - bufferutil @@ -14350,7 +14753,7 @@ packages: - typescript dev: false - /@nx/js@20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.8.3)(verdaccio@6.1.2): + /@nx/js@20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.9.3)(verdaccio@6.1.2): resolution: {integrity: sha512-hx9BzdEzJhhv3eK4i/0V0ovfZNtRFjbcMaYLoP5Vpd80jnGvOXAAJKc1LAXUsS8LGOMFE1BgbbKTMQDMoCSCbg==} peerDependencies: verdaccio: ^5.0.4 @@ -14385,7 +14788,7 @@ packages: ora: 5.3.0 semver: 7.6.3 source-map-support: 0.5.19 - ts-node: 10.9.1(@swc/core@1.7.26)(@types/node@20.12.14)(typescript@5.8.3) + ts-node: 10.9.1(@swc/core@1.7.26)(@types/node@20.12.14)(typescript@5.9.3) tsconfig-paths: 4.2.0 tslib: 2.8.1 verdaccio: 6.1.2(encoding@0.1.13)(typanion@3.14.0) @@ -14725,16 +15128,16 @@ packages: requiresBuild: true optional: true - /@nx/react@20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(eslint@8.57.1)(nx@21.2.3)(react-dom@18.3.1)(react@18.3.1)(typescript@5.8.3)(verdaccio@6.1.2)(vue-tsc@2.2.10)(webpack@5.94.0): + /@nx/react@20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(eslint@8.57.1)(nx@21.2.3)(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)(verdaccio@6.1.2)(vue-tsc@2.2.10)(webpack@5.94.0): resolution: {integrity: sha512-1oXMAgedERHn8LV5FQ4IE3PxmqZLq0fkJXiDjUmL6Lv0alJVDtUWPa+Fr/KIfx9OOw1oGu3ZPPWYGipcSwGeIQ==} dependencies: - '@module-federation/enhanced': 0.6.9(react-dom@18.3.1)(react@18.3.1)(typescript@5.8.3)(vue-tsc@2.2.10)(webpack@5.94.0) + '@module-federation/enhanced': 0.6.9(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)(vue-tsc@2.2.10)(webpack@5.94.0) '@nx/devkit': 20.1.1(nx@21.2.3) '@nx/eslint': 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(eslint@8.57.1)(nx@21.2.3)(verdaccio@6.1.2) - '@nx/js': 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.8.3)(verdaccio@6.1.2) - '@nx/web': 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.8.3)(verdaccio@6.1.2) - '@phenomnomnominal/tsquery': 5.0.1(typescript@5.8.3) - '@svgr/webpack': 8.1.0(typescript@5.8.3) + '@nx/js': 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.9.3)(verdaccio@6.1.2) + '@nx/web': 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.9.3)(verdaccio@6.1.2) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.9.3) + '@svgr/webpack': 8.1.0(typescript@5.9.3) express: 4.21.1 file-loader: 6.2.0(webpack@5.94.0) http-proxy-middleware: 3.0.3 @@ -14957,11 +15360,11 @@ packages: - verdaccio dev: true - /@nx/web@20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.8.3)(verdaccio@6.1.2): + /@nx/web@20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.9.3)(verdaccio@6.1.2): resolution: {integrity: sha512-E/vWj9gR10SOc7VL1+RnlE4krBWa9mTMo0jkXM3XCcASsFmz2Guv+OSuCTKYiKsD/xAKlMSC8+04IvUEmXbcdg==} dependencies: '@nx/devkit': 20.1.1(nx@21.2.3) - '@nx/js': 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.8.3)(verdaccio@6.1.2) + '@nx/js': 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.9.3)(verdaccio@6.1.2) detect-port: 1.6.1 http-server: 14.1.1 picocolors: 1.1.1 @@ -14998,15 +15401,15 @@ packages: - verdaccio dev: true - /@nx/webpack@20.1.1(@rspack/core@1.3.9)(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(esbuild@0.24.0)(html-webpack-plugin@5.6.2)(nx@21.2.3)(react-dom@18.3.1)(react@18.3.1)(typescript@5.8.3)(verdaccio@6.1.2)(vue-tsc@2.2.10)(webpack-cli@5.1.4): + /@nx/webpack@20.1.1(@rspack/core@1.3.9)(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(esbuild@0.24.0)(html-webpack-plugin@5.6.2)(nx@21.2.3)(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)(verdaccio@6.1.2)(vue-tsc@2.2.10)(webpack-cli@5.1.4): resolution: {integrity: sha512-ucxJn9q/KboQ4ywtODmOYD9ac9FczdLd/1WDAPctxERuq71bfkwGmZGUzH3fDqolinek0kAIhn6ci3ww2/Qs1A==} dependencies: '@babel/core': 7.28.0 - '@module-federation/enhanced': 0.6.9(react-dom@18.3.1)(react@18.3.1)(typescript@5.8.3)(vue-tsc@2.2.10)(webpack@5.98.0) + '@module-federation/enhanced': 0.6.9(react-dom@18.3.1)(react@18.3.1)(typescript@5.9.3)(vue-tsc@2.2.10)(webpack@5.98.0) '@module-federation/sdk': 0.6.11 '@nx/devkit': 20.1.1(nx@21.2.3) - '@nx/js': 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.8.3)(verdaccio@6.1.2) - '@phenomnomnominal/tsquery': 5.0.1(typescript@5.8.3) + '@nx/js': 20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@21.2.3)(typescript@5.9.3)(verdaccio@6.1.2) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.9.3) ajv: 8.17.1 autoprefixer: 10.4.20(postcss@8.4.47) babel-loader: 9.2.1(@babel/core@7.28.0)(webpack@5.98.0) @@ -15015,7 +15418,7 @@ packages: css-loader: 6.11.0(@rspack/core@1.3.9)(webpack@5.98.0) css-minimizer-webpack-plugin: 5.0.1(esbuild@0.24.0)(webpack@5.98.0) express: 4.21.1 - fork-ts-checker-webpack-plugin: 7.2.13(typescript@5.8.3)(webpack@5.98.0) + fork-ts-checker-webpack-plugin: 7.2.13(typescript@5.9.3)(webpack@5.98.0) http-proxy-middleware: 3.0.3 less: 4.1.3 less-loader: 11.1.0(less@4.1.3)(webpack@5.98.0) @@ -15035,7 +15438,7 @@ packages: stylus: 0.64.0 stylus-loader: 7.1.3(stylus@0.64.0)(webpack@5.98.0) terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.24.0)(webpack@5.98.0) - ts-loader: 9.5.1(typescript@5.8.3)(webpack@5.98.0) + ts-loader: 9.5.1(typescript@5.9.3)(webpack@5.98.0) tsconfig-paths-webpack-plugin: 4.0.0 tslib: 2.8.1 webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) @@ -15617,6 +16020,16 @@ packages: dependencies: esquery: 1.6.0 typescript: 5.8.3 + dev: true + + /@phenomnomnominal/tsquery@5.0.1(typescript@5.9.3): + resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} + peerDependencies: + typescript: ^3 || ^4 || ^5 + dependencies: + esquery: 1.6.0 + typescript: 5.9.3 + dev: false /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -18322,7 +18735,6 @@ packages: '@swc/helpers': 0.5.17 core-js: 3.46.0 jiti: 2.6.1 - dev: false /@rsbuild/core@1.6.0-beta.1: resolution: {integrity: sha512-UjQnvXDW9m/hS4DP66ubGIMVjK2PzYx8tzgiinrO0kjNCr9i8KWuJSJGUWyczFMpSsXxp20LnuTxtx7kiGiYdA==} @@ -18388,7 +18800,7 @@ packages: '@rsbuild/core': 1.4.3 '@types/babel__core': 7.20.5 deepmerge: 4.3.1 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 upath: 2.0.1 transitivePeerDependencies: - supports-color @@ -18406,7 +18818,7 @@ packages: '@rsbuild/core': 1.4.4 '@types/babel__core': 7.20.5 deepmerge: 4.3.1 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 upath: 2.0.1 transitivePeerDependencies: - supports-color @@ -18444,6 +18856,22 @@ packages: source-map: 0.7.6 dev: true + /@rsbuild/plugin-check-syntax@1.3.0(@rsbuild/core@1.5.17): + resolution: {integrity: sha512-lHrd6hToPFVOGWr0U/Ox7pudHWdhPSFsr2riWpjNRlUuwiXdU2SYMROaVUCrLJvYFzJyEMsFOi1w59rBQCG2HQ==} + peerDependencies: + '@rsbuild/core': 1.x + peerDependenciesMeta: + '@rsbuild/core': + optional: true + dependencies: + '@rsbuild/core': 1.5.17 + acorn: 8.15.0 + browserslist-to-es-version: 1.0.0 + htmlparser2: 10.0.0 + picocolors: 1.1.1 + source-map: 0.7.6 + dev: true + /@rsbuild/plugin-css-minimizer@1.0.2(@rsbuild/core@1.4.3)(esbuild@0.25.5)(webpack@5.99.9): resolution: {integrity: sha512-x695i5PHWI9uV9VA1Dun66G0DeJMgxbt3wEk4eHZMz9pi6n8Dah6BHG2WcloYAEi7yVoUcPIGXDdag27s2B+4A==} peerDependencies: @@ -18454,7 +18882,7 @@ packages: dependencies: '@rsbuild/core': 1.4.3 css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.5)(webpack@5.99.9) - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 transitivePeerDependencies: - '@parcel/css' - '@swc/css' @@ -18475,7 +18903,7 @@ packages: dependencies: '@rsbuild/core': 1.4.4 css-minimizer-webpack-plugin: 5.0.1(esbuild@0.18.20)(webpack@5.99.9) - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 transitivePeerDependencies: - '@parcel/css' - '@swc/css' @@ -18496,7 +18924,28 @@ packages: dependencies: '@rsbuild/core': 1.4.4 css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.5)(webpack@5.99.9) - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/css' + - clean-css + - csso + - esbuild + - lightningcss + - webpack + dev: true + + /@rsbuild/plugin-css-minimizer@1.0.3(@rsbuild/core@1.5.17)(esbuild@0.25.0)(webpack@5.98.0): + resolution: {integrity: sha512-z0UYQGQ42KAODA9cY3iGzd2E5ra0qNEGIaqWxwgQDmeuWsaQr21xOPubndZMUsuystOEmQCyN5eT9b47Gyf4lA==} + peerDependencies: + '@rsbuild/core': 1.x + peerDependenciesMeta: + '@rsbuild/core': + optional: true + dependencies: + '@rsbuild/core': 1.5.17 + css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.0)(webpack@5.98.0) + reduce-configs: 1.1.1 transitivePeerDependencies: - '@parcel/css' - '@swc/css' @@ -18514,7 +18963,7 @@ packages: dependencies: '@rsbuild/core': 1.4.3 deepmerge: 4.3.1 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 dev: true /@rsbuild/plugin-less@1.2.5(@rsbuild/core@1.4.4): @@ -18524,7 +18973,7 @@ packages: dependencies: '@rsbuild/core': 1.4.4 deepmerge: 4.3.1 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 dev: true /@rsbuild/plugin-node-polyfill@1.3.0(@rsbuild/core@1.4.3): @@ -18607,7 +19056,7 @@ packages: '@types/pug': 2.0.10 lodash: 4.17.21 pug: 3.0.3 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 dev: true /@rsbuild/plugin-pug@1.3.1(@rsbuild/core@1.4.4): @@ -18622,7 +19071,7 @@ packages: '@types/pug': 2.0.10 lodash: 4.17.21 pug: 3.0.3 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 dev: true /@rsbuild/plugin-react@1.0.6(@rsbuild/core@1.3.21): @@ -18789,7 +19238,7 @@ packages: deepmerge: 4.3.1 loader-utils: 2.0.4 postcss: 8.5.4 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 sass-embedded: 1.89.0 dev: true @@ -18802,7 +19251,7 @@ packages: deepmerge: 4.3.1 loader-utils: 2.0.4 postcss: 8.5.6 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 sass-embedded: 1.89.2 dev: true @@ -18844,7 +19293,7 @@ packages: dependencies: '@rsbuild/core': 1.4.3 '@swc/plugin-styled-components': 8.0.2 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 dev: true /@rsbuild/plugin-styled-components@1.4.0(@rsbuild/core@1.4.4): @@ -18857,7 +19306,7 @@ packages: dependencies: '@rsbuild/core': 1.4.4 '@swc/plugin-styled-components': 8.0.2 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 dev: true /@rsbuild/plugin-svgr@1.2.0(@rsbuild/core@1.4.3)(typescript@5.0.4): @@ -18938,25 +19387,25 @@ packages: toml: 3.0.0 dev: true - /@rsbuild/plugin-type-check@1.2.2(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(typescript@5.8.3): - resolution: {integrity: sha512-7hRPT9Vi5uXLkvjy9gGHttpCvK7afGXS7bukyf0XCYAWj6XMPJvUQpXBatVVdNdNfeYt0ffHo5GqiPz/eeCorQ==} + /@rsbuild/plugin-type-check@1.2.3(@rsbuild/core@1.4.3)(@rspack/core@1.3.9)(typescript@5.0.4): + resolution: {integrity: sha512-1yILSPgQFQCtY82f7CSbicIS/BqquoHgnDdAgPeYF3/k/RIwSAnclh0R2wXn+2EBormpFK82wz/TXuXl+k+evw==} peerDependencies: '@rsbuild/core': 1.x peerDependenciesMeta: '@rsbuild/core': optional: true dependencies: - '@rsbuild/core': 1.3.21 + '@rsbuild/core': 1.4.3 deepmerge: 4.3.1 json5: 2.2.3 - reduce-configs: 1.1.0 - ts-checker-rspack-plugin: 1.1.3(@rspack/core@1.3.9)(typescript@5.8.3) + reduce-configs: 1.1.1 + ts-checker-rspack-plugin: 1.1.6(@rspack/core@1.3.9)(typescript@5.0.4) transitivePeerDependencies: - '@rspack/core' - typescript dev: true - /@rsbuild/plugin-type-check@1.2.3(@rsbuild/core@1.4.3)(@rspack/core@1.3.9)(typescript@5.0.4): + /@rsbuild/plugin-type-check@1.2.3(@rsbuild/core@1.4.4)(@rspack/core@1.3.9)(typescript@5.0.4): resolution: {integrity: sha512-1yILSPgQFQCtY82f7CSbicIS/BqquoHgnDdAgPeYF3/k/RIwSAnclh0R2wXn+2EBormpFK82wz/TXuXl+k+evw==} peerDependencies: '@rsbuild/core': 1.x @@ -18964,17 +19413,17 @@ packages: '@rsbuild/core': optional: true dependencies: - '@rsbuild/core': 1.4.3 + '@rsbuild/core': 1.4.4 deepmerge: 4.3.1 json5: 2.2.3 - reduce-configs: 1.1.0 - ts-checker-rspack-plugin: 1.1.4(@rspack/core@1.3.9)(typescript@5.0.4) + reduce-configs: 1.1.1 + ts-checker-rspack-plugin: 1.1.6(@rspack/core@1.3.9)(typescript@5.0.4) transitivePeerDependencies: - '@rspack/core' - typescript dev: true - /@rsbuild/plugin-type-check@1.2.3(@rsbuild/core@1.4.4)(@rspack/core@1.3.9)(typescript@5.0.4): + /@rsbuild/plugin-type-check@1.2.3(@rsbuild/core@1.4.4)(@rspack/core@1.3.9)(typescript@5.5.2): resolution: {integrity: sha512-1yILSPgQFQCtY82f7CSbicIS/BqquoHgnDdAgPeYF3/k/RIwSAnclh0R2wXn+2EBormpFK82wz/TXuXl+k+evw==} peerDependencies: '@rsbuild/core': 1.x @@ -18985,32 +19434,32 @@ packages: '@rsbuild/core': 1.4.4 deepmerge: 4.3.1 json5: 2.2.3 - reduce-configs: 1.1.0 - ts-checker-rspack-plugin: 1.1.4(@rspack/core@1.3.9)(typescript@5.0.4) + reduce-configs: 1.1.1 + ts-checker-rspack-plugin: 1.1.6(@rspack/core@1.3.9)(typescript@5.5.2) transitivePeerDependencies: - '@rspack/core' - typescript dev: true - /@rsbuild/plugin-type-check@1.2.3(@rsbuild/core@1.4.4)(@rspack/core@1.3.9)(typescript@5.5.2): - resolution: {integrity: sha512-1yILSPgQFQCtY82f7CSbicIS/BqquoHgnDdAgPeYF3/k/RIwSAnclh0R2wXn+2EBormpFK82wz/TXuXl+k+evw==} + /@rsbuild/plugin-type-check@1.2.4(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(typescript@5.9.3): + resolution: {integrity: sha512-0m4TRp9mTgkQ61UWnqE6cOLj/tBltXBWqLYHh8DDz+mk9qabJQ6ilTl8vQbSrg/jYH/3AksQZjlpZMEplUrE2Q==} peerDependencies: '@rsbuild/core': 1.x peerDependenciesMeta: '@rsbuild/core': optional: true dependencies: - '@rsbuild/core': 1.4.4 + '@rsbuild/core': 1.3.21 deepmerge: 4.3.1 json5: 2.2.3 - reduce-configs: 1.1.0 - ts-checker-rspack-plugin: 1.1.4(@rspack/core@1.3.9)(typescript@5.5.2) + reduce-configs: 1.1.1 + ts-checker-rspack-plugin: 1.1.6(@rspack/core@1.3.9)(typescript@5.9.3) transitivePeerDependencies: - '@rspack/core' - typescript dev: true - /@rsbuild/plugin-type-check@1.2.4(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(typescript@5.8.3): + /@rsbuild/plugin-type-check@1.2.4(@rsbuild/core@1.4.12)(@rspack/core@1.3.9)(typescript@5.9.3): resolution: {integrity: sha512-0m4TRp9mTgkQ61UWnqE6cOLj/tBltXBWqLYHh8DDz+mk9qabJQ6ilTl8vQbSrg/jYH/3AksQZjlpZMEplUrE2Q==} peerDependencies: '@rsbuild/core': 1.x @@ -19018,11 +19467,11 @@ packages: '@rsbuild/core': optional: true dependencies: - '@rsbuild/core': 1.3.21 + '@rsbuild/core': 1.4.12 deepmerge: 4.3.1 json5: 2.2.3 reduce-configs: 1.1.1 - ts-checker-rspack-plugin: 1.1.6(@rspack/core@1.3.9)(typescript@5.8.3) + ts-checker-rspack-plugin: 1.1.6(@rspack/core@1.3.9)(typescript@5.9.3) transitivePeerDependencies: - '@rspack/core' - typescript @@ -19112,7 +19561,7 @@ packages: html-webpack-plugin: 5.6.3(@rspack/core@1.3.9)(webpack@5.99.9) mini-css-extract-plugin: 2.9.2(webpack@5.99.9) picocolors: 1.1.1 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 tsconfig-paths-webpack-plugin: 4.2.0 webpack: 5.99.9(@swc/core@1.11.31)(esbuild@0.25.5)(webpack-cli@5.1.4) transitivePeerDependencies: @@ -19133,7 +19582,7 @@ packages: html-webpack-plugin: 5.6.3(@rspack/core@1.3.9)(webpack@5.99.9) mini-css-extract-plugin: 2.9.2(webpack@5.99.9) picocolors: 1.1.1 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 tsconfig-paths-webpack-plugin: 4.2.0 webpack: 5.99.9(@swc/core@1.11.31)(esbuild@0.18.20)(webpack-cli@5.1.4) transitivePeerDependencies: @@ -19154,7 +19603,7 @@ packages: html-webpack-plugin: 5.6.3(@rspack/core@1.3.9)(webpack@5.99.9) mini-css-extract-plugin: 2.9.2(webpack@5.99.9) picocolors: 1.1.1 - reduce-configs: 1.1.0 + reduce-configs: 1.1.1 tsconfig-paths-webpack-plugin: 4.2.0 webpack: 5.99.9(@swc/core@1.11.31)(esbuild@0.25.5)(webpack-cli@5.1.4) transitivePeerDependencies: @@ -19165,6 +19614,145 @@ packages: - webpack-cli dev: true + /@rsdoctor/client@1.2.3: + resolution: {integrity: sha512-KzfRONtUFMOhgyd9Kur9C/eqh+qPE0UDQEwp/uCMIQHwmompGgChuGniVENd2mGgkZX4MDHubFSvjoeI7j4UBg==} + dev: true + + /@rsdoctor/core@1.2.3(@rsbuild/core@1.5.17)(@rspack/core@1.3.9)(webpack@5.98.0): + resolution: {integrity: sha512-7o+SoN0JVwvxi0LSToA9G5PvSDag9ri0pQ/krlsJdkg2aVCRSR1xVjS8pzaKR9F+Q5Mnj6RixYOhIkWqWoMWFw==} + dependencies: + '@rsbuild/plugin-check-syntax': 1.3.0(@rsbuild/core@1.5.17) + '@rsdoctor/graph': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@rsdoctor/sdk': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@rsdoctor/types': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@rsdoctor/utils': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + axios: 1.13.1 + browserslist-load-config: 1.0.1 + enhanced-resolve: 5.12.0 + filesize: 10.1.6 + fs-extra: 11.3.0 + lodash: 4.17.21 + path-browserify: 1.0.1 + semver: 7.7.3 + source-map: 0.7.6 + transitivePeerDependencies: + - '@rsbuild/core' + - '@rspack/core' + - bufferutil + - debug + - supports-color + - utf-8-validate + - webpack + dev: true + + /@rsdoctor/graph@1.2.3(@rspack/core@1.3.9)(webpack@5.98.0): + resolution: {integrity: sha512-HYnUGnpWfkvrwex0VvfP4G5BTe/18bc03GHTM4iBwRuVkgi2PN1OkU/iGFSS3AbctnHLNQMC2NFuV8+U1wzynw==} + dependencies: + '@rsdoctor/types': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@rsdoctor/utils': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + lodash.unionby: 4.8.0 + source-map: 0.7.6 + transitivePeerDependencies: + - '@rspack/core' + - supports-color + - webpack + dev: true + + /@rsdoctor/rspack-plugin@1.2.3(@rsbuild/core@1.5.17)(@rspack/core@1.3.9)(webpack@5.98.0): + resolution: {integrity: sha512-IW0dyCmEC9Sxz7pHpUPDIjUTpFdxPocIGrcw04J5CgD5hYbyDrJ6ubDRAY4W6jm4CGvr0524s4xfW2pfsKY1Ew==} + peerDependencies: + '@rspack/core': '*' + peerDependenciesMeta: + '@rspack/core': + optional: true + dependencies: + '@rsdoctor/core': 1.2.3(@rsbuild/core@1.5.17)(@rspack/core@1.3.9)(webpack@5.98.0) + '@rsdoctor/graph': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@rsdoctor/sdk': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@rsdoctor/types': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@rsdoctor/utils': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@rspack/core': 1.3.9(@swc/helpers@0.5.13) + lodash: 4.17.21 + transitivePeerDependencies: + - '@rsbuild/core' + - bufferutil + - debug + - supports-color + - utf-8-validate + - webpack + dev: true + + /@rsdoctor/sdk@1.2.3(@rspack/core@1.3.9)(webpack@5.98.0): + resolution: {integrity: sha512-kd6JQKNihmfwKrem2LhGih5MV6zb/RBNqnkuu/BDTuOClaKzq9JEbQlfYstGDv1yF3ECR/OEOCKNGNbnCbNtmg==} + dependencies: + '@rsdoctor/client': 1.2.3 + '@rsdoctor/graph': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@rsdoctor/types': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@rsdoctor/utils': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@types/fs-extra': 11.0.4 + body-parser: 1.20.3 + cors: 2.8.5 + dayjs: 1.11.13 + fs-extra: 11.3.0 + json-cycle: 1.5.0 + open: 8.4.2 + sirv: 2.0.4 + socket.io: 4.8.1 + source-map: 0.7.6 + tapable: 2.2.2 + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - supports-color + - utf-8-validate + - webpack + dev: true + + /@rsdoctor/types@1.2.3(@rspack/core@1.3.9)(webpack@5.98.0): + resolution: {integrity: sha512-UMh4zdyKs3K4Jh7YQvHiaXKY9c7gFwCUcRaPtpB4XjlzE3lML21d0SBAXkGduwz9AmhuTRQCqaLKA2NNuDUivQ==} + peerDependencies: + '@rspack/core': '*' + webpack: 5.x + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + '@rspack/core': 1.3.9(@swc/helpers@0.5.13) + '@types/connect': 3.4.38 + '@types/estree': 1.0.5 + '@types/tapable': 2.2.7 + source-map: 0.7.6 + webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.25.0)(webpack-cli@5.1.4) + dev: true + + /@rsdoctor/utils@1.2.3(@rspack/core@1.3.9)(webpack@5.98.0): + resolution: {integrity: sha512-HawWrcqXeqdhj4dKhdjJg4BXvstcQauYSRx0cnYH78f7z9PW60Smr6vYpByXC87rK3JKpa6CNiZi+qhI5yTAog==} + dependencies: + '@babel/code-frame': 7.26.2 + '@rsdoctor/types': 1.2.3(@rspack/core@1.3.9)(webpack@5.98.0) + '@types/estree': 1.0.5 + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn-walk: 8.3.4 + connect: 3.7.0 + deep-eql: 4.1.4 + envinfo: 7.14.0 + filesize: 10.1.6 + fs-extra: 11.3.0 + get-port: 5.1.1 + json-stream-stringify: 3.0.1 + lines-and-columns: 2.0.4 + picocolors: 1.1.1 + rslog: 1.3.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - '@rspack/core' + - supports-color + - webpack + dev: true + /@rslib/core@0.10.6(typescript@5.8.3): resolution: {integrity: sha512-7OLdmmQbY116gNAAsY9baCid9REr+z11qfAzwVVFw+Q8avCE6YqpcBLfrBXlfmpBikfshDmHH8EpRrQwz8gZJQ==} engines: {node: '>=16.7.0'} @@ -19222,6 +19810,25 @@ packages: typescript: 5.8.3 dev: true + /@rslib/core@0.9.0(typescript@5.9.3): + resolution: {integrity: sha512-nWpST4+oPPTi/P4EfYqtmPLAu7AJxDevt8/+D3aULHwYkjZCVn5l3v1/tcvUJImEWsKnquknu3QIjUBNDwLzwg==} + engines: {node: '>=16.7.0'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7 + typescript: ^5 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + typescript: + optional: true + dependencies: + '@rsbuild/core': 1.3.21 + rsbuild-plugin-dts: 0.9.0(@rsbuild/core@1.3.21)(typescript@5.9.3) + tinyglobby: 0.2.14 + typescript: 5.9.3 + dev: true + /@rslib/core@0.9.2(typescript@5.8.3): resolution: {integrity: sha512-C5mZroofHKJiHl7V/b2hIp9WnFXRrKFnfOP/Aw+7DcxgH/ur593MypG3Zg5mVcaJv6OG36oNbvUtJ6+Wk5yqog==} engines: {node: '>=16.7.0'} @@ -21281,6 +21888,10 @@ packages: dependencies: '@sinonjs/commons': 3.0.1 + /@socket.io/component-emitter@3.1.2: + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + dev: true + /@storybook/addon-docs@8.6.14(@types/react@18.3.11)(storybook@8.4.2): resolution: {integrity: sha512-Obpd0OhAF99JyU5pp5ci17YmpcQtMNgqW2pTXV8jAiiipWpwO++hNDeQmLmlSXB399XjtRDOcDVkoc7rc6JzdQ==} peerDependencies: @@ -21298,12 +21909,12 @@ packages: - '@types/react' dev: true - /@storybook/addon-docs@9.0.17(@types/react@18.3.11)(storybook@9.0.9): + /@storybook/addon-docs@9.0.17(@types/react@18.3.27)(storybook@9.0.9): resolution: {integrity: sha512-LOX/kKgQGnyulrqZHsvf77+ZoH/nSUaplGr5hvZglW/U6ak6fO9seJyXAzVKEnC6p+F8n02kFBZbi3s+znQhSg==} peerDependencies: storybook: ^9.0.17 dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.3.11)(react@18.3.1) + '@mdx-js/react': 3.1.0(@types/react@18.3.27)(react@18.3.1) '@storybook/csf-plugin': 9.0.17(storybook@9.0.9) '@storybook/icons': 1.4.0(react-dom@18.3.1)(react@18.3.1) '@storybook/react-dom-shim': 9.0.17(react-dom@18.3.1)(react@18.3.1)(storybook@9.0.9) @@ -21979,7 +22590,7 @@ packages: resolution: {integrity: sha512-cxYlZ5uKbCYMHoFpgleZqqGWEnqHrk5m5fT8bYSsDsdQ+X5wPcwI/V+v8dxYAdQcMphZVIlTjo6Dno9WG8qmVA==} dev: true - /@storybook/react-docgen-typescript-plugin@1.0.1(typescript@5.8.3)(webpack@5.98.0): + /@storybook/react-docgen-typescript-plugin@1.0.1(typescript@5.9.3)(webpack@5.98.0): resolution: {integrity: sha512-dqbHa+5gaxaklFCuV1WTvljVPTo3QIJgpW4Ln+QeME7osPZUnUhjN2/djvo+sxrWUrTTuqX5jkn291aDngu9Tw==} peerDependencies: typescript: '>= 3.x' @@ -21990,9 +22601,9 @@ packages: find-cache-dir: 3.3.2 flat-cache: 3.2.0 micromatch: 4.0.8 - react-docgen-typescript: 2.2.2(typescript@5.8.3) + react-docgen-typescript: 2.2.2(typescript@5.9.3) tslib: 2.8.1 - typescript: 5.8.3 + typescript: 5.9.3 webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) transitivePeerDependencies: - supports-color @@ -22146,7 +22757,7 @@ packages: - supports-color dev: true - /@storybook/react@8.6.12(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.2)(typescript@5.8.3): + /@storybook/react@8.6.12(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.2)(typescript@5.9.3): resolution: {integrity: sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==} engines: {node: '>=18.0.0'} peerDependencies: @@ -22170,7 +22781,7 @@ packages: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) storybook: 8.4.2(prettier@3.3.3) - typescript: 5.8.3 + typescript: 5.9.3 dev: true /@storybook/react@9.0.9(react-dom@18.3.1)(react@18.3.1)(storybook@9.0.9)(typescript@5.8.3): @@ -22368,6 +22979,20 @@ packages: transitivePeerDependencies: - supports-color - typescript + dev: true + + /@svgr/core@8.1.0(typescript@5.9.3): + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} + dependencies: + '@babel/core': 7.28.0 + '@svgr/babel-preset': 8.1.0(@babel/core@7.28.0) + camelcase: 6.3.0 + cosmiconfig: 8.3.6(typescript@5.9.3) + snake-case: 3.0.4 + transitivePeerDependencies: + - supports-color + - typescript /@svgr/hast-util-to-babel-ast@8.0.0: resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} @@ -22384,7 +23009,7 @@ packages: dependencies: '@babel/core': 7.28.0 '@svgr/babel-preset': 8.1.0(@babel/core@7.28.0) - '@svgr/core': 8.1.0(typescript@5.8.3) + '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: @@ -22430,6 +23055,21 @@ packages: svgo: 3.3.2 transitivePeerDependencies: - typescript + dev: true + + /@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0)(typescript@5.9.3): + resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + dependencies: + '@svgr/core': 8.1.0(typescript@5.9.3) + cosmiconfig: 8.3.6(typescript@5.9.3) + deepmerge: 4.3.1 + svgo: 3.3.2 + transitivePeerDependencies: + - typescript + dev: false /@svgr/webpack@8.1.0(typescript@5.8.3): resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} @@ -22446,6 +23086,24 @@ packages: transitivePeerDependencies: - supports-color - typescript + dev: true + + /@svgr/webpack@8.1.0(typescript@5.9.3): + resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} + engines: {node: '>=14'} + dependencies: + '@babel/core': 7.28.0 + '@babel/plugin-transform-react-constant-elements': 7.25.1(@babel/core@7.28.0) + '@babel/preset-env': 7.28.0(@babel/core@7.28.0) + '@babel/preset-react': 7.27.1(@babel/core@7.28.0) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) + '@svgr/core': 8.1.0(typescript@5.9.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + - typescript + dev: false /@swc-node/core@1.13.3(@swc/core@1.7.26)(@swc/types@0.1.25): resolution: {integrity: sha512-OGsvXIid2Go21kiNqeTIn79jcaX4l0G93X2rAnas4LFoDyA9wAwVK7xZdm+QsKoMn5Mus2yFLCc4OtX2dD/PWA==} @@ -22868,6 +23526,18 @@ packages: dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 + dev: true + + /@testing-library/jest-dom@6.9.1: + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + dependencies: + '@adobe/css-tools': 4.4.0 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + picocolors: 1.1.1 + redent: 3.0.0 /@testing-library/react-hooks@8.0.1(@types/react@18.0.38)(react-dom@18.3.1)(react-test-renderer@18.3.1)(react@18.3.1): resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} @@ -22912,7 +23582,7 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: true - /@testing-library/react@16.1.0(@testing-library/dom@10.4.1)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1): + /@testing-library/react@16.1.0(@testing-library/dom@10.4.1)(@types/react@18.3.27)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==} engines: {node: '>=18'} peerDependencies: @@ -22929,7 +23599,7 @@ packages: dependencies: '@babel/runtime': 7.28.2 '@testing-library/dom': 10.4.1 - '@types/react': 18.3.11 + '@types/react': 18.3.27 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: true @@ -23117,6 +23787,12 @@ packages: '@types/node': 18.16.9 dev: true + /@types/cors@2.8.19: + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} + dependencies: + '@types/node': 20.12.14 + dev: true + /@types/cross-spawn@6.0.6: resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} dependencies: @@ -23379,6 +24055,10 @@ packages: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} dev: true + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + /@types/estree@1.0.6: resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -23426,6 +24106,13 @@ packages: resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} dev: true + /@types/fs-extra@11.0.4: + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 20.12.14 + dev: true + /@types/fs-extra@8.1.5: resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} dependencies: @@ -23489,7 +24176,7 @@ packages: /@types/hoist-non-react-statics@3.3.5: resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} dependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.27 hoist-non-react-statics: 3.3.2 /@types/html-minifier-terser@6.1.0: @@ -23565,6 +24252,12 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/jsonfile@6.1.4: + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + dependencies: + '@types/node': 20.12.14 + dev: true + /@types/keygrip@1.0.6: resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} dev: true @@ -23591,7 +24284,7 @@ packages: /@types/loadable__component@5.13.9: resolution: {integrity: sha512-QWOtIkwZqHNdQj3nixQ8oyihQiTMKZLk/DNuvNxMSbTfxf47w+kqcbnxlUeBgAxdOtW0Dh48dTAIp83iJKtnrQ==} dependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.27 /@types/lodash-es@4.17.12: resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} @@ -23758,25 +24451,25 @@ packages: /@types/react-helmet@6.1.11: resolution: {integrity: sha512-0QcdGLddTERotCXo3VFlUSWO3ztraw8nZ6e3zJSgG7apwV5xt+pJUS8ewPBqT4NYB1optGLprNQzFleIY84u/g==} dependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.27 /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.11 + '@types/react': 18.3.27 '@types/react-router': 5.1.20 /@types/react-router@5.1.20: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.11 + '@types/react': 18.3.27 /@types/react-test-renderer@19.1.0: resolution: {integrity: sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==} dependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.27 dev: true /@types/react@18.0.38: @@ -23799,6 +24492,12 @@ packages: '@types/prop-types': 15.7.13 csstype: 3.1.3 + /@types/react@18.3.27: + resolution: {integrity: sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==} + dependencies: + '@types/prop-types': 15.7.13 + csstype: 3.2.3 + /@types/react@19.1.8: resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==} dependencies: @@ -23880,12 +24579,18 @@ packages: resolution: {integrity: sha512-mmiVvwpYklFIv9E8qfxuPyIt/OuyIrn6gMOAMOFUO3WJfSrSE+sGUoa4PiZj77Ut7bKZpaa6o1fBKS/4TOEvnA==} dependencies: '@types/hoist-non-react-statics': 3.3.5 - '@types/react': 18.3.11 + '@types/react': 18.3.27 csstype: 3.1.3 /@types/stylis@4.2.0: resolution: {integrity: sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==} + /@types/tapable@2.2.7: + resolution: {integrity: sha512-D6QzACV9vNX3r8HQQNTOnpG+Bv1rko+yEA82wKs3O9CQ5+XW7HI7TED17/UE7+5dIxyxZIWTxKbsBeF6uKFCwA==} + dependencies: + tapable: 2.2.1 + dev: true + /@types/tough-cookie@4.0.5: resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} dev: true @@ -24032,7 +24737,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3): + /@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3): resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -24044,11 +24749,11 @@ packages: dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color dev: true @@ -24303,7 +25008,7 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.8.3): + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -24319,8 +25024,8 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.7.3 - ts-api-utils: 1.3.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 1.3.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color dev: true @@ -24558,6 +25263,160 @@ packages: unhead: 2.0.19 dev: false + /@unrs/resolver-binding-android-arm-eabi@1.11.1: + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-android-arm64@1.11.1: + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-darwin-arm64@1.11.1: + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-darwin-x64@1.11.1: + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-freebsd-x64@1.11.1: + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1: + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-linux-arm-musleabihf@1.11.1: + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-linux-arm64-gnu@1.11.1: + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-linux-arm64-musl@1.11.1: + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-linux-ppc64-gnu@1.11.1: + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-linux-riscv64-gnu@1.11.1: + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-linux-riscv64-musl@1.11.1: + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-linux-s390x-gnu@1.11.1: + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-linux-x64-gnu@1.11.1: + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-linux-x64-musl@1.11.1: + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-wasm32-wasi@1.11.1: + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + requiresBuild: true + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + dev: true + optional: true + + /@unrs/resolver-binding-win32-arm64-msvc@1.11.1: + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-win32-ia32-msvc@1.11.1: + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@unrs/resolver-binding-win32-x64-msvc@1.11.1: + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@vercel/build-utils@7.11.0: resolution: {integrity: sha512-UFrx1hNIjNJJkd0NZrYfaOrmcWhQmrVsbKe9o3L9jX9J1iufG685wIZ9tFCKKC0Fa2HWbNDNzNxrE5SCAS2lyA==} dev: false @@ -25088,11 +25947,45 @@ packages: chai: 5.2.1 tinyrainbow: 2.0.0 + /@vitest/expect@3.2.4: + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + dependencies: + '@types/chai': 5.2.3 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.1 + tinyrainbow: 2.0.0 + dev: true + + /@vitest/mocker@3.2.4(msw@1.3.4)(vite@5.4.21): + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.21 + msw: 1.3.4(encoding@0.1.13)(typescript@5.8.3) + vite: 5.4.21(@types/node@18.16.9)(less@4.4.2)(stylus@0.64.0) + dev: true + /@vitest/pretty-format@3.0.9: resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} dependencies: tinyrainbow: 2.0.0 + /@vitest/pretty-format@3.2.4: + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + dependencies: + tinyrainbow: 2.0.0 + dev: true + /@vitest/runner@1.2.2: resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} dependencies: @@ -25109,6 +26002,14 @@ packages: pathe: 1.1.2 dev: true + /@vitest/runner@3.2.4: + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + dependencies: + '@vitest/utils': 3.2.4 + pathe: 2.0.3 + strip-literal: 3.1.0 + dev: true + /@vitest/snapshot@1.2.2: resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} dependencies: @@ -25125,6 +26026,14 @@ packages: pretty-format: 29.7.0 dev: true + /@vitest/snapshot@3.2.4: + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + dependencies: + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.21 + pathe: 2.0.3 + dev: true + /@vitest/spy@1.2.2: resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} dependencies: @@ -25142,6 +26051,12 @@ packages: dependencies: tinyspy: 3.0.2 + /@vitest/spy@3.2.4: + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + dependencies: + tinyspy: 4.0.4 + dev: true + /@vitest/ui@1.6.0(vitest@1.6.0): resolution: {integrity: sha512-k3Lyo+ONLOgylctiGovRKy7V4+dIN2yxstX3eY5cWFXH6WP+ooVX79YSyi0GagdTQzLmT43BF27T0s6dOIPBXA==} peerDependencies: @@ -25182,6 +26097,14 @@ packages: loupe: 3.1.4 tinyrainbow: 2.0.0 + /@vitest/utils@3.2.4: + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + dependencies: + '@vitest/pretty-format': 3.2.4 + loupe: 3.1.4 + tinyrainbow: 2.0.0 + dev: true + /@volar/language-core@1.11.1: resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} dependencies: @@ -27664,6 +28587,10 @@ packages: '@babel/types': 7.28.5 dev: true + /background-only@0.0.1: + resolution: {integrity: sha512-YXR2zshAf3qs3jnpApQaDUG0x4L6YWpSZfLDhdeiCFxfp/n8YwfoAQ1hAigEF3VpXOMOJeZYFWtBbiFv/v2Qfg==} + dev: true + /bail@1.0.5: resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} dev: true @@ -27687,6 +28614,11 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + /base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + dev: true + /base@0.11.2: resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} engines: {node: '>=0.10.0'} @@ -27964,6 +28896,10 @@ packages: pako: 1.0.11 dev: true + /browserslist-load-config@1.0.1: + resolution: {integrity: sha512-orLR5HAoQugQNVUXUwNd+GAAwl3H64KLIwoMFBNW0AbMSqX2Lxs4ZV2/5UoNrVQlQqF9ygychiu7Svr/99bLtg==} + dev: true + /browserslist-to-es-version@1.0.0: resolution: {integrity: sha512-i6dR03ClGy9ti97FSa4s0dpv01zW/t5VbvGjFfTLsrRQFsPgSeyGkCrlU7BTJuI5XDHVY5S2JgDnDsvQXifJ8w==} dependencies: @@ -28306,7 +29242,7 @@ packages: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.1 + loupe: 3.1.4 pathval: 2.0.0 /chalk-template@0.4.0: @@ -29528,6 +30464,22 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 typescript: 5.8.3 + dev: true + + /cosmiconfig@8.3.6(typescript@5.9.3): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.9.3 /cosmiconfig@9.0.0(typescript@5.0.4): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} @@ -29836,6 +30788,41 @@ packages: webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) dev: false + /css-minimizer-webpack-plugin@5.0.1(esbuild@0.25.0)(webpack@5.98.0): + resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@parcel/css': '*' + '@swc/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + lightningcss: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + '@swc/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + cssnano: 6.1.2(postcss@8.4.38) + esbuild: 0.25.0 + jest-worker: 29.7.0 + postcss: 8.4.38 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.25.0)(webpack-cli@5.1.4) + dev: true + /css-minimizer-webpack-plugin@5.0.1(esbuild@0.25.0)(webpack@5.99.9): resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} engines: {node: '>= 14.15.0'} @@ -29953,6 +30940,14 @@ packages: mdn-data: 2.0.30 source-map-js: 1.2.1 + /css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + dev: true + /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -30167,12 +31162,23 @@ packages: cssom: 0.3.8 dev: true + /cssstyle@4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} + engines: {node: '>=18'} + dependencies: + '@asamuzakjp/css-color': 3.2.0 + rrweb-cssom: 0.8.0 + dev: true + /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + /csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + /cuint@0.2.2: resolution: {integrity: sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==} dev: true @@ -30364,6 +31370,14 @@ packages: whatwg-url: 11.0.0 dev: true + /data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + dev: true + /data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} @@ -30552,6 +31566,10 @@ packages: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true + /decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + dev: true + /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: @@ -31125,6 +32143,38 @@ packages: objectorarray: 1.0.5 dev: true + /engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + dev: true + + /engine.io@6.6.4: + resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} + engines: {node: '>=10.2.0'} + dependencies: + '@types/cors': 2.8.19 + '@types/node': 20.12.14 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.7.2 + cors: 2.8.5 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /enhanced-resolve@5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + /enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} @@ -31212,6 +32262,10 @@ packages: accepts: 1.3.8 escape-html: 1.0.3 + /errorstacks@2.4.1: + resolution: {integrity: sha512-jE4i0SMYevwu/xxAuzhly/KTwtj0xDhbzB6m1xPImxTkw8wcCbgarOQPfCVMi5JKVyW7in29pNJCCJrry3Ynnw==} + dev: true + /es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} @@ -32953,6 +34007,11 @@ packages: dependencies: homedir-polyfill: 1.0.3 + /expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + engines: {node: '>=12.0.0'} + dev: true + /expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -33671,7 +34730,7 @@ packages: /forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - /fork-ts-checker-webpack-plugin@7.2.13(typescript@5.8.3)(webpack@5.98.0): + /fork-ts-checker-webpack-plugin@7.2.13(typescript@5.8.3)(webpack@5.99.9): resolution: {integrity: sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: @@ -33695,10 +34754,10 @@ packages: semver: 7.6.3 tapable: 2.2.1 typescript: 5.8.3 - webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) - dev: false + webpack: 5.99.9(@swc/core@1.7.26)(esbuild@0.25.0)(webpack-cli@5.1.4) + dev: true - /fork-ts-checker-webpack-plugin@7.2.13(typescript@5.8.3)(webpack@5.99.9): + /fork-ts-checker-webpack-plugin@7.2.13(typescript@5.9.3)(webpack@5.98.0): resolution: {integrity: sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: @@ -33721,9 +34780,9 @@ packages: schema-utils: 3.3.0 semver: 7.6.3 tapable: 2.2.1 - typescript: 5.8.3 - webpack: 5.99.9(@swc/core@1.7.26)(esbuild@0.25.0)(webpack-cli@5.1.4) - dev: true + typescript: 5.9.3 + webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + dev: false /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.98.0): resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} @@ -34062,6 +35121,7 @@ packages: /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true /get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} @@ -35028,12 +36088,23 @@ packages: readable-stream: 2.3.8 wbuf: 1.7.3 + /htm@3.1.1: + resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} + dev: true + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 + /html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + dependencies: + whatwg-encoding: 3.1.1 + dev: true + /html-entities@2.5.2: resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} dev: true @@ -37122,6 +38193,10 @@ packages: resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} dev: true + /js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + dev: true + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -37213,7 +38288,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.18.3 + ws: 8.18.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -37221,6 +38296,41 @@ packages: - utf-8-validate dev: true + /jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + cssstyle: 4.6.0 + data-urls: 5.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.22 + parse5: 7.3.0 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.18.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + /jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -37234,6 +38344,11 @@ packages: /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + /json-cycle@1.5.0: + resolution: {integrity: sha512-GOehvd5PO2FeZ5T4c+RxobeT5a1PiGpF4u9/3+UvrMU4bhnVqzJY7hm39wg8PDCqkU91fWGH8qjWR4bn+wgq9w==} + engines: {node: '>= 4'} + dev: true + /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -37259,6 +38374,10 @@ packages: /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + /json-stream-stringify@3.0.1: + resolution: {integrity: sha512-vuxs3G1ocFDiAQ/SX0okcZbtqXwgj1g71qE9+vrjJ2EkjKQlEFDAcUNRxRU8O+GekV4v5cM2qXP0Wyt/EMDBiQ==} + dev: true + /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -37689,6 +38808,11 @@ packages: resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /lint-staged@13.1.4: resolution: {integrity: sha512-pJRmnRA4I4Rcc1k9GZIh9LQJlolCVDHqtJpIgPY7t99XY3uXXmUeDfhRLELYLgUFJPmEsWevTqarex9acSfx2A==} engines: {node: ^14.13.1 || >=16.0.0} @@ -37973,6 +39097,10 @@ packages: /lodash.throttle@4.1.1: resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + /lodash.unionby@4.8.0: + resolution: {integrity: sha512-e60kn4GJIunNkw6v9MxRnUuLYI/Tyuanch7ozoCtk/1irJTYBj+qNTxr5B3qVflmJhwStJBv387Cb+9VOfABMg==} + dev: true + /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} @@ -38075,11 +39203,6 @@ packages: get-func-name: 2.0.2 dev: true - /loupe@3.1.1: - resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} - dependencies: - get-func-name: 2.0.2 - /loupe@3.1.4: resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} @@ -38534,6 +39657,10 @@ packages: /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + /mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + dev: true + /mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: true @@ -39545,6 +40672,17 @@ packages: webpack: 5.99.9(@swc/core@1.11.31)(esbuild@0.25.5)(webpack-cli@5.1.4) dev: true + /mini-css-extract-plugin@2.9.4(webpack@5.98.0): + resolution: {integrity: sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.3.3 + tapable: 2.2.1 + webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.25.0)(webpack-cli@5.1.4) + dev: true + /mini-svg-data-uri@1.4.4: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true @@ -39863,6 +41001,12 @@ packages: - supports-color dev: true + /napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + dev: true + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -40572,6 +41716,10 @@ packages: resolution: {integrity: sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==} dev: true + /nwsapi@2.2.22: + resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} + dev: true + /nx@20.1.1(@swc-node/register@1.10.10)(@swc/core@1.7.26): resolution: {integrity: sha512-bLDEDBUuAvFC5b74QUnmJxUHTRa0mkc2wRPmb2rN3d1VlTFjzKTT9ClJTR1emp/DDO620zyAmVCDVKmnSZNFoQ==} hasBin: true @@ -41347,6 +42495,12 @@ packages: dependencies: entities: 4.5.0 + /parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + dependencies: + entities: 6.0.0 + dev: true + /parseley@0.12.1: resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} dependencies: @@ -43058,7 +44212,7 @@ packages: svelte-eslint-parser: optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) common-tags: 1.8.2 dlv: 1.1.3 eslint: 8.57.1 @@ -43068,7 +44222,7 @@ packages: prettier: 3.3.3 pretty-format: 29.7.0 require-relative: 0.8.7 - typescript: 5.8.3 + typescript: 5.9.3 vue-eslint-parser: 9.4.3(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -45117,6 +46271,14 @@ packages: typescript: 5.8.3 dev: true + /react-docgen-typescript@2.2.2(typescript@5.9.3): + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + dependencies: + typescript: 5.9.3 + dev: true + /react-docgen@6.0.0-alpha.3: resolution: {integrity: sha512-DDLvB5EV9As1/zoUsct6Iz2Cupw9FObEGD3DMcIs3EDFIoSKyz8FZtoWj3Wj+oodrU4/NfidN0BL5yrapIcTSA==} engines: {node: '>=12.0.0'} @@ -46678,6 +47840,10 @@ packages: fsevents: 2.3.3 dev: true + /rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + dev: true + /rsbuild-plugin-dts@0.10.6(@rsbuild/core@1.4.12)(typescript@5.8.3): resolution: {integrity: sha512-rVP82fFMDHW0GirhYx+w2bER1HhkOKJ8e/bAAF2OkMUP2k2fviMpl/gsnbO8KI9vcSqsQE2QXHkj781m6W84Ow==} engines: {node: '>=16.7.0'} @@ -46744,6 +47910,28 @@ packages: typescript: 5.8.3 dev: true + /rsbuild-plugin-dts@0.9.0(@rsbuild/core@1.3.21)(typescript@5.9.3): + resolution: {integrity: sha512-cWlBxFWo2t2wVUFIa0nnGUkqaHsSEQuGr4/vh1W9aPtFxjuu3UYnDK8b6CYmbLpUbiRB1R4gkjARoaBx74gyTQ==} + engines: {node: '>=16.7.0'} + peerDependencies: + '@microsoft/api-extractor': ^7 + '@rsbuild/core': 1.x + typescript: ^5 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + typescript: + optional: true + dependencies: + '@ast-grep/napi': 0.37.0 + '@rsbuild/core': 1.3.21 + magic-string: 0.30.17 + picocolors: 1.1.1 + tinyglobby: 0.2.14 + tsconfig-paths: 4.2.0 + typescript: 5.9.3 + dev: true + /rsbuild-plugin-dts@0.9.2(@rsbuild/core@1.4.0-beta.2)(typescript@5.8.3): resolution: {integrity: sha512-mVpf4J/auMSBy5iBNDaxTB8yYipENRTMUq8bQQJQdvzFuH2arQXrQ874ukEJ67XUZXhmxvc7ooEAR3UWKNiPtQ==} engines: {node: '>=16.7.0'} @@ -46813,6 +48001,10 @@ packages: resolution: {integrity: sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ==} engines: {node: '>=14.17.6'} + /rslog@1.3.0: + resolution: {integrity: sha512-93DpwwaiRrLz7fJ5z6Uwb171hHBws1VVsWjU6IruLFX63BicLA44QNu0sfn3guKHnBHZMFSKO8akfx5QhjuegQ==} + dev: true + /rspack-manifest-plugin@5.0.3(@rspack/core@1.3.9): resolution: {integrity: sha512-DCLSu5KE/ReIOhK2JTCQSI0JIgJ40E2i+2noqINtfhu12+UsK29dgMITEHIpYNR0JggcmmgZIDxPxm9dOV/2vQ==} engines: {node: '>=14'} @@ -48132,6 +49324,44 @@ packages: - supports-color dev: true + /socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + dependencies: + debug: 4.3.7 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /socket.io@4.8.1: + resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} + engines: {node: '>=10.2.0'} + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.7 + engine.io: 6.6.4 + socket.io-adapter: 2.5.5 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + /sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: @@ -48421,6 +49651,10 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} + /std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + dev: true + /std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: true @@ -48430,7 +49664,7 @@ packages: dependencies: graceful-fs: 4.2.11 - /storybook-addon-rslib@1.0.1(@rsbuild/core@1.3.21)(@rslib/core@0.9.0)(storybook-builder-rsbuild@2.1.2)(typescript@5.8.3): + /storybook-addon-rslib@1.0.1(@rsbuild/core@1.3.21)(@rslib/core@0.9.0)(storybook-builder-rsbuild@2.1.2)(typescript@5.9.3): resolution: {integrity: sha512-8V2rH61GCi9QGLoV+RwdWZ1IY4mdWMsLDp5bflbs5MyAaYd+jA+Bz3GAngv05lBjb+KnJHhZ6jWvunxUTUkiCQ==} peerDependencies: '@rsbuild/core': ^1.0.1 @@ -48442,12 +49676,12 @@ packages: optional: true dependencies: '@rsbuild/core': 1.3.21 - '@rslib/core': 0.9.0(typescript@5.8.3) - storybook-builder-rsbuild: 2.1.2(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.2)(typescript@5.8.3) - typescript: 5.8.3 + '@rslib/core': 0.9.0(typescript@5.9.3) + storybook-builder-rsbuild: 2.1.2(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.2)(typescript@5.9.3) + typescript: 5.9.3 dev: true - /storybook-builder-rsbuild@1.0.1(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(storybook@8.4.2)(typescript@5.8.3): + /storybook-builder-rsbuild@1.0.1(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(storybook@8.4.2)(typescript@5.9.3): resolution: {integrity: sha512-sfr0qg3r76A9qlQRXE3ekAiJQM8v31skfuC+qc3m1GPoUeerfiBAWUOFBMdpNqUimt0eGSM5HUiY/vs3VRd3LQ==} peerDependencies: '@rsbuild/core': ^1.0.1 @@ -48458,7 +49692,7 @@ packages: optional: true dependencies: '@rsbuild/core': 1.3.21 - '@rsbuild/plugin-type-check': 1.2.2(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(typescript@5.8.3) + '@rsbuild/plugin-type-check': 1.2.4(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(typescript@5.9.3) '@storybook/addon-docs': 8.6.14(@types/react@18.3.11)(storybook@8.4.2) '@storybook/core-webpack': 8.6.12(storybook@8.4.2) browser-assert: 1.2.1 @@ -48475,7 +49709,7 @@ packages: sirv: 2.0.4 storybook: 8.4.2(prettier@3.3.3) ts-dedent: 2.2.0 - typescript: 5.8.3 + typescript: 5.9.3 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 @@ -48484,7 +49718,7 @@ packages: - '@types/react' dev: true - /storybook-builder-rsbuild@2.1.2(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.2)(typescript@5.8.3): + /storybook-builder-rsbuild@2.1.2(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.2)(typescript@5.9.3): resolution: {integrity: sha512-UW1e0qyizVAR8RfVoU9A1a02cyCtKVImJoGcORyGbCqFRdrvT2n82jK6S/a/NSE0r8MAWWqZNK1SKaOS7B31lQ==} peerDependencies: '@rsbuild/core': ^1.5.0 @@ -48501,7 +49735,7 @@ packages: optional: true dependencies: '@rsbuild/core': 1.3.21 - '@rsbuild/plugin-type-check': 1.2.4(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(typescript@5.8.3) + '@rsbuild/plugin-type-check': 1.2.4(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(typescript@5.9.3) '@storybook/addon-docs': 9.1.16(@types/react@18.3.11)(storybook@8.4.2) '@storybook/core-webpack': 9.1.16(storybook@8.4.2) browser-assert: 1.2.1 @@ -48519,7 +49753,7 @@ packages: sirv: 2.0.4 storybook: 8.4.2(prettier@3.3.3) ts-dedent: 2.2.0 - typescript: 5.8.3 + typescript: 5.9.3 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 @@ -48528,7 +49762,7 @@ packages: - '@types/react' dev: true - /storybook-react-rsbuild@1.0.1(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1)(rollup@4.40.0)(storybook@8.4.2)(typescript@5.8.3)(webpack@5.98.0): + /storybook-react-rsbuild@1.0.1(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(react-dom@18.3.1)(react@18.3.1)(rollup@4.40.0)(storybook@8.4.2)(typescript@5.9.3)(webpack@5.98.0): resolution: {integrity: sha512-OCTWHrOCNatiadKND7/uE211KytgS/rLmJc/cR9ovMZ9Y5jD+n8NlHUjw0fUdCWNpPUx3p/Ey0Z2usG6YO+CeQ==} engines: {node: '>=18.0.0'} peerDependencies: @@ -48543,20 +49777,20 @@ packages: dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.40.0) '@rsbuild/core': 1.3.21 - '@storybook/react': 8.6.12(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.2)(typescript@5.8.3) - '@storybook/react-docgen-typescript-plugin': 1.0.1(typescript@5.8.3)(webpack@5.98.0) + '@storybook/react': 8.6.12(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.2)(typescript@5.9.3) + '@storybook/react-docgen-typescript-plugin': 1.0.1(typescript@5.9.3)(webpack@5.98.0) '@types/node': 18.16.9 find-up: 5.0.0 magic-string: 0.30.17 react: 18.3.1 react-docgen: 7.1.1 - react-docgen-typescript: 2.2.2(typescript@5.8.3) + react-docgen-typescript: 2.2.2(typescript@5.9.3) react-dom: 18.3.1(react@18.3.1) resolve: 1.22.10 storybook: 8.4.2(prettier@3.3.3) - storybook-builder-rsbuild: 1.0.1(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(storybook@8.4.2)(typescript@5.8.3) + storybook-builder-rsbuild: 1.0.1(@rsbuild/core@1.3.21)(@rspack/core@1.3.9)(@types/react@18.3.11)(storybook@8.4.2)(typescript@5.9.3) tsconfig-paths: 4.2.0 - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - '@rspack/core' - '@storybook/test' @@ -48605,7 +49839,7 @@ packages: optional: true dependencies: '@storybook/global': 5.0.0 - '@testing-library/jest-dom': 6.6.3 + '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.0.9 '@vitest/spy': 3.0.9 @@ -48928,6 +50162,12 @@ packages: js-tokens: 9.0.0 dev: true + /strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + dependencies: + js-tokens: 9.0.1 + dev: true + /strnum@1.1.2: resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} @@ -49394,6 +50634,11 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + /tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + dev: true + /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} dependencies: @@ -49978,7 +51223,6 @@ packages: /tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - dev: false /tinyglobby@0.2.10: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} @@ -50024,6 +51268,11 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + /tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + engines: {node: '>=14.0.0'} + dev: true + /tldts-core@6.1.86: resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} @@ -50147,6 +51396,13 @@ packages: punycode: 2.3.1 dev: true + /tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + dependencies: + punycode: 2.3.1 + dev: true + /traverse@0.6.8: resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} engines: {node: '>= 0.4'} @@ -50210,28 +51466,16 @@ packages: typescript: 5.8.3 dev: true - /ts-checker-rspack-plugin@1.1.3(@rspack/core@1.3.9)(typescript@5.8.3): - resolution: {integrity: sha512-VpB+L+F330T484qGp5KqyoU00PRlUlz4kO1ifBpQ5CkKXEFXye8nmeXlZ5rvZAXjFAMRFiG+sI9OewO6Bd9UvA==} - engines: {node: '>=16.0.0'} + /ts-api-utils@1.3.0(typescript@5.9.3): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: - '@rspack/core': ^1.0.0 - typescript: '>=3.8.0' - peerDependenciesMeta: - '@rspack/core': - optional: true + typescript: '>=4.2.0' dependencies: - '@babel/code-frame': 7.27.1 - '@rspack/core': 1.3.9(@swc/helpers@0.5.13) - '@rspack/lite-tapable': 1.0.1 - chokidar: 3.6.0 - is-glob: 4.0.3 - memfs: 4.46.0 - minimatch: 9.0.5 - picocolors: 1.1.1 - typescript: 5.8.3 + typescript: 5.9.3 dev: true - /ts-checker-rspack-plugin@1.1.4(@rspack/core@1.3.9)(typescript@5.0.4): + /ts-checker-rspack-plugin@1.1.4(@rspack/core@1.3.9)(typescript@5.8.3): resolution: {integrity: sha512-lDpKuAubxUlsonUE1LpZS5fw7tfjutNb0lwjAo0k8OcxpWv/q18ytaD6eZXdjrFdTEFNIHtKp9dNkUKGky8SgA==} engines: {node: '>=16.0.0'} peerDependencies: @@ -50249,12 +51493,11 @@ packages: memfs: 4.46.0 minimatch: 9.0.5 picocolors: 1.1.1 - typescript: 5.0.4 + typescript: 5.8.3 dev: true - /ts-checker-rspack-plugin@1.1.4(@rspack/core@1.3.9)(typescript@5.5.2): - resolution: {integrity: sha512-lDpKuAubxUlsonUE1LpZS5fw7tfjutNb0lwjAo0k8OcxpWv/q18ytaD6eZXdjrFdTEFNIHtKp9dNkUKGky8SgA==} - engines: {node: '>=16.0.0'} + /ts-checker-rspack-plugin@1.1.6(@rspack/core@1.3.9)(typescript@5.0.4): + resolution: {integrity: sha512-DjSnkHzPMQegh8FHOKXFx3u5yCO8U9Mt0EubJBcEFd95rcgo9Xs1FWREeFX3iFMCF8hFyAFVitvkruR4iwH31g==} peerDependencies: '@rspack/core': ^1.0.0 typescript: '>=3.8.0' @@ -50267,15 +51510,14 @@ packages: '@rspack/lite-tapable': 1.0.1 chokidar: 3.6.0 is-glob: 4.0.3 - memfs: 4.46.0 + memfs: 4.50.0 minimatch: 9.0.5 picocolors: 1.1.1 - typescript: 5.5.2 + typescript: 5.0.4 dev: true - /ts-checker-rspack-plugin@1.1.4(@rspack/core@1.3.9)(typescript@5.8.3): - resolution: {integrity: sha512-lDpKuAubxUlsonUE1LpZS5fw7tfjutNb0lwjAo0k8OcxpWv/q18ytaD6eZXdjrFdTEFNIHtKp9dNkUKGky8SgA==} - engines: {node: '>=16.0.0'} + /ts-checker-rspack-plugin@1.1.6(@rspack/core@1.3.9)(typescript@5.5.2): + resolution: {integrity: sha512-DjSnkHzPMQegh8FHOKXFx3u5yCO8U9Mt0EubJBcEFd95rcgo9Xs1FWREeFX3iFMCF8hFyAFVitvkruR4iwH31g==} peerDependencies: '@rspack/core': ^1.0.0 typescript: '>=3.8.0' @@ -50288,13 +51530,13 @@ packages: '@rspack/lite-tapable': 1.0.1 chokidar: 3.6.0 is-glob: 4.0.3 - memfs: 4.46.0 + memfs: 4.50.0 minimatch: 9.0.5 picocolors: 1.1.1 - typescript: 5.8.3 + typescript: 5.5.2 dev: true - /ts-checker-rspack-plugin@1.1.6(@rspack/core@1.3.9)(typescript@5.8.3): + /ts-checker-rspack-plugin@1.1.6(@rspack/core@1.3.9)(typescript@5.9.3): resolution: {integrity: sha512-DjSnkHzPMQegh8FHOKXFx3u5yCO8U9Mt0EubJBcEFd95rcgo9Xs1FWREeFX3iFMCF8hFyAFVitvkruR4iwH31g==} peerDependencies: '@rspack/core': ^1.0.0 @@ -50311,7 +51553,7 @@ packages: memfs: 4.50.0 minimatch: 9.0.5 picocolors: 1.1.1 - typescript: 5.8.3 + typescript: 5.9.3 dev: true /ts-dedent@2.2.0: @@ -50327,7 +51569,7 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /ts-jest@29.0.1(@babel/core@7.28.5)(babel-jest@29.7.0)(esbuild@0.25.0)(jest@29.7.0)(typescript@5.8.3): + /ts-jest@29.0.1(@babel/core@7.28.5)(babel-jest@29.7.0)(esbuild@0.25.0)(jest@29.7.0)(typescript@5.9.3): resolution: {integrity: sha512-htQOHshgvhn93QLxrmxpiQPk69+M1g7govO1g6kf6GsjCv4uvRV0znVmDrrvjUrVCnTYeY4FBxTYYYD4airyJA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -50359,7 +51601,7 @@ packages: lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.3 - typescript: 5.8.3 + typescript: 5.9.3 yargs-parser: 21.1.1 dev: true @@ -50432,7 +51674,7 @@ packages: webpack: 5.99.9(@swc/core@1.11.31)(esbuild@0.25.5)(webpack-cli@5.1.4) dev: true - /ts-loader@9.5.1(typescript@5.8.3)(webpack@5.98.0): + /ts-loader@9.5.1(typescript@5.8.3)(webpack@5.99.9): resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -50445,10 +51687,10 @@ packages: semver: 7.6.3 source-map: 0.7.4 typescript: 5.8.3 - webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) - dev: false + webpack: 5.99.9(@swc/core@1.7.26)(esbuild@0.25.0)(webpack-cli@5.1.4) + dev: true - /ts-loader@9.5.1(typescript@5.8.3)(webpack@5.99.9): + /ts-loader@9.5.1(typescript@5.9.3)(webpack@5.98.0): resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -50460,9 +51702,9 @@ packages: micromatch: 4.0.8 semver: 7.6.3 source-map: 0.7.4 - typescript: 5.8.3 - webpack: 5.99.9(@swc/core@1.7.26)(esbuild@0.25.0)(webpack-cli@5.1.4) - dev: true + typescript: 5.9.3 + webpack: 5.98.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + dev: false /ts-morph@12.0.0: resolution: {integrity: sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==} @@ -50566,7 +51808,7 @@ packages: yn: 3.1.1 dev: false - /ts-node@10.9.1(@swc/core@1.7.26)(@types/node@20.12.14)(typescript@5.8.3): + /ts-node@10.9.1(@swc/core@1.7.26)(@types/node@20.12.14)(typescript@5.9.3): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -50593,7 +51835,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.8.3 + typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: false @@ -50986,7 +52228,7 @@ packages: /types-react-dom@19.0.0-rc.1: resolution: {integrity: sha512-VSLZJl8VXCD0fAWp7DUTFUDCcZ8DVXOQmjhJMD03odgeFmu14ZQJHCXeETm3BEAhJqfgJaFkLnGkQv88sRx0fQ==} dependencies: - '@types/react': 18.3.11 + '@types/react': 18.3.27 dev: true /types-react@19.0.0-rc.1: @@ -51037,6 +52279,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + /typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + /typical@4.0.0: resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} engines: {node: '>=8'} @@ -51402,6 +52649,33 @@ packages: webpack-virtual-modules: 0.6.2 dev: false + /unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + requiresBuild: true + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + dev: true + /unset-value@1.0.0: resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} engines: {node: '>=0.10.0'} @@ -51860,6 +53134,28 @@ packages: - terser dev: true + /vite-node@3.2.4(@types/node@18.16.9)(less@4.4.2)(stylus@0.64.0): + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.4.3(supports-color@8.1.1) + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 5.4.21(@types/node@18.16.9)(less@4.4.2)(stylus@0.64.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + dev: true + /vite-plugin-dts@4.3.0(@types/node@16.11.68)(rollup@4.40.0)(typescript@5.5.2)(vite@5.4.21): resolution: {integrity: sha512-LkBJh9IbLwL6/rxh0C1/bOurDrIEmRE7joC+jFdOEEciAFPbpEKOLSAr5nNh5R7CJ45cMbksTrFfy52szzC5eA==} engines: {node: ^14.18.0 || >=16.0.0} @@ -52209,6 +53505,72 @@ packages: - terser dev: true + /vitest@3.2.4(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@26.1.0)(less@4.4.2)(msw@1.3.4)(stylus@0.64.0): + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/chai': 5.2.3 + '@types/node': 18.16.9 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(msw@1.3.4)(vite@5.4.21) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/ui': 1.6.0(vitest@1.6.0) + '@vitest/utils': 3.2.4 + chai: 5.2.1 + debug: 4.4.3(supports-color@8.1.1) + expect-type: 1.2.2 + jsdom: 26.1.0 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 5.4.21(@types/node@18.16.9)(less@4.4.2)(stylus@0.64.0) + vite-node: 3.2.4(@types/node@18.16.9)(less@4.4.2)(stylus@0.64.0) + why-is-node-running: 2.3.0 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + dev: true + /vlq@1.0.1: resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} @@ -52382,6 +53744,13 @@ packages: xml-name-validator: 4.0.0 dev: true + /w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + dependencies: + xml-name-validator: 5.0.0 + dev: true + /wait-on@7.2.0: resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} engines: {node: '>=12.0.0'} @@ -53224,6 +54593,13 @@ packages: dependencies: iconv-lite: 0.6.3 + /whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + dependencies: + iconv-lite: 0.6.3 + dev: true + /whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} @@ -53232,6 +54608,11 @@ packages: engines: {node: '>=12'} dev: true + /whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + dev: true + /whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} @@ -53240,6 +54621,14 @@ packages: webidl-conversions: 7.0.0 dev: true + /whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + dev: true + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -53463,7 +54852,6 @@ packages: optional: true utf-8-validate: optional: true - dev: false /ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} @@ -53531,6 +54919,11 @@ packages: engines: {node: '>=12'} dev: true + /xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + dev: true + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true