From 142638be3b8dddfa721e80403b8ff18901138418 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sat, 30 May 2026 13:31:58 -0400 Subject: [PATCH 01/22] feat: add micro-frontend example using @module-federation/vite (closes #168) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add apps/counter-remote as MFE remote (port 4201, exposes ./Routes) - Configure @module-federation/vite 1.16.2 on both host and remote - Use federation() plugin disabled in test mode to avoid Vitest conflicts - Add mfe-counter route to web-app using dynamic import('counter-remote/Routes') - Add MFE Counter nav link in shared nav-links - Add TypeScript module declaration for counter-remote/Routes - Externalize virtual:pwa-register in remote build (tree-shaken, not instantiated) - Set chrome89 build target on both host and remote for top-level await support - Add passWithNoTests + tsconfig.spec.json to counter-remote for empty test suite - Known limitation: LayoutStore singleton — remote bundles its own copy of @myorg/shared, so nav title won't update when loaded as MFE (workspace libs cannot be in MF shared config, only npm packages) - Demo targets nx serve (dev mode); @module-federation/vite issue #707 (async __loadShare__ wrappers) may affect production builds with ng-content components Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/counter-remote/index.html | 13 +++ apps/counter-remote/project.json | 51 ++++++++++ apps/counter-remote/src/app/app.config.ts | 18 ++++ apps/counter-remote/src/app/app.routes.ts | 7 ++ apps/counter-remote/src/app/app.ts | 11 ++ apps/counter-remote/src/main.ts | 5 + apps/counter-remote/src/remote-routes.ts | 1 + apps/counter-remote/src/test-setup.ts | 1 + apps/counter-remote/tsconfig.app.json | 11 ++ apps/counter-remote/tsconfig.json | 33 ++++++ apps/counter-remote/tsconfig.spec.json | 22 ++++ apps/counter-remote/vite.config.ts | 58 +++++++++++ apps/web-app/src/app/app.routes.ts | 5 + apps/web-app/src/types/remotes.d.ts | 4 + apps/web-app/vite.config.ts | 48 ++++++++- libs/shared/src/lib/components/nav-links.ts | 6 ++ package.json | 1 + pnpm-lock.yaml | 107 ++++++++++++++++++++ 18 files changed, 401 insertions(+), 1 deletion(-) create mode 100644 apps/counter-remote/index.html create mode 100644 apps/counter-remote/project.json create mode 100644 apps/counter-remote/src/app/app.config.ts create mode 100644 apps/counter-remote/src/app/app.routes.ts create mode 100644 apps/counter-remote/src/app/app.ts create mode 100644 apps/counter-remote/src/main.ts create mode 100644 apps/counter-remote/src/remote-routes.ts create mode 100644 apps/counter-remote/src/test-setup.ts create mode 100644 apps/counter-remote/tsconfig.app.json create mode 100644 apps/counter-remote/tsconfig.json create mode 100644 apps/counter-remote/tsconfig.spec.json create mode 100644 apps/counter-remote/vite.config.ts create mode 100644 apps/web-app/src/types/remotes.d.ts diff --git a/apps/counter-remote/index.html b/apps/counter-remote/index.html new file mode 100644 index 00000000..532bcc0c --- /dev/null +++ b/apps/counter-remote/index.html @@ -0,0 +1,13 @@ + + + + + Counter Remote + + + + + + + + diff --git a/apps/counter-remote/project.json b/apps/counter-remote/project.json new file mode 100644 index 00000000..9e1fa798 --- /dev/null +++ b/apps/counter-remote/project.json @@ -0,0 +1,51 @@ +{ + "name": "counter-remote", + "$schema": "../../node_modules/nx/schemas/project.schema.json", + "sourceRoot": "apps/counter-remote/src", + "projectType": "application", + "tags": ["type:app"], + "targets": { + "build": { + "executor": "@nx/vite:build", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/apps/counter-remote" + }, + "configurations": { + "development": { + "mode": "development" + }, + "production": { + "mode": "production" + } + } + }, + "serve": { + "executor": "@nx/vite:dev-server", + "defaultConfiguration": "development", + "options": { + "buildTarget": "counter-remote:build", + "port": 4201 + }, + "configurations": { + "development": { + "buildTarget": "counter-remote:build:development" + }, + "production": { + "buildTarget": "counter-remote:build:production", + "hmr": false + } + } + }, + "test": { + "executor": "@nx/vitest:test", + "outputs": ["{projectRoot}/../../coverage/apps/counter-remote"], + "options": { + "reportsDirectory": "{projectRoot}/../../coverage/apps/counter-remote" + } + }, + "lint": { + "executor": "@nx/eslint:lint" + } + } +} diff --git a/apps/counter-remote/src/app/app.config.ts b/apps/counter-remote/src/app/app.config.ts new file mode 100644 index 00000000..5fda5eb8 --- /dev/null +++ b/apps/counter-remote/src/app/app.config.ts @@ -0,0 +1,18 @@ +import { + ApplicationConfig, + provideZonelessChangeDetection, +} from '@angular/core'; +import { provideHttpClient, withFetch } from '@angular/common/http'; +import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; +import { provideRouter } from '@angular/router'; + +import { routes } from './app.routes'; + +export const appConfig: ApplicationConfig = { + providers: [ + provideZonelessChangeDetection(), + provideHttpClient(withFetch()), + provideAnimationsAsync(), + provideRouter(routes), + ], +}; diff --git a/apps/counter-remote/src/app/app.routes.ts b/apps/counter-remote/src/app/app.routes.ts new file mode 100644 index 00000000..5f1520f5 --- /dev/null +++ b/apps/counter-remote/src/app/app.routes.ts @@ -0,0 +1,7 @@ +import { Route } from '@angular/router'; +import { counterRoutes } from '@myorg/counter'; + +export const routes: Route[] = [ + ...counterRoutes, + { path: '**', redirectTo: '' }, +]; diff --git a/apps/counter-remote/src/app/app.ts b/apps/counter-remote/src/app/app.ts new file mode 100644 index 00000000..6dabd519 --- /dev/null +++ b/apps/counter-remote/src/app/app.ts @@ -0,0 +1,11 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; + +@Component({ + selector: 'app-root', + imports: [RouterOutlet], + template: ``, + host: { 'data-testid': 'app-root' }, + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class App {} diff --git a/apps/counter-remote/src/main.ts b/apps/counter-remote/src/main.ts new file mode 100644 index 00000000..f7aa6df3 --- /dev/null +++ b/apps/counter-remote/src/main.ts @@ -0,0 +1,5 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { App } from './app/app'; +import { appConfig } from './app/app.config'; + +bootstrapApplication(App, appConfig).catch(console.error); diff --git a/apps/counter-remote/src/remote-routes.ts b/apps/counter-remote/src/remote-routes.ts new file mode 100644 index 00000000..5cfa78d7 --- /dev/null +++ b/apps/counter-remote/src/remote-routes.ts @@ -0,0 +1 @@ +export { counterRoutes } from '@myorg/counter'; diff --git a/apps/counter-remote/src/test-setup.ts b/apps/counter-remote/src/test-setup.ts new file mode 100644 index 00000000..b666740f --- /dev/null +++ b/apps/counter-remote/src/test-setup.ts @@ -0,0 +1 @@ +import '@myorg/shared/test-setup.shared'; diff --git a/apps/counter-remote/tsconfig.app.json b/apps/counter-remote/tsconfig.app.json new file mode 100644 index 00000000..6d73140a --- /dev/null +++ b/apps/counter-remote/tsconfig.app.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["vite/client", "vite-plugin-pwa/client"], + "moduleResolution": "bundler" + }, + "files": ["src/main.ts", "src/remote-routes.ts"], + "include": ["src/**/*.d.ts"], + "exclude": ["vite.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts"] +} diff --git a/apps/counter-remote/tsconfig.json b/apps/counter-remote/tsconfig.json new file mode 100644 index 00000000..406c1853 --- /dev/null +++ b/apps/counter-remote/tsconfig.json @@ -0,0 +1,33 @@ +{ + "compilerOptions": { + "target": "es2022", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": false, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "module": "preserve", + "moduleResolution": "bundler", + "lib": ["dom", "es2022"] + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true, + "typeCheckHostBindings": true + } +} diff --git a/apps/counter-remote/tsconfig.spec.json b/apps/counter-remote/tsconfig.spec.json new file mode 100644 index 00000000..c28d474b --- /dev/null +++ b/apps/counter-remote/tsconfig.spec.json @@ -0,0 +1,22 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "vite-plugin-pwa/client", + "node", + "vitest" + ], + "isolatedModules": true + }, + "include": [ + "vite.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ], + "files": ["src/test-setup.ts"] +} diff --git a/apps/counter-remote/vite.config.ts b/apps/counter-remote/vite.config.ts new file mode 100644 index 00000000..3a101357 --- /dev/null +++ b/apps/counter-remote/vite.config.ts @@ -0,0 +1,58 @@ +import { defineConfig } from 'vite'; +import analog from '@analogjs/platform'; +import { federation } from '@module-federation/vite'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; + +const sharedDeps = { + '@angular/animations': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/common': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/compiler': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/core': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/platform-browser': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/platform-browser-dynamic': { + singleton: true, + requiredVersion: '~21.2.15', + }, + '@angular/router': { singleton: true, requiredVersion: '~21.2.15' }, + rxjs: { singleton: true, requiredVersion: '~7.8.2' }, + tslib: { singleton: true, requiredVersion: '~2.8.1' }, +}; + +export default defineConfig(({ mode }) => ({ + root: __dirname, + cacheDir: '../../node_modules/.vite/counter-remote', + build: { + target: ['chrome89'], + outDir: '../../dist/apps/counter-remote', + reportCompressedSize: true, + rolldownOptions: { + external: ['virtual:pwa-register'], + }, + }, + plugins: [ + mode !== 'test' && + federation({ + name: 'counter-remote', + filename: 'remoteEntry.js', + dts: false, + exposes: { + './Routes': './src/remote-routes.ts', + }, + shared: sharedDeps, + }), + analog({ ssr: false }), + nxViteTsPaths(), + ].filter(Boolean), + server: { + port: 4201, + origin: 'http://localhost:4201', + }, + test: { + globals: true, + environment: 'jsdom', + setupFiles: ['src/test-setup.ts'], + include: ['**/*.spec.ts'], + reporters: ['default'], + passWithNoTests: true, + }, +})); diff --git a/apps/web-app/src/app/app.routes.ts b/apps/web-app/src/app/app.routes.ts index 82edafcd..85547e5f 100644 --- a/apps/web-app/src/app/app.routes.ts +++ b/apps/web-app/src/app/app.routes.ts @@ -9,6 +9,11 @@ export const routes: Route[] = [ path: 'feature', loadChildren: () => import('@myorg/counter').then((m) => m.counterRoutes), }, + { + path: 'mfe-counter', + loadChildren: () => + import('counter-remote/Routes').then((m) => m.counterRoutes), + }, { path: 'weather-forecast', loadChildren: () => diff --git a/apps/web-app/src/types/remotes.d.ts b/apps/web-app/src/types/remotes.d.ts new file mode 100644 index 00000000..862e6c69 --- /dev/null +++ b/apps/web-app/src/types/remotes.d.ts @@ -0,0 +1,4 @@ +declare module 'counter-remote/Routes' { + import type { Route } from '@angular/router'; + export const counterRoutes: Route[]; +} diff --git a/apps/web-app/vite.config.ts b/apps/web-app/vite.config.ts index fdfcf844..31da7779 100644 --- a/apps/web-app/vite.config.ts +++ b/apps/web-app/vite.config.ts @@ -1,11 +1,28 @@ /// +import { resolve } from 'path'; import { defineConfig } from 'vite'; import analog from '@analogjs/platform'; +import { federation } from '@module-federation/vite'; import { VitePWA } from 'vite-plugin-pwa'; import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +const mfeSharedDeps = { + '@angular/animations': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/common': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/compiler': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/core': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/platform-browser': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/platform-browser-dynamic': { + singleton: true, + requiredVersion: '~21.2.15', + }, + '@angular/router': { singleton: true, requiredVersion: '~21.2.15' }, + rxjs: { singleton: true, requiredVersion: '~7.8.2' }, + tslib: { singleton: true, requiredVersion: '~2.8.1' }, +}; + // https://vitejs.dev/config/ export default defineConfig(({ mode }) => { return { @@ -14,12 +31,30 @@ export default defineConfig(({ mode }) => { build: { outDir: '../../dist/apps/web-app/client', reportCompressedSize: true, - target: ['es2020'], + target: ['chrome89'], }, optimizeDeps: { include: ['front-matter'], }, plugins: [ + mode !== 'test' && + federation({ + name: 'host', + filename: 'remoteEntry.js', + dts: false, + remotes: { + 'counter-remote': { + type: 'module', + name: 'counter-remote', + entry: 'http://localhost:4201/remoteEntry.js', + entryGlobalName: 'counter-remote', + shareScope: 'default', + }, + }, + exposes: {}, + shared: mfeSharedDeps, + }), + analog({ ssr: false, static: true, @@ -122,6 +157,17 @@ export default defineConfig(({ mode }) => { allow: ['../../'], }, }, + resolve: { + alias: + mode === 'test' + ? { + 'counter-remote/Routes': resolve( + __dirname, + '../../libs/counter/src/lib/lib.routes.ts', + ), + } + : {}, + }, test: { globals: true, environment: 'jsdom', diff --git a/libs/shared/src/lib/components/nav-links.ts b/libs/shared/src/lib/components/nav-links.ts index 68dd5194..af68207c 100644 --- a/libs/shared/src/lib/components/nav-links.ts +++ b/libs/shared/src/lib/components/nav-links.ts @@ -24,6 +24,12 @@ export const NAV_LINKS: NavLink[] = [ hint: 'Lazy Loaded Feature', label: 'Counter', }, + { + routerLink: '/mfe-counter', + icon: 'hub', + hint: 'MFE Counter (requires counter-remote on :4201)', + label: 'MFE Counter', + }, { routerLink: '/content', icon: 'info', diff --git a/package.json b/package.json index f078cc46..7d41610e 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,7 @@ "@commitlint/config-conventional": "21.0.2", "@eslint/eslintrc": "3.3.5", "@eslint/js": "10.0.1", + "@module-federation/vite": "1.16.2", "@nx/angular": "22.7.5", "@nx/devkit": "22.7.5", "@nx/esbuild": "22.7.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d588bef4..2a914887 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -180,6 +180,9 @@ importers: '@eslint/js': specifier: 10.0.1 version: 10.0.1(eslint@10.4.1(jiti@2.6.1)) + '@module-federation/vite': + specifier: 1.16.2 + version: 1.16.2(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) '@nx/angular': specifier: 22.7.5 version: 22.7.5(9d93e046e8af5178c45b7fe7b3d6e447) @@ -2897,6 +2900,15 @@ packages: vue-tsc: optional: true + '@module-federation/dts-plugin@2.5.0': + resolution: {integrity: sha512-q7KDhJ5tn2HrUV7uMuh/L3TaaztUosE+4LAb90sxx0pPPqWRwlpBpxu1REubv5BWXmU1K/Ozn14u6jRbjLVaGA==} + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + vue-tsc: + optional: true + '@module-federation/enhanced@0.21.6': resolution: {integrity: sha512-8PFQxtmXc6ukBC4CqGIoc96M2Ly9WVwCPu4Ffvt+K/SB6rGbeFeZoYAwREV1zGNMJ5v5ly6+AHIEOBxNuSnzSg==} hasBin: true @@ -2933,6 +2945,9 @@ packages: '@module-federation/error-codes@2.4.0': resolution: {integrity: sha512-ktCZtwOoiKR1URJyBt223OsOFAUvc13rICYif55mt7+DomtELlh5FicnEz6mPLBUwmNM9vyBMvkxOdp+fQ5oUg==} + '@module-federation/error-codes@2.5.0': + resolution: {integrity: sha512-sq05/8Gp3csy1nr2/f76K3vLy0/xRqVtP71ibGy8BiLg7h1UxWN7G4EwAKSrPZ4FnsERGeFlIszg5Z+MqlwhFg==} + '@module-federation/inject-external-runtime-core-plugin@0.21.6': resolution: {integrity: sha512-DJQne7NQ988AVi3QB8byn12FkNb+C2lBeU1NRf8/WbL0gmHsr6kW8hiEJCm8LYaURwtsQqtsEV7i+8+51qjSmQ==} peerDependencies: @@ -2949,6 +2964,9 @@ packages: '@module-federation/managers@2.4.0': resolution: {integrity: sha512-Z8j6aog44G1gt4yIAaeDowwZ7xg0aAxTA1Hq69euJK9cR9MDEaLbLUk57jDoiRj6xLwlCiw7ozY+U15BQATk6Q==} + '@module-federation/managers@2.5.0': + resolution: {integrity: sha512-9b5mU/7OYbKrYUJmhZ1kkfeJCZqR7qX6/FWp+oOfZMzUynN7Rb41dwoUs3TdnOKzbZ3CCwtZ2WsR4pF9ZNvuJA==} + '@module-federation/manifest@0.21.6': resolution: {integrity: sha512-yg93+I1qjRs5B5hOSvjbjmIoI2z3th8/yst9sfwvx4UDOG1acsE3HHMyPN0GdoIGwplC/KAnU5NmUz4tREUTGQ==} @@ -3000,6 +3018,9 @@ packages: '@module-federation/runtime-core@2.4.0': resolution: {integrity: sha512-0S8fDw28DXDW17lTQwq5vfJWe2lG0Lw3+w4vk3DVVImLwXXay+OGxLDxzWUfypWcMznfpnoAnFUMO3PtuXziuA==} + '@module-federation/runtime-core@2.5.0': + resolution: {integrity: sha512-STmhQ3c6/hunba2FMP6GrHazXU/8GuN7Gk4dOkWNRpnqYIoD8Wx4MNl76j3HdCzBESC7uSMXTniksVaM1+xxyA==} + '@module-federation/runtime-tools@0.21.6': resolution: {integrity: sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q==} @@ -3012,6 +3033,9 @@ packages: '@module-federation/runtime@2.4.0': resolution: {integrity: sha512-IrLAMwUuteRgFlEkg9jrn4bk8uC897FnXvfNmkKD8/qIoNtSd+32e5ouQn+PEYbX/RjRUB1TYveY6rYHpTPkyg==} + '@module-federation/runtime@2.5.0': + resolution: {integrity: sha512-dOc7pFEf8aruHBk5hoJLnvwkCa5ELT78q3o9dqcdaa/TT74X5z0FT0BsaGaRBPcse/iP6czK3fWd7RLv5ZKP5g==} + '@module-federation/sdk@0.21.6': resolution: {integrity: sha512-x6hARETb8iqHVhEsQBysuWpznNZViUh84qV2yE7AD+g7uIzHKiYdoWqj10posbo5XKf/147qgWDzKZoKoEP2dw==} @@ -3023,12 +3047,28 @@ packages: node-fetch: optional: true + '@module-federation/sdk@2.5.0': + resolution: {integrity: sha512-ScU22XDyV77l50njjzewMpMlNN1CYo0tHS1D6iy+vNKWrHGq8DWVB0vwG8dmvx/WZ4uq+sXgUsQet17MoKsfZw==} + peerDependencies: + node-fetch: ^2.7.0 || ^3.3.2 + peerDependenciesMeta: + node-fetch: + optional: true + '@module-federation/third-party-dts-extractor@0.21.6': resolution: {integrity: sha512-Il6x4hLsvCgZNk1DFwuMBNeoxD1BsZ5AW2BI/nUgu0k5FiAvfcz1OFawRFEHtaM/kVrCsymMOW7pCao90DaX3A==} '@module-federation/third-party-dts-extractor@2.4.0': resolution: {integrity: sha512-4v24t6L3dET/6abMOM2fiM3roT0c8mi21/i+uDc6WG7U0i+Xp2SojBppTs6gnT0lkwMTe+u6xIpNQakdUftHsg==} + '@module-federation/third-party-dts-extractor@2.5.0': + resolution: {integrity: sha512-5di43LGk2ies86Cj8QyzYr540Ijc+nyPqYziyFotL6Pparnu+uf3b3ERfEyQfBmEcyGk1MpitQIO2J3bd9BcNw==} + + '@module-federation/vite@1.16.2': + resolution: {integrity: sha512-XjfReMlQWe+i0SCmkbhrqIuo7WEGIoWH4AsvBQ9gLBa+DxA4qnygJrL6kHi7T1z7EVNRhTTysTHm4ezXGkvr5Q==} + peerDependencies: + vite: '>=6.4.2' + '@module-federation/webpack-bundler-runtime@0.21.6': resolution: {integrity: sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ==} @@ -14922,6 +14962,24 @@ snapshots: - node-fetch - utf-8-validate + '@module-federation/dts-plugin@2.5.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3)': + dependencies: + '@module-federation/error-codes': 2.5.0 + '@module-federation/managers': 2.5.0(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.5.0(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/third-party-dts-extractor': 2.5.0 + adm-zip: 0.5.10 + ansi-colors: 4.1.3 + isomorphic-ws: 5.0.0(ws@8.21.0) + node-schedule: 2.1.1 + typescript: 6.0.3 + undici: 7.24.7 + ws: 8.21.0 + transitivePeerDependencies: + - bufferutil + - node-fetch + - utf-8-validate + '@module-federation/enhanced@0.21.6(@rspack/core@1.6.8(@swc/helpers@0.5.23))(react-dom@19.1.0(react@19.2.6))(react@19.2.6)(typescript@6.0.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0))': dependencies: '@module-federation/bridge-react-webpack-plugin': 0.21.6 @@ -14979,6 +15037,8 @@ snapshots: '@module-federation/error-codes@2.4.0': {} + '@module-federation/error-codes@2.5.0': {} + '@module-federation/inject-external-runtime-core-plugin@0.21.6(@module-federation/runtime-tools@0.21.6)': dependencies: '@module-federation/runtime-tools': 0.21.6 @@ -15000,6 +15060,13 @@ snapshots: transitivePeerDependencies: - node-fetch + '@module-federation/managers@2.5.0(node-fetch@2.7.0(encoding@0.1.13))': + dependencies: + '@module-federation/sdk': 2.5.0(node-fetch@2.7.0(encoding@0.1.13)) + find-pkg: 2.0.0 + transitivePeerDependencies: + - node-fetch + '@module-federation/manifest@0.21.6(typescript@6.0.3)': dependencies: '@module-federation/dts-plugin': 0.21.6(typescript@6.0.3) @@ -15097,6 +15164,13 @@ snapshots: transitivePeerDependencies: - node-fetch + '@module-federation/runtime-core@2.5.0(node-fetch@2.7.0(encoding@0.1.13))': + dependencies: + '@module-federation/error-codes': 2.5.0 + '@module-federation/sdk': 2.5.0(node-fetch@2.7.0(encoding@0.1.13)) + transitivePeerDependencies: + - node-fetch + '@module-federation/runtime-tools@0.21.6': dependencies: '@module-federation/runtime': 0.21.6 @@ -15123,12 +15197,24 @@ snapshots: transitivePeerDependencies: - node-fetch + '@module-federation/runtime@2.5.0(node-fetch@2.7.0(encoding@0.1.13))': + dependencies: + '@module-federation/error-codes': 2.5.0 + '@module-federation/runtime-core': 2.5.0(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.5.0(node-fetch@2.7.0(encoding@0.1.13)) + transitivePeerDependencies: + - node-fetch + '@module-federation/sdk@0.21.6': {} '@module-federation/sdk@2.4.0(node-fetch@2.7.0(encoding@0.1.13))': optionalDependencies: node-fetch: 2.7.0(encoding@0.1.13) + '@module-federation/sdk@2.5.0(node-fetch@2.7.0(encoding@0.1.13))': + optionalDependencies: + node-fetch: 2.7.0(encoding@0.1.13) + '@module-federation/third-party-dts-extractor@0.21.6': dependencies: find-pkg: 2.0.0 @@ -15140,6 +15226,27 @@ snapshots: find-pkg: 2.0.0 resolve: 1.22.8 + '@module-federation/third-party-dts-extractor@2.5.0': + dependencies: + find-pkg: 2.0.0 + resolve: 1.22.8 + + '@module-federation/vite@1.16.2(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))': + dependencies: + '@module-federation/dts-plugin': 2.5.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3) + '@module-federation/runtime': 2.5.0(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.5.0(node-fetch@2.7.0(encoding@0.1.13)) + es-module-lexer: 2.0.0 + estree-walker: 3.0.3 + pathe: 2.0.3 + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + transitivePeerDependencies: + - bufferutil + - node-fetch + - typescript + - utf-8-validate + - vue-tsc + '@module-federation/webpack-bundler-runtime@0.21.6': dependencies: '@module-federation/runtime': 0.21.6 From 12ad4fe2cff6b47b8d151c3bffeef6158b60c3e9 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sat, 30 May 2026 13:46:35 -0400 Subject: [PATCH 02/22] fix: normalize server.watch for @module-federation/vite Vite 8 compatibility @module-federation/vite crashes when server.watch is boolean false. The @nx/vite build executor defaults watch to false, which gets merged into the inline config before plugin config hooks run. A pre-enforce plugin ensures server.watch is an object before the federation hook sees it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/web-app/vite.config.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/web-app/vite.config.ts b/apps/web-app/vite.config.ts index 31da7779..449bd98b 100644 --- a/apps/web-app/vite.config.ts +++ b/apps/web-app/vite.config.ts @@ -37,6 +37,13 @@ export default defineConfig(({ mode }) => { include: ['front-matter'], }, plugins: [ + // @module-federation/vite crashes when server.watch is boolean false (Vite 8 + Nx default). + // This pre-enforce plugin ensures server.watch is an object before federation's config hook. + { + name: 'normalize-server-watch', + enforce: 'pre' as const, + config: () => ({ server: { watch: {} } }), + }, mode !== 'test' && federation({ name: 'host', From ac0d20a2e795d65e15b940ef5bec69918cfe4c1c Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sat, 30 May 2026 13:58:12 -0400 Subject: [PATCH 03/22] feat: auto-start counter-remote when serving web-app - Add counter-remote:serve to web-app serve dependsOn - Add continuous: true to counter-remote serve target - Add normalize-server-watch plugin to counter-remote vite config Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/counter-remote/project.json | 1 + apps/counter-remote/vite.config.ts | 6 ++++++ apps/web-app/project.json | 6 ++++++ 3 files changed, 13 insertions(+) diff --git a/apps/counter-remote/project.json b/apps/counter-remote/project.json index 9e1fa798..2a81b8ea 100644 --- a/apps/counter-remote/project.json +++ b/apps/counter-remote/project.json @@ -22,6 +22,7 @@ }, "serve": { "executor": "@nx/vite:dev-server", + "continuous": true, "defaultConfiguration": "development", "options": { "buildTarget": "counter-remote:build", diff --git a/apps/counter-remote/vite.config.ts b/apps/counter-remote/vite.config.ts index 3a101357..636f4537 100644 --- a/apps/counter-remote/vite.config.ts +++ b/apps/counter-remote/vite.config.ts @@ -30,6 +30,12 @@ export default defineConfig(({ mode }) => ({ }, }, plugins: [ + // @module-federation/vite crashes when server.watch is boolean false (Vite 8 + Nx default). + { + name: 'normalize-server-watch', + enforce: 'pre' as const, + config: () => ({ server: { watch: {} } }), + }, mode !== 'test' && federation({ name: 'counter-remote', diff --git a/apps/web-app/project.json b/apps/web-app/project.json index 45f9005d..cb090465 100644 --- a/apps/web-app/project.json +++ b/apps/web-app/project.json @@ -46,6 +46,12 @@ "api" ], "params": "forward" + }, + { + "target": "serve", + "projects": [ + "counter-remote" + ] } ], "configurations": { From 137a9a18308414abb80659cab7c0de0240054ce4 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sat, 30 May 2026 14:39:37 -0400 Subject: [PATCH 04/22] fix(counter-remote): stub virtual:pwa-register for dev server The host provides virtual:pwa-register via vite-plugin-pwa, but the remote's dev server pre-transforms shared libs independently and can't resolve it. A no-op virtual plugin stubs it out so the dev server starts cleanly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/counter-remote/vite.config.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/apps/counter-remote/vite.config.ts b/apps/counter-remote/vite.config.ts index 636f4537..ae2ce2ed 100644 --- a/apps/counter-remote/vite.config.ts +++ b/apps/counter-remote/vite.config.ts @@ -36,6 +36,17 @@ export default defineConfig(({ mode }) => ({ enforce: 'pre' as const, config: () => ({ server: { watch: {} } }), }, + // virtual:pwa-register is provided by vite-plugin-pwa in the host. + // Stub it out in the remote so shared libs resolve cleanly during dev-server pre-transform. + { + name: 'virtual-pwa-register-stub', + resolveId: (id: string) => + id === 'virtual:pwa-register' ? '\0virtual:pwa-register' : undefined, + load: (id: string) => + id === '\0virtual:pwa-register' + ? 'export const registerSW = () => () => {};' + : undefined, + }, mode !== 'test' && federation({ name: 'counter-remote', From 0af29751da625132971346fc581a3ea2cf9b551f Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sat, 30 May 2026 18:49:22 -0400 Subject: [PATCH 05/22] fix: share @ngrx/signals as singleton in MFE config to resolve NG0200 Both host and remote were bundling separate copies of @ngrx/signals, creating duplicate DI token identities for platform-scoped services (Dispatcher, Events, ReducerEvents). Angular's DI detected this as a circular dependency (NG0200) when the SignalStore-based CounterStore was instantiated via the MFE route. Sharing @ngrx/signals and @ngrx/signals/events as singletons ensures a single set of class tokens across the federation boundary, fixing the circular dependency error on navigation to /mfe-counter. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/counter-remote/vite.config.ts | 2 ++ apps/web-app/vite.config.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/apps/counter-remote/vite.config.ts b/apps/counter-remote/vite.config.ts index ae2ce2ed..032a5f21 100644 --- a/apps/counter-remote/vite.config.ts +++ b/apps/counter-remote/vite.config.ts @@ -14,6 +14,8 @@ const sharedDeps = { requiredVersion: '~21.2.15', }, '@angular/router': { singleton: true, requiredVersion: '~21.2.15' }, + '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, + '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, }; diff --git a/apps/web-app/vite.config.ts b/apps/web-app/vite.config.ts index 449bd98b..4482264e 100644 --- a/apps/web-app/vite.config.ts +++ b/apps/web-app/vite.config.ts @@ -19,6 +19,8 @@ const mfeSharedDeps = { requiredVersion: '~21.2.15', }, '@angular/router': { singleton: true, requiredVersion: '~21.2.15' }, + '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, + '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, }; From c4ce92734b2c182bdc3fbd065e94925370b1e149 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 31 May 2026 10:51:02 -0400 Subject: [PATCH 06/22] fix(mfe): share Angular CDK, Material, and workspace libs as singletons Prevents NG0912 component ID collision warnings by ensuring all Angular CDK and Material sub-path packages, plus workspace libs (@myorg/counter, @myorg/shared), are shared as singletons in both host and remote vite configs. Previously only core Angular packages were shared, causing CDK/Material components and workspace-lib components to be bundled separately in each app and registered twice with Angular's component ID registry. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/counter-remote/vite.config.ts | 66 ++++++++++++++++++++++++++---- apps/web-app/vite.config.ts | 66 ++++++++++++++++++++++++++---- 2 files changed, 118 insertions(+), 14 deletions(-) diff --git a/apps/counter-remote/vite.config.ts b/apps/counter-remote/vite.config.ts index 032a5f21..5f2eccd4 100644 --- a/apps/counter-remote/vite.config.ts +++ b/apps/counter-remote/vite.config.ts @@ -3,19 +3,71 @@ import analog from '@analogjs/platform'; import { federation } from '@module-federation/vite'; import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +const angVer = '~21.2.15'; +const cdkMatVer = '~21.2.13'; + const sharedDeps = { - '@angular/animations': { singleton: true, requiredVersion: '~21.2.15' }, - '@angular/common': { singleton: true, requiredVersion: '~21.2.15' }, - '@angular/compiler': { singleton: true, requiredVersion: '~21.2.15' }, - '@angular/core': { singleton: true, requiredVersion: '~21.2.15' }, - '@angular/platform-browser': { singleton: true, requiredVersion: '~21.2.15' }, + // Angular core + '@angular/animations': { singleton: true, requiredVersion: angVer }, + '@angular/common': { singleton: true, requiredVersion: angVer }, + '@angular/common/http': { singleton: true, requiredVersion: angVer }, + '@angular/compiler': { singleton: true, requiredVersion: angVer }, + '@angular/core': { singleton: true, requiredVersion: angVer }, + '@angular/forms': { singleton: true, requiredVersion: angVer }, + '@angular/platform-browser': { singleton: true, requiredVersion: angVer }, + '@angular/platform-browser/animations': { + singleton: true, + requiredVersion: angVer, + }, '@angular/platform-browser-dynamic': { singleton: true, - requiredVersion: '~21.2.15', + requiredVersion: angVer, + }, + '@angular/router': { singleton: true, requiredVersion: angVer }, + // Angular CDK sub-paths + '@angular/cdk/a11y': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/layout': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/overlay': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/portal': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/scrolling': { singleton: true, requiredVersion: cdkMatVer }, + // Angular Material sub-paths + '@angular/material/badge': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/bottom-sheet': { + singleton: true, + requiredVersion: cdkMatVer, + }, + '@angular/material/button': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/checkbox': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/core': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/form-field': { + singleton: true, + requiredVersion: cdkMatVer, + }, + '@angular/material/icon': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/input': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/list': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/paginator': { + singleton: true, + requiredVersion: cdkMatVer, + }, + '@angular/material/progress-spinner': { + singleton: true, + requiredVersion: cdkMatVer, + }, + '@angular/material/snack-bar': { + singleton: true, + requiredVersion: cdkMatVer, }, - '@angular/router': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/material/table': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/toolbar': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/tooltip': { singleton: true, requiredVersion: cdkMatVer }, + // NgRx '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, + // Workspace libs + '@myorg/counter': { singleton: true, requiredVersion: false }, + '@myorg/shared': { singleton: true, requiredVersion: false }, + // Utilities rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, }; diff --git a/apps/web-app/vite.config.ts b/apps/web-app/vite.config.ts index 4482264e..38646e44 100644 --- a/apps/web-app/vite.config.ts +++ b/apps/web-app/vite.config.ts @@ -8,19 +8,71 @@ import { VitePWA } from 'vite-plugin-pwa'; import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +const angVer = '~21.2.15'; +const cdkMatVer = '~21.2.13'; + const mfeSharedDeps = { - '@angular/animations': { singleton: true, requiredVersion: '~21.2.15' }, - '@angular/common': { singleton: true, requiredVersion: '~21.2.15' }, - '@angular/compiler': { singleton: true, requiredVersion: '~21.2.15' }, - '@angular/core': { singleton: true, requiredVersion: '~21.2.15' }, - '@angular/platform-browser': { singleton: true, requiredVersion: '~21.2.15' }, + // Angular core + '@angular/animations': { singleton: true, requiredVersion: angVer }, + '@angular/common': { singleton: true, requiredVersion: angVer }, + '@angular/common/http': { singleton: true, requiredVersion: angVer }, + '@angular/compiler': { singleton: true, requiredVersion: angVer }, + '@angular/core': { singleton: true, requiredVersion: angVer }, + '@angular/forms': { singleton: true, requiredVersion: angVer }, + '@angular/platform-browser': { singleton: true, requiredVersion: angVer }, + '@angular/platform-browser/animations': { + singleton: true, + requiredVersion: angVer, + }, '@angular/platform-browser-dynamic': { singleton: true, - requiredVersion: '~21.2.15', + requiredVersion: angVer, + }, + '@angular/router': { singleton: true, requiredVersion: angVer }, + // Angular CDK sub-paths + '@angular/cdk/a11y': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/layout': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/overlay': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/portal': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/scrolling': { singleton: true, requiredVersion: cdkMatVer }, + // Angular Material sub-paths + '@angular/material/badge': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/bottom-sheet': { + singleton: true, + requiredVersion: cdkMatVer, + }, + '@angular/material/button': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/checkbox': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/core': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/form-field': { + singleton: true, + requiredVersion: cdkMatVer, + }, + '@angular/material/icon': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/input': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/list': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/paginator': { + singleton: true, + requiredVersion: cdkMatVer, + }, + '@angular/material/progress-spinner': { + singleton: true, + requiredVersion: cdkMatVer, + }, + '@angular/material/snack-bar': { + singleton: true, + requiredVersion: cdkMatVer, }, - '@angular/router': { singleton: true, requiredVersion: '~21.2.15' }, + '@angular/material/table': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/toolbar': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/material/tooltip': { singleton: true, requiredVersion: cdkMatVer }, + // NgRx '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, + // Workspace libs + '@myorg/counter': { singleton: true, requiredVersion: false }, + '@myorg/shared': { singleton: true, requiredVersion: false }, + // Utilities rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, }; From 694295eca7b93fbd6f9ffc143d9c32a341becb7e Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 31 May 2026 11:07:00 -0400 Subject: [PATCH 07/22] fix(mfe): remove workspace libs from shared (MF virtual module limitation) MF virtual modules can't enumerate export * chains from TypeScript path aliases, causing [MISSING_EXPORT] build errors. Workspace libs must remain as separate bundles in each app. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/counter-remote/vite.config.ts | 5 ++--- apps/web-app/vite.config.ts | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/apps/counter-remote/vite.config.ts b/apps/counter-remote/vite.config.ts index 5f2eccd4..19420981 100644 --- a/apps/counter-remote/vite.config.ts +++ b/apps/counter-remote/vite.config.ts @@ -64,9 +64,8 @@ const sharedDeps = { // NgRx '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, - // Workspace libs - '@myorg/counter': { singleton: true, requiredVersion: false }, - '@myorg/shared': { singleton: true, requiredVersion: false }, + // Workspace libs — omitted: MF virtual modules can't enumerate + // export * chains from TypeScript path aliases (build breaks). // Utilities rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, diff --git a/apps/web-app/vite.config.ts b/apps/web-app/vite.config.ts index 38646e44..6b8e514a 100644 --- a/apps/web-app/vite.config.ts +++ b/apps/web-app/vite.config.ts @@ -69,9 +69,8 @@ const mfeSharedDeps = { // NgRx '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, - // Workspace libs - '@myorg/counter': { singleton: true, requiredVersion: false }, - '@myorg/shared': { singleton: true, requiredVersion: false }, + // Workspace libs — omitted: MF virtual modules can't enumerate + // export * chains from TypeScript path aliases (build breaks). // Utilities rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, From 29c7e376620c59bd8baca49d83128b2febe40e29 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 31 May 2026 11:23:44 -0400 Subject: [PATCH 08/22] fix(mfe): add missing material/divider and material/sidenav to MF shared singletons Both @angular/material/divider and @angular/material/sidenav are imported by workspace libs (@myorg/shared) which are loaded by both the host and remote. Adding them as singletons prevents NG0912 component ID collisions for MatDivider, MatSidenav, etc. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/counter-remote/vite.config.ts | 2 ++ apps/web-app/vite.config.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/apps/counter-remote/vite.config.ts b/apps/counter-remote/vite.config.ts index 19420981..dff8b252 100644 --- a/apps/counter-remote/vite.config.ts +++ b/apps/counter-remote/vite.config.ts @@ -43,6 +43,7 @@ const sharedDeps = { singleton: true, requiredVersion: cdkMatVer, }, + '@angular/material/divider': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/icon': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/input': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/list': { singleton: true, requiredVersion: cdkMatVer }, @@ -54,6 +55,7 @@ const sharedDeps = { singleton: true, requiredVersion: cdkMatVer, }, + '@angular/material/sidenav': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/snack-bar': { singleton: true, requiredVersion: cdkMatVer, diff --git a/apps/web-app/vite.config.ts b/apps/web-app/vite.config.ts index 6b8e514a..5d460ca2 100644 --- a/apps/web-app/vite.config.ts +++ b/apps/web-app/vite.config.ts @@ -48,6 +48,7 @@ const mfeSharedDeps = { singleton: true, requiredVersion: cdkMatVer, }, + '@angular/material/divider': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/icon': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/input': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/list': { singleton: true, requiredVersion: cdkMatVer }, @@ -59,6 +60,7 @@ const mfeSharedDeps = { singleton: true, requiredVersion: cdkMatVer, }, + '@angular/material/sidenav': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/snack-bar': { singleton: true, requiredVersion: cdkMatVer, From 8c292731a07140ce76b6cb4aad6e6baebddafd98 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 31 May 2026 20:50:41 -0400 Subject: [PATCH 09/22] feat: mfe example with counter remote (closes #168) - add counter-remote app exposing counter lib via module federation - fix NG0912 collisions: import:false on CDK/Material in remote sharedDeps - fix test OXC failures: fastCompile:mode==='test' in host analog() call (angular files outside tsconfig.spec.json compiled by fast-compile AOT; non-Angular TS stripped by OXC lang:'ts' instead of lang:'js') - remove /feature duplicate route; /mfe-counter is the single MFE entry - update README with MFE architecture section - add .claude/skills/create-mfe SKILL.md documenting the full setup Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .claude/skills/create-mfe/SKILL.md | 445 ++++++++++++++++++ .github/workflows/preview.yml | 10 + README.md | 29 ++ apps/counter-remote/vite.config.ts | 132 +++++- apps/web-app/src/app/app.integration.spec.ts | 10 +- apps/web-app/src/app/app.routes.ts | 4 - apps/web-app/src/staticwebapp.config.json | 5 +- .../src/test-stubs/counter-remote-routes.ts | 15 + apps/web-app/vite.config.ts | 19 +- .../counter-container/counter-container.ts | 24 +- libs/counter/src/lib/lib.routes.ts | 3 +- libs/shared/src/index.ts | 19 +- libs/shared/src/lib/components/nav-links.ts | 10 +- 13 files changed, 660 insertions(+), 65 deletions(-) create mode 100644 .claude/skills/create-mfe/SKILL.md create mode 100644 apps/web-app/src/test-stubs/counter-remote-routes.ts diff --git a/.claude/skills/create-mfe/SKILL.md b/.claude/skills/create-mfe/SKILL.md new file mode 100644 index 00000000..eac0be18 --- /dev/null +++ b/.claude/skills/create-mfe/SKILL.md @@ -0,0 +1,445 @@ +--- +name: create-mfe +description: > + Add a new micro-frontend (MFE) to this workspace. Use when asked to create a + new remote app, expose a feature as a micro-frontend, or wire up a new remote + to the host. Covers vite.config setup, shared singletons, NG0912 prevention, + test stubs, and CI/deployment. +--- + +# Create a Micro-Frontend (MFE) + +This workspace uses `@module-federation/vite` with `@analogjs/platform` (Analog.js) +on top of Nx. The host is `apps/web-app` (port 4200). Additional remotes follow +the pattern of `apps/counter-remote` (port 4201+). + +--- + +## Architecture overview + +``` +apps/ + web-app/ ← host (Analog SPA, port 4200) + counter-remote/ ← remote (Analog SPA, port 4201) +libs/ + counter/ ← workspace lib exposed by counter-remote +``` + +The remote **exposes one route file** (`./Routes`). The host **lazy-loads** it +via `loadChildren`. The two apps share Angular, CDK, Material, NgRx, and RxJS as +MF singletons so only one copy of each runs in the browser. + +--- + +## Step 0 – Generate the remote app + +```bash +# Generate a new Analog app in the workspace (adjust name/port as needed) +pnpm nx generate @analogjs/platform:app my-remote --directory=apps/my-remote +``` + +Then delete the generated `vite.config.ts` and replace it with the template in +Step 2. Delete generated routes/pages you don't need — the remote only needs a +`remote-routes.ts` entry point. + +--- + +## Step 1 – Install the MF package (if not already present) + +```bash +pnpm add @module-federation/vite +``` + +Verify it appears in `package.json` dependencies (not devDependencies — it's a +runtime bundler plugin). + +--- + +## Step 2 – Configure the remote's `vite.config.ts` + +Copy `apps/counter-remote/vite.config.ts` as your starting point. Key rules: + +### Two required workaround plugins (always include both) + +```typescript +// 1. @module-federation/vite crashes when server.watch is boolean false +// (Vite 8 + Nx sets this by default). Must run pre-enforce. +{ + name: 'normalize-server-watch', + enforce: 'pre' as const, + config: () => ({ server: { watch: {} } }), +}, + +// 2. virtual:pwa-register is provided by VitePWA in the host only. +// The remote must stub it so shared lib pre-transforms don't fail. +{ + name: 'virtual-pwa-register-stub', + resolveId: (id: string) => + id === 'virtual:pwa-register' ? '\0virtual:pwa-register' : undefined, + load: (id: string) => + id === '\0virtual:pwa-register' + ? 'export const registerSW = () => () => {};' + : undefined, +}, +``` + +### Disable federation in test mode + +```typescript +mode !== 'test' && + federation({ + name: 'my-remote', + filename: 'remoteEntry.js', + dts: false, + exposes: { + './Routes': './src/remote-routes.ts', + }, + shared: sharedDeps, + }), +``` + +Federation must be disabled in `mode === 'test'` — the MF virtual modules break +vitest's module resolver. + +### External pwa-register from the build + +```typescript +build: { + rolldownOptions: { + external: ['virtual:pwa-register'], + }, +}, +``` + +### `sharedDeps` for the remote — `import: false` on CDK/Material + +**Critical:** Angular CDK and Material packages must have `import: false` on the +**remote** (not on the host). Without this, `@module-federation/vite` generates a +loadShare virtual module with a top-level `import * as __mfLocalShare from +'@angular/material/button'`. This eagerly evaluates the module from the remote's +dev server (a different URL), causing Angular to register the same component class +twice → **NG0912 collisions at runtime**. + +With `import: false`, MF generates a deferred-export module that reads Material +from the host's shared scope (`__mfModuleCache`) instead of loading its own copy. + +```typescript +const angVer = '~21.x.x'; // match your @angular/core version +const cdkMatVer = '~21.x.x'; // match your @angular/cdk version + +const sharedDeps = { + // Angular core — no import:false needed (no component registrations that collide) + '@angular/animations': { singleton: true, requiredVersion: angVer }, + '@angular/common': { singleton: true, requiredVersion: angVer }, + '@angular/common/http': { singleton: true, requiredVersion: angVer }, + '@angular/compiler': { singleton: true, requiredVersion: angVer }, + '@angular/core': { singleton: true, requiredVersion: angVer }, + '@angular/forms': { singleton: true, requiredVersion: angVer }, + '@angular/platform-browser': { singleton: true, requiredVersion: angVer }, + '@angular/platform-browser/animations': { singleton: true, requiredVersion: angVer }, + '@angular/platform-browser-dynamic': { singleton: true, requiredVersion: angVer }, + '@angular/router': { singleton: true, requiredVersion: angVer }, + + // CDK sub-paths — import:false prevents NG0912 (see note above) + '@angular/cdk/a11y': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/cdk/bidi': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/cdk/layout': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/cdk/observers': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/cdk/overlay': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/cdk/portal': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/cdk/scrolling': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/cdk/text-field': { singleton: true, requiredVersion: cdkMatVer, import: false }, + + // Material sub-paths — import:false for same reason + '@angular/material/badge': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/bottom-sheet': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/button': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/checkbox': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/core': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/divider': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/form-field': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/icon': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/input': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/list': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/paginator': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/progress-spinner': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/sidenav': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/snack-bar': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/table': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/toolbar': { singleton: true, requiredVersion: cdkMatVer, import: false }, + '@angular/material/tooltip': { singleton: true, requiredVersion: cdkMatVer, import: false }, + + // NgRx + utilities + '@ngrx/signals': { singleton: true, requiredVersion: '~21.x.x' }, + '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.x.x' }, + rxjs: { singleton: true, requiredVersion: '~7.x.x' }, + tslib: { singleton: true, requiredVersion: '~2.x.x' }, +}; +``` + +> **Add only the CDK/Material sub-paths your remote actually uses.** If the +> remote later adds more Material imports, add their sub-paths here too. + +> **Do NOT add `@myorg/*` workspace libs to the shared config.** MF uses Rolldown +> to build loadShare virtual modules, and Rolldown cannot enumerate `export *` +> chains from TypeScript path aliases. This causes `[MISSING_EXPORT]` build +> errors at runtime. Workspace libs should be bundled into the remote directly. + +> **Use sub-paths, not root paths.** Declaring `'@angular/material': { ... }` +> (no trailing slash) only matches the exact bare specifier. It does NOT match +> `@angular/material/button`. You must list each sub-path explicitly. + +--- + +## Step 3 – Configure the host's `vite.config.ts` + +Add the remote to the host's federation config. The host's `sharedDeps` does +**not** need `import: false` — the host is the provider of these modules. + +```typescript +// In apps/web-app/vite.config.ts + +mode !== 'test' && + federation({ + name: 'host', + filename: 'remoteEntry.js', + dts: false, + remotes: { + 'my-remote': { + type: 'module', + name: 'my-remote', + entry: + process.env['MY_REMOTE_ENTRY'] ?? + 'http://localhost:4202/remoteEntry.js', // remote's dev port + entryGlobalName: 'my-remote', + shareScope: 'default', + }, + // keep existing remotes: + 'counter-remote': { ... }, + }, + exposes: {}, + shared: mfeSharedDeps, // same shape as remote but WITHOUT import:false + }), +``` + +The `MY_REMOTE_ENTRY` env var lets CI inject the production URL (see Step 7). + +--- + +## Step 4 – Create the remote's entry point + +```typescript +// apps/my-remote/src/remote-routes.ts +export { myFeatureRoutes } from '@myorg/my-feature'; +``` + +This is the file exposed as `'./Routes'` in the federation config. It simply +re-exports the routes from a workspace lib (or defines them inline). + +The workspace lib's route file should use `loadComponent` (not `component`) so +the component itself is still lazy-loaded by Angular's router: + +```typescript +// libs/my-feature/src/lib/lib.routes.ts +import { Route } from '@angular/router'; + +export const myFeatureRoutes: Route[] = [ + { + path: '', + title: 'My Feature', + loadComponent: () => import('./components/my-feature/my-feature').then((m) => m.MyFeature), + providers: [MyFeatureStore], + }, +]; +``` + +--- + +## Step 5 – Add the route to the host app + +```typescript +// apps/web-app/src/app/app.routes.ts +{ + path: 'my-feature', + loadChildren: () => + import('my-remote/Routes').then((m) => m.myFeatureRoutes), +}, +``` + +--- + +## Step 6 – Add a navigation link + +```typescript +// libs/shared/src/lib/components/nav-links.ts +// Add to the navLinks array: +{ routerLink: '/my-feature', label: 'My Feature', icon: 'hub' }, +``` + +--- + +## Step 7 – Integration tests: fastCompile + test stub + +### Enable `fastCompile` on the host for test mode + +MFE remote files (routes, stores, components) loaded through `import('my-remote/Routes')` +are **not in `tsconfig.spec.json`'s TypeScript program**. The standard Angular +Vite plugin cannot compile them, causing `@analogjs/vitest-angular-sourcemap-plugin` +to fall through to OXC in **JS mode** — which fails on TypeScript syntax like +`readonly`, type generics, or `export type`. + +Fix: enable `fastCompile: mode === 'test'` in the host's `analog()` call. +The fast-compile plugin has its own single-pass AOT compiler that works on Angular +files _outside_ the TypeScript program, and it strips TypeScript from non-Angular +files using OXC in `lang: 'ts'` mode — so both are handled correctly. + +```typescript +// apps/web-app/vite.config.ts +analog({ + ssr: false, + static: true, + // Use the fast-compile path in tests: compiles Angular components outside + // tsconfig.spec.json (e.g. MFE stubs) and strips TS from plain .ts files. + fastCompile: mode === 'test', + prerender: { routes: [] }, + // ... rest of analog() options +}), +``` + +> `fastCompile` skips Angular's full template type-checking. This is fine for +> tests — template type errors show up in the IDE and in `tsc`, not at test run time. + +### Create a test stub for the MFE route + +The MFE's `remoteEntry.js` isn't available in vitest — it's a network resource. +Replace it with a local stub via a Vite alias: + +```typescript +// apps/web-app/src/test-stubs/my-remote-routes.ts +// Stub for 'my-remote/Routes' used in tests. +// Imports the real component from the workspace lib directly so integration +// tests navigate and render the actual component, not a fake. +import { MyFeature } from '../../../../libs/my-feature/src/lib/components/my-feature/my-feature'; + +export const myFeatureRoutes = [ + { + path: '', + title: 'My Feature', + component: MyFeature, + providers: [], + }, +]; +``` + +### Wire the stub in the host's vite.config (test mode only) + +```typescript +// apps/web-app/vite.config.ts +import { resolve } from 'path'; + +resolve: { + alias: + mode === 'test' + ? { + 'my-remote/Routes': resolve( + __dirname, + 'src/test-stubs/my-remote-routes.ts', + ), + // keep existing stubs: + 'counter-remote/Routes': resolve( + __dirname, + 'src/test-stubs/counter-remote-routes.ts', + ), + } + : {}, +}, +``` + +--- + +## Step 8 – CI/preview deployment + +### Build order in CI + +The remote must be built **before** the host, and its output must be nested +inside the host's output directory: + +```yaml +# .github/workflows/preview.yml (excerpt) + +- name: Build my-remote (production) + run: pnpm nx build my-remote --configuration production + +- name: Copy my-remote output into web-app output + run: | + mkdir -p dist/apps/web-app/client/my-remote + cp -r dist/apps/my-remote/* dist/apps/web-app/client/my-remote/ + +- name: Build web app (preview) + env: + COUNTER_REMOTE_ENTRY: /counter-remote/remoteEntry.js + MY_REMOTE_ENTRY: /my-remote/remoteEntry.js + run: pnpm nx build web-app --configuration preview +``` + +### SWA routing config + +Azure Static Web Apps rewrites all unknown paths to `index.html` by default. +This breaks the remote's JS/asset requests. Exclude the remote's directory: + +```json +// apps/web-app/src/staticwebapp.config.json +{ + "navigationFallback": { + "rewrite": "/index.html", + "exclude": ["/*.{css,js,png,gif,ico,jpg,svg,webmanifest,woff,woff2,txt}", "/counter-remote/**", "/my-remote/**"] + } +} +``` + +--- + +## Step 9 – Dev workflow + +Start both apps in separate terminals: + +```bash +# Terminal 1 — remote (must start first so host can connect on load) +pnpm nx serve my-remote + +# Terminal 2 — host +pnpm nx serve web-app +``` + +The host references the remote at `http://localhost:4202/remoteEntry.js` (the +port set in `server.origin` of the remote's vite.config). If the remote isn't +running, the host still loads — the MFE route just fails to activate. + +--- + +## Step 10 – Verify + +```bash +# Build everything +pnpm nx run-many -t build + +# Run all tests +pnpm nx run-many -t test +``` + +Open `http://localhost:4200/my-feature` — the MFE should load with zero NG0912 +warnings in the browser console. + +--- + +## Pitfall reference + +| Symptom | Root cause | Fix | +| ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `NG0912` for Material/CDK components | Remote's loadShare virtual module has a top-level `import` that double-evaluates modules | Add `import: false` to all CDK/Material entries in the **remote's** `sharedDeps` | +| `NG0912` for workspace lib components | Workspace lib bundled into both host and remote | Remove the workspace lib from MF shared config; keep it as a direct dependency of the remote only | +| `[MISSING_EXPORT] "SomeExport"` build error | `@myorg/*` workspace lib added to MF shared config; Rolldown can't enumerate `export *` from TS path aliases | Never put `@myorg/*` libs in MF shared config | +| `SyntaxError: Unexpected identifier` / `[PARSE_ERROR] Missing initializer` in vitest | Files reachable only via dynamic MFE import are not in `tsconfig.spec.json`'s program; `@analogjs/vitest-angular-sourcemap-plugin` falls through to OXC **JS mode** which fails on `readonly`, type generics, `export type` etc. | Add `fastCompile: mode === 'test'` to `analog()` in the host's `vite.config.ts` | +| Remote assets return `index.html` in Azure SWA preview | SWA's `navigationFallback` rewrites all unknown paths | Add `/my-remote/**` to `navigationFallback.exclude` in `staticwebapp.config.json` | +| `Cannot read properties of undefined (reading 'watch')` on `pnpm nx serve` | `@module-federation/vite` crashes when `server.watch` is `false` (Vite 8 + Nx default) | Add the `normalize-server-watch` pre-enforce plugin to both host and remote | +| Remote's workspace lib styles missing | `virtual:pwa-register` not resolved in remote | Add the `virtual-pwa-register-stub` plugin to the remote | diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index aec005ab..4a7f56d6 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -32,7 +32,17 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Build counter-remote (production) + run: pnpm nx build counter-remote --configuration production + + - name: Copy counter-remote output into web-app output + run: | + mkdir -p dist/apps/web-app/client/counter-remote + cp -r dist/apps/counter-remote/* dist/apps/web-app/client/counter-remote/ + - name: Build web app (preview) + env: + COUNTER_REMOTE_ENTRY: /counter-remote/remoteEntry.js run: pnpm nx build web-app --configuration preview - name: Copy SWA routing config diff --git a/README.md b/README.md index 6a4d8d34..e55e8881 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ A full-stack demo using an [Nx monorepo](https://nx.dev) with [Angular](https:// - **Notification center** — persistent notification panel with unread count, mark-as-read, dismiss, and action support (e.g. one-click reload on SW update) - **PWA / service worker** — offline support; notifies users when a new app version is available with an in-app prompt to reload - **Markdown content pages** — [Analog.js](https://analogjs.org) content feature renders pages from Markdown files with frontmatter support (see the [About](/about) page for a live demo) +- **Counter micro frontend** — the Counter feature runs as a separate [Module Federation](https://module-federation.io/) remote (`counter-remote`), demonstrating micro-frontend architecture with shared singleton libraries - **Debug page** (`/debug`) — trigger test notifications and inspect service worker update state during development - **PR preview deployments** — every pull request gets a live preview URL via Azure Static Web Apps @@ -23,6 +24,7 @@ A full-stack demo using an [Nx monorepo](https://nx.dev) with [Angular](https:// - [Analog.js](https://analogjs.org) — Vite-native Angular meta-framework; used for file-based Markdown content pages - [Tailwind CSS v4](https://tailwindcss.com) — utility-first styling - [Angular PWA](https://angular.dev/ecosystem/service-workers) — service worker & offline support +- [Module Federation](https://module-federation.io/) (`@module-federation/vite`) — micro-frontend architecture **Backend** @@ -63,6 +65,33 @@ pnpm start Starts both the .NET API and Angular app in dev mode. Open [http://localhost:4200](http://localhost:4200) for the app, or [https://localhost:60254/swagger](https://localhost:60254/swagger) for the API docs. +## Micro-frontend development + +The Counter feature is a [Module Federation](https://module-federation.io/) micro-frontend remote. To develop with the MFE active, start both servers in separate terminals: + +```bash +# Terminal 1 — remote (port 4201) +pnpm nx serve counter-remote + +# Terminal 2 — host (port 4200) +pnpm nx serve web-app +``` + +The host at `http://localhost:4200` will load the Counter remote automatically from `http://localhost:4201/remoteEntry.js` when you navigate to `/mfe-counter`. + +### Architecture + +| App | Role | Port | Description | +| ---------------- | ---------- | ---- | --------------------------------------------- | +| `web-app` | MFE host | 4200 | Main application shell | +| `counter-remote` | MFE remote | 4201 | Counter feature exposed via Module Federation | + +**Shared singletons** — Angular core, CDK/Material, and NgRx are configured as Module Federation singletons so both apps share a single instance. This prevents Angular's NG0912 component-ID collision warnings that occur when the same component class is registered twice. + +**Remote self-containment** — workspace libs (`@myorg/shared`, `@myorg/counter`) are NOT in the MF shared config because Rolldown's static analysis cannot enumerate `export *` chains from TypeScript path aliases. Instead, the remote is designed to be self-contained: `counter-remote` bundles only `@myorg/counter` (which has no `@myorg/shared` dependencies), and the host bundles `@myorg/shared` exclusively (no duplicate registrations). + +**Preview deployments** — in CI, `counter-remote` is built and served from `/counter-remote/` within the same Static Web App as the host. The `COUNTER_REMOTE_ENTRY` environment variable is set to `/counter-remote/remoteEntry.js` during the host build so the baked-in import map points to the co-deployed remote instead of `localhost`. + ## Lint ```bash diff --git a/apps/counter-remote/vite.config.ts b/apps/counter-remote/vite.config.ts index dff8b252..281cd3a6 100644 --- a/apps/counter-remote/vite.config.ts +++ b/apps/counter-remote/vite.config.ts @@ -24,50 +24,140 @@ const sharedDeps = { requiredVersion: angVer, }, '@angular/router': { singleton: true, requiredVersion: angVer }, - // Angular CDK sub-paths - '@angular/cdk/a11y': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/cdk/layout': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/cdk/overlay': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/cdk/portal': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/cdk/scrolling': { singleton: true, requiredVersion: cdkMatVer }, - // Angular Material sub-paths - '@angular/material/badge': { singleton: true, requiredVersion: cdkMatVer }, + // Angular CDK/Material sub-paths — import:false so the remote uses the host's + // already-evaluated module instance rather than loading a second copy from its + // own dev server. A top-level `import * as __mfLocalShare` in the generated + // loadShare virtual module would otherwise cause Angular to register the same + // component class twice, triggering NG0912 collisions at runtime. + '@angular/cdk/a11y': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/cdk/bidi': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/cdk/layout': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/cdk/observers': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/cdk/overlay': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/cdk/portal': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/cdk/scrolling': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/cdk/text-field': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + // Angular Material sub-paths — same import:false reason as CDK above + '@angular/material/badge': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, '@angular/material/bottom-sheet': { singleton: true, requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/button': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/checkbox': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/core': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, }, - '@angular/material/button': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/material/checkbox': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/material/core': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/form-field': { singleton: true, requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/divider': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/icon': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/input': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/list': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, }, - '@angular/material/divider': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/material/icon': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/material/input': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/material/list': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/paginator': { singleton: true, requiredVersion: cdkMatVer, + import: false, }, '@angular/material/progress-spinner': { singleton: true, requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/sidenav': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, }, - '@angular/material/sidenav': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/snack-bar': { singleton: true, requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/table': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/toolbar': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, + }, + '@angular/material/tooltip': { + singleton: true, + requiredVersion: cdkMatVer, + import: false, }, - '@angular/material/table': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/material/toolbar': { singleton: true, requiredVersion: cdkMatVer }, - '@angular/material/tooltip': { singleton: true, requiredVersion: cdkMatVer }, // NgRx '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, - // Workspace libs — omitted: MF virtual modules can't enumerate - // export * chains from TypeScript path aliases (build breaks). // Utilities rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, diff --git a/apps/web-app/src/app/app.integration.spec.ts b/apps/web-app/src/app/app.integration.spec.ts index 581467e6..ace7b511 100644 --- a/apps/web-app/src/app/app.integration.spec.ts +++ b/apps/web-app/src/app/app.integration.spec.ts @@ -81,11 +81,11 @@ describe('App Integration', () => { expect(loginComponent).toBeTruthy(); }); - it('should navigate to /feature and load the counter feature', async () => { + it('should navigate to /mfe-counter and load the counter feature', async () => { const fixture = TestBed.createComponent(App); fixture.detectChanges(); const router = TestBed.inject(Router); - await router.navigateByUrl('/feature'); + await router.navigateByUrl('/mfe-counter'); const compiled = fixture.nativeElement as HTMLElement; // Wait for the counter container to appear const counterContainer = await waitForElement( @@ -98,17 +98,13 @@ describe('App Integration', () => { '[data-testid="lib-counter"]', ); expect(counterComponent).toBeTruthy(); - const pageContainer = compiled.querySelector( - '[data-testid="lib-page-container"]', - ); - expect(pageContainer).toBeTruthy(); }); it('should increment and decrement the counter value when buttons are clicked', async () => { const fixture = TestBed.createComponent(App); fixture.detectChanges(); const router = TestBed.inject(Router); - await router.navigateByUrl('/feature'); + await router.navigateByUrl('/mfe-counter'); const compiled = fixture.nativeElement as HTMLElement; // Wait for the counter container to appear await waitForElement( diff --git a/apps/web-app/src/app/app.routes.ts b/apps/web-app/src/app/app.routes.ts index 85547e5f..6aeffe1a 100644 --- a/apps/web-app/src/app/app.routes.ts +++ b/apps/web-app/src/app/app.routes.ts @@ -5,10 +5,6 @@ export const routes: Route[] = [ path: '', loadChildren: () => import('@myorg/home').then((m) => m.homeRoutes), }, - { - path: 'feature', - loadChildren: () => import('@myorg/counter').then((m) => m.counterRoutes), - }, { path: 'mfe-counter', loadChildren: () => diff --git a/apps/web-app/src/staticwebapp.config.json b/apps/web-app/src/staticwebapp.config.json index a6c11734..d473a033 100644 --- a/apps/web-app/src/staticwebapp.config.json +++ b/apps/web-app/src/staticwebapp.config.json @@ -1,6 +1,9 @@ { "navigationFallback": { "rewrite": "/index.html", - "exclude": ["/*.{css,js,png,gif,ico,jpg,svg,webmanifest,woff,woff2,txt}"] + "exclude": [ + "/*.{css,js,png,gif,ico,jpg,svg,webmanifest,woff,woff2,txt}", + "/counter-remote/**" + ] } } diff --git a/apps/web-app/src/test-stubs/counter-remote-routes.ts b/apps/web-app/src/test-stubs/counter-remote-routes.ts new file mode 100644 index 00000000..6d86fc2b --- /dev/null +++ b/apps/web-app/src/test-stubs/counter-remote-routes.ts @@ -0,0 +1,15 @@ +// Stub used in tests to resolve counter-remote/Routes without needing a running MFE remote. +// Production code uses the real MFE remote via Module Federation. +// +// fastCompile: mode === 'test' in analog() ensures Angular files outside tsconfig.spec.json +// are compiled via the single-pass AOT compiler, and non-Angular TypeScript files are +// stripped safely — so imports here are unrestricted. +import { CounterContainer } from '@myorg/counter'; + +export const counterRoutes = [ + { + path: '', + title: 'Counter', + component: CounterContainer, + }, +]; diff --git a/apps/web-app/vite.config.ts b/apps/web-app/vite.config.ts index 5d460ca2..ea3277e8 100644 --- a/apps/web-app/vite.config.ts +++ b/apps/web-app/vite.config.ts @@ -29,12 +29,15 @@ const mfeSharedDeps = { requiredVersion: angVer, }, '@angular/router': { singleton: true, requiredVersion: angVer }, - // Angular CDK sub-paths + // Angular CDK sub-paths (all declaration-bearing sub-paths used by CDK/Material) '@angular/cdk/a11y': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/bidi': { singleton: true, requiredVersion: cdkMatVer }, '@angular/cdk/layout': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/observers': { singleton: true, requiredVersion: cdkMatVer }, '@angular/cdk/overlay': { singleton: true, requiredVersion: cdkMatVer }, '@angular/cdk/portal': { singleton: true, requiredVersion: cdkMatVer }, '@angular/cdk/scrolling': { singleton: true, requiredVersion: cdkMatVer }, + '@angular/cdk/text-field': { singleton: true, requiredVersion: cdkMatVer }, // Angular Material sub-paths '@angular/material/badge': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/bottom-sheet': { @@ -71,8 +74,6 @@ const mfeSharedDeps = { // NgRx '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, - // Workspace libs — omitted: MF virtual modules can't enumerate - // export * chains from TypeScript path aliases (build breaks). // Utilities rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, @@ -108,7 +109,9 @@ export default defineConfig(({ mode }) => { 'counter-remote': { type: 'module', name: 'counter-remote', - entry: 'http://localhost:4201/remoteEntry.js', + entry: + process.env['COUNTER_REMOTE_ENTRY'] ?? + 'http://localhost:4201/remoteEntry.js', entryGlobalName: 'counter-remote', shareScope: 'default', }, @@ -121,6 +124,11 @@ export default defineConfig(({ mode }) => { ssr: false, static: true, apiPrefix: '_analog', + // In test mode, use the fast-compile path so Angular components loaded + // via MFE aliases (not in tsconfig.spec.json) are compiled with the + // local single-pass AOT compiler, and non-Angular TS files are stripped + // with OXC lang:'ts' — avoiding the NG0912/OXC JS-mode parse failures. + fastCompile: mode === 'test', prerender: { routes: [], }, @@ -223,9 +231,10 @@ export default defineConfig(({ mode }) => { alias: mode === 'test' ? { + // In tests, stub the MFE remote with the real counter routes from the workspace lib. 'counter-remote/Routes': resolve( __dirname, - '../../libs/counter/src/lib/lib.routes.ts', + 'src/test-stubs/counter-remote-routes.ts', ), } : {}, diff --git a/libs/counter/src/lib/components/counter-container/counter-container.ts b/libs/counter/src/lib/components/counter-container/counter-container.ts index b119fa22..0d4a9f89 100644 --- a/libs/counter/src/lib/components/counter-container/counter-container.ts +++ b/libs/counter/src/lib/components/counter-container/counter-container.ts @@ -4,42 +4,38 @@ import { inject, input, } from '@angular/core'; -import { LayoutStore, PageContainer, PageToolbar } from '@myorg/shared'; import { counterEvents, CounterStore } from '../../state'; import { Counter } from '../counter/counter'; import { injectDispatch } from '@ngrx/signals/events'; @Component({ - imports: [PageContainer, PageToolbar, Counter], + imports: [Counter], selector: 'lib-counter-container', + providers: [CounterStore], template: ` @let count = store.count(); - - - - + `, host: { + class: 'block p-4', 'data-testid': 'lib-counter-container', }, changeDetection: ChangeDetectionStrategy.OnPush, }) export class CounterContainer { - readonly layoutStore = inject(LayoutStore); readonly store = inject(CounterStore); readonly dispatcher = injectDispatch(counterEvents); count = input(null); constructor() { - this.layoutStore.setTitle('Lazy Loaded Feature'); this.store.inputCount(this.count); } } diff --git a/libs/counter/src/lib/lib.routes.ts b/libs/counter/src/lib/lib.routes.ts index 540b67fe..9455d35f 100644 --- a/libs/counter/src/lib/lib.routes.ts +++ b/libs/counter/src/lib/lib.routes.ts @@ -1,12 +1,11 @@ import { Route } from '@angular/router'; import { CounterContainer } from './components/counter-container/counter-container'; -import { CounterStore } from './state'; export const counterRoutes: Route[] = [ { path: '', + title: 'Counter', component: CounterContainer, - providers: [CounterStore], }, ]; diff --git a/libs/shared/src/index.ts b/libs/shared/src/index.ts index 68141202..a7ace6e4 100644 --- a/libs/shared/src/index.ts +++ b/libs/shared/src/index.ts @@ -1,3 +1,16 @@ -export * from './lib/components'; -export * from './lib/state'; -export * from './lib/testing'; +export * from './lib/components/main-toolbar'; +export * from './lib/components/nav-links'; +export * from './lib/components/notification-bell'; +export * from './lib/components/notification-list'; +export * from './lib/components/page-container'; +export * from './lib/components/page-toolbar-button'; +export * from './lib/components/page-toolbar'; +export * from './lib/components/sidenav-list-item'; +export * from './lib/components/sidenav'; +export * from './lib/components/theme.service'; +export * from './lib/state/layout.store'; +export * from './lib/state/loading.feature'; +export * from './lib/state/notification.store'; +export * from './lib/state/sw-update.store'; +export * from './lib/state/breakpoint.store'; +export * from './lib/testing/wait-for-element'; diff --git a/libs/shared/src/lib/components/nav-links.ts b/libs/shared/src/lib/components/nav-links.ts index af68207c..6d8f8d01 100644 --- a/libs/shared/src/lib/components/nav-links.ts +++ b/libs/shared/src/lib/components/nav-links.ts @@ -18,17 +18,11 @@ export const NAV_LINKS: NavLink[] = [ hint: 'Get Data Feature', label: 'Weather Forecasts', }, - { - routerLink: '/feature', - icon: 'hotel', - hint: 'Lazy Loaded Feature', - label: 'Counter', - }, { routerLink: '/mfe-counter', icon: 'hub', - hint: 'MFE Counter (requires counter-remote on :4201)', - label: 'MFE Counter', + hint: 'Counter (Micro Frontend)', + label: 'Counter', }, { routerLink: '/content', From 55c61285da62a69ba1aae7f56748f22bc816a1bb Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 31 May 2026 21:42:52 -0400 Subject: [PATCH 10/22] fix: use single wildcard in SWA navigationFallback exclude paths Azure Static Web Apps allows at most one '*' per route pattern. Replace '/counter-remote/**' with two single-wildcard patterns. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/web-app/src/staticwebapp.config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/web-app/src/staticwebapp.config.json b/apps/web-app/src/staticwebapp.config.json index d473a033..ab396dd8 100644 --- a/apps/web-app/src/staticwebapp.config.json +++ b/apps/web-app/src/staticwebapp.config.json @@ -3,7 +3,8 @@ "rewrite": "/index.html", "exclude": [ "/*.{css,js,png,gif,ico,jpg,svg,webmanifest,woff,woff2,txt}", - "/counter-remote/**" + "/counter-remote/*", + "/counter-remote/assets/*" ] } } From fa24b929322b396f5efa2cb181f163baddd485be Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 31 May 2026 21:43:57 -0400 Subject: [PATCH 11/22] chore: update GitHub Actions to Node.js 24 compatible versions Bump actions/checkout and actions/setup-node from v4 to v6 in preview.yml and deploy.yml to avoid Node.js 20 deprecation warnings. Also align actions/setup-dotnet to v5 in deploy.yml. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/deploy.yml | 6 +++--- .github/workflows/preview.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8c8aef5e..f8b687e0 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -34,18 +34,18 @@ jobs: environment: production steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: pnpm/action-setup@v4 with: version: 10 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: 24 cache: pnpm - - uses: actions/setup-dotnet@v4 + - uses: actions/setup-dotnet@v5 with: dotnet-version: 10.0.x diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 4a7f56d6..8c92ce74 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -18,13 +18,13 @@ jobs: contents: read pull-requests: write # SWA deploy posts preview URL comment steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: pnpm/action-setup@v4 with: version: 10 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: 24 cache: pnpm From 50c04fedb55bf62724ef0f42dee39ebda20b599d Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 31 May 2026 21:58:28 -0400 Subject: [PATCH 12/22] fix: resolve CounterContainer stub and update E2E tests for /mfe-counter - counter-remote-routes.ts: re-export counterRoutes directly from @myorg/counter instead of importing CounterContainer (which is not in the lib's barrel export), fixing NG04014 in CI integration tests - E2E tests: update URL assertions from /feature to /mfe-counter - playwright.config.ts: add counter-remote:serve webServer so MFE remote is available during E2E runs Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/web-app-e2e/playwright.config.ts | 6 ++++++ apps/web-app-e2e/src/counter.e2e.spec.ts | 6 +++--- apps/web-app-e2e/src/navigation.e2e.spec.ts | 6 +++--- .../src/test-stubs/counter-remote-routes.ts | 15 ++------------- 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/apps/web-app-e2e/playwright.config.ts b/apps/web-app-e2e/playwright.config.ts index d35e53a3..00a377b3 100644 --- a/apps/web-app-e2e/playwright.config.ts +++ b/apps/web-app-e2e/playwright.config.ts @@ -31,6 +31,12 @@ export default defineConfig({ reuseExistingServer: !process.env.CI, cwd: workspaceRoot, }, + { + command: 'npx nx run counter-remote:serve', + url: 'http://localhost:4201/remoteEntry.js', + reuseExistingServer: !process.env.CI, + cwd: workspaceRoot, + }, { command: 'npx nx run web-app:serve-e2e', url: 'http://localhost:4200', diff --git a/apps/web-app-e2e/src/counter.e2e.spec.ts b/apps/web-app-e2e/src/counter.e2e.spec.ts index d7a3e71f..595d0eee 100644 --- a/apps/web-app-e2e/src/counter.e2e.spec.ts +++ b/apps/web-app-e2e/src/counter.e2e.spec.ts @@ -1,12 +1,12 @@ import { test, expect } from '@playwright/test'; -// E2E test for the counter feature ("feature" route) +// E2E test for the counter MFE route test.describe('Counter Feature E2E', () => { test('should increment and decrement the counter value when buttons are clicked', async ({ page, }) => { - // Go to the counter feature route - await page.goto('/feature'); + // Go to the MFE counter route + await page.goto('/mfe-counter'); // Get the count element and initial value const countLocator = page.locator('[data-testid="count"]'); diff --git a/apps/web-app-e2e/src/navigation.e2e.spec.ts b/apps/web-app-e2e/src/navigation.e2e.spec.ts index 31939b3d..0fceac86 100644 --- a/apps/web-app-e2e/src/navigation.e2e.spec.ts +++ b/apps/web-app-e2e/src/navigation.e2e.spec.ts @@ -22,12 +22,12 @@ test.describe('Navigation', () => { await page.getByRole('link', { name: 'Counter' }).click(); - await expect(page).toHaveURL(/\/feature/); + await expect(page).toHaveURL(/\/mfe-counter/); await expect(page.getByTestId('lib-counter-container')).toBeVisible(); }); test('should navigate home via logo link', async ({ page }) => { - await page.goto('/feature'); + await page.goto('/mfe-counter'); await page.getByRole('link', { name: 'Home Page' }).click(); @@ -62,7 +62,7 @@ test.describe('Navigation', () => { await page.getByRole('link', { name: /counter/i }).click(); - await expect(page).toHaveURL(/\/feature/); + await expect(page).toHaveURL(/\/mfe-counter/); }); }); }); diff --git a/apps/web-app/src/test-stubs/counter-remote-routes.ts b/apps/web-app/src/test-stubs/counter-remote-routes.ts index 6d86fc2b..eb559303 100644 --- a/apps/web-app/src/test-stubs/counter-remote-routes.ts +++ b/apps/web-app/src/test-stubs/counter-remote-routes.ts @@ -1,15 +1,4 @@ // Stub used in tests to resolve counter-remote/Routes without needing a running MFE remote. // Production code uses the real MFE remote via Module Federation. -// -// fastCompile: mode === 'test' in analog() ensures Angular files outside tsconfig.spec.json -// are compiled via the single-pass AOT compiler, and non-Angular TypeScript files are -// stripped safely — so imports here are unrestricted. -import { CounterContainer } from '@myorg/counter'; - -export const counterRoutes = [ - { - path: '', - title: 'Counter', - component: CounterContainer, - }, -]; +// Re-export the lib's routes directly — they already define the CounterContainer component. +export { counterRoutes } from '@myorg/counter'; From 389936517629a632f919cf74ac13a893a84bd6e6 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 31 May 2026 22:06:13 -0400 Subject: [PATCH 13/22] fix: build counter-remote before copying into web-app output in CI In preview.yml the copy step ran before web-app build, so the build wipe wiped the counter-remote files. Fix: build both apps first, then copy counter-remote into web-app/client/counter-remote/. In deploy.yml counter-remote was never built or deployed at all. Add build + copy steps and set COUNTER_REMOTE_ENTRY=/counter-remote/remoteEntry.js so the host resolves the MFE correctly in production. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/deploy.yml | 10 ++++++++++ .github/workflows/preview.yml | 10 +++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f8b687e0..43edb3a2 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -58,9 +58,19 @@ jobs: - name: Build API (Release) run: pnpm build:api:prod + - name: Build counter-remote (production) + run: pnpm nx build counter-remote --configuration production + - name: Build web app (production) + env: + COUNTER_REMOTE_ENTRY: /counter-remote/remoteEntry.js run: pnpm build:web-app:prod + - name: Copy counter-remote output into web-app output + run: | + mkdir -p dist/apps/web-app/client/counter-remote + cp -r dist/apps/counter-remote/* dist/apps/web-app/client/counter-remote/ + # The .NET app serves the Angular SPA from apps/web-app/client/ relative # to its working directory (see Program.cs PhysicalFileProvider). Both # outputs land in dist/ with the correct structure: diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 8c92ce74..f30b9922 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -35,16 +35,16 @@ jobs: - name: Build counter-remote (production) run: pnpm nx build counter-remote --configuration production - - name: Copy counter-remote output into web-app output - run: | - mkdir -p dist/apps/web-app/client/counter-remote - cp -r dist/apps/counter-remote/* dist/apps/web-app/client/counter-remote/ - - name: Build web app (preview) env: COUNTER_REMOTE_ENTRY: /counter-remote/remoteEntry.js run: pnpm nx build web-app --configuration preview + - name: Copy counter-remote output into web-app output + run: | + mkdir -p dist/apps/web-app/client/counter-remote + cp -r dist/apps/counter-remote/* dist/apps/web-app/client/counter-remote/ + - name: Copy SWA routing config run: cp apps/web-app/src/staticwebapp.config.json dist/apps/web-app/client/ From 3ad98c5a07f7851a19b6d3f5757568f34c3302a3 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 31 May 2026 22:16:03 -0400 Subject: [PATCH 14/22] docs: update create-mfe skill with accurate patterns and pitfalls - Fix step order: generate lib first, then remote app - Add required barrel export and remotes.d.ts type declaration steps - Clarify remote app shell files must be kept (keep main.ts, app.config.ts etc) - Fix @module-federation/vite placement: devDependencies not dependencies - Add checklist of vite.config.ts fields to update when cloning counter-remote - Fix test stub: prefer re-exporting lib routes over importing components directly (avoids NG04014 when component is not in barrel) - Fix CI build order: copy after BOTH builds, not before host build (host build wipes its output dir, destroying the copied remote files) - Fix SWA wildcards: use /* not /** (SWA only allows one * per segment) - Add E2E section with playwright webServer entries - Add missing pitfalls: NG04014, remote files wiped by host build Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .claude/skills/create-mfe/SKILL.md | 315 ++++++++++++++++++----------- 1 file changed, 199 insertions(+), 116 deletions(-) diff --git a/.claude/skills/create-mfe/SKILL.md b/.claude/skills/create-mfe/SKILL.md index eac0be18..c768b628 100644 --- a/.claude/skills/create-mfe/SKILL.md +++ b/.claude/skills/create-mfe/SKILL.md @@ -4,7 +4,7 @@ description: > Add a new micro-frontend (MFE) to this workspace. Use when asked to create a new remote app, expose a feature as a micro-frontend, or wire up a new remote to the host. Covers vite.config setup, shared singletons, NG0912 prevention, - test stubs, and CI/deployment. + test stubs, CI/deployment, and E2E. --- # Create a Micro-Frontend (MFE) @@ -34,30 +34,89 @@ MF singletons so only one copy of each runs in the browser. ## Step 0 – Generate the remote app ```bash -# Generate a new Analog app in the workspace (adjust name/port as needed) pnpm nx generate @analogjs/platform:app my-remote --directory=apps/my-remote ``` -Then delete the generated `vite.config.ts` and replace it with the template in -Step 2. Delete generated routes/pages you don't need — the remote only needs a -`remote-routes.ts` entry point. +Replace the generated `vite.config.ts` with the template in Step 3. **Keep** the +generated app shell files (`src/main.ts`, `src/app/app.ts`, +`src/app/app.config.ts`, `src/app/app.routes.ts`) — the remote needs these to +run as a standalone app via `nx serve` and in Playwright. Wire `app.routes.ts` +to spread the feature routes and add a wildcard fallback: + +```typescript +// apps/my-remote/src/app/app.routes.ts +import { Route } from '@angular/router'; +import { myFeatureRoutes } from '@myorg/my-feature'; + +export const routes: Route[] = [...myFeatureRoutes, { path: '**', redirectTo: '' }]; +``` + +Delete generated pages/routes you don't need — the remote exposes its feature +via `remote-routes.ts`, not via Analog file-based routing. --- -## Step 1 – Install the MF package (if not already present) +## Step 1 – Create the workspace lib + +Generate the feature lib if it doesn't exist: ```bash -pnpm add @module-federation/vite +pnpm nx generate @nx/angular:library my-feature --directory=libs/my-feature --standalone ``` -Verify it appears in `package.json` dependencies (not devDependencies — it's a -runtime bundler plugin). +Create `libs/my-feature/src/lib/lib.routes.ts`. Use `loadComponent` so the +component is still lazy-loaded by Angular's router: + +```typescript +// libs/my-feature/src/lib/lib.routes.ts +import { Route } from '@angular/router'; + +export const myFeatureRoutes: Route[] = [ + { + path: '', + title: 'My Feature', + loadComponent: () => import('./my-feature/my-feature').then((m) => m.MyFeature), + providers: [MyFeatureStore], + }, +]; +``` + +**Export the routes from the lib's barrel** (`libs/my-feature/src/index.ts`): + +```typescript +export * from './lib/lib.routes'; +// export * from './lib/my-feature.store'; // export the store too if needed +``` + +> Components do **not** need to be in the barrel unless something outside the lib +> imports them directly. The routes are all that the remote entry point and the +> test stub need. --- -## Step 2 – Configure the remote's `vite.config.ts` +## Step 2 – Install the MF package (if not already present) + +```bash +pnpm add -D @module-federation/vite +``` -Copy `apps/counter-remote/vite.config.ts` as your starting point. Key rules: +`@module-federation/vite` is a build-time bundler plugin — it belongs in +`devDependencies`. + +--- + +## Step 3 – Configure the remote's `vite.config.ts` + +Copy `apps/counter-remote/vite.config.ts` as your starting point. After copying, +update these remote-specific values: + +| Field | Example | +| ------------------------------- | -------------------------------------- | +| `cacheDir` | `../../node_modules/.vite/my-remote` | +| `build.outDir` | `../../dist/apps/my-remote` | +| `server.port` / `server.origin` | next available port, e.g. `4202` | +| `federation({ name: ... })` | `'my-remote'` | +| `federation({ exposes: ... })` | `'./Routes': './src/remote-routes.ts'` | ### Two required workaround plugins (always include both) @@ -124,11 +183,12 @@ With `import: false`, MF generates a deferred-export module that reads Material from the host's shared scope (`__mfModuleCache`) instead of loading its own copy. ```typescript -const angVer = '~21.x.x'; // match your @angular/core version -const cdkMatVer = '~21.x.x'; // match your @angular/cdk version +// Use the exact versions from package.json (pnpm outdated to check) +const angVer = '~21.2.15'; +const cdkMatVer = '~21.2.13'; const sharedDeps = { - // Angular core — no import:false needed (no component registrations that collide) + // Angular core — no import:false needed '@angular/animations': { singleton: true, requiredVersion: angVer }, '@angular/common': { singleton: true, requiredVersion: angVer }, '@angular/common/http': { singleton: true, requiredVersion: angVer }, @@ -170,10 +230,10 @@ const sharedDeps = { '@angular/material/tooltip': { singleton: true, requiredVersion: cdkMatVer, import: false }, // NgRx + utilities - '@ngrx/signals': { singleton: true, requiredVersion: '~21.x.x' }, - '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.x.x' }, - rxjs: { singleton: true, requiredVersion: '~7.x.x' }, - tslib: { singleton: true, requiredVersion: '~2.x.x' }, + '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, + '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, + rxjs: { singleton: true, requiredVersion: '~7.8.2' }, + tslib: { singleton: true, requiredVersion: '~2.8.1' }, }; ``` @@ -191,7 +251,7 @@ const sharedDeps = { --- -## Step 3 – Configure the host's `vite.config.ts` +## Step 4 – Configure the host's `vite.config.ts` Add the remote to the host's federation config. The host's `sharedDeps` does **not** need `import: false` — the host is the provider of these modules. @@ -205,57 +265,37 @@ mode !== 'test' && filename: 'remoteEntry.js', dts: false, remotes: { + 'counter-remote': { /* existing */ }, 'my-remote': { type: 'module', name: 'my-remote', entry: process.env['MY_REMOTE_ENTRY'] ?? - 'http://localhost:4202/remoteEntry.js', // remote's dev port + 'http://localhost:4202/remoteEntry.js', entryGlobalName: 'my-remote', shareScope: 'default', }, - // keep existing remotes: - 'counter-remote': { ... }, }, exposes: {}, shared: mfeSharedDeps, // same shape as remote but WITHOUT import:false }), ``` -The `MY_REMOTE_ENTRY` env var lets CI inject the production URL (see Step 7). +The `MY_REMOTE_ENTRY` env var lets CI inject the production URL (see Step 8). --- -## Step 4 – Create the remote's entry point +## Step 5 – Create the remote's entry point ```typescript // apps/my-remote/src/remote-routes.ts +// Re-export from the lib barrel — this is what the host's loadChildren resolves. export { myFeatureRoutes } from '@myorg/my-feature'; ``` -This is the file exposed as `'./Routes'` in the federation config. It simply -re-exports the routes from a workspace lib (or defines them inline). - -The workspace lib's route file should use `loadComponent` (not `component`) so -the component itself is still lazy-loaded by Angular's router: - -```typescript -// libs/my-feature/src/lib/lib.routes.ts -import { Route } from '@angular/router'; - -export const myFeatureRoutes: Route[] = [ - { - path: '', - title: 'My Feature', - loadComponent: () => import('./components/my-feature/my-feature').then((m) => m.MyFeature), - providers: [MyFeatureStore], - }, -]; -``` - --- -## Step 5 – Add the route to the host app +## Step 6 – Add the route to the host app ```typescript // apps/web-app/src/app/app.routes.ts @@ -266,9 +306,19 @@ export const myFeatureRoutes: Route[] = [ }, ``` +Add a TypeScript module declaration so the import type-checks: + +```typescript +// apps/web-app/src/types/remotes.d.ts (add to existing file) +declare module 'my-remote/Routes' { + import type { Route } from '@angular/router'; + export const myFeatureRoutes: Route[]; +} +``` + --- -## Step 6 – Add a navigation link +## Step 7 – Add a navigation link ```typescript // libs/shared/src/lib/components/nav-links.ts @@ -278,60 +328,53 @@ export const myFeatureRoutes: Route[] = [ --- -## Step 7 – Integration tests: fastCompile + test stub +## Step 8 – Integration tests: fastCompile + test stub ### Enable `fastCompile` on the host for test mode -MFE remote files (routes, stores, components) loaded through `import('my-remote/Routes')` -are **not in `tsconfig.spec.json`'s TypeScript program**. The standard Angular -Vite plugin cannot compile them, causing `@analogjs/vitest-angular-sourcemap-plugin` -to fall through to OXC in **JS mode** — which fails on TypeScript syntax like -`readonly`, type generics, or `export type`. +MFE remote files loaded through `import('my-remote/Routes')` are **not in +`tsconfig.spec.json`'s TypeScript program**. The standard Angular Vite plugin +cannot compile them, causing `@analogjs/vitest-angular-sourcemap-plugin` to fall +through to OXC in **JS mode** — which fails on TypeScript syntax like `readonly`, +type generics, or `export type`. Fix: enable `fastCompile: mode === 'test'` in the host's `analog()` call. -The fast-compile plugin has its own single-pass AOT compiler that works on Angular -files _outside_ the TypeScript program, and it strips TypeScript from non-Angular -files using OXC in `lang: 'ts'` mode — so both are handled correctly. ```typescript // apps/web-app/vite.config.ts analog({ ssr: false, static: true, - // Use the fast-compile path in tests: compiles Angular components outside - // tsconfig.spec.json (e.g. MFE stubs) and strips TS from plain .ts files. fastCompile: mode === 'test', prerender: { routes: [] }, - // ... rest of analog() options }), ``` -> `fastCompile` skips Angular's full template type-checking. This is fine for -> tests — template type errors show up in the IDE and in `tsc`, not at test run time. +> `fastCompile` skips Angular's full template type-checking. Template errors +> still appear in the IDE and `tsc` — just not at vitest run time. ### Create a test stub for the MFE route -The MFE's `remoteEntry.js` isn't available in vitest — it's a network resource. -Replace it with a local stub via a Vite alias: +The MFE's `remoteEntry.js` isn't available in vitest. Replace it with a local +stub via a Vite alias. + +**Preferred approach — re-export the lib's real routes:** ```typescript // apps/web-app/src/test-stubs/my-remote-routes.ts -// Stub for 'my-remote/Routes' used in tests. -// Imports the real component from the workspace lib directly so integration -// tests navigate and render the actual component, not a fake. -import { MyFeature } from '../../../../libs/my-feature/src/lib/components/my-feature/my-feature'; - -export const myFeatureRoutes = [ - { - path: '', - title: 'My Feature', - component: MyFeature, - providers: [], - }, -]; +export { myFeatureRoutes } from '@myorg/my-feature'; ``` -### Wire the stub in the host's vite.config (test mode only) +This is the simplest and most correct stub. It uses the same routes the remote +uses, so integration tests exercise the real component without duplicating route +definitions. + +> **Do NOT import the component directly unless it is in the lib's barrel +> (`index.ts`).** An `undefined` component causes `NG04014: Invalid configuration +of route` at test runtime. Always check what `libs/my-feature/src/index.ts` +> exports before importing from it. + +### Wire the alias in the host's vite.config (test mode only) ```typescript // apps/web-app/vite.config.ts @@ -341,15 +384,8 @@ resolve: { alias: mode === 'test' ? { - 'my-remote/Routes': resolve( - __dirname, - 'src/test-stubs/my-remote-routes.ts', - ), - // keep existing stubs: - 'counter-remote/Routes': resolve( - __dirname, - 'src/test-stubs/counter-remote-routes.ts', - ), + 'counter-remote/Routes': resolve(__dirname, 'src/test-stubs/counter-remote-routes.ts'), + 'my-remote/Routes': resolve(__dirname, 'src/test-stubs/my-remote-routes.ts'), } : {}, }, @@ -357,49 +393,97 @@ resolve: { --- -## Step 8 – CI/preview deployment +## Step 9 – CI/preview and production deployment -### Build order in CI +### Build order: both apps first, then copy -The remote must be built **before** the host, and its output must be nested -inside the host's output directory: +The remote's output must be nested inside the host's output directory so it's +served from the same origin. **Always copy after both builds are done** — the +host build wipes and recreates its entire output directory, so any files copied +in before that step will be lost. ```yaml -# .github/workflows/preview.yml (excerpt) +# .github/workflows/preview.yml (and deploy.yml — same pattern) - name: Build my-remote (production) run: pnpm nx build my-remote --configuration production +# Build the host AFTER the remote, setting env vars for all remotes +- name: Build web app + env: + COUNTER_REMOTE_ENTRY: /counter-remote/remoteEntry.js + MY_REMOTE_ENTRY: /my-remote/remoteEntry.js + run: pnpm nx build web-app --configuration production # or preview + +# Copy AFTER both builds — never before - name: Copy my-remote output into web-app output run: | mkdir -p dist/apps/web-app/client/my-remote cp -r dist/apps/my-remote/* dist/apps/web-app/client/my-remote/ - -- name: Build web app (preview) - env: - COUNTER_REMOTE_ENTRY: /counter-remote/remoteEntry.js - MY_REMOTE_ENTRY: /my-remote/remoteEntry.js - run: pnpm nx build web-app --configuration preview ``` ### SWA routing config -Azure Static Web Apps rewrites all unknown paths to `index.html` by default. -This breaks the remote's JS/asset requests. Exclude the remote's directory: +Azure Static Web Apps rewrites unknown paths to `index.html` by default, which +breaks remote asset requests. Add the remote's directory to `navigationFallback.exclude`. + +**Important:** Azure SWA allows at most **one `*`** per path segment. Using `**` +is invalid and causes deployment to fail with a validation error. Use two +separate entries per remote: ```json // apps/web-app/src/staticwebapp.config.json { "navigationFallback": { "rewrite": "/index.html", - "exclude": ["/*.{css,js,png,gif,ico,jpg,svg,webmanifest,woff,woff2,txt}", "/counter-remote/**", "/my-remote/**"] + "exclude": ["/*.{css,js,png,gif,ico,jpg,svg,webmanifest,woff,woff2,txt}", "/counter-remote/*", "/counter-remote/assets/*", "/my-remote/*", "/my-remote/assets/*"] } } ``` --- -## Step 9 – Dev workflow +## Step 10 – E2E tests + +Add the remote's dev server to Playwright's `webServer` list. Remotes must +appear **before** the host entry. Keep the existing API and counter-remote +entries. + +```typescript +// apps/web-app-e2e/playwright.config.ts +webServer: [ + { + command: 'npx nx run api:serve', + url: 'http://localhost:60253/health/live', + reuseExistingServer: !process.env.CI, + cwd: workspaceRoot, + }, + { + command: 'npx nx run counter-remote:serve', + url: 'http://localhost:4201/remoteEntry.js', + reuseExistingServer: !process.env.CI, + cwd: workspaceRoot, + }, + { + command: 'npx nx run my-remote:serve', + url: 'http://localhost:4202/remoteEntry.js', + reuseExistingServer: !process.env.CI, + cwd: workspaceRoot, + }, + { + command: 'npx nx run web-app:serve-e2e', + url: 'http://localhost:4200', + reuseExistingServer: !process.env.CI, + cwd: workspaceRoot, + }, +], +``` + +In E2E specs, navigate to the route path defined in the **host** (e.g. `/my-feature`). + +--- + +## Step 11 – Dev workflow Start both apps in separate terminals: @@ -411,20 +495,17 @@ pnpm nx serve my-remote pnpm nx serve web-app ``` -The host references the remote at `http://localhost:4202/remoteEntry.js` (the -port set in `server.origin` of the remote's vite.config). If the remote isn't -running, the host still loads — the MFE route just fails to activate. +The host references the remote at `http://localhost:4202/remoteEntry.js`. If the +remote isn't running the host still loads — the MFE route just fails to activate. --- -## Step 10 – Verify +## Step 12 – Verify ```bash -# Build everything pnpm nx run-many -t build - -# Run all tests pnpm nx run-many -t test +pnpm e2e ``` Open `http://localhost:4200/my-feature` — the MFE should load with zero NG0912 @@ -434,12 +515,14 @@ warnings in the browser console. ## Pitfall reference -| Symptom | Root cause | Fix | -| ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -| `NG0912` for Material/CDK components | Remote's loadShare virtual module has a top-level `import` that double-evaluates modules | Add `import: false` to all CDK/Material entries in the **remote's** `sharedDeps` | -| `NG0912` for workspace lib components | Workspace lib bundled into both host and remote | Remove the workspace lib from MF shared config; keep it as a direct dependency of the remote only | -| `[MISSING_EXPORT] "SomeExport"` build error | `@myorg/*` workspace lib added to MF shared config; Rolldown can't enumerate `export *` from TS path aliases | Never put `@myorg/*` libs in MF shared config | -| `SyntaxError: Unexpected identifier` / `[PARSE_ERROR] Missing initializer` in vitest | Files reachable only via dynamic MFE import are not in `tsconfig.spec.json`'s program; `@analogjs/vitest-angular-sourcemap-plugin` falls through to OXC **JS mode** which fails on `readonly`, type generics, `export type` etc. | Add `fastCompile: mode === 'test'` to `analog()` in the host's `vite.config.ts` | -| Remote assets return `index.html` in Azure SWA preview | SWA's `navigationFallback` rewrites all unknown paths | Add `/my-remote/**` to `navigationFallback.exclude` in `staticwebapp.config.json` | -| `Cannot read properties of undefined (reading 'watch')` on `pnpm nx serve` | `@module-federation/vite` crashes when `server.watch` is `false` (Vite 8 + Nx default) | Add the `normalize-server-watch` pre-enforce plugin to both host and remote | -| Remote's workspace lib styles missing | `virtual:pwa-register` not resolved in remote | Add the `virtual-pwa-register-stub` plugin to the remote | +| Symptom | Root cause | Fix | +| ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `NG0912` for Material/CDK components | Remote's loadShare virtual module has a top-level `import` that double-evaluates modules | Add `import: false` to all CDK/Material entries in the **remote's** `sharedDeps` | +| `NG0912` for workspace lib components | Workspace lib bundled into both host and remote | Remove the workspace lib from MF shared config; bundle it into the remote directly | +| `[MISSING_EXPORT] "SomeExport"` build error | `@myorg/*` workspace lib added to MF shared config; Rolldown can't enumerate `export *` from TS path aliases | Never put `@myorg/*` libs in MF shared config | +| `SyntaxError: Unexpected identifier` / `[PARSE_ERROR] Missing initializer` in vitest | Files reachable only via dynamic MFE import are not in `tsconfig.spec.json`'s program; OXC falls through to JS mode and chokes on TypeScript syntax | Add `fastCompile: mode === 'test'` to `analog()` in the host's `vite.config.ts` | +| `NG04014: Invalid configuration of route` in vitest | Test stub imports a component not exported from the lib's barrel → `undefined` in route `component` field | Re-export the lib's real routes: `export { myFeatureRoutes } from '@myorg/my-feature'` | +| Remote files missing from preview / production deploy | Copy step ran before host build; host build wiped the output directory | Build both apps first, then copy the remote output into the host's dist folder | +| Remote assets return `index.html` in Azure SWA | `navigationFallback` rewrites all unknown paths | Add `/my-remote/*` AND `/my-remote/assets/*` (two separate entries); never use `/**` — SWA only allows one `*` per segment | +| `Cannot read properties of undefined (reading 'watch')` on `nx serve` | `@module-federation/vite` crashes when `server.watch` is `false` (Vite 8 + Nx default) | Add the `normalize-server-watch` pre-enforce plugin to both host and remote | +| `virtual:pwa-register` import error in remote | VitePWA only runs in the host, not the remote | Add the `virtual-pwa-register-stub` plugin to the remote's vite.config | From 28db1e6cf2051483405b20e3f06ba50798c67d44 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 31 May 2026 22:19:11 -0400 Subject: [PATCH 15/22] fix: persist counter state across navigation by providing store at root level Move CounterStore from component-scoped providers to providedIn: 'root' so the state survives when navigating away from and back to the counter route. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../src/lib/components/counter-container/counter-container.ts | 1 - libs/counter/src/lib/state/counter.store.ts | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/counter/src/lib/components/counter-container/counter-container.ts b/libs/counter/src/lib/components/counter-container/counter-container.ts index 0d4a9f89..13d7ee4c 100644 --- a/libs/counter/src/lib/components/counter-container/counter-container.ts +++ b/libs/counter/src/lib/components/counter-container/counter-container.ts @@ -12,7 +12,6 @@ import { injectDispatch } from '@ngrx/signals/events'; @Component({ imports: [Counter], selector: 'lib-counter-container', - providers: [CounterStore], template: ` @let count = store.count(); Date: Sun, 7 Jun 2026 13:13:27 -0400 Subject: [PATCH 16/22] fix: move PWA icons to Vite publicDir so they are included in the build output Icons in src/assets/icons/ were not being copied to dist because Vite's publicDir defaults to /public, not src/. Moving them to public/assets/icons/ ensures they are served at /assets/icons/*.png in the deployed app, fixing 404s for PWA manifest icons in SWA. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../{src => public}/assets/icons/icon-128x128.png | Bin .../{src => public}/assets/icons/icon-144x144.png | Bin .../{src => public}/assets/icons/icon-152x152.png | Bin .../{src => public}/assets/icons/icon-192x192.png | Bin .../{src => public}/assets/icons/icon-384x384.png | Bin .../{src => public}/assets/icons/icon-512x512.png | Bin .../{src => public}/assets/icons/icon-72x72.png | Bin .../{src => public}/assets/icons/icon-96x96.png | Bin 8 files changed, 0 insertions(+), 0 deletions(-) rename apps/web-app/{src => public}/assets/icons/icon-128x128.png (100%) rename apps/web-app/{src => public}/assets/icons/icon-144x144.png (100%) rename apps/web-app/{src => public}/assets/icons/icon-152x152.png (100%) rename apps/web-app/{src => public}/assets/icons/icon-192x192.png (100%) rename apps/web-app/{src => public}/assets/icons/icon-384x384.png (100%) rename apps/web-app/{src => public}/assets/icons/icon-512x512.png (100%) rename apps/web-app/{src => public}/assets/icons/icon-72x72.png (100%) rename apps/web-app/{src => public}/assets/icons/icon-96x96.png (100%) diff --git a/apps/web-app/src/assets/icons/icon-128x128.png b/apps/web-app/public/assets/icons/icon-128x128.png similarity index 100% rename from apps/web-app/src/assets/icons/icon-128x128.png rename to apps/web-app/public/assets/icons/icon-128x128.png diff --git a/apps/web-app/src/assets/icons/icon-144x144.png b/apps/web-app/public/assets/icons/icon-144x144.png similarity index 100% rename from apps/web-app/src/assets/icons/icon-144x144.png rename to apps/web-app/public/assets/icons/icon-144x144.png diff --git a/apps/web-app/src/assets/icons/icon-152x152.png b/apps/web-app/public/assets/icons/icon-152x152.png similarity index 100% rename from apps/web-app/src/assets/icons/icon-152x152.png rename to apps/web-app/public/assets/icons/icon-152x152.png diff --git a/apps/web-app/src/assets/icons/icon-192x192.png b/apps/web-app/public/assets/icons/icon-192x192.png similarity index 100% rename from apps/web-app/src/assets/icons/icon-192x192.png rename to apps/web-app/public/assets/icons/icon-192x192.png diff --git a/apps/web-app/src/assets/icons/icon-384x384.png b/apps/web-app/public/assets/icons/icon-384x384.png similarity index 100% rename from apps/web-app/src/assets/icons/icon-384x384.png rename to apps/web-app/public/assets/icons/icon-384x384.png diff --git a/apps/web-app/src/assets/icons/icon-512x512.png b/apps/web-app/public/assets/icons/icon-512x512.png similarity index 100% rename from apps/web-app/src/assets/icons/icon-512x512.png rename to apps/web-app/public/assets/icons/icon-512x512.png diff --git a/apps/web-app/src/assets/icons/icon-72x72.png b/apps/web-app/public/assets/icons/icon-72x72.png similarity index 100% rename from apps/web-app/src/assets/icons/icon-72x72.png rename to apps/web-app/public/assets/icons/icon-72x72.png diff --git a/apps/web-app/src/assets/icons/icon-96x96.png b/apps/web-app/public/assets/icons/icon-96x96.png similarity index 100% rename from apps/web-app/src/assets/icons/icon-96x96.png rename to apps/web-app/public/assets/icons/icon-96x96.png From bf95882376c7df0dec69681b3514588b72750fd4 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 7 Jun 2026 13:52:23 -0400 Subject: [PATCH 17/22] fix: remove deprecated provideAnimations to fix MFE loadShare bug (fixes #168) provideAnimations() from @angular/platform-browser/animations resolves to undefined through the @module-federation/vite loadShare mechanism, causing "TypeError: Ut is not a function" in the deployed preview. Since provideAnimations() is deprecated in Angular 21+ (animations are now provided automatically by the platform), removing the explicit call eliminates the broken loadShare dependency. Also added an MFE integration e2e test that guards against JS load errors. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/counter-remote/src/app/app.config.ts | 2 -- apps/web-app-e2e/src/mfe-integration.e2e.spec.ts | 16 ++++++++++++++++ apps/web-app/src/app/app.config.ts | 2 -- 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 apps/web-app-e2e/src/mfe-integration.e2e.spec.ts diff --git a/apps/counter-remote/src/app/app.config.ts b/apps/counter-remote/src/app/app.config.ts index 5fda5eb8..7e38d3a8 100644 --- a/apps/counter-remote/src/app/app.config.ts +++ b/apps/counter-remote/src/app/app.config.ts @@ -3,7 +3,6 @@ import { provideZonelessChangeDetection, } from '@angular/core'; import { provideHttpClient, withFetch } from '@angular/common/http'; -import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; @@ -12,7 +11,6 @@ export const appConfig: ApplicationConfig = { providers: [ provideZonelessChangeDetection(), provideHttpClient(withFetch()), - provideAnimationsAsync(), provideRouter(routes), ], }; diff --git a/apps/web-app-e2e/src/mfe-integration.e2e.spec.ts b/apps/web-app-e2e/src/mfe-integration.e2e.spec.ts new file mode 100644 index 00000000..ba4de1ac --- /dev/null +++ b/apps/web-app-e2e/src/mfe-integration.e2e.spec.ts @@ -0,0 +1,16 @@ +import { test, expect } from '@playwright/test'; + +// Guards against federation loadShare bugs (e.g. "not a function" on shared deps). +test.describe('MFE Integration', () => { + test('should load without JavaScript errors', async ({ page }) => { + const errors: string[] = []; + page.on('pageerror', (err) => errors.push(err.message)); + + await page.goto('/mfe-counter'); + + // Give the MFE a moment to bootstrap + await expect(page.locator('[data-testid="lib-counter"]')).toBeVisible(); + + expect(errors).toHaveLength(0); + }); +}); diff --git a/apps/web-app/src/app/app.config.ts b/apps/web-app/src/app/app.config.ts index d3f0e2fd..12a78955 100644 --- a/apps/web-app/src/app/app.config.ts +++ b/apps/web-app/src/app/app.config.ts @@ -7,7 +7,6 @@ import { ApplicationConfig, provideZonelessChangeDetection, } from '@angular/core'; -import { provideAnimations } from '@angular/platform-browser/animations'; import { PreloadAllModules, provideRouter, @@ -36,7 +35,6 @@ export const appConfig: ApplicationConfig = { withInMemoryScrolling({ anchorScrolling: 'enabled' }), withPreloading(PreloadAllModules), ), - provideAnimations(), provideContent( withMarkdownRenderer({ loadMermaid: !import.meta.env.SSR ? () => import('mermaid') : undefined, From b158ccf552e01d24b775088e28eff359a56183cb Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 7 Jun 2026 13:58:11 -0400 Subject: [PATCH 18/22] chore: update pnpm allowBuilds --- pnpm-lock.yaml | 2633 ++++++++----------------------------------- pnpm-workspace.yaml | 11 +- 2 files changed, 454 insertions(+), 2190 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2a914887..b105498e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,39 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - node-forge: ^1.4.0 - axios: '>=1.15.2' - '@hono/node-server': '>=1.19.13' - ajv@8: '>=8.18.0' - brace-expansion@2: '>=2.0.3' - brace-expansion@5: '>=5.0.6' - flatted: '>=3.4.2' - follow-redirects: '>=1.16.0' - hono: '>=4.12.18' - koa: '>=3.1.2' - lodash-es: '>=4.18.0' - minimatch@9: '>=9.0.7' - minimatch@10: '>=10.2.3' - path-to-regexp@0: ~0.1.13 - path-to-regexp@8: '>=8.4.0' - picomatch@2: '>=2.3.2' - picomatch@4: '>=4.0.4' - qs: '>=6.15.2' - rollup: '>=4.59.0' - serialize-javascript: '>=7.0.5' - tar: '>=7.5.11' - webpack: '>=5.104.1' - yaml@2: '>=2.8.3' - vite@6: '>=6.4.2' - fast-uri: '>=3.1.2' - uuid@11: '>=11.1.1 <12' - ip-address: '>=10.1.1' - '@babel/plugin-transform-modules-systemjs': '>=7.29.4' - ws: '>=8.20.1' - webpack-dev-server: '>=5.2.4' - uuid@8: '>=12.0.1' - importers: .: @@ -49,10 +16,10 @@ importers: version: 2.5.2(@analogjs/content@2.5.2(7e715e091ad31477d2527c81c98ffd2f))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/router@21.2.15(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.15(@angular/animations@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)) '@analogjs/vite-plugin-angular': specifier: 2.5.2 - version: 2.5.2(@angular-devkit/build-angular@20.0.0(5051dee4ea0f423ab526f197e92d0945))(@angular/build@21.2.13(317a9c63e2a22ee97b948b5b731d9e1c))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + version: 2.5.2(@angular/build@21.2.13(2fc71c60e1ba34e5381d5136307f56c3))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) '@analogjs/vitest-angular': specifier: 2.5.2 - version: 2.5.2(@analogjs/vite-plugin-angular@2.5.2(@angular-devkit/build-angular@20.0.0(5051dee4ea0f423ab526f197e92d0945))(@angular/build@21.2.13(317a9c63e2a22ee97b948b5b731d9e1c))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)))(@angular-devkit/architect@0.2102.13(chokidar@5.0.0))(@angular-devkit/schematics@21.2.13(chokidar@5.0.0))(vitest@4.1.7)(zone.js@0.15.1) + version: 2.5.2(@analogjs/vite-plugin-angular@2.5.2(@angular/build@21.2.13(2fc71c60e1ba34e5381d5136307f56c3))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)))(@angular-devkit/architect@0.2102.13(chokidar@5.0.0))(@angular-devkit/schematics@21.2.13(chokidar@5.0.0))(vitest@4.1.7)(zone.js@0.15.1) '@angular/animations': specifier: 21.2.15 version: 21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -124,7 +91,7 @@ importers: version: 11.15.0 ngx-markdown: specifier: 21.3.0 - version: 21.3.0(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.15(@angular/animations@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(clipboard@2.0.11)(emoji-toolkit@9.0.1)(katex@0.16.45)(marked@18.0.4)(mermaid@11.15.0)(prismjs@1.30.0)(rxjs@7.8.2)(zone.js@0.15.1) + version: 21.3.0(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.15(@angular/animations@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(katex@0.16.45)(marked@18.0.4)(mermaid@11.15.0)(prismjs@1.30.0)(rxjs@7.8.2)(zone.js@0.15.1) prismjs: specifier: ^1.29.0 version: 1.30.0 @@ -137,7 +104,7 @@ importers: devDependencies: '@analogjs/platform': specifier: 2.5.2 - version: 2.5.2(c7005acc3ff391161f8eee26147d6b0f) + version: 2.5.2(214c067b1ad14b65b0579c4233c0049e) '@angular-devkit/architect': specifier: 0.2102.13 version: 0.2102.13(chokidar@5.0.0) @@ -158,7 +125,7 @@ importers: version: 21.4.0(eslint@10.4.1(jiti@2.6.1))(typescript@6.0.3) '@angular/build': specifier: 21.2.13 - version: 21.2.13(317a9c63e2a22ee97b948b5b731d9e1c) + version: 21.2.13(2fc71c60e1ba34e5381d5136307f56c3) '@angular/cli': specifier: 21.2.13 version: 21.2.13(@types/node@25.9.1)(chokidar@5.0.0) @@ -182,10 +149,10 @@ importers: version: 10.0.1(eslint@10.4.1(jiti@2.6.1)) '@module-federation/vite': specifier: 1.16.2 - version: 1.16.2(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + version: 1.16.2(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) '@nx/angular': specifier: 22.7.5 - version: 22.7.5(9d93e046e8af5178c45b7fe7b3d6e447) + version: 22.7.5(8deabd555917c9e594b192212ae17a3a) '@nx/devkit': specifier: 22.7.5 version: 22.7.5(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) @@ -209,13 +176,13 @@ importers: version: 22.7.5(76d9b9d8f83254a1778fcb5570bf5179) '@nx/vite': specifier: 22.7.5 - version: 22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))(vitest@4.1.7) + version: 22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))(vitest@4.1.7) '@nx/vitest': specifier: 22.7.5 - version: 22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))(vitest@4.1.7) + version: 22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))(vitest@4.1.7) '@nx/web': specifier: 22.7.5 - version: 22.7.5(7d722e0a6ac6615449213db93bb7ae2a) + version: 22.7.5(739c633d30084b1e8fb8ca781ebc32a5) '@nx/workspace': specifier: 22.7.5 version: 22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)) @@ -317,16 +284,16 @@ importers: version: 8.60.0(eslint@10.4.1(jiti@2.6.1))(typescript@6.0.3) vite: specifier: 8.0.14 - version: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + version: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) vite-plugin-pwa: specifier: 1.3.0 - version: 1.3.0(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) + version: 1.3.0(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) vite-tsconfig-paths: specifier: 6.1.1 - version: 6.1.1(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + version: 6.1.1(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) vitest: specifier: 4.1.7 - version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + version: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) apps/api: {} @@ -362,9 +329,6 @@ importers: packages: - '@adobe/css-tools@4.3.3': - resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} - '@alcalzone/ansi-tokenize@0.3.0': resolution: {integrity: sha512-p+CMKJ93HFmLkjXKlXiVGlMQEuRb6H0MokBSwUsX+S6BRX8eV5naFZpQJFfJHjRZY0Hmnqy1/r6UWl3x+19zYA==} engines: {node: '>=18'} @@ -474,7 +438,7 @@ packages: marked-shiki: ^1.2.1 prismjs: '*' shiki: ^1.29.2 - vite: '>=6.4.2' + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@nx/angular': optional: true @@ -503,7 +467,7 @@ packages: peerDependencies: '@angular-devkit/build-angular': ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 '@angular/build': ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 - vite: '>=6.4.2' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@angular-devkit/build-angular': optional: true @@ -527,81 +491,11 @@ packages: zone.js: optional: true - '@angular-devkit/architect@0.2000.0': - resolution: {integrity: sha512-6accOuvf1BY6hTO5LzYcxp2Dpl0bThgYF3KdwVWqrYF5+6PWfQLdy+rKxBiCIv0+0OngZVI79RuAtUKFowFM/A==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/architect@0.2102.13': resolution: {integrity: sha512-fheyi0gPx6b7tT+WQ+ePlzdGqKjPLUK72wg5Z9pkVtQ5+VN/8yB9mlRlmoivngd2FeNG9wMeNynWZGYycnOWVw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@20.0.0': - resolution: {integrity: sha512-6JAVLjGLSTy69FAXTPzi9t4SswT4b3mOiz8GPleNTO0VmxgQA8C+zUqG81fH1ZDdSZBfUZcbgim+Y47G3cORcg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - '@angular/compiler-cli': ^20.0.0 - '@angular/core': ^20.0.0 - '@angular/localize': ^20.0.0 - '@angular/platform-browser': ^20.0.0 - '@angular/platform-server': ^20.0.0 - '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.0.0 - '@web/test-runner': ^0.20.0 - browser-sync: ^3.0.2 - jest: ^29.5.0 - jest-environment-jsdom: ^29.5.0 - karma: ^6.3.0 - ng-packagr: ^20.0.0 - protractor: ^7.0.0 - tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 - typescript: '>=5.8 <5.9' - peerDependenciesMeta: - '@angular/core': - optional: true - '@angular/localize': - optional: true - '@angular/platform-browser': - optional: true - '@angular/platform-server': - optional: true - '@angular/service-worker': - optional: true - '@angular/ssr': - optional: true - '@web/test-runner': - optional: true - browser-sync: - optional: true - jest: - optional: true - jest-environment-jsdom: - optional: true - karma: - optional: true - ng-packagr: - optional: true - protractor: - optional: true - tailwindcss: - optional: true - - '@angular-devkit/build-webpack@0.2000.0': - resolution: {integrity: sha512-bIbz6uFQLTBvmadWJo/KEF1GruqIC23HF8YcUfy/1AuSd07EjoWL8wZrpl6eY+RE8hjua3AC1XSrzWD2e+xd8w==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - webpack: '>=5.104.1' - webpack-dev-server: '>=5.2.4' - - '@angular-devkit/core@20.0.0': - resolution: {integrity: sha512-cnB/I1QQC3WoIcb+f/7hknOOkgIFjAuxd7nW1RnS+pn0qQTWyjnXjq2jocx2TBMwZRikycc7f3mlA1DgWzJUuQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - chokidar: ^4.0.0 - peerDependenciesMeta: - chokidar: - optional: true - '@angular-devkit/core@21.2.13': resolution: {integrity: sha512-9jLaHcUr6BumIY9nCsBib1q62p259nf++gd2igYJ7mLm1w/0wEacsZ1cC8wCGEe6vx8a+DrD+EVCQ6zivePG2A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -665,52 +559,6 @@ packages: peerDependencies: '@angular/core': 21.2.15 - '@angular/build@20.0.0': - resolution: {integrity: sha512-b/FAvvUbsMEgr+UlvTtDz4NCv+BFi+55swtKRmaritvZ2rDfhF1x9tUmSkT6GebGXkI/Gg0kl5rJoD5iv5lY3A==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - '@angular/compiler': ^20.0.0 - '@angular/compiler-cli': ^20.0.0 - '@angular/core': ^20.0.0 - '@angular/localize': ^20.0.0 - '@angular/platform-browser': ^20.0.0 - '@angular/platform-server': ^20.0.0 - '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.0.0 - karma: ^6.4.0 - less: ^4.2.0 - ng-packagr: ^20.0.0 - postcss: ^8.4.0 - tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 - tslib: ^2.3.0 - typescript: '>=5.8 <5.9' - vitest: ^3.1.1 - peerDependenciesMeta: - '@angular/core': - optional: true - '@angular/localize': - optional: true - '@angular/platform-browser': - optional: true - '@angular/platform-server': - optional: true - '@angular/service-worker': - optional: true - '@angular/ssr': - optional: true - karma: - optional: true - less: - optional: true - ng-packagr: - optional: true - postcss: - optional: true - tailwindcss: - optional: true - vitest: - optional: true - '@angular/build@21.2.13': resolution: {integrity: sha512-Y9TDAaTQ+E5LScCKA/hPZmns/7Mpu6J2BiPj2cETA1xNjvgRpeb5Mh32KuhZb20NSFLvjpdnLuBTTtbym7hevw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -882,7 +730,7 @@ packages: resolution: {integrity: sha512-TajUJwGWbDwkCx/CZi7tRE8PVB7simCvKJfHUsSdvps+aTM/PDPP4gkLmKnc+x3CE//y9i/nj74GqdL/hwk7Iw==} engines: {node: '>=10'} peerDependencies: - ajv: '>=8.18.0' + ajv: '>=8' '@asamuzakjp/css-color@5.1.11': resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} @@ -911,18 +759,10 @@ packages: resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} engines: {node: '>=6.9.0'} - '@babel/core@7.27.1': - resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} - engines: {node: '>=6.9.0'} - '@babel/core@7.29.0': resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.1': - resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.28.5': resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} @@ -931,10 +771,6 @@ packages: resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.27.1': - resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} - engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} @@ -1208,24 +1044,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.27.1': - resolution: {integrity: sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.29.0': resolution: {integrity: sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.27.1': - resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.28.6': resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} engines: {node: '>=6.9.0'} @@ -1532,12 +1356,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.27.2': - resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/preset-env@7.29.5': resolution: {integrity: sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==} engines: {node: '>=6.9.0'} @@ -1736,10 +1554,6 @@ packages: resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} engines: {node: '>=20.19.0'} - '@discoveryjs/json-ext@0.6.3': - resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} - engines: {node: '>=14.17.0'} - '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} @@ -1758,12 +1572,6 @@ packages: '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - '@esbuild/aix-ppc64@0.25.5': - resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.27.3': resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} engines: {node: '>=18'} @@ -1782,12 +1590,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.5': - resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.27.3': resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} engines: {node: '>=18'} @@ -1806,12 +1608,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.5': - resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.27.3': resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} engines: {node: '>=18'} @@ -1830,12 +1626,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.5': - resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.27.3': resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} engines: {node: '>=18'} @@ -1854,12 +1644,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.5': - resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.27.3': resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} engines: {node: '>=18'} @@ -1878,12 +1662,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.5': - resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.27.3': resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} engines: {node: '>=18'} @@ -1902,12 +1680,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.5': - resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.27.3': resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} engines: {node: '>=18'} @@ -1926,12 +1698,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.5': - resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.27.3': resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} engines: {node: '>=18'} @@ -1950,12 +1716,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.5': - resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.27.3': resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} engines: {node: '>=18'} @@ -1974,12 +1734,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.5': - resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.27.3': resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} engines: {node: '>=18'} @@ -1998,12 +1752,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.5': - resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.27.3': resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} engines: {node: '>=18'} @@ -2022,12 +1770,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.5': - resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.27.3': resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} engines: {node: '>=18'} @@ -2046,12 +1788,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.5': - resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.27.3': resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} engines: {node: '>=18'} @@ -2070,12 +1806,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.5': - resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.27.3': resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} engines: {node: '>=18'} @@ -2094,12 +1824,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.5': - resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.27.3': resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} engines: {node: '>=18'} @@ -2118,12 +1842,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.5': - resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.27.3': resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} engines: {node: '>=18'} @@ -2142,12 +1860,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.5': - resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.27.3': resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} engines: {node: '>=18'} @@ -2166,12 +1878,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.5': - resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.27.3': resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} engines: {node: '>=18'} @@ -2190,12 +1896,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.5': - resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.27.3': resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} engines: {node: '>=18'} @@ -2214,12 +1914,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.5': - resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.27.3': resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} engines: {node: '>=18'} @@ -2238,12 +1932,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.5': - resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.27.3': resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} engines: {node: '>=18'} @@ -2280,12 +1968,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.5': - resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.27.3': resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} engines: {node: '>=18'} @@ -2304,12 +1986,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.5': - resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.27.3': resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} engines: {node: '>=18'} @@ -2328,12 +2004,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.5': - resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.27.3': resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} engines: {node: '>=18'} @@ -2352,12 +2022,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.5': - resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.27.3': resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} engines: {node: '>=18'} @@ -2435,7 +2099,7 @@ packages: resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==} engines: {node: '>=18.14.1'} peerDependencies: - hono: '>=4.12.18' + hono: ^4 '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -2482,15 +2146,6 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.10': - resolution: {integrity: sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/confirm@5.1.21': resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} engines: {node: '>=18'} @@ -2772,71 +2427,36 @@ packages: '@inquirer/prompts': '>= 3 < 8' listr2: 9.0.5 - '@lmdb/lmdb-darwin-arm64@3.3.0': - resolution: {integrity: sha512-LipbQobyEfQtu8WixasaFUZZ+JCGlho4OWwWIQ5ol0rB1RKkcZvypu7sS1CBvofBGVAa3vbOh8IOGQMrbmL5dg==} - cpu: [arm64] - os: [darwin] - '@lmdb/lmdb-darwin-arm64@3.5.1': resolution: {integrity: sha512-tpfN4kKrrMpQ+If1l8bhmoNkECJi0iOu6AEdrTJvWVC+32sLxTARX5Rsu579mPImRP9YFWfWgeRQ5oav7zApQQ==} cpu: [arm64] os: [darwin] - '@lmdb/lmdb-darwin-x64@3.3.0': - resolution: {integrity: sha512-yA+9P+ZeA3vg76BLXWeUomIAjxfmSmR2eg8fueHXDg5Xe1Xmkl9JCKuHXUhtJ+mMVcH12d5k4kJBLbyXTadfGQ==} - cpu: [x64] - os: [darwin] - '@lmdb/lmdb-darwin-x64@3.5.1': resolution: {integrity: sha512-+a2tTfc3rmWhLAolFUWRgJtpSuu+Fw/yjn4rF406NMxhfjbMuiOUTDRvRlMFV+DzyjkwnokisskHbCWkS3Ly5w==} cpu: [x64] os: [darwin] - '@lmdb/lmdb-linux-arm64@3.3.0': - resolution: {integrity: sha512-OeWvSgjXXZ/zmtLqqL78I3910F6UYpUubmsUU+iBHo6nTtjkpXms95rJtGrjkWQqwswKBD7xSMplbYC4LEsiPA==} - cpu: [arm64] - os: [linux] - '@lmdb/lmdb-linux-arm64@3.5.1': resolution: {integrity: sha512-aoERa5B6ywXdyFeYGQ1gbQpkMkDbEo45qVoXE5QpIRavqjnyPwjOulMkmkypkmsbJ5z4Wi0TBztON8agCTG0Vg==} cpu: [arm64] os: [linux] - '@lmdb/lmdb-linux-arm@3.3.0': - resolution: {integrity: sha512-EDYrW9kle+8wI19JCj/PhRnGoCN9bked5cdOPdo1wdgH/HzjgoLPFTn9DHlZccgTEVhp3O+bpWXdN/rWySVvjw==} - cpu: [arm] - os: [linux] - '@lmdb/lmdb-linux-arm@3.5.1': resolution: {integrity: sha512-0EgcE6reYr8InjD7V37EgXcYrloqpxVPINy3ig1MwDSbl6LF/vXTYRH9OE1Ti1D8YZnB35ZH9aTcdfSb5lql2A==} cpu: [arm] os: [linux] - '@lmdb/lmdb-linux-x64@3.3.0': - resolution: {integrity: sha512-wDd02mt5ScX4+xd6g78zKBr6ojpgCJCTrllCAabjgap5FzuETqOqaQfKhO+tJuGWv/J5q+GIds6uY7rNFueOxg==} - cpu: [x64] - os: [linux] - '@lmdb/lmdb-linux-x64@3.5.1': resolution: {integrity: sha512-SqNDY1+vpji7bh0sFH5wlWyFTOzjbDOl0/kB5RLLYDAFyd/uw3n7wyrmas3rYPpAW7z18lMOi1yKlTPv967E3g==} cpu: [x64] os: [linux] - '@lmdb/lmdb-win32-arm64@3.3.0': - resolution: {integrity: sha512-COotWhHJgzXULLiEjOgWQwqig6PoA+6ji6W+sDl6M1HhMXWIymEVHGs0edsVSNtsNSCAWMxJgR3asv6FNX/2EA==} - cpu: [arm64] - os: [win32] - '@lmdb/lmdb-win32-arm64@3.5.1': resolution: {integrity: sha512-50v0O1Lt37cwrmR9vWZK5hRW0Aw+KEmxJJ75fge/zIYdvNKB/0bSMSVR5Uc2OV9JhosIUyklOmrEvavwNJ8D6w==} cpu: [arm64] os: [win32] - '@lmdb/lmdb-win32-x64@3.3.0': - resolution: {integrity: sha512-kqUgQH+l8HDbkAapx+aoko7Ez4X4DqkIraOqY/k0QY5EN/iialVlFpBUXh4wFXzirdmEVjbIUMrceUh0Kh8LeA==} - cpu: [x64] - os: [win32] - '@lmdb/lmdb-win32-x64@3.5.1': resolution: {integrity: sha512-qwosvPyl+zpUlp3gRb7UcJ3H8S28XHCzkv0Y0EgQToXjQP91ZD67EHSCDmaLjtKhe+GVIW5om1KUpzVLA0l6pg==} cpu: [x64] @@ -2915,7 +2535,7 @@ packages: peerDependencies: typescript: ^4.9.0 || ^5.0.0 vue-tsc: '>=1.0.24' - webpack: '>=5.104.1' + webpack: ^5.0.0 peerDependenciesMeta: typescript: optional: true @@ -2930,7 +2550,7 @@ packages: peerDependencies: typescript: ^4.9.0 || ^5.0.0 vue-tsc: '>=1.0.24' - webpack: '>=5.104.1' + webpack: ^5.0.0 peerDependenciesMeta: typescript: optional: true @@ -2979,7 +2599,7 @@ packages: next: '*' react: ^16||^17||^18||^19 react-dom: ^16||^17||^18||^19 - webpack: '>=5.104.1' + webpack: ^5.40.0 peerDependenciesMeta: next: optional: true @@ -3067,7 +2687,7 @@ packages: '@module-federation/vite@1.16.2': resolution: {integrity: sha512-XjfReMlQWe+i0SCmkbhrqIuo7WEGIoWH4AsvBQ9gLBa+DxA4qnygJrL6kHi7T1z7EVNRhTTysTHm4ezXGkvr5Q==} peerDependencies: - vite: '>=6.4.2' + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 '@module-federation/webpack-bundler-runtime@0.21.6': resolution: {integrity: sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ==} @@ -3146,42 +2766,49 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@napi-rs/nice-linux-arm64-musl@1.1.1': resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@napi-rs/nice-linux-ppc64-gnu@1.1.1': resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==} engines: {node: '>= 10'} cpu: [ppc64] os: [linux] + libc: [glibc] '@napi-rs/nice-linux-riscv64-gnu@1.1.1': resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] + libc: [glibc] '@napi-rs/nice-linux-s390x-gnu@1.1.1': resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==} engines: {node: '>= 10'} cpu: [s390x] os: [linux] + libc: [glibc] '@napi-rs/nice-linux-x64-gnu@1.1.1': resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@napi-rs/nice-linux-x64-musl@1.1.1': resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@napi-rs/nice-openharmony-arm64@1.1.1': resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==} @@ -3240,14 +2867,6 @@ packages: rxjs: optional: true - '@ngtools/webpack@20.0.0': - resolution: {integrity: sha512-3kT8PlLDvThhZxNbJWdG2qrZrUOg0tAjd7mnsOsg65/2tsBZ2HaR3fSzkHOG+Ly6SlWiS4owKWqPRGlgFuq1bw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - '@angular/compiler-cli': ^20.0.0 - typescript: '>=5.8 <5.9' - webpack: '>=5.104.1' - '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} @@ -3397,21 +3016,25 @@ packages: resolution: {integrity: sha512-QLnkJl3HkHsPfpLiNiAiMfpfAeFpic0U1diAxF8RqChOkCpQ7ulvyBVgE1UrQxvhd+gFQ3ed5RNDxtCRw8nTiw==} cpu: [arm64] os: [linux] + libc: [glibc] '@nx/nx-linux-arm64-musl@22.7.5': resolution: {integrity: sha512-cEP6KmwBgnb38+jTTaibWCjwXcHmigqhTfy0tN1be7WZr6bHxbqNLsXqKRN70PSNA3HouZcxw1cdRL8tqbPBBA==} cpu: [arm64] os: [linux] + libc: [musl] '@nx/nx-linux-x64-gnu@22.7.5': resolution: {integrity: sha512-tbaX1tZCSpGifDNBfDdEZAMxVF3Yg4bhFP/bm1needc0diqb+Zflc0u5tM5/6BWDMITQDwenJVsNiQ8ZdtJURA==} cpu: [x64] os: [linux] + libc: [glibc] '@nx/nx-linux-x64-musl@22.7.5': resolution: {integrity: sha512-H0M7csOZIgPT822LqjxSXzf4MXRND15vIkAQe3F3Jlr3Si8LC3tzbL52aVcRfgb8MF/xOB5U47mSwxWt1M2bPQ==} cpu: [x64] os: [linux] + libc: [musl] '@nx/nx-win32-arm64-msvc@22.7.5': resolution: {integrity: sha512-JTcZch9YAnDL1gbhqePz3DZ4x7iYemLn1yJzrjbbXAmXju2eiiJiZvJJHbV06+SP9HKXDT8RjTKuAWTdVxnHug==} @@ -3440,14 +3063,14 @@ packages: '@nx/vite@22.7.5': resolution: {integrity: sha512-udKstx9fDT+Z/SacxVBJWdqDhaxee9/rA+F6nyg97PTH4JAGVuj+LZIFPakqiSg623GXMAGmK0gzAswAuWrYIQ==} peerDependencies: - vite: '>=6.4.2' + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vitest: ^1.3.1 || ^2.0.0 || ^3.0.0 || ^4.0.0 '@nx/vitest@22.7.5': resolution: {integrity: sha512-+E/IOIpzKbIfnTugx5vk9nDRw9tJEPIdNguYusSrzyZ6UNxiLBO9ipamNKiXw/4lPCtGH2TGx6M9nBQDUg/ciQ==} peerDependencies: '@nx/eslint': 22.7.5 - vite: '>=6.4.2' + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vitest: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 peerDependenciesMeta: '@nx/eslint': @@ -3549,48 +3172,56 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] '@oxc-parser/binding-linux-arm64-musl@0.121.0': resolution: {integrity: sha512-qT663J/W8yQFw3dtscbEi9LKJevr20V7uWs2MPGTnvNZ3rm8anhhE16gXGpxDOHeg9raySaSHKhd4IGa3YZvuw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] '@oxc-parser/binding-linux-ppc64-gnu@0.121.0': resolution: {integrity: sha512-mYNe4NhVvDBbPkAP8JaVS8lC1dsoJZWH5WCjpw5E+sjhk1R08wt3NnXYUzum7tIiWPfgQxbCMcoxgeemFASbRw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@oxc-parser/binding-linux-riscv64-gnu@0.121.0': resolution: {integrity: sha512-+QiFoGxhAbaI/amqX567784cDyyuZIpinBrJNxUzb+/L2aBRX67mN6Jv40pqduHf15yYByI+K5gUEygCuv0z9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [glibc] '@oxc-parser/binding-linux-riscv64-musl@0.121.0': resolution: {integrity: sha512-9ykEgyTa5JD/Uhv2sttbKnCfl2PieUfOjyxJC/oDL2UO0qtXOtjPLl7H8Kaj5G7p3hIvFgu3YWvAxvE0sqY+hQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [musl] '@oxc-parser/binding-linux-s390x-gnu@0.121.0': resolution: {integrity: sha512-DB1EW5VHZdc1lIRjOI3bW/wV6R6y0xlfvdVrqj6kKi7Ayu2U3UqUBdq9KviVkcUGd5Oq+dROqvUEEFRXGAM7EQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] + libc: [glibc] '@oxc-parser/binding-linux-x64-gnu@0.121.0': resolution: {integrity: sha512-s4lfobX9p4kPTclvMiH3gcQUd88VlnkMTF6n2MTMDAyX5FPNRhhRSFZK05Ykhf8Zy5NibV4PbGR6DnK7FGNN6A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] '@oxc-parser/binding-linux-x64-musl@0.121.0': resolution: {integrity: sha512-P9KlyTpuBuMi3NRGpJO8MicuGZfOoqZVRP1WjOecwx8yk4L/+mrCRNc5egSi0byhuReblBF2oVoDSMgV9Bj4Hw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] '@oxc-parser/binding-openharmony-arm64@0.121.0': resolution: {integrity: sha512-R+4jrWOfF2OAPPhj3Eb3U5CaKNAH9/btMveMULIrcNW/hjfysFQlF8wE0GaVBr81dWz8JLgQlsxwctoL78JwXw==} @@ -3673,41 +3304,49 @@ packages: resolution: {integrity: sha512-VBZZ/5uYiFs+09h1royv78GAEPPy5Bsro53hPWMlJL/E9pPibaj3fCzZEAnrKSzVpvwf7+QSc5w7ZUrX3xAKpg==} cpu: [arm64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-arm64-musl@11.6.2': resolution: {integrity: sha512-x+LooeNXy3hhvDT7q29jLjh914OYX9YnrQbGT3ogep5EY/LLbUiG3LV8XSrWRqXD5132gea9SOYxmcpF9i6xTQ==} cpu: [arm64] os: [linux] + libc: [musl] '@oxc-resolver/binding-linux-ppc64-gnu@11.6.2': resolution: {integrity: sha512-+CluEbUpAaKvcNREZtUUiunqzo5o0/qp+6xoFkbDAwNhWIw1mtWCg1Di++Fa053Cah/Rx+dRMQteANoMBGCxxg==} cpu: [ppc64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-riscv64-gnu@11.6.2': resolution: {integrity: sha512-OKWK/QvC6gECaeCNjfhuj0yiqMIisS0ewCRAmgT2pyxDwkNWgSm2wli+Tj/gpLjua2HjFDnDEcg0/dOoO6+xQg==} cpu: [riscv64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-riscv64-musl@11.6.2': resolution: {integrity: sha512-YtQ3hLvhVzan3boR44C0qu/jiTanaBAL9uTqs/S2tzOLfpO2PoTDbQDgADvOqYJDTJkOGiofJC2E1lJcRmpbXQ==} cpu: [riscv64] os: [linux] + libc: [musl] '@oxc-resolver/binding-linux-s390x-gnu@11.6.2': resolution: {integrity: sha512-pcX/ih9QHrEWliiXJdZoX/bnfOlr5E0eOWSG2ew5U1HntGket/1AcdcA4UH3MQU/TrOLxxiKhGzeZv+fwewmmA==} cpu: [s390x] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-x64-gnu@11.6.2': resolution: {integrity: sha512-LFYSgeYW11u4cQXzgIGthqCRAoLvl0IqbIMGeJLVt1tD7yrpTukfQynMzwP3vuTK5hmWgYc7NfK6G5+Zv/75hw==} cpu: [x64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-x64-musl@11.6.2': resolution: {integrity: sha512-IE13zwhg+XX9FVQHADbIe6RB2MgQeqyKdGyH67meGPgqCbLqT41K9qAm0k2uDlSswjLK8nhNe5Z+hhopBKzRRg==} cpu: [x64] os: [linux] + libc: [musl] '@oxc-resolver/binding-wasm32-wasi@11.6.2': resolution: {integrity: sha512-6nNW/wOKrptS9Rebf83aHvIsIiNcXOEWwUmhMR/4MHrH07zbcptBoZQcWO6362B9Y2lMN7dIF9v7brQcNDs63A==} @@ -3758,36 +3397,42 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.6': resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.6': resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.6': resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.6': resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.6': resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] '@parcel/watcher-wasm@2.5.6': resolution: {integrity: sha512-byAiBZ1t3tXQvc8dMD/eoyE7lTXYorhn+6uVW5AC+JGI1KtJC/LvDche5cfUE+qiefH+Ybq0bUCJU0aB1cSHUA==} @@ -3949,60 +3594,70 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] '@rolldown/binding-linux-arm64-gnu@1.0.2': resolution: {integrity: sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4': resolution: {integrity: sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] '@rolldown/binding-linux-arm64-musl@1.0.2': resolution: {integrity: sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] '@rolldown/binding-linux-ppc64-gnu@1.0.2': resolution: {integrity: sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@rolldown/binding-linux-s390x-gnu@1.0.2': resolution: {integrity: sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] + libc: [glibc] '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': resolution: {integrity: sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] '@rolldown/binding-linux-x64-gnu@1.0.2': resolution: {integrity: sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': resolution: {integrity: sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] '@rolldown/binding-linux-x64-musl@1.0.2': resolution: {integrity: sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': resolution: {integrity: sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ==} @@ -4060,7 +3715,7 @@ packages: resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} engines: {node: '>=20.19.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: '>=4.0.0' peerDependenciesMeta: rollup: optional: true @@ -4071,7 +3726,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0 '@types/babel__core': ^7.1.9 - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0 peerDependenciesMeta: '@types/babel__core': optional: true @@ -4080,7 +3735,7 @@ packages: resolution: {integrity: sha512-S/ggWH1LU7jTyi9DxZOKyxpVd4hF/OZ0JrEbeLjXk/DFXwRny0tjD2c992zOUYQobLrVkRVMDdmHP16HKP7GRg==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -4089,7 +3744,7 @@ packages: resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -4098,7 +3753,7 @@ packages: resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -4107,7 +3762,7 @@ packages: resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^2.78.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -4116,7 +3771,7 @@ packages: resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^2.78.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -4124,13 +3779,13 @@ packages: '@rollup/plugin-replace@2.4.2': resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0 || ^2.0.0 '@rollup/plugin-replace@6.0.3': resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -4139,7 +3794,7 @@ packages: resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -4148,7 +3803,7 @@ packages: resolution: {integrity: sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==} engines: {node: '>=20.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -4157,13 +3812,13 @@ packages: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0 '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: '>=4.59.0' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -4202,66 +3857,79 @@ packages: resolution: {integrity: sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.60.3': resolution: {integrity: sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.60.3': resolution: {integrity: sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.60.3': resolution: {integrity: sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.60.3': resolution: {integrity: sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.60.3': resolution: {integrity: sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==} cpu: [loong64] os: [linux] + libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.60.3': resolution: {integrity: sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.60.3': resolution: {integrity: sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==} cpu: [ppc64] os: [linux] + libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.60.3': resolution: {integrity: sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.60.3': resolution: {integrity: sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.60.3': resolution: {integrity: sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.60.3': resolution: {integrity: sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.60.3': resolution: {integrity: sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openbsd-x64@4.60.3': resolution: {integrity: sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==} @@ -4307,21 +3975,25 @@ packages: resolution: {integrity: sha512-fvZX6xZPvBT8qipSpvkKMX5M7yd2BSpZNCZXcefw6gA3uC7LI3gu+er0LrDXY1PtPzVuHTyDx+abwWpagV3PiQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@rspack/binding-linux-arm64-musl@1.6.8': resolution: {integrity: sha512-++XMKcMNrt59HcFBLnRaJcn70k3X0GwkAegZBVpel8xYIAgvoXT5+L8P1ExId/yTFxqedaz8DbcxQnNmMozviw==} cpu: [arm64] os: [linux] + libc: [musl] '@rspack/binding-linux-x64-gnu@1.6.8': resolution: {integrity: sha512-tv3BWkTE1TndfX+DsE1rSTg8fBevCxujNZ3MlfZ22Wfy9x1FMXTJlWG8VIOXmaaJ1wUHzv8S7cE2YUUJ2LuiCg==} cpu: [x64] os: [linux] + libc: [glibc] '@rspack/binding-linux-x64-musl@1.6.8': resolution: {integrity: sha512-DCGgZ5/in1O3FjHWqXnDsncRy+48cMhfuUAAUyl0yDj1NpsZu9pP+xfGLvGcQTiYrVl7IH9Aojf1eShP/77WGA==} cpu: [x64] os: [linux] + libc: [musl] '@rspack/binding-wasm32-wasi@1.6.8': resolution: {integrity: sha512-VUwdhl/lI4m6o1OGCZ9JwtMjTV/yLY5VZTQdEPKb40JMTlmZ5MBlr5xk7ByaXXYHr6I+qnqEm73iMKQvg6iknw==} @@ -4494,36 +4166,42 @@ packages: engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [glibc] '@swc/core-linux-arm64-musl@1.15.40': resolution: {integrity: sha512-4z0MgHU+7M0pZDqBN1El7mFXDI1SBwinfcUkAyA4v8QrhOIUOZltySt2aStQLZGrdXVXM4Y4ylfiTC04ED+MoQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [musl] '@swc/core-linux-ppc64-gnu@1.15.40': resolution: {integrity: sha512-fLI4iUgeSZu0eRWUXwe6YzPFx9gHbFiPkl8Rp3mJfP8OpNR3nTQCGPvHdDh9xniW7mVvgMY4ni7A4VzqI1KrpA==} engines: {node: '>=10'} cpu: [ppc64] os: [linux] + libc: [glibc] '@swc/core-linux-s390x-gnu@1.15.40': resolution: {integrity: sha512-YqeKMAb7d4nQSGMJQ454IlaCENpzcDqhvBE9+CPfdnYpnUXxd+BSrB6Xk0YjW8UyoEhUj4p6quATCxbsp6J3jg==} engines: {node: '>=10'} cpu: [s390x] os: [linux] + libc: [glibc] '@swc/core-linux-x64-gnu@1.15.40': resolution: {integrity: sha512-7HOuS1iGcme/j/TuL1TfmmLGiMQrjv/GmjyZeydl00FKPtpGXEldwqfI56xgd1YzrzoB2svWjxbGGyQ0TEASxg==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [glibc] '@swc/core-linux-x64-musl@1.15.40': resolution: {integrity: sha512-h4kZYHc7dpc9P9u4brRJaS8Pl7tPVHAeiLSzw7T5RfIJgAoSdaCMKzI/2Uay9gFhaw8uyCDl0L5q37r0EpAfIA==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [musl] '@swc/core-win32-arm64-msvc@1.15.40': resolution: {integrity: sha512-+mQgKZXSj6mV38Zh05QaxSjUDmGP/R2JWlXZTDLSPkDzHU6p3GxN9eeSf5dfyDVU86946fmCvSzyl/ucImx8+A==} @@ -4599,24 +4277,28 @@ packages: engines: {node: '>= 20'} cpu: [arm64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.3.0': resolution: {integrity: sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] + libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.3.0': resolution: {integrity: sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==} engines: {node: '>= 20'} cpu: [x64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.3.0': resolution: {integrity: sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==} engines: {node: '>= 20'} cpu: [x64] os: [linux] + libc: [musl] '@tailwindcss/oxide-wasm32-wasi@4.3.0': resolution: {integrity: sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==} @@ -4898,6 +4580,9 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + '@types/node-forge@1.3.14': + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} + '@types/node@25.6.2': resolution: {integrity: sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==} @@ -5103,41 +4788,49 @@ packages: resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] + libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} @@ -5167,17 +4860,11 @@ packages: engines: {node: '>=20'} hasBin: true - '@vitejs/plugin-basic-ssl@2.0.0': - resolution: {integrity: sha512-gc9Tjg8bUxBVSTzeWT3Njc0Cl3PakHFKdNfABnZWiUgbxqmHDEn7uECv3fHVylxoYgNzAcmU7ZrILz+BwSo3sA==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - peerDependencies: - vite: '>=6.4.2' - '@vitejs/plugin-basic-ssl@2.1.4': resolution: {integrity: sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} peerDependencies: - vite: '>=6.4.2' + vite: ^6.0.0 || ^7.0.0 '@vitest/coverage-v8@4.1.7': resolution: {integrity: sha512-qsYPeXc5Q9dFLd1i8Ap+Bx8sQgcp+rFVQo4R0dDsWNBzl26ldVF1qOO+RL24K7FDrR6pA+50XedRLSoSG24bVQ==} @@ -5195,7 +4882,7 @@ packages: resolution: {integrity: sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==} peerDependencies: msw: ^2.4.9 - vite: '>=6.4.2' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true @@ -5334,10 +5021,6 @@ packages: resolution: {integrity: sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==} engines: {node: '>= 16.0.0'} - adjust-sourcemap-loader@4.0.0: - resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} - engines: {node: '>=8.9'} - adm-zip@0.5.10: resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} engines: {node: '>=6.0'} @@ -5353,7 +5036,7 @@ packages: ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: - ajv: '>=8.18.0' + ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true @@ -5361,7 +5044,7 @@ packages: ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: - ajv: '>=8.18.0' + ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true @@ -5374,11 +5057,14 @@ packages: ajv-keywords@5.1.0: resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: - ajv: '>=8.18.0' + ajv: ^8.8.2 ajv@6.14.0: resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + ajv@8.20.0: resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} @@ -5501,13 +5187,6 @@ packages: resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - autoprefixer@10.5.0: resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} engines: {node: ^10 || ^12 || >=14} @@ -5540,19 +5219,12 @@ packages: peerDependencies: '@babel/core': ^7.11.0 - babel-loader@10.0.0: - resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} - engines: {node: ^18.20.0 || ^20.10.0 || >=22.0.0} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5.104.1' - babel-loader@9.2.1: resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 - webpack: '>=5.104.1' + webpack: '>=5' babel-plugin-const-enum@1.2.0: resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} @@ -5678,10 +5350,6 @@ packages: batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - beasties@0.3.4: - resolution: {integrity: sha512-NmzN1zN1cvGccXFyZ73335+ASXwBlVWcUPssiUDIlFdfyatHPRRufjCd5w8oPaQPvVnf9ELklaCGb1gi9FBwIw==} - engines: {node: '>=14.0.0'} - beasties@0.4.1: resolution: {integrity: sha512-2Imdcw3LznDuxAbJM26RHniOLAzE6WgrK8OuvVXCQtNBS8rsnD9zsSEa3fHl4hHpUY7BYTlrpvtPVbvu9G6neg==} engines: {node: '>=18.0.0'} @@ -5719,9 +5387,8 @@ packages: brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@5.0.5: - resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} - engines: {node: 18 || 20 || >=22} + brace-expansion@2.1.1: + resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} brace-expansion@5.0.6: resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} @@ -5913,10 +5580,6 @@ packages: resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} engines: {node: '>=18.20'} - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} - cli-truncate@5.2.0: resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} engines: {node: '>=20'} @@ -5929,9 +5592,6 @@ packages: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} - clipboard@2.0.11: - resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==} - cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -6122,17 +5782,11 @@ packages: copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - copy-webpack-plugin@13.0.0: - resolution: {integrity: sha512-FgR/h5a6hzJqATDGd9YG41SeDViH+0bkHn6WNXCi5zKAZkeESeSxLySSsFLHqLEVCh0E+rITmCf0dusXWYukeQ==} - engines: {node: '>= 18.12.0'} - peerDependencies: - webpack: '>=5.104.1' - copy-webpack-plugin@14.0.0: resolution: {integrity: sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==} engines: {node: '>= 20.9.0'} peerDependencies: - webpack: '>=5.104.1' + webpack: ^5.1.0 core-js-compat@3.49.0: resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} @@ -6226,19 +5880,7 @@ packages: engines: {node: '>= 12.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x - webpack: '>=5.104.1' - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - css-loader@7.1.2: - resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: '>=5.104.1' + webpack: ^5.0.0 peerDependenciesMeta: '@rspack/core': optional: true @@ -6255,7 +5897,7 @@ packages: csso: '*' esbuild: '*' lightningcss: '*' - webpack: '>=5.104.1' + webpack: ^5.0.0 peerDependenciesMeta: '@parcel/css': optional: true @@ -6617,9 +6259,6 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - delegate@3.2.0: - resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} - delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} @@ -6754,9 +6393,6 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - emoji-toolkit@9.0.1: - resolution: {integrity: sha512-sMMNqKNLVHXJfIKoPbrRJwtYuysVNC9GlKetr72zE3SSVbHqoeDLWVrxP0uM0AE0qvdl3hbUk+tJhhwXZrDHaw==} - emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} @@ -6849,16 +6485,6 @@ packages: es-toolkit@1.46.1: resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==} - esbuild-wasm@0.25.5: - resolution: {integrity: sha512-V/rbdOws2gDcnCAECfPrajhuafI0WY4WumUgc8ZHwOLnvmM0doLQ+dqvVFI2qkVxQsvo6880aC9IjpyDqcwwTw==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.25.5: - resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.27.3: resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} engines: {node: '>=18'} @@ -7083,7 +6709,7 @@ packages: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: - picomatch: '>=4.0.4' + picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true @@ -7178,7 +6804,7 @@ packages: engines: {node: '>=14.21.3'} peerDependencies: typescript: '>3.6.0' - webpack: '>=5.104.1' + webpack: ^5.11.0 form-data@4.0.5: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} @@ -7188,9 +6814,6 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} @@ -7368,9 +6991,6 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - good-listener@1.2.2: - resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -7651,8 +7271,12 @@ packages: resolution: {integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==} engines: {node: '>=12.22.0'} - ip-address@10.2.0: - resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + engines: {node: '>= 12'} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} ip-regex@4.3.0: @@ -7731,10 +7355,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - is-fullwidth-code-point@5.1.0: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} @@ -7869,10 +7489,6 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - is-unicode-supported@2.1.0: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} @@ -7931,7 +7547,7 @@ packages: isomorphic-ws@5.0.0: resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: - ws: '>=8.20.1' + ws: '*' istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} @@ -8080,10 +7696,6 @@ packages: resolution: {integrity: sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - jiti@2.4.2: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true @@ -8112,6 +7724,9 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsdom@29.1.1: resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} @@ -8181,9 +7796,6 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} - karma-source-map-support@1.4.0: - resolution: {integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==} - katex@0.16.45: resolution: {integrity: sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==} hasBin: true @@ -8220,8 +7832,8 @@ packages: koa-compose@4.1.0: resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} - koa@3.2.0: - resolution: {integrity: sha512-TrM4/tnNY7uJ1aW55sIIa+dqBvc4V14WRIAlGcWat9wV5pRS9Wr5Zk2ZTjQP1jtfIHDoHiSbPuV08P0fUZo2pg==} + koa@3.0.3: + resolution: {integrity: sha512-MeuwbCoN1daWS32/Ni5qkzmrOtQO2qrnfdxDHjrm6s4b59yG4nexAJ0pTEFyzjLp0pBVO80CZp0vW8Ze30Ebow==} engines: {node: '>= 18'} launch-editor@2.13.2: @@ -8243,7 +7855,7 @@ packages: peerDependencies: '@rspack/core': 0.x || 1.x less: ^3.5.0 || ^4.0.0 - webpack: '>=5.104.1' + webpack: ^5.0.0 peerDependenciesMeta: '@rspack/core': optional: true @@ -8306,24 +7918,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.32.0: resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.32.0: resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.32.0: resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.32.0: resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} @@ -8365,18 +7981,10 @@ packages: resolution: {integrity: sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==} engines: {node: '>=22.13.0'} - listr2@8.3.3: - resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} - engines: {node: '>=18.0.0'} - listr2@9.0.5: resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} - lmdb@3.3.0: - resolution: {integrity: sha512-MgJocUI6QEiSXQBFWLeyo1R7eQj8Rke5dlPxX0KFwli8/bsCxpM/KbXO5y0qmV/5llQ3wpneDWcTYxa+4vn8iQ==} - hasBin: true - lmdb@3.5.1: resolution: {integrity: sha512-NYHA0MRPjvNX+vSw8Xxg6FLKxzAG+e7Pt8RqAQA/EehzHVXq9SxDqJIN3JL1hK0dweb884y8kIh6rkWvPyg9Wg==} hasBin: true @@ -8389,10 +7997,6 @@ packages: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} - loader-utils@3.3.1: - resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} - engines: {node: '>= 12.13.0'} - local-pkg@1.1.2: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} @@ -8440,10 +8044,6 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - log-symbols@7.0.1: resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} engines: {node: '>=18'} @@ -8484,9 +8084,6 @@ packages: magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -8653,21 +8250,11 @@ packages: resolution: {integrity: sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==} engines: {node: '>= 12.13.0'} peerDependencies: - webpack: '>=5.104.1' - - mini-css-extract-plugin@2.9.2: - resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: '>=5.104.1' + webpack: ^5.0.0 minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} - engines: {node: 18 || 20 || >=22} - minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} @@ -8679,6 +8266,10 @@ packages: resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} engines: {node: '>=10'} + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -8884,10 +8475,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - npm-bundled@5.0.0: resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -9009,10 +8596,6 @@ packages: resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} engines: {node: '>=10'} - ora@8.2.0: - resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} - engines: {node: '>=18'} - ora@9.3.0: resolution: {integrity: sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==} engines: {node: '>=20'} @@ -9100,24 +8683,15 @@ packages: parse-statements@1.0.11: resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} - parse5-html-rewriting-stream@7.1.0: - resolution: {integrity: sha512-2ifK6Jb+ONoqOy5f+cYHsqvx1obHQdvIk13Jmt/5ezxP0U9p+fqd+R6O73KblGswyuzBYfetmsfK9ThMgnuPPg==} - parse5-html-rewriting-stream@8.0.0: resolution: {integrity: sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==} - parse5-sax-parser@7.0.0: - resolution: {integrity: sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==} - parse5-sax-parser@8.0.0: resolution: {integrity: sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==} parse5@4.0.0: resolution: {integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==} - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - parse5@8.0.1: resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} @@ -9184,6 +8758,10 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} @@ -9200,10 +8778,6 @@ packages: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} - piscina@5.0.0: - resolution: {integrity: sha512-R+arufwL7sZvGjAhSMK3TfH55YdGOqhpKXkcwQJr432AAnJX/xxX19PA4QisrmJ+BTTfZVggaz6HexbkQq1l1Q==} - engines: {node: '>=18.x'} - piscina@5.1.4: resolution: {integrity: sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==} engines: {node: '>=20.x'} @@ -9298,26 +8872,13 @@ packages: peerDependencies: postcss: ^8.0.0 - postcss-loader@8.1.1: - resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - postcss: ^7.0.0 || ^8.0.1 - webpack: '>=5.104.1' - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - postcss-loader@8.2.1: resolution: {integrity: sha512-k98jtRzthjj3f76MYTs9JTpRqV1RaaMhEU0Lpw9OTmQZQdppg4B30VZ74BojuBHt3F4KyubHJoXCMUeM8Bqeow==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 postcss: ^7.0.0 || ^8.0.1 - webpack: '>=5.104.1' + webpack: ^5.0.0 peerDependenciesMeta: '@rspack/core': optional: true @@ -9492,10 +9053,6 @@ packages: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - powershell-utils@0.1.0: resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} engines: {node: '>=20'} @@ -9580,6 +9137,10 @@ packages: resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} engines: {node: '>=16.0.0'} + qs@6.14.2: + resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} + engines: {node: '>=0.6'} + qs@6.15.2: resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==} engines: {node: '>=0.6'} @@ -9596,6 +9157,9 @@ packages: rambda@9.4.2: resolution: {integrity: sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==} + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -9687,9 +9251,6 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regex-parser@2.3.1: - resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} - regex-recursion@5.1.1: resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} @@ -9737,10 +9298,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-url-loader@5.0.0: - resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} - engines: {node: '>=12'} - resolve.exports@2.0.3: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} @@ -9805,13 +9362,18 @@ packages: hasBin: true peerDependencies: rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc - rollup: '>=4.59.0' + rollup: 2.x || 3.x || 4.x peerDependenciesMeta: rolldown: optional: true rollup: optional: true + rollup@2.80.0: + resolution: {integrity: sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==} + engines: {node: '>=10.0.0'} + hasBin: true + rollup@4.60.3: resolution: {integrity: sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -9991,7 +9553,7 @@ packages: node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 sass: ^1.3.0 sass-embedded: '*' - webpack: '>=5.104.1' + webpack: ^5.0.0 peerDependenciesMeta: '@rspack/core': optional: true @@ -10004,20 +9566,11 @@ packages: webpack: optional: true - sass@1.88.0: - resolution: {integrity: sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==} - engines: {node: '>=14.0.0'} - hasBin: true - sass@1.97.3: resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==} engines: {node: '>=14.0.0'} hasBin: true - sax@1.4.4: - resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} - engines: {node: '>=11.0.0'} - sax@1.6.0: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} @@ -10053,8 +9606,9 @@ packages: select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - select@1.1.2: - resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==} + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} selfsigned@5.5.0: resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} @@ -10073,11 +9627,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -10091,6 +9640,9 @@ packages: resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} engines: {node: '>= 18'} + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + serialize-javascript@7.0.5: resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==} engines: {node: '>=20.0.0'} @@ -10189,10 +9741,6 @@ packages: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - slice-ansi@7.1.0: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} @@ -10239,7 +9787,7 @@ packages: resolution: {integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==} engines: {node: '>= 18.12.0'} peerDependencies: - webpack: '>=5.104.1' + webpack: ^5.72.1 source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -10254,10 +9802,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - source-map@0.7.6: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} @@ -10296,6 +9840,9 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + ssri@13.0.0: resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} engines: {node: ^20.17.0 || >=22.9.0} @@ -10324,10 +9871,6 @@ packages: std-env@4.1.0: resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} - stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - stdin-discarder@0.3.1: resolution: {integrity: sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==} engines: {node: '>=18'} @@ -10427,7 +9970,7 @@ packages: resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} engines: {node: '>= 12.13.0'} peerDependencies: - webpack: '>=5.104.1' + webpack: ^5.0.0 stylehacks@7.0.8: resolution: {integrity: sha512-I3f053GBLIiS5Fg6OMFhq/c+yW+5Hc2+1fgq7gElDMMSqwlRb3tBf2ef6ucLStYRpId4q//bQO1FjcyNyy4yDQ==} @@ -10438,11 +9981,6 @@ packages: stylis@4.4.0: resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==} - stylus@0.64.0: - resolution: {integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==} - engines: {node: '>=16'} - hasBin: true - supports-color@10.2.2: resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} engines: {node: '>=18'} @@ -10530,7 +10068,7 @@ packages: '@swc/core': '*' esbuild: '*' uglify-js: '*' - webpack: '>=5.104.1' + webpack: ^5.1.0 peerDependenciesMeta: '@swc/core': optional: true @@ -10539,11 +10077,6 @@ packages: uglify-js: optional: true - terser@5.39.1: - resolution: {integrity: sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==} - engines: {node: '>=10'} - hasBin: true - terser@5.47.1: resolution: {integrity: sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==} engines: {node: '>=10'} @@ -10565,9 +10098,6 @@ packages: thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - tiny-emitter@2.1.0: - resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} - tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -10583,10 +10113,6 @@ packages: resolution: {integrity: sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==} engines: {node: '>=18'} - tinyglobby@0.2.13: - resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -10677,7 +10203,7 @@ packages: engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' - webpack: '>=5.104.1' + webpack: ^5.0.0 ts-morph@21.0.1: resolution: {integrity: sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==} @@ -11027,8 +10553,9 @@ packages: resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} hasBin: true - uuid@14.0.0: - resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==} + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-compile-cache-lib@3.0.1: @@ -11063,7 +10590,7 @@ packages: engines: {node: '>=16.0.0'} peerDependencies: '@vite-pwa/assets-generator': ^1.0.0 - vite: '>=6.4.2' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 workbox-build: ^7.4.1 workbox-window: ^7.4.1 peerDependenciesMeta: @@ -11073,7 +10600,7 @@ packages: vite-tsconfig-paths@6.1.1: resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==} peerDependencies: - vite: '>=6.4.2' + vite: '*' vite@7.3.2: resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} @@ -11090,7 +10617,7 @@ packages: sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 - yaml: '>=2.8.3' + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true @@ -11131,7 +10658,7 @@ packages: sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 - yaml: '>=2.8.3' + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true @@ -11161,7 +10688,7 @@ packages: vitefu@1.1.3: resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} peerDependencies: - vite: '>=6.4.2' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: vite: optional: true @@ -11182,7 +10709,7 @@ packages: '@vitest/ui': 4.1.7 happy-dom: '*' jsdom: '*' - vite: '>=6.4.2' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -11214,10 +10741,6 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - watchpack@2.5.1: resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} engines: {node: '>=10.13.0'} @@ -11245,17 +10768,30 @@ packages: resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} engines: {node: '>= 18.12.0'} peerDependencies: - webpack: '>=5.104.1' + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-dev-server@5.2.2: + resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' peerDependenciesMeta: webpack: optional: true + webpack-cli: + optional: true webpack-dev-server@5.2.4: resolution: {integrity: sha512-GqDPGZN9bRqKBTkp4aWkobDDHMsrXKoGSdOH56smIri8qR0JG8gfL8/v/f/OZR3/OKXjG8uwJbFVhKm/FNU/UA==} engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: - webpack: '>=5.104.1' + webpack: ^5.0.0 webpack-cli: '*' peerDependenciesMeta: webpack: @@ -11267,10 +10803,6 @@ packages: resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} engines: {node: '>=10.0.0'} - webpack-merge@6.0.1: - resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} - engines: {node: '>=18.0.0'} - webpack-node-externals@3.0.0: resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} engines: {node: '>=6'} @@ -11284,7 +10816,7 @@ packages: engines: {node: '>= 12'} peerDependencies: html-webpack-plugin: '>= 5.0.0-beta.1 < 6' - webpack: '>=5.104.1' + webpack: ^5.12.0 peerDependenciesMeta: html-webpack-plugin: optional: true @@ -11451,6 +10983,18 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.21.0: resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} engines: {node: '>=10.0.0'} @@ -11500,8 +11044,8 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.8.3: - resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} hasBin: true @@ -11570,9 +11114,6 @@ packages: snapshots: - '@adobe/css-tools@4.3.3': - optional: true - '@alcalzone/ansi-tokenize@0.3.0': dependencies: ansi-styles: 6.2.3 @@ -11686,20 +11227,20 @@ snapshots: optionalDependencies: '@nx/devkit': 22.7.5(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) - '@analogjs/platform@2.5.2(c7005acc3ff391161f8eee26147d6b0f)': + '@analogjs/platform@2.5.2(214c067b1ad14b65b0579c4233c0049e)': dependencies: - '@analogjs/vite-plugin-angular': 2.5.2(@angular-devkit/build-angular@20.0.0(5051dee4ea0f423ab526f197e92d0945))(@angular/build@21.2.13(317a9c63e2a22ee97b948b5b731d9e1c))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + '@analogjs/vite-plugin-angular': 2.5.2(@angular/build@21.2.13(2fc71c60e1ba34e5381d5136307f56c3))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) '@analogjs/vite-plugin-nitro': 2.5.2(encoding@0.1.13)(oxc-parser@0.121.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rolldown@1.0.2) marked: 18.0.4 marked-gfm-heading-id: 4.1.4(marked@18.0.4) marked-mangle: 1.1.13(marked@18.0.4) nitropack: 2.13.4(encoding@0.1.13)(oxc-parser@0.121.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rolldown@1.0.2) - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) - vitefu: 1.1.3(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) + vitefu: 1.1.3(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) optionalDependencies: - '@nx/angular': 22.7.5(9d93e046e8af5178c45b7fe7b3d6e447) + '@nx/angular': 22.7.5(8deabd555917c9e594b192212ae17a3a) '@nx/devkit': 22.7.5(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) - '@nx/vite': 22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))(vitest@4.1.7) + '@nx/vite': 22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))(vitest@4.1.7) marked-highlight: 2.2.4(marked@18.0.4) marked-shiki: 1.2.1(marked@18.0.4)(shiki@1.29.2) prismjs: 1.30.0 @@ -11748,7 +11289,7 @@ snapshots: '@angular/router': 21.2.15(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.15(@angular/animations@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) tslib: 2.8.1 - '@analogjs/vite-plugin-angular@2.5.2(@angular-devkit/build-angular@20.0.0(5051dee4ea0f423ab526f197e92d0945))(@angular/build@21.2.13(317a9c63e2a22ee97b948b5b731d9e1c))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))': + '@analogjs/vite-plugin-angular@2.5.2(@angular/build@21.2.13(2fc71c60e1ba34e5381d5136307f56c3))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))': dependencies: magic-string: 0.30.21 obug: 2.1.1 @@ -11756,9 +11297,8 @@ snapshots: tinyglobby: 0.2.16 ts-morph: 21.0.1 optionalDependencies: - '@angular-devkit/build-angular': 20.0.0(5051dee4ea0f423ab526f197e92d0945) - '@angular/build': 21.2.13(317a9c63e2a22ee97b948b5b731d9e1c) - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + '@angular/build': 21.2.13(2fc71c60e1ba34e5381d5136307f56c3) + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -11803,23 +11343,15 @@ snapshots: - uploadthing - xml2js - '@analogjs/vitest-angular@2.5.2(@analogjs/vite-plugin-angular@2.5.2(@angular-devkit/build-angular@20.0.0(5051dee4ea0f423ab526f197e92d0945))(@angular/build@21.2.13(317a9c63e2a22ee97b948b5b731d9e1c))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)))(@angular-devkit/architect@0.2102.13(chokidar@5.0.0))(@angular-devkit/schematics@21.2.13(chokidar@5.0.0))(vitest@4.1.7)(zone.js@0.15.1)': + '@analogjs/vitest-angular@2.5.2(@analogjs/vite-plugin-angular@2.5.2(@angular/build@21.2.13(2fc71c60e1ba34e5381d5136307f56c3))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)))(@angular-devkit/architect@0.2102.13(chokidar@5.0.0))(@angular-devkit/schematics@21.2.13(chokidar@5.0.0))(vitest@4.1.7)(zone.js@0.15.1)': dependencies: - '@analogjs/vite-plugin-angular': 2.5.2(@angular-devkit/build-angular@20.0.0(5051dee4ea0f423ab526f197e92d0945))(@angular/build@21.2.13(317a9c63e2a22ee97b948b5b731d9e1c))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + '@analogjs/vite-plugin-angular': 2.5.2(@angular/build@21.2.13(2fc71c60e1ba34e5381d5136307f56c3))(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) '@angular-devkit/architect': 0.2102.13(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.13(chokidar@5.0.0) - vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) optionalDependencies: zone.js: 0.15.1 - '@angular-devkit/architect@0.2000.0(chokidar@5.0.0)': - dependencies: - '@angular-devkit/core': 20.0.0(chokidar@5.0.0) - rxjs: 7.8.2 - transitivePeerDependencies: - - chokidar - optional: true - '@angular-devkit/architect@0.2102.13(chokidar@5.0.0)': dependencies: '@angular-devkit/core': 21.2.13(chokidar@5.0.0) @@ -11827,123 +11359,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.0.0(5051dee4ea0f423ab526f197e92d0945)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.0(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2000.0(chokidar@5.0.0)(webpack-dev-server@5.2.4(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)))(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - '@angular-devkit/core': 20.0.0(chokidar@5.0.0) - '@angular/build': 20.0.0(23ff62c9a312d3748fcd53e604af97bb) - '@angular/compiler-cli': 21.2.15(@angular/compiler@21.2.15)(typescript@6.0.3) - '@babel/core': 7.27.1 - '@babel/generator': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-runtime': 7.27.1(@babel/core@7.27.1) - '@babel/preset-env': 7.27.2(@babel/core@7.27.1) - '@babel/runtime': 7.27.1 - '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.0.0(@angular/compiler-cli@21.2.15(@angular/compiler@21.2.15)(typescript@6.0.3))(typescript@6.0.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) - ansi-colors: 4.1.3 - autoprefixer: 10.4.21(postcss@8.5.3) - babel-loader: 10.0.0(@babel/core@7.27.1)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - browserslist: 4.28.2 - copy-webpack-plugin: 13.0.0(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - css-loader: 7.1.2(@rspack/core@1.6.8(@swc/helpers@0.5.23))(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - esbuild-wasm: 0.25.5 - fast-glob: 3.3.3 - http-proxy-middleware: 3.0.5 - istanbul-lib-instrument: 6.0.3 - jsonc-parser: 3.3.1 - karma-source-map-support: 1.4.0 - less: 4.3.0 - less-loader: 12.3.0(@rspack/core@1.6.8(@swc/helpers@0.5.23))(less@4.3.0)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - license-webpack-plugin: 4.0.2(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - loader-utils: 3.3.1 - mini-css-extract-plugin: 2.9.2(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - open: 10.1.2 - ora: 8.2.0 - picomatch: 4.0.4 - piscina: 5.0.0 - postcss: 8.5.3 - postcss-loader: 8.1.1(@rspack/core@1.6.8(@swc/helpers@0.5.23))(postcss@8.5.3)(typescript@6.0.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - resolve-url-loader: 5.0.0 - rxjs: 7.8.2 - sass: 1.88.0 - sass-loader: 16.0.5(@rspack/core@1.6.8(@swc/helpers@0.5.23))(sass-embedded@1.89.0)(sass@1.88.0)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - semver: 7.7.2 - source-map-loader: 5.0.0(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - source-map-support: 0.5.21 - terser: 5.39.1 - tree-kill: 1.2.2 - tslib: 2.8.1 - typescript: 6.0.3 - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.25.5) - webpack-dev-middleware: 7.4.2(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - webpack-dev-server: 5.2.4(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - optionalDependencies: - '@angular/core': 21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.2.15(@angular/animations@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server': 21.2.15(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.2.15)(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.15(@angular/animations@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/service-worker': 21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - esbuild: 0.25.5 - tailwindcss: 4.3.0 - transitivePeerDependencies: - - '@angular/compiler' - - '@rspack/core' - - '@swc/core' - - '@types/node' - - '@vitejs/devtools' - - bufferutil - - chokidar - - debug - - html-webpack-plugin - - jiti - - node-sass - - sass-embedded - - stylus - - sugarss - - supports-color - - tsx - - uglify-js - - utf-8-validate - - vite - - vitest - - webpack-cli - - yaml - optional: true - - '@angular-devkit/build-webpack@0.2000.0(chokidar@5.0.0)(webpack-dev-server@5.2.4(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)))(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0))': - dependencies: - '@angular-devkit/architect': 0.2000.0(chokidar@5.0.0) - rxjs: 7.8.2 - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - webpack-dev-server: 5.2.4(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - transitivePeerDependencies: - - chokidar - optional: true - - '@angular-devkit/core@20.0.0(chokidar@5.0.0)': - dependencies: - ajv: 8.20.0 - ajv-formats: 3.0.1(ajv@8.20.0) - jsonc-parser: 3.3.1 - picomatch: 4.0.4 - rxjs: 7.8.2 - source-map: 0.7.4 - optionalDependencies: - chokidar: 5.0.0 - optional: true - '@angular-devkit/core@21.2.13(chokidar@5.0.0)': dependencies: - ajv: 8.20.0 - ajv-formats: 3.0.1(ajv@8.20.0) + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) jsonc-parser: 3.3.1 picomatch: 4.0.4 rxjs: 7.8.2 @@ -12043,63 +11462,7 @@ snapshots: '@angular/core': 21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/build@20.0.0(23ff62c9a312d3748fcd53e604af97bb)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.0(chokidar@5.0.0) - '@angular/compiler': 21.2.15 - '@angular/compiler-cli': 21.2.15(@angular/compiler@21.2.15)(typescript@6.0.3) - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.10(@types/node@25.9.1) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) - beasties: 0.3.4 - browserslist: 4.28.2 - esbuild: 0.25.5 - https-proxy-agent: 7.0.6 - istanbul-lib-instrument: 6.0.3 - jsonc-parser: 3.3.1 - listr2: 8.3.3 - magic-string: 0.30.17 - mrmime: 2.0.1 - parse5-html-rewriting-stream: 7.1.0 - picomatch: 4.0.4 - piscina: 5.0.0 - rollup: 4.60.3 - sass: 1.88.0 - semver: 7.7.2 - source-map-support: 0.5.21 - tinyglobby: 0.2.13 - tslib: 2.8.1 - typescript: 6.0.3 - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.88.0)(stylus@0.64.0)(terser@5.39.1)(yaml@2.8.3) - watchpack: 2.4.2 - optionalDependencies: - '@angular/core': 21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 21.2.15(@angular/animations@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-server': 21.2.15(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@21.2.15)(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.15(@angular/animations@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/service-worker': 21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - less: 4.3.0 - lmdb: 3.3.0 - postcss: 8.5.3 - tailwindcss: 4.3.0 - vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) - transitivePeerDependencies: - - '@types/node' - - '@vitejs/devtools' - - chokidar - - jiti - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - optional: true - - '@angular/build@21.2.13(317a9c63e2a22ee97b948b5b731d9e1c)': + '@angular/build@21.2.13(2fc71c60e1ba34e5381d5136307f56c3)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2102.13(chokidar@5.0.0) @@ -12109,7 +11472,7 @@ snapshots: '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 '@inquirer/confirm': 5.1.21(@types/node@25.9.1) - '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.2(@types/node@25.9.1)(jiti@2.6.1)(less@4.3.0)(lightningcss@1.32.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.2(@types/node@25.9.1)(jiti@2.6.1)(less@4.3.0)(lightningcss@1.32.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) beasties: 0.4.1 browserslist: 4.28.2 esbuild: 0.27.3 @@ -12130,7 +11493,7 @@ snapshots: tslib: 2.8.1 typescript: 6.0.3 undici: 7.24.4 - vite: 7.3.2(@types/node@25.9.1)(jiti@2.6.1)(less@4.3.0)(lightningcss@1.32.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@25.9.1)(jiti@2.6.1)(less@4.3.0)(lightningcss@1.32.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) watchpack: 2.5.1 optionalDependencies: '@angular/core': 21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1) @@ -12141,7 +11504,7 @@ snapshots: lmdb: 3.5.1 postcss: 8.5.15 tailwindcss: 4.3.0 - vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -12332,27 +11695,6 @@ snapshots: '@babel/compat-data@7.29.3': {} - '@babel/core@7.27.1': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.27.1) - '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.3 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/core@7.29.0': dependencies: '@babel/code-frame': 7.29.0 @@ -12373,16 +11715,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.27.1': - dependencies: - '@babel/parser': 7.29.3 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - optional: true - - '@babel/generator@7.28.5': + '@babel/generator@7.28.5': dependencies: '@babel/parser': 7.28.5 '@babel/types': 7.28.5 @@ -12398,11 +11731,6 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.27.1': - dependencies: - '@babel/types': 7.29.0 - optional: true - '@babel/helper-annotate-as-pure@7.27.3': dependencies: '@babel/types': 7.29.0 @@ -12415,20 +11743,6 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.28.5 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.27.1) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12442,14 +11756,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.4.0 - semver: 6.3.1 - optional: true - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12457,18 +11763,6 @@ snapshots: regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - debug: 4.4.3 - lodash.debounce: 4.0.8 - resolve: 1.22.12 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12496,16 +11790,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12521,16 +11805,6 @@ snapshots: '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12540,16 +11814,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-member-expression-to-functions': 7.28.5 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12603,15 +11867,6 @@ snapshots: dependencies: '@babel/types': 7.29.0 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12620,23 +11875,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12650,16 +11893,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.27.1) - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12669,15 +11902,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12695,11 +11919,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - optional: true - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12729,23 +11948,11 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12811,50 +12018,17 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12864,26 +12038,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12893,37 +12047,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12932,15 +12065,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12949,19 +12073,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.27.1) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12974,28 +12085,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/template': 7.28.6 - optional: true - '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 '@babel/template': 7.28.6 - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13004,49 +12099,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13060,37 +12129,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13099,16 +12147,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13118,59 +12156,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13179,15 +12184,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13196,17 +12192,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13217,15 +12202,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13234,64 +12210,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.27.1) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.1) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13303,15 +12242,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.27.1) - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13320,26 +12250,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13348,26 +12263,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13376,16 +12276,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13395,65 +12285,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-runtime@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.27.1) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.27.1) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-runtime@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13466,26 +12318,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-spread@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13494,34 +12331,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13538,49 +12357,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - optional: true - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - optional: true - - '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.28.6 - optional: true - - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.27.1)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.1) + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - optional: true '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': dependencies: @@ -13588,82 +12380,6 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/preset-env@7.27.2(@babel/core@7.27.1)': - dependencies: - '@babel/compat-data': 7.29.3 - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.27.1) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1) - '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.1) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.27.1) - '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.27.1) - '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.27.1) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-modules-systemjs': 7.29.4(@babel/core@7.27.1) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.27.1) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.1) - '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.27.1) - '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.27.1) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.1) - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.27.1) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.27.1) - core-js-compat: 3.49.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - optional: true - '@babel/preset-env@7.29.5(@babel/core@7.29.0)': dependencies: '@babel/compat-data': 7.29.3 @@ -13741,14 +12457,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/types': 7.29.0 - esutils: 2.0.3 - optional: true - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -13982,9 +12690,6 @@ snapshots: '@csstools/css-tokenizer@4.0.0': {} - '@discoveryjs/json-ext@0.6.3': - optional: true - '@emnapi/core@1.10.0': dependencies: '@emnapi/wasi-threads': 1.2.1 @@ -14011,9 +12716,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@esbuild/aix-ppc64@0.25.5': - optional: true - '@esbuild/aix-ppc64@0.27.3': optional: true @@ -14023,9 +12725,6 @@ snapshots: '@esbuild/aix-ppc64@0.28.0': optional: true - '@esbuild/android-arm64@0.25.5': - optional: true - '@esbuild/android-arm64@0.27.3': optional: true @@ -14035,9 +12734,6 @@ snapshots: '@esbuild/android-arm64@0.28.0': optional: true - '@esbuild/android-arm@0.25.5': - optional: true - '@esbuild/android-arm@0.27.3': optional: true @@ -14047,9 +12743,6 @@ snapshots: '@esbuild/android-arm@0.28.0': optional: true - '@esbuild/android-x64@0.25.5': - optional: true - '@esbuild/android-x64@0.27.3': optional: true @@ -14059,9 +12752,6 @@ snapshots: '@esbuild/android-x64@0.28.0': optional: true - '@esbuild/darwin-arm64@0.25.5': - optional: true - '@esbuild/darwin-arm64@0.27.3': optional: true @@ -14071,9 +12761,6 @@ snapshots: '@esbuild/darwin-arm64@0.28.0': optional: true - '@esbuild/darwin-x64@0.25.5': - optional: true - '@esbuild/darwin-x64@0.27.3': optional: true @@ -14083,9 +12770,6 @@ snapshots: '@esbuild/darwin-x64@0.28.0': optional: true - '@esbuild/freebsd-arm64@0.25.5': - optional: true - '@esbuild/freebsd-arm64@0.27.3': optional: true @@ -14095,9 +12779,6 @@ snapshots: '@esbuild/freebsd-arm64@0.28.0': optional: true - '@esbuild/freebsd-x64@0.25.5': - optional: true - '@esbuild/freebsd-x64@0.27.3': optional: true @@ -14107,9 +12788,6 @@ snapshots: '@esbuild/freebsd-x64@0.28.0': optional: true - '@esbuild/linux-arm64@0.25.5': - optional: true - '@esbuild/linux-arm64@0.27.3': optional: true @@ -14119,9 +12797,6 @@ snapshots: '@esbuild/linux-arm64@0.28.0': optional: true - '@esbuild/linux-arm@0.25.5': - optional: true - '@esbuild/linux-arm@0.27.3': optional: true @@ -14131,9 +12806,6 @@ snapshots: '@esbuild/linux-arm@0.28.0': optional: true - '@esbuild/linux-ia32@0.25.5': - optional: true - '@esbuild/linux-ia32@0.27.3': optional: true @@ -14143,9 +12815,6 @@ snapshots: '@esbuild/linux-ia32@0.28.0': optional: true - '@esbuild/linux-loong64@0.25.5': - optional: true - '@esbuild/linux-loong64@0.27.3': optional: true @@ -14155,9 +12824,6 @@ snapshots: '@esbuild/linux-loong64@0.28.0': optional: true - '@esbuild/linux-mips64el@0.25.5': - optional: true - '@esbuild/linux-mips64el@0.27.3': optional: true @@ -14167,9 +12833,6 @@ snapshots: '@esbuild/linux-mips64el@0.28.0': optional: true - '@esbuild/linux-ppc64@0.25.5': - optional: true - '@esbuild/linux-ppc64@0.27.3': optional: true @@ -14179,9 +12842,6 @@ snapshots: '@esbuild/linux-ppc64@0.28.0': optional: true - '@esbuild/linux-riscv64@0.25.5': - optional: true - '@esbuild/linux-riscv64@0.27.3': optional: true @@ -14191,9 +12851,6 @@ snapshots: '@esbuild/linux-riscv64@0.28.0': optional: true - '@esbuild/linux-s390x@0.25.5': - optional: true - '@esbuild/linux-s390x@0.27.3': optional: true @@ -14203,9 +12860,6 @@ snapshots: '@esbuild/linux-s390x@0.28.0': optional: true - '@esbuild/linux-x64@0.25.5': - optional: true - '@esbuild/linux-x64@0.27.3': optional: true @@ -14215,9 +12869,6 @@ snapshots: '@esbuild/linux-x64@0.28.0': optional: true - '@esbuild/netbsd-arm64@0.25.5': - optional: true - '@esbuild/netbsd-arm64@0.27.3': optional: true @@ -14227,9 +12878,6 @@ snapshots: '@esbuild/netbsd-arm64@0.28.0': optional: true - '@esbuild/netbsd-x64@0.25.5': - optional: true - '@esbuild/netbsd-x64@0.27.3': optional: true @@ -14239,9 +12887,6 @@ snapshots: '@esbuild/netbsd-x64@0.28.0': optional: true - '@esbuild/openbsd-arm64@0.25.5': - optional: true - '@esbuild/openbsd-arm64@0.27.3': optional: true @@ -14251,9 +12896,6 @@ snapshots: '@esbuild/openbsd-arm64@0.28.0': optional: true - '@esbuild/openbsd-x64@0.25.5': - optional: true - '@esbuild/openbsd-x64@0.27.3': optional: true @@ -14272,9 +12914,6 @@ snapshots: '@esbuild/openharmony-arm64@0.28.0': optional: true - '@esbuild/sunos-x64@0.25.5': - optional: true - '@esbuild/sunos-x64@0.27.3': optional: true @@ -14284,9 +12923,6 @@ snapshots: '@esbuild/sunos-x64@0.28.0': optional: true - '@esbuild/win32-arm64@0.25.5': - optional: true - '@esbuild/win32-arm64@0.27.3': optional: true @@ -14296,9 +12932,6 @@ snapshots: '@esbuild/win32-arm64@0.28.0': optional: true - '@esbuild/win32-ia32@0.25.5': - optional: true - '@esbuild/win32-ia32@0.27.3': optional: true @@ -14308,9 +12941,6 @@ snapshots: '@esbuild/win32-ia32@0.28.0': optional: true - '@esbuild/win32-x64@0.25.5': - optional: true - '@esbuild/win32-x64@0.27.3': optional: true @@ -14418,14 +13048,6 @@ snapshots: optionalDependencies: '@types/node': 25.9.1 - '@inquirer/confirm@5.1.10(@types/node@25.9.1)': - dependencies: - '@inquirer/core': 10.3.2(@types/node@25.9.1) - '@inquirer/type': 3.0.10(@types/node@25.9.1) - optionalDependencies: - '@types/node': 25.9.1 - optional: true - '@inquirer/confirm@5.1.21(@types/node@25.9.1)': dependencies: '@inquirer/core': 10.3.2(@types/node@25.9.1) @@ -14788,45 +13410,24 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@lmdb/lmdb-darwin-arm64@3.3.0': - optional: true - '@lmdb/lmdb-darwin-arm64@3.5.1': optional: true - '@lmdb/lmdb-darwin-x64@3.3.0': - optional: true - '@lmdb/lmdb-darwin-x64@3.5.1': optional: true - '@lmdb/lmdb-linux-arm64@3.3.0': - optional: true - '@lmdb/lmdb-linux-arm64@3.5.1': optional: true - '@lmdb/lmdb-linux-arm@3.3.0': - optional: true - '@lmdb/lmdb-linux-arm@3.5.1': optional: true - '@lmdb/lmdb-linux-x64@3.3.0': - optional: true - '@lmdb/lmdb-linux-x64@3.5.1': optional: true - '@lmdb/lmdb-win32-arm64@3.3.0': - optional: true - '@lmdb/lmdb-win32-arm64@3.5.1': optional: true - '@lmdb/lmdb-win32-x64@3.3.0': - optional: true - '@lmdb/lmdb-win32-x64@3.5.1': optional: true @@ -14930,14 +13531,14 @@ snapshots: axios: 1.16.0 chalk: 3.0.0 fs-extra: 9.1.0 - isomorphic-ws: 5.0.0(ws@8.21.0) - koa: 3.2.0 + isomorphic-ws: 5.0.0(ws@8.18.0) + koa: 3.0.3 lodash.clonedeepwith: 4.5.0 log4js: 6.9.1 node-schedule: 2.1.1 rambda: 9.4.2 typescript: 6.0.3 - ws: 8.21.0 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - debug @@ -14952,11 +13553,11 @@ snapshots: '@module-federation/third-party-dts-extractor': 2.4.0 adm-zip: 0.5.10 ansi-colors: 4.1.3 - isomorphic-ws: 5.0.0(ws@8.21.0) + isomorphic-ws: 5.0.0(ws@8.18.0) node-schedule: 2.1.1 typescript: 6.0.3 undici: 7.24.7 - ws: 8.21.0 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - node-fetch @@ -14970,11 +13571,11 @@ snapshots: '@module-federation/third-party-dts-extractor': 2.5.0 adm-zip: 0.5.10 ansi-colors: 4.1.3 - isomorphic-ws: 5.0.0(ws@8.21.0) + isomorphic-ws: 5.0.0(ws@8.18.0) node-schedule: 2.1.1 typescript: 6.0.3 undici: 7.24.7 - ws: 8.21.0 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - node-fetch @@ -15231,7 +13832,7 @@ snapshots: find-pkg: 2.0.0 resolve: 1.22.8 - '@module-federation/vite@1.16.2(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))': + '@module-federation/vite@1.16.2(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))': dependencies: '@module-federation/dts-plugin': 2.5.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3) '@module-federation/runtime': 2.5.0(node-fetch@2.7.0(encoding@0.1.13)) @@ -15239,7 +13840,7 @@ snapshots: es-module-lexer: 2.0.0 estree-walker: 3.0.3 pathe: 2.0.3 - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) transitivePeerDependencies: - bufferutil - node-fetch @@ -15389,13 +13990,6 @@ snapshots: optionalDependencies: rxjs: 7.8.2 - '@ngtools/webpack@20.0.0(@angular/compiler-cli@21.2.15(@angular/compiler@21.2.15)(typescript@6.0.3))(typescript@6.0.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0))': - dependencies: - '@angular/compiler-cli': 21.2.15(@angular/compiler@21.2.15)(typescript@6.0.3) - typescript: 6.0.3 - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - optional: true - '@noble/hashes@1.4.0': {} '@nodelib/fs.scandir@2.1.5': @@ -15469,16 +14063,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@nx/angular@22.7.5(9d93e046e8af5178c45b7fe7b3d6e447)': + '@nx/angular@22.7.5(8deabd555917c9e594b192212ae17a3a)': dependencies: '@angular-devkit/core': 21.2.13(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.13(chokidar@5.0.0) '@nx/devkit': 22.7.5(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) '@nx/eslint': 22.7.5(c15c711dce428ed17b010739ba5fa2de) '@nx/js': 22.7.5(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) - '@nx/module-federation': 22.7.5(c9a81b288434a345ac96a1d68defa7e5) - '@nx/rspack': 22.7.5(fed2c9181aea41fe03992f29d5ab8208) - '@nx/web': 22.7.5(7d722e0a6ac6615449213db93bb7ae2a) + '@nx/module-federation': 22.7.5(9e68a4694ca16f7a1ffc3ebc52bd1dd9) + '@nx/rspack': 22.7.5(ede7fe40282330c771efa3bd8ea4e69d) + '@nx/web': 22.7.5(739c633d30084b1e8fb8ca781ebc32a5) '@nx/webpack': 22.7.5(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.23))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)(lightningcss@1.32.0)(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3) '@nx/workspace': 22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)) '@phenomnomnominal/tsquery': 6.2.0(typescript@6.0.3) @@ -15493,8 +14087,7 @@ snapshots: tslib: 2.8.1 webpack-merge: 5.10.0 optionalDependencies: - '@angular-devkit/build-angular': 20.0.0(5051dee4ea0f423ab526f197e92d0945) - '@angular/build': 21.2.13(317a9c63e2a22ee97b948b5b731d9e1c) + '@angular/build': 21.2.13(2fc71c60e1ba34e5381d5136307f56c3) transitivePeerDependencies: - '@babel/traverse' - '@module-federation/enhanced' @@ -15689,14 +14282,14 @@ snapshots: - nx - supports-color - '@nx/module-federation@22.7.5(c9a81b288434a345ac96a1d68defa7e5)': + '@nx/module-federation@22.7.5(9e68a4694ca16f7a1ffc3ebc52bd1dd9)': dependencies: '@module-federation/enhanced': 2.4.0(@rspack/core@1.6.8(@swc/helpers@0.5.23))(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) '@module-federation/node': 2.7.25(@rspack/core@1.6.8(@swc/helpers@0.5.23))(react-dom@19.1.0(react@19.2.6))(react@19.2.6)(typescript@6.0.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) '@module-federation/sdk': 2.4.0(node-fetch@2.7.0(encoding@0.1.13)) '@nx/devkit': 22.7.5(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) '@nx/js': 22.7.5(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) - '@nx/web': 22.7.5(7d722e0a6ac6615449213db93bb7ae2a) + '@nx/web': 22.7.5(739c633d30084b1e8fb8ca781ebc32a5) '@rspack/core': 1.6.8(@swc/helpers@0.5.23) express: 4.22.1 http-proxy-middleware: 3.0.5 @@ -15808,14 +14401,14 @@ snapshots: - supports-color - verdaccio - '@nx/rspack@22.7.5(fed2c9181aea41fe03992f29d5ab8208)': + '@nx/rspack@22.7.5(ede7fe40282330c771efa3bd8ea4e69d)': dependencies: '@module-federation/enhanced': 2.4.0(@rspack/core@1.6.8(@swc/helpers@0.5.23))(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) '@module-federation/node': 2.7.25(@rspack/core@1.6.8(@swc/helpers@0.5.23))(react-dom@19.1.0(react@19.2.6))(react@19.2.6)(typescript@6.0.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) '@nx/devkit': 22.7.5(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) '@nx/js': 22.7.5(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) - '@nx/module-federation': 22.7.5(c9a81b288434a345ac96a1d68defa7e5) - '@nx/web': 22.7.5(7d722e0a6ac6615449213db93bb7ae2a) + '@nx/module-federation': 22.7.5(9e68a4694ca16f7a1ffc3ebc52bd1dd9) + '@nx/web': 22.7.5(739c633d30084b1e8fb8ca781ebc32a5) '@phenomnomnominal/tsquery': 6.2.0(typescript@6.0.3) '@rspack/core': 1.6.8(@swc/helpers@0.5.23) '@rspack/dev-server': 1.1.4(@rspack/core@1.6.8(@swc/helpers@0.5.23))(@types/express@4.17.25)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) @@ -15875,11 +14468,11 @@ snapshots: - webpack-cli - webpack-hot-middleware - '@nx/vite@22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))(vitest@4.1.7)': + '@nx/vite@22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))(vitest@4.1.7)': dependencies: '@nx/devkit': 22.7.5(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) '@nx/js': 22.7.5(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) - '@nx/vitest': 22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))(vitest@4.1.7) + '@nx/vitest': 22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))(vitest@4.1.7) '@phenomnomnominal/tsquery': 6.2.0(typescript@6.0.3) ajv: 8.20.0 enquirer: 2.3.6 @@ -15887,8 +14480,8 @@ snapshots: semver: 7.7.4 tsconfig-paths: 4.2.0 tslib: 2.8.1 - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) - vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) + vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) transitivePeerDependencies: - '@babel/traverse' - '@nx/eslint' @@ -15900,7 +14493,7 @@ snapshots: - typescript - verdaccio - '@nx/vitest@22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))(vitest@4.1.7)': + '@nx/vitest@22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))(vitest@4.1.7)': dependencies: '@nx/devkit': 22.7.5(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) '@nx/js': 22.7.5(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) @@ -15909,8 +14502,8 @@ snapshots: tslib: 2.8.1 optionalDependencies: '@nx/eslint': 22.7.5(c15c711dce428ed17b010739ba5fa2de) - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) - vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) + vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -15921,7 +14514,7 @@ snapshots: - typescript - verdaccio - '@nx/web@22.7.5(7d722e0a6ac6615449213db93bb7ae2a)': + '@nx/web@22.7.5(739c633d30084b1e8fb8ca781ebc32a5)': dependencies: '@nx/devkit': 22.7.5(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) '@nx/js': 22.7.5(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))) @@ -15933,7 +14526,7 @@ snapshots: '@nx/eslint': 22.7.5(c15c711dce428ed17b010739ba5fa2de) '@nx/jest': 22.7.5(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(@types/node@25.9.1)(babel-plugin-macros@3.1.0)(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(ts-node@10.9.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(@types/node@25.9.1)(typescript@6.0.3))(typescript@6.0.3) '@nx/playwright': 22.7.5(76d9b9d8f83254a1778fcb5570bf5179) - '@nx/vite': 22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))(vitest@4.1.7) + '@nx/vite': 22.7.5(@babel/traverse@7.29.0)(@nx/eslint@22.7.5(c15c711dce428ed17b010739ba5fa2de))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))(vitest@4.1.7) '@nx/webpack': 22.7.5(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.23))(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)(lightningcss@1.32.0)(nx@22.7.5(@swc-node/register@1.11.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@swc/core@1.15.40(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.40(@swc/helpers@0.5.23)))(typescript@6.0.3) transitivePeerDependencies: - '@babel/traverse' @@ -16462,12 +15055,12 @@ snapshots: optionalDependencies: rollup: 4.60.3 - '@rollup/plugin-babel@5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.3)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@2.80.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 - '@rollup/pluginutils': 3.1.0(rollup@4.60.3) - rollup: 4.60.3 + '@rollup/pluginutils': 3.1.0(rollup@2.80.0) + rollup: 2.80.0 optionalDependencies: '@types/babel__core': 7.20.5 transitivePeerDependencies: @@ -16499,15 +15092,15 @@ snapshots: optionalDependencies: rollup: 4.60.3 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.60.3)': + '@rollup/plugin-node-resolve@15.3.1(rollup@2.80.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.60.3) + '@rollup/pluginutils': 5.3.0(rollup@2.80.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.12 optionalDependencies: - rollup: 4.60.3 + rollup: 2.80.0 '@rollup/plugin-node-resolve@16.0.3(rollup@4.60.3)': dependencies: @@ -16519,11 +15112,11 @@ snapshots: optionalDependencies: rollup: 4.60.3 - '@rollup/plugin-replace@2.4.2(rollup@4.60.3)': + '@rollup/plugin-replace@2.4.2(rollup@2.80.0)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@4.60.3) + '@rollup/pluginutils': 3.1.0(rollup@2.80.0) magic-string: 0.25.9 - rollup: 4.60.3 + rollup: 2.80.0 '@rollup/plugin-replace@6.0.3(rollup@4.60.3)': dependencies: @@ -16532,13 +15125,13 @@ snapshots: optionalDependencies: rollup: 4.60.3 - '@rollup/plugin-terser@0.4.4(rollup@4.60.3)': + '@rollup/plugin-terser@0.4.4(rollup@2.80.0)': dependencies: - serialize-javascript: 7.0.5 + serialize-javascript: 6.0.2 smob: 1.6.1 terser: 5.47.1 optionalDependencies: - rollup: 4.60.3 + rollup: 2.80.0 '@rollup/plugin-terser@1.0.0(rollup@4.60.3)': dependencies: @@ -16548,12 +15141,20 @@ snapshots: optionalDependencies: rollup: 4.60.3 - '@rollup/pluginutils@3.1.0(rollup@4.60.3)': + '@rollup/pluginutils@3.1.0(rollup@2.80.0)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 + picomatch: 2.3.2 + rollup: 2.80.0 + + '@rollup/pluginutils@5.3.0(rollup@2.80.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 picomatch: 4.0.4 - rollup: 4.60.3 + optionalDependencies: + rollup: 2.80.0 '@rollup/pluginutils@5.3.0(rollup@4.60.3)': dependencies: @@ -16697,7 +15298,7 @@ snapshots: chokidar: 3.6.0 http-proxy-middleware: 2.0.9(@types/express@4.17.25) p-retry: 6.2.1 - webpack-dev-server: 5.2.4(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) + webpack-dev-server: 5.2.2(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) ws: 8.21.0 transitivePeerDependencies: - '@types/express' @@ -17016,7 +15617,7 @@ snapshots: '@babel/types': 7.28.5 javascript-natural-sort: 0.7.1 lodash-es: 4.18.1 - minimatch: 10.2.4 + minimatch: 9.0.9 parse-imports-exports: 0.2.4 prettier: 3.8.3 transitivePeerDependencies: @@ -17025,7 +15626,7 @@ snapshots: '@ts-morph/common@0.22.0': dependencies: fast-glob: 3.3.3 - minimatch: 10.2.5 + minimatch: 9.0.9 mkdirp: 3.0.1 path-browserify: 1.0.1 @@ -17042,7 +15643,7 @@ snapshots: '@tufjs/models@4.0.0': dependencies: '@tufjs/canonical-json': 2.0.0 - minimatch: 10.2.5 + minimatch: 9.0.9 '@tybys/wasm-util@0.10.1': dependencies: @@ -17288,6 +15889,10 @@ snapshots: '@types/mime@1.3.5': {} + '@types/node-forge@1.3.14': + dependencies: + '@types/node': 25.9.1 + '@types/node@25.6.2': dependencies: undici-types: 7.19.2 @@ -17590,14 +16195,9 @@ snapshots: - rollup - supports-color - '@vitejs/plugin-basic-ssl@2.0.0(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))': - dependencies: - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) - optional: true - - '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.2(@types/node@25.9.1)(jiti@2.6.1)(less@4.3.0)(lightningcss@1.32.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))': + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.2(@types/node@25.9.1)(jiti@2.6.1)(less@4.3.0)(lightningcss@1.32.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))': dependencies: - vite: 7.3.2(@types/node@25.9.1)(jiti@2.6.1)(less@4.3.0)(lightningcss@1.32.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@25.9.1)(jiti@2.6.1)(less@4.3.0)(lightningcss@1.32.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) '@vitest/coverage-v8@4.1.7(vitest@4.1.7)': dependencies: @@ -17611,7 +16211,7 @@ snapshots: obug: 2.1.1 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) '@vitest/expect@4.1.7': dependencies: @@ -17622,13 +16222,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.7(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))': + '@vitest/mocker@4.1.7(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.7 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) '@vitest/pretty-format@4.1.7': dependencies: @@ -17657,7 +16257,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + vitest: 4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) '@vitest/utils@4.1.7': dependencies: @@ -17791,12 +16391,6 @@ snapshots: address@2.0.3: {} - adjust-sourcemap-loader@4.0.0: - dependencies: - loader-utils: 2.0.4 - regex-parser: 2.3.1 - optional: true - adm-zip@0.5.10: {} adm-zip@0.5.16: {} @@ -17807,6 +16401,10 @@ snapshots: optionalDependencies: ajv: 8.20.0 + ajv-formats@3.0.1(ajv@8.18.0): + optionalDependencies: + ajv: 8.18.0 + ajv-formats@3.0.1(ajv@8.20.0): optionalDependencies: ajv: 8.20.0 @@ -17827,6 +16425,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@8.18.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.2 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 @@ -17897,7 +16502,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 4.0.4 + picomatch: 2.3.2 archiver-utils@5.0.2: dependencies: @@ -17980,17 +16585,6 @@ snapshots: auto-bind@5.0.1: {} - autoprefixer@10.4.21(postcss@8.5.3): - dependencies: - browserslist: 4.28.2 - caniuse-lite: 1.0.30001792 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - optional: true - autoprefixer@10.5.0(postcss@8.5.15): dependencies: browserslist: 4.28.2 @@ -18029,13 +16623,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@10.0.0(@babel/core@7.27.1)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): - dependencies: - '@babel/core': 7.27.1 - find-up: 5.0.0 - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - optional: true - babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): dependencies: '@babel/core': 7.29.0 @@ -18074,16 +16661,6 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.12 - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.27.1): - dependencies: - '@babel/compat-data': 7.29.3 - '@babel/core': 7.27.1 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.27.1) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - optional: true - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: '@babel/compat-data': 7.29.3 @@ -18093,15 +16670,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.1): - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.27.1) - core-js-compat: 3.49.0 - transitivePeerDependencies: - - supports-color - optional: true - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 @@ -18118,14 +16686,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.27.1): - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.27.1) - transitivePeerDependencies: - - supports-color - optional: true - babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 @@ -18213,18 +16773,6 @@ snapshots: batch@0.6.1: {} - beasties@0.3.4: - dependencies: - css-select: 5.2.2 - css-what: 6.2.2 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - htmlparser2: 10.1.0 - picocolors: 1.1.1 - postcss: 8.5.15 - postcss-media-query-parser: 0.2.3 - optional: true - beasties@0.4.1: dependencies: css-select: 6.0.0 @@ -18265,7 +16813,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.15.2 + qs: 6.14.2 raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 @@ -18298,9 +16846,9 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@5.0.5: + brace-expansion@2.1.1: dependencies: - balanced-match: 4.0.4 + balanced-match: 1.0.2 brace-expansion@5.0.6: dependencies: @@ -18493,12 +17041,6 @@ snapshots: cli-spinners@3.4.0: {} - cli-truncate@4.0.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 - optional: true - cli-truncate@5.2.0: dependencies: slice-ansi: 8.0.0 @@ -18511,13 +17053,6 @@ snapshots: cli-width@4.1.0: {} - clipboard@2.0.11: - dependencies: - good-listener: 1.2.2 - select: 1.1.2 - tiny-emitter: 2.1.0 - optional: true - cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -18680,16 +17215,6 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.0(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): - dependencies: - glob-parent: 6.0.2 - normalize-path: 3.0.0 - schema-utils: 4.3.3 - serialize-javascript: 7.0.5 - tinyglobby: 0.2.16 - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - optional: true - copy-webpack-plugin@14.0.0(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): dependencies: glob-parent: 6.0.2 @@ -18798,21 +17323,6 @@ snapshots: '@rspack/core': 1.6.8(@swc/helpers@0.5.23) webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - css-loader@7.1.2(@rspack/core@1.6.8(@swc/helpers@0.5.23))(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): - dependencies: - icss-utils: 5.1.0(postcss@8.5.15) - postcss: 8.5.15 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.15) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.15) - postcss-modules-scope: 3.2.1(postcss@8.5.15) - postcss-modules-values: 4.0.0(postcss@8.5.15) - postcss-value-parser: 4.2.0 - semver: 7.7.4 - optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.23) - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - optional: true - css-minimizer-webpack-plugin@8.0.0(esbuild@0.28.0)(lightningcss@1.32.0)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -19186,9 +17696,6 @@ snapshots: delayed-stream@1.0.0: {} - delegate@3.2.0: - optional: true - delegates@1.0.0: {} denque@2.1.0: {} @@ -19293,9 +17800,6 @@ snapshots: emoji-regex@9.2.2: {} - emoji-toolkit@9.0.1: - optional: true - emojis-list@3.0.0: {} encodeurl@2.0.0: {} @@ -19428,38 +17932,6 @@ snapshots: es-toolkit@1.46.1: {} - esbuild-wasm@0.25.5: - optional: true - - esbuild@0.25.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.5 - '@esbuild/android-arm': 0.25.5 - '@esbuild/android-arm64': 0.25.5 - '@esbuild/android-x64': 0.25.5 - '@esbuild/darwin-arm64': 0.25.5 - '@esbuild/darwin-x64': 0.25.5 - '@esbuild/freebsd-arm64': 0.25.5 - '@esbuild/freebsd-x64': 0.25.5 - '@esbuild/linux-arm': 0.25.5 - '@esbuild/linux-arm64': 0.25.5 - '@esbuild/linux-ia32': 0.25.5 - '@esbuild/linux-loong64': 0.25.5 - '@esbuild/linux-mips64el': 0.25.5 - '@esbuild/linux-ppc64': 0.25.5 - '@esbuild/linux-riscv64': 0.25.5 - '@esbuild/linux-s390x': 0.25.5 - '@esbuild/linux-x64': 0.25.5 - '@esbuild/netbsd-arm64': 0.25.5 - '@esbuild/netbsd-x64': 0.25.5 - '@esbuild/openbsd-arm64': 0.25.5 - '@esbuild/openbsd-x64': 0.25.5 - '@esbuild/sunos-x64': 0.25.5 - '@esbuild/win32-arm64': 0.25.5 - '@esbuild/win32-ia32': 0.25.5 - '@esbuild/win32-x64': 0.25.5 - optional: true - esbuild@0.27.3: optionalDependencies: '@esbuild/aix-ppc64': 0.27.3 @@ -19709,7 +18181,7 @@ snapshots: express-rate-limit@8.2.1(express@5.2.1): dependencies: express: 5.2.1 - ip-address: 10.2.0 + ip-address: 10.0.1 express@4.22.1: dependencies: @@ -19734,7 +18206,7 @@ snapshots: parseurl: 1.3.3 path-to-regexp: 0.1.13 proxy-addr: 2.0.7 - qs: 6.15.2 + qs: 6.14.2 range-parser: 1.2.1 safe-buffer: 5.2.1 send: 0.19.2 @@ -19940,9 +18412,6 @@ snapshots: forwarded@0.2.0: {} - fraction.js@4.3.7: - optional: true - fraction.js@5.3.4: {} fresh@0.5.2: {} @@ -20069,7 +18538,7 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 - minimatch: 10.2.5 + minimatch: 9.0.9 minipass: 7.1.3 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 @@ -20085,7 +18554,7 @@ snapshots: glob@13.0.6: dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 minipass: 7.1.3 path-scurry: 2.0.2 @@ -20136,11 +18605,6 @@ snapshots: globrex@0.1.2: {} - good-listener@1.2.2: - dependencies: - delegate: 3.2.0 - optional: true - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -20473,7 +18937,12 @@ snapshots: transitivePeerDependencies: - supports-color - ip-address@10.2.0: {} + ip-address@10.0.1: {} + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 ip-regex@4.3.0: {} @@ -20541,9 +19010,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@4.0.0: - optional: true - is-fullwidth-code-point@5.1.0: dependencies: get-east-asian-width: 1.5.0 @@ -20647,9 +19113,6 @@ snapshots: is-unicode-supported@0.1.0: {} - is-unicode-supported@1.3.0: - optional: true - is-unicode-supported@2.1.0: {} is-url@1.2.4: {} @@ -20693,9 +19156,9 @@ snapshots: isobject@3.0.1: {} - isomorphic-ws@5.0.0(ws@8.21.0): + isomorphic-ws@5.0.0(ws@8.18.0): dependencies: - ws: 8.21.0 + ws: 8.18.0 istanbul-lib-coverage@3.2.2: {} @@ -21036,9 +19499,6 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@1.21.7: - optional: true - jiti@2.4.2: {} jiti@2.6.1: {} @@ -21060,6 +19520,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsbn@1.1.0: {} + jsdom@29.1.1: dependencies: '@asamuzakjp/css-color': 5.1.11 @@ -21135,11 +19597,6 @@ snapshots: jsonpointer@5.0.1: {} - karma-source-map-support@1.4.0: - dependencies: - source-map-support: 0.5.21 - optional: true - katex@0.16.45: dependencies: commander: 8.3.0 @@ -21169,10 +19626,10 @@ snapshots: koa-compose@4.1.0: {} - koa@3.2.0: + koa@3.0.3: dependencies: accepts: 1.3.8 - content-disposition: 1.0.1 + content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.9.1 delegates: 1.0.0 @@ -21299,7 +19756,7 @@ snapshots: string-argv: 0.3.2 tinyexec: 1.2.2 optionalDependencies: - yaml: 2.8.3 + yaml: 2.9.0 listhen@1.10.0: dependencies: @@ -21327,18 +19784,8 @@ snapshots: cli-truncate: 5.2.0 eventemitter3: 5.0.4 log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 10.0.0 - - listr2@8.3.3: - dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.4 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 9.0.2 - optional: true + rfdc: 1.4.1 + wrap-ansi: 10.0.0 listr2@9.0.5: dependencies: @@ -21349,23 +19796,6 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.2 - lmdb@3.3.0: - dependencies: - msgpackr: 1.11.12 - node-addon-api: 6.1.0 - node-gyp-build-optional-packages: 5.2.2 - ordered-binary: 1.6.1 - weak-lru-cache: 1.2.2 - optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.3.0 - '@lmdb/lmdb-darwin-x64': 3.3.0 - '@lmdb/lmdb-linux-arm': 3.3.0 - '@lmdb/lmdb-linux-arm64': 3.3.0 - '@lmdb/lmdb-linux-x64': 3.3.0 - '@lmdb/lmdb-win32-arm64': 3.3.0 - '@lmdb/lmdb-win32-x64': 3.3.0 - optional: true - lmdb@3.5.1: dependencies: '@harperfast/extended-iterable': 1.0.3 @@ -21392,9 +19822,6 @@ snapshots: emojis-list: 3.0.0 json5: 2.2.3 - loader-utils@3.3.1: - optional: true - local-pkg@1.1.2: dependencies: mlly: 1.8.2 @@ -21436,12 +19863,6 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 - log-symbols@6.0.0: - dependencies: - chalk: 5.6.2 - is-unicode-supported: 1.3.0 - optional: true - log-symbols@7.0.1: dependencies: is-unicode-supported: 2.1.0 @@ -21485,11 +19906,6 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - optional: true - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -21643,7 +20059,7 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 4.0.4 + picomatch: 2.3.2 mime-db@1.52.0: {} @@ -21670,19 +20086,8 @@ snapshots: schema-utils: 4.3.3 webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - mini-css-extract-plugin@2.9.2(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): - dependencies: - schema-utils: 4.3.3 - tapable: 2.3.3 - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - optional: true - minimalistic-assert@1.0.1: {} - minimatch@10.2.4: - dependencies: - brace-expansion: 5.0.6 - minimatch@10.2.5: dependencies: brace-expansion: 5.0.6 @@ -21693,7 +20098,11 @@ snapshots: minimatch@5.1.9: dependencies: - brace-expansion: 5.0.5 + brace-expansion: 2.1.1 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.1 minimist@1.2.8: {} @@ -21792,7 +20201,7 @@ snapshots: neo-async@2.6.2: {} - ngx-markdown@21.3.0(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.15(@angular/animations@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(clipboard@2.0.11)(emoji-toolkit@9.0.1)(katex@0.16.45)(marked@18.0.4)(mermaid@11.15.0)(prismjs@1.30.0)(rxjs@7.8.2)(zone.js@0.15.1): + ngx-markdown@21.3.0(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.15(@angular/animations@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1)))(katex@0.16.45)(marked@18.0.4)(mermaid@11.15.0)(prismjs@1.30.0)(rxjs@7.8.2)(zone.js@0.15.1): dependencies: '@angular/common': 21.2.15(@angular/core@21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/core': 21.2.15(@angular/compiler@21.2.15)(rxjs@7.8.2)(zone.js@0.15.1) @@ -21802,8 +20211,6 @@ snapshots: tslib: 2.8.1 zone.js: 0.15.1 optionalDependencies: - clipboard: 2.0.11 - emoji-toolkit: 9.0.1 katex: 0.16.45 mermaid: 11.15.0 prismjs: 1.30.0 @@ -21973,9 +20380,6 @@ snapshots: normalize-path@3.0.0: {} - normalize-range@0.1.2: - optional: true - npm-bundled@5.0.0: dependencies: npm-normalize-package-bin: 5.0.0 @@ -22135,7 +20539,7 @@ snapshots: wrap-ansi: 7.0.0 wrappy: 1.0.2 y18n: 5.0.8 - yaml: 2.8.3 + yaml: 2.9.0 yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: @@ -22249,19 +20653,6 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - ora@8.2.0: - dependencies: - chalk: 5.6.2 - cli-cursor: 5.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.1.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.2.0 - optional: true - ora@9.3.0: dependencies: chalk: 5.6.2 @@ -22418,35 +20809,18 @@ snapshots: parse-statements@1.0.11: {} - parse5-html-rewriting-stream@7.1.0: - dependencies: - entities: 6.0.1 - parse5: 7.3.0 - parse5-sax-parser: 7.0.0 - optional: true - parse5-html-rewriting-stream@8.0.0: dependencies: entities: 6.0.1 parse5: 8.0.1 parse5-sax-parser: 8.0.0 - parse5-sax-parser@7.0.0: - dependencies: - parse5: 7.3.0 - optional: true - parse5-sax-parser@8.0.0: dependencies: parse5: 8.0.1 parse5@4.0.0: {} - parse5@7.3.0: - dependencies: - entities: 6.0.1 - optional: true - parse5@8.0.1: dependencies: entities: 8.0.0 @@ -22493,6 +20867,8 @@ snapshots: picocolors@1.1.1: {} + picomatch@2.3.2: {} + picomatch@4.0.4: {} pify@2.3.0: {} @@ -22502,11 +20878,6 @@ snapshots: pirates@4.0.7: {} - piscina@5.0.0: - optionalDependencies: - '@napi-rs/nice': 1.1.1 - optional: true - piscina@5.1.4: optionalDependencies: '@napi-rs/nice': 1.1.1 @@ -22606,19 +20977,6 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.12 - postcss-loader@8.1.1(@rspack/core@1.6.8(@swc/helpers@0.5.23))(postcss@8.5.3)(typescript@6.0.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): - dependencies: - cosmiconfig: 9.0.1(typescript@6.0.3) - jiti: 1.21.7 - postcss: 8.5.3 - semver: 7.7.4 - optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.23) - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - transitivePeerDependencies: - - typescript - optional: true - postcss-loader@8.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.23))(postcss@8.5.15)(typescript@6.0.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): dependencies: cosmiconfig: 9.0.1(typescript@6.0.3) @@ -22788,13 +21146,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.3: - dependencies: - nanoid: 3.3.12 - picocolors: 1.1.1 - source-map-js: 1.2.1 - optional: true - powershell-utils@0.1.0: {} prelude-ls@1.2.1: {} @@ -22856,6 +21207,10 @@ snapshots: pvutils@1.1.5: {} + qs@6.14.2: + dependencies: + side-channel: 1.1.0 + qs@6.15.2: dependencies: side-channel: 1.1.0 @@ -22868,6 +21223,10 @@ snapshots: rambda@9.4.2: {} + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + range-parser@1.2.1: {} raw-body@2.5.3: @@ -22941,7 +21300,7 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 4.0.4 + picomatch: 2.3.2 readdirp@4.1.2: {} @@ -22972,9 +21331,6 @@ snapshots: regenerate@1.4.2: {} - regex-parser@2.3.1: - optional: true - regex-recursion@5.1.1: dependencies: regex: 5.1.1 @@ -23025,15 +21381,6 @@ snapshots: resolve-from@5.0.0: {} - resolve-url-loader@5.0.0: - dependencies: - adjust-sourcemap-loader: 4.0.0 - convert-source-map: 1.9.0 - loader-utils: 2.0.4 - postcss: 8.5.15 - source-map: 0.6.1 - optional: true - resolve.exports@2.0.3: {} resolve@1.22.12: @@ -23132,6 +21479,10 @@ snapshots: rolldown: 1.0.2 rollup: 4.60.3 + rollup@2.80.0: + optionalDependencies: + fsevents: 2.3.3 + rollup@4.60.3: dependencies: '@types/estree': 1.0.8 @@ -23309,16 +21660,6 @@ snapshots: sass-embedded-win32-ia32: 1.89.0 sass-embedded-win32-x64: 1.89.0 - sass-loader@16.0.5(@rspack/core@1.6.8(@swc/helpers@0.5.23))(sass-embedded@1.89.0)(sass@1.88.0)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): - dependencies: - neo-async: 2.6.2 - optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.23) - sass: 1.88.0 - sass-embedded: 1.89.0 - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - optional: true - sass-loader@16.0.5(@rspack/core@1.6.8(@swc/helpers@0.5.23))(sass-embedded@1.89.0)(sass@1.97.3)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): dependencies: neo-async: 2.6.2 @@ -23328,15 +21669,6 @@ snapshots: sass-embedded: 1.89.0 webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - sass@1.88.0: - dependencies: - chokidar: 4.0.3 - immutable: 5.1.5 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.5.6 - optional: true - sass@1.97.3: dependencies: chokidar: 4.0.3 @@ -23345,9 +21677,6 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.5.6 - sax@1.4.4: - optional: true - sax@1.6.0: {} saxes@6.0.0: @@ -23384,8 +21713,10 @@ snapshots: select-hose@2.0.0: {} - select@1.1.2: - optional: true + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.14 + node-forge: 1.4.0 selfsigned@5.5.0: dependencies: @@ -23399,9 +21730,6 @@ snapshots: semver@7.6.3: {} - semver@7.7.2: - optional: true - semver@7.7.4: {} send@0.19.2: @@ -23438,6 +21766,10 @@ snapshots: transitivePeerDependencies: - supports-color + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + serialize-javascript@7.0.5: {} serve-index@1.9.2: @@ -23578,12 +21910,6 @@ snapshots: slash@5.1.0: {} - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.3 - is-fullwidth-code-point: 4.0.0 - optional: true - slice-ansi@7.1.0: dependencies: ansi-styles: 6.2.3 @@ -23608,7 +21934,7 @@ snapshots: sockjs@0.3.24: dependencies: faye-websocket: 0.11.4 - uuid: 14.0.0 + uuid: 8.3.2 websocket-driver: 0.7.4 socks-proxy-agent@8.0.5: @@ -23621,7 +21947,7 @@ snapshots: socks@2.8.4: dependencies: - ip-address: 10.2.0 + ip-address: 9.0.5 smart-buffer: 4.2.0 sorted-array-functions@1.3.0: {} @@ -23651,9 +21977,6 @@ snapshots: source-map@0.6.1: {} - source-map@0.7.4: - optional: true - source-map@0.7.6: {} source-map@0.8.0-beta.0: @@ -23701,6 +22024,8 @@ snapshots: sprintf-js@1.0.3: {} + sprintf-js@1.1.3: {} + ssri@13.0.0: dependencies: minipass: 7.1.3 @@ -23721,9 +22046,6 @@ snapshots: std-env@4.1.0: {} - stdin-discarder@0.2.2: - optional: true - stdin-discarder@0.3.1: {} stop-iteration-iterator@1.1.0: @@ -23868,17 +22190,6 @@ snapshots: stylis@4.4.0: {} - stylus@0.64.0: - dependencies: - '@adobe/css-tools': 4.3.3 - debug: 4.4.3 - glob: 10.5.0 - sax: 1.4.4 - source-map: 0.7.6 - transitivePeerDependencies: - - supports-color - optional: true - supports-color@10.2.2: {} supports-color@7.2.0: @@ -23973,18 +22284,6 @@ snapshots: terminal-size@4.0.1: {} - terser-webpack-plugin@5.4.0(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.25.5)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - terser: 5.47.1 - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - optionalDependencies: - '@swc/core': 1.15.40(@swc/helpers@0.5.23) - esbuild: 0.25.5 - optional: true - terser-webpack-plugin@5.4.0(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -23996,14 +22295,6 @@ snapshots: '@swc/core': 1.15.40(@swc/helpers@0.5.23) esbuild: 0.28.0 - terser@5.39.1: - dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.16.0 - commander: 2.20.3 - source-map-support: 0.5.21 - optional: true - terser@5.47.1: dependencies: '@jridgewell/source-map': 0.3.11 @@ -24029,9 +22320,6 @@ snapshots: thunky@1.1.0: {} - tiny-emitter@2.1.0: - optional: true - tinybench@2.9.0: {} tinyclip@0.1.12: {} @@ -24040,12 +22328,6 @@ snapshots: tinyexec@1.2.2: {} - tinyglobby@0.2.13: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - optional: true - tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.4) @@ -24109,7 +22391,7 @@ snapshots: chokidar: 3.6.0 is-glob: 4.0.3 memfs: 4.17.2 - minimatch: 10.2.5 + minimatch: 9.0.9 picocolors: 1.1.1 typescript: 6.0.3 optionalDependencies: @@ -24476,7 +22758,7 @@ snapshots: uuid@11.1.1: {} - uuid@14.0.0: {} + uuid@8.3.2: {} v8-compile-cache-lib@3.0.1: {} @@ -24507,28 +22789,28 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-plugin-pwa@1.3.0(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0): + vite-plugin-pwa@1.3.0(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0): dependencies: debug: 4.4.3 pretty-bytes: 6.1.1 tinyglobby: 0.2.16 - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) workbox-build: 7.4.0(@types/babel__core@7.20.5) workbox-window: 7.4.0 transitivePeerDependencies: - supports-color - vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)): + vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@6.0.3) - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) transitivePeerDependencies: - supports-color - typescript - vite@7.3.2(@types/node@25.9.1)(jiti@2.6.1)(less@4.3.0)(lightningcss@1.32.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3): + vite@7.3.2(@types/node@25.9.1)(jiti@2.6.1)(less@4.3.0)(lightningcss@1.32.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0): dependencies: esbuild: 0.27.4 fdir: 6.5.0(picomatch@4.0.4) @@ -24544,31 +22826,10 @@ snapshots: lightningcss: 1.32.0 sass: 1.97.3 sass-embedded: 1.89.0 - stylus: 0.64.0 terser: 5.47.1 - yaml: 2.8.3 - - vite@8.0.14(@types/node@25.9.1)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.88.0)(stylus@0.64.0)(terser@5.39.1)(yaml@2.8.3): - dependencies: - lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.5.15 - rolldown: 1.0.2 - tinyglobby: 0.2.16 - optionalDependencies: - '@types/node': 25.9.1 - esbuild: 0.25.5 - fsevents: 2.3.3 - jiti: 2.6.1 - less: 4.3.0 - sass: 1.88.0 - sass-embedded: 1.89.0 - stylus: 0.64.0 - terser: 5.39.1 - yaml: 2.8.3 - optional: true + yaml: 2.9.0 - vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3): + vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -24583,18 +22844,17 @@ snapshots: less: 4.3.0 sass: 1.97.3 sass-embedded: 1.89.0 - stylus: 0.64.0 terser: 5.47.1 - yaml: 2.8.3 + yaml: 2.9.0 - vitefu@1.1.3(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)): + vitefu@1.1.3(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)): optionalDependencies: - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) - vitest@4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)): + vitest@4.1.7(@types/node@25.9.1)(@vitest/coverage-v8@4.1.7)(@vitest/ui@4.1.7)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.7 - '@vitest/mocker': 4.1.7(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3)) + '@vitest/mocker': 4.1.7(vite@8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.7 '@vitest/runner': 4.1.7 '@vitest/snapshot': 4.1.7 @@ -24611,7 +22871,7 @@ snapshots: tinyexec: 1.1.2 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.47.1)(yaml@2.8.3) + vite: 8.0.14(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.6.1)(less@4.3.0)(sass-embedded@1.89.0)(sass@1.97.3)(terser@5.47.1)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.9.1 @@ -24629,12 +22889,6 @@ snapshots: dependencies: makeerror: 1.0.12 - watchpack@2.4.2: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - optional: true - watchpack@2.5.1: dependencies: glob-to-regexp: 0.4.1 @@ -24668,6 +22922,44 @@ snapshots: optionalDependencies: webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) + webpack-dev-server@5.2.2(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.8 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.10 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.1 + connect-history-api-fallback: 2.0.0 + express: 4.22.1 + graceful-fs: 4.2.11 + http-proxy-middleware: 2.0.9(@types/express@4.17.25) + ipaddr.js: 2.4.0 + launch-editor: 2.13.2 + open: 10.1.2 + p-retry: 6.2.1 + schema-utils: 4.3.3 + selfsigned: 2.4.1 + serve-index: 1.9.2 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.2(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) + ws: 8.21.0 + optionalDependencies: + webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + webpack-dev-server@5.2.4(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): dependencies: '@types/bonjour': 3.5.13 @@ -24712,13 +23004,6 @@ snapshots: flat: 5.0.2 wildcard: 2.0.1 - webpack-merge@6.0.1: - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - optional: true - webpack-node-externals@3.0.0: {} webpack-sources@3.3.4: {} @@ -24730,38 +23015,6 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.25.5): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.16.0 - acorn-import-phases: 1.0.4(acorn@8.16.0) - browserslist: 4.28.2 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.21.2 - es-module-lexer: 2.0.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - loader-runner: 4.3.1 - mime-db: 1.54.0 - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.3 - terser-webpack-plugin: 5.4.0(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.25.5)(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - watchpack: 2.5.1 - webpack-sources: 3.3.4 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - optional: true - webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0): dependencies: '@types/eslint-scope': 3.7.7 @@ -24907,10 +23160,10 @@ snapshots: '@babel/core': 7.29.0 '@babel/preset-env': 7.29.5(@babel/core@7.29.0) '@babel/runtime': 7.29.2 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.3) - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.60.3) - '@rollup/plugin-replace': 2.4.2(rollup@4.60.3) - '@rollup/plugin-terser': 0.4.4(rollup@4.60.3) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@2.80.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@2.80.0) + '@rollup/plugin-replace': 2.4.2(rollup@2.80.0) + '@rollup/plugin-terser': 0.4.4(rollup@2.80.0) '@surma/rollup-plugin-off-main-thread': 2.2.3 ajv: 8.20.0 common-tags: 1.8.2 @@ -24919,7 +23172,7 @@ snapshots: glob: 11.1.0 lodash: 4.18.1 pretty-bytes: 5.6.0 - rollup: 4.60.3 + rollup: 2.80.0 source-map: 0.8.0-beta.0 stringify-object: 3.3.0 strip-comments: 2.0.1 @@ -25042,6 +23295,8 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 + ws@8.18.0: {} + ws@8.21.0: {} wsl-utils@0.3.1: @@ -25072,7 +23327,7 @@ snapshots: yaml@1.10.2: {} - yaml@2.8.3: {} + yaml@2.9.0: {} yargs-parser@21.1.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 798481f0..8107ae1d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,6 +3,16 @@ packages: - libs/* - tools/* +allowBuilds: + '@parcel/watcher': true + '@swc/core': true + esbuild: true + lmdb: true + msgpackr-extract: true + nx: true + oxc-resolver: true + unrs-resolver: true + onlyBuiltDependencies: - '@parcel/watcher' - '@swc/core' @@ -13,4 +23,3 @@ onlyBuiltDependencies: - nx - oxc-resolver - unrs-resolver - From 6c42d85529768f5ab9f73142cb7f1c6d98177f8e Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 7 Jun 2026 14:58:47 -0400 Subject: [PATCH 19/22] fix: remove @ngrx/signals/events to fix MFE NG0203 error (closes #168) - Removed injectDispatch, eventGroup, on, withReducer from CounterStore - Consolidated into single signalStore with withMethods + patchState - Removed @ngrx/signals/events and @angular/animations from counter-remote shared deps - The root cause: @module-federation/vite generates same loadShare path for @ngrx/signals and @ngrx/signals/events, inlining a separate copy of @angular/core internals (_injectImplementation) that is never set during host DI, causing takeUntilDestroyed() to fail with NG0203. - Updated counter E2E tests: all 31 passed (including MFE integration) - Local verification: counter MFE renders with zero JS errors Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/counter-remote/vite.config.ts | 22 ++++-- .../src/mfe-integration.e2e.spec.ts | 4 +- apps/web-app/vite.config.ts | 7 +- .../counter-container/counter-container.ts | 10 +-- .../src/lib/state/counter.store.spec.ts | 76 +++++------------- libs/counter/src/lib/state/counter.store.ts | 79 ++++++------------- 6 files changed, 72 insertions(+), 126 deletions(-) diff --git a/apps/counter-remote/vite.config.ts b/apps/counter-remote/vite.config.ts index 281cd3a6..c054196d 100644 --- a/apps/counter-remote/vite.config.ts +++ b/apps/counter-remote/vite.config.ts @@ -8,11 +8,18 @@ const cdkMatVer = '~21.2.13'; const sharedDeps = { // Angular core - '@angular/animations': { singleton: true, requiredVersion: angVer }, + // Note: @angular/animations is not shared — counter-remote doesn't use + // Angular animations. Removing it prevents the federation plugin from + // bundling @angular/core internals into a loadShare that has its own + // _injectImplementation (causing NG0203). + // import:false — prevents a loadShare that bundles @angular/core internals + // (assertInInjectionContext with its own _injectImplementation), causing NG0203 '@angular/common': { singleton: true, requiredVersion: angVer }, + // import:false — prevents a loadShare that bundles @angular/core internals + // (assertInInjectionContext), causing NG0203 '@angular/common/http': { singleton: true, requiredVersion: angVer }, '@angular/compiler': { singleton: true, requiredVersion: angVer }, - '@angular/core': { singleton: true, requiredVersion: angVer }, + '@angular/core': { singleton: true, requiredVersion: angVer, import: false }, '@angular/forms': { singleton: true, requiredVersion: angVer }, '@angular/platform-browser': { singleton: true, requiredVersion: angVer }, '@angular/platform-browser/animations': { @@ -155,9 +162,14 @@ const sharedDeps = { requiredVersion: cdkMatVer, import: false, }, - // NgRx - '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, - '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, + // NgRx - base signals shared (host provides, remote uses import:false). + // @ngrx/signals/events is NOT shared - the federation plugin generates + // buggy loadShare imports for sub-path modules. It's bundled directly. + '@ngrx/signals': { + singleton: true, + requiredVersion: '~20.2.0', + import: false, + }, // Utilities rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, diff --git a/apps/web-app-e2e/src/mfe-integration.e2e.spec.ts b/apps/web-app-e2e/src/mfe-integration.e2e.spec.ts index ba4de1ac..17b820a4 100644 --- a/apps/web-app-e2e/src/mfe-integration.e2e.spec.ts +++ b/apps/web-app-e2e/src/mfe-integration.e2e.spec.ts @@ -9,7 +9,9 @@ test.describe('MFE Integration', () => { await page.goto('/mfe-counter'); // Give the MFE a moment to bootstrap - await expect(page.locator('[data-testid="lib-counter"]')).toBeVisible(); + await expect(page.locator('[data-testid="lib-counter"]')).toBeVisible({ + timeout: 15000, + }); expect(errors).toHaveLength(0); }); diff --git a/apps/web-app/vite.config.ts b/apps/web-app/vite.config.ts index ea3277e8..75b49212 100644 --- a/apps/web-app/vite.config.ts +++ b/apps/web-app/vite.config.ts @@ -71,9 +71,10 @@ const mfeSharedDeps = { '@angular/material/table': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/toolbar': { singleton: true, requiredVersion: cdkMatVer }, '@angular/material/tooltip': { singleton: true, requiredVersion: cdkMatVer }, - // NgRx - '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, - '@ngrx/signals/events': { singleton: true, requiredVersion: '~21.1.0' }, + // NgRx - base signals shared (host provides, remote uses import:false). + // @ngrx/signals/events is NOT shared - the federation plugin generates + // buggy loadShare imports for sub-path modules. It's bundled directly. + '@ngrx/signals': { singleton: true, requiredVersion: '~20.2.0' }, // Utilities rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, diff --git a/libs/counter/src/lib/components/counter-container/counter-container.ts b/libs/counter/src/lib/components/counter-container/counter-container.ts index 13d7ee4c..832b1221 100644 --- a/libs/counter/src/lib/components/counter-container/counter-container.ts +++ b/libs/counter/src/lib/components/counter-container/counter-container.ts @@ -5,9 +5,8 @@ import { input, } from '@angular/core'; -import { counterEvents, CounterStore } from '../../state'; +import { CounterStore } from '../../state'; import { Counter } from '../counter/counter'; -import { injectDispatch } from '@ngrx/signals/events'; @Component({ imports: [Counter], @@ -17,9 +16,9 @@ import { injectDispatch } from '@ngrx/signals/events'; `, host: { @@ -30,7 +29,6 @@ import { injectDispatch } from '@ngrx/signals/events'; }) export class CounterContainer { readonly store = inject(CounterStore); - readonly dispatcher = injectDispatch(counterEvents); count = input(null); diff --git a/libs/counter/src/lib/state/counter.store.spec.ts b/libs/counter/src/lib/state/counter.store.spec.ts index 1ca71bb7..47cf5f42 100644 --- a/libs/counter/src/lib/state/counter.store.spec.ts +++ b/libs/counter/src/lib/state/counter.store.spec.ts @@ -1,15 +1,5 @@ import { TestBed } from '@angular/core/testing'; -import { patchState } from '@ngrx/signals'; -import { unprotected } from '@ngrx/signals/testing'; -import { injectDispatch } from '@ngrx/signals/events'; -import { - counterInitialState, - CounterStore, - counterEvents, - decrementCount, - incrementCount, - setCount, -} from './counter.store'; +import { CounterStore } from './counter.store'; describe('CounterStore', () => { let store: CounterStore; @@ -22,59 +12,35 @@ describe('CounterStore', () => { store = TestBed.inject(CounterStore); }); - it('should keep track of count', () => { - let count = counterInitialState.count; - expect(store).toBeTruthy(); - expect(store.count()).toBe(count); - patchState(unprotected(store), incrementCount()); - count++; - expect(store.count()).toBe(count); - patchState(unprotected(store), incrementCount()); - count++; - expect(store.count()).toBe(count); - count = 99; - patchState(unprotected(store), setCount(count)); - expect(store.count()).toBe(count); - patchState(unprotected(store), decrementCount()); - count--; - expect(store.count()).toBe(count); + it('should start with count of 0', () => { + expect(store.count()).toBe(0); }); - it('inputCount should set count from a valid numeric string', () => { - store.inputCount('42'); - expect(store.count()).toBe(42); + it('should increment count', () => { + store.incrementCount(); + expect(store.count()).toBe(1); + store.incrementCount(); + expect(store.count()).toBe(2); }); - it('inputCount should ignore non-numeric input', () => { - store.inputCount('abc'); - expect(store.count()).toBe(0); + it('should decrement count', () => { + store.setCount(10); + store.decrementCount(); + expect(store.count()).toBe(9); }); - it('should handle setCount event via reducer', () => { - const dispatcher = TestBed.runInInjectionContext(() => - injectDispatch(counterEvents), - ); - dispatcher.setCount(7); - TestBed.flushEffects(); - expect(store.count()).toBe(7); + it('should set count', () => { + store.setCount(99); + expect(store.count()).toBe(99); }); - it('should handle incrementCount event via reducer', () => { - const dispatcher = TestBed.runInInjectionContext(() => - injectDispatch(counterEvents), - ); - dispatcher.incrementCount(); - TestBed.flushEffects(); - expect(store.count()).toBe(1); + it('inputCount should set count from a valid numeric string', () => { + store.inputCount('42'); + expect(store.count()).toBe(42); }); - it('should handle decrementCount event via reducer', () => { - const dispatcher = TestBed.runInInjectionContext(() => - injectDispatch(counterEvents), - ); - patchState(unprotected(store), setCount(5)); - dispatcher.decrementCount(); - TestBed.flushEffects(); - expect(store.count()).toBe(4); + it('inputCount should ignore non-numeric input', () => { + store.inputCount('abc'); + expect(store.count()).toBe(0); }); }); diff --git a/libs/counter/src/lib/state/counter.store.ts b/libs/counter/src/lib/state/counter.store.ts index ee3dec58..50209892 100644 --- a/libs/counter/src/lib/state/counter.store.ts +++ b/libs/counter/src/lib/state/counter.store.ts @@ -2,74 +2,41 @@ import { patchState, signalMethod, signalStore, - signalStoreFeature, - type, withMethods, withState, } from '@ngrx/signals'; -import { eventGroup, on, withReducer } from '@ngrx/signals/events'; +// NOTE: @ngrx/signals/events is deliberately NOT used here because its internal +// dependency on takeUntilDestroyed (from @angular/core/rxjs-interop) would get +// inlined with a private _injectImplementation by the federation plugin, +// causing NG0203 when the store is created in an MFE remote. export type CounterState = { count: number; }; -export const counterEvents = eventGroup({ - source: 'Counter Page', - events: { - setCount: type(), - incrementCount: type(), - decrementCount: type(), - }, -}); - export const counterInitialState: CounterState = { count: 0 }; -export function incrementCount() { - return (state: CounterState) => ({ - ...state, - count: state.count + 1, - }); -} - -export function decrementCount() { - return (state: CounterState) => ({ - ...state, - count: state.count - 1, - }); -} - -export function setCount(count: number) { - return { count }; -} - -export function withCounterFeature() { - return signalStoreFeature( - withState(counterInitialState), - withMethods((store) => ({ - inputCount: signalMethod((count) => { - if (!isNaN(+count)) { - patchState(store, setCount(+count)); - } - }), - })), - ); -} - -export function withCounterReducer() { - return signalStoreFeature( - { state: type() }, - withReducer( - on(counterEvents.setCount, ({ payload }) => setCount(payload)), - on(counterEvents.incrementCount, () => incrementCount()), - on(counterEvents.decrementCount, () => decrementCount()), - ), - ); -} - export const CounterStore = signalStore( { providedIn: 'root' }, - withCounterFeature(), - withCounterReducer(), + withState(counterInitialState), + withMethods((store) => ({ + incrementCount: () => + patchState(store, (state) => ({ + ...state, + count: state.count + 1, + })), + decrementCount: () => + patchState(store, (state) => ({ + ...state, + count: state.count - 1, + })), + setCount: (count: number) => patchState(store, { count }), + inputCount: signalMethod((count) => { + if (!isNaN(+count)) { + patchState(store, { count: +count }); + } + }), + })), ); export type CounterStore = InstanceType; From 0bb71d46153f02c7ba5f130bf0835f8ca266c6b2 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 7 Jun 2026 15:02:05 -0400 Subject: [PATCH 20/22] fix: restore @ngrx/signals requiredVersion to ~21.1.0 (matches installed) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/web-app/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web-app/vite.config.ts b/apps/web-app/vite.config.ts index 75b49212..b5a49119 100644 --- a/apps/web-app/vite.config.ts +++ b/apps/web-app/vite.config.ts @@ -74,7 +74,7 @@ const mfeSharedDeps = { // NgRx - base signals shared (host provides, remote uses import:false). // @ngrx/signals/events is NOT shared - the federation plugin generates // buggy loadShare imports for sub-path modules. It's bundled directly. - '@ngrx/signals': { singleton: true, requiredVersion: '~20.2.0' }, + '@ngrx/signals': { singleton: true, requiredVersion: '~21.1.0' }, // Utilities rxjs: { singleton: true, requiredVersion: '~7.8.2' }, tslib: { singleton: true, requiredVersion: '~2.8.1' }, From 2c7aaf7222c31cc92eb2fedb4639dbbb128d011d Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 7 Jun 2026 15:03:43 -0400 Subject: [PATCH 21/22] fix: restore @ngrx/signals requiredVersion to ~21.1.0 in counter-remote too Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- apps/counter-remote/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/counter-remote/vite.config.ts b/apps/counter-remote/vite.config.ts index c054196d..5c776836 100644 --- a/apps/counter-remote/vite.config.ts +++ b/apps/counter-remote/vite.config.ts @@ -167,7 +167,7 @@ const sharedDeps = { // buggy loadShare imports for sub-path modules. It's bundled directly. '@ngrx/signals': { singleton: true, - requiredVersion: '~20.2.0', + requiredVersion: '~21.1.0', import: false, }, // Utilities From b1973f78ebe7351382180022017e36b1c6028dd6 Mon Sep 17 00:00:00 2001 From: chrisjwalk-bot <268224883+chrisjwalk-bot@users.noreply.github.com> Date: Sun, 7 Jun 2026 15:08:13 -0400 Subject: [PATCH 22/22] fix: migrate pnpm overrides to workspace yaml, bump CI to pnpm 11 - Moved pnpm.overrides from package.json to pnpm-workspace.yaml (fixes pnpm 11 deprecation warning & CI lockfile mismatch with --frozen-lockfile) - Updated all 3 CI workflows to pnpm 11 to match local version - Regenerated lockfile Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/deploy.yml | 2 +- .github/workflows/preview.yml | 2 +- package.json | 36 +--- pnpm-lock.yaml | 367 ++++++++++++---------------------- pnpm-workspace.yaml | 33 +++ 6 files changed, 167 insertions(+), 275 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9cdb5ba8..fc7861b5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: - uses: pnpm/action-setup@v4 with: - version: 10 + version: 11 - uses: actions/setup-node@v6 with: diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 43edb3a2..bd45a7df 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -38,7 +38,7 @@ jobs: - uses: pnpm/action-setup@v4 with: - version: 10 + version: 11 - uses: actions/setup-node@v6 with: diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index f30b9922..0381e282 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -22,7 +22,7 @@ jobs: - uses: pnpm/action-setup@v4 with: - version: 10 + version: 11 - uses: actions/setup-node@v6 with: diff --git a/package.json b/package.json index 7d41610e..71b524e8 100644 --- a/package.json +++ b/package.json @@ -153,39 +153,5 @@ "vite-tsconfig-paths": "6.1.1", "vitest": "4.1.7" }, - "pnpm": { - "overrides": { - "node-forge": "^1.4.0", - "axios": ">=1.15.2", - "@hono/node-server": ">=1.19.13", - "ajv@8": ">=8.18.0", - "brace-expansion@2": ">=2.0.3", - "brace-expansion@5": ">=5.0.6", - "flatted": ">=3.4.2", - "follow-redirects": ">=1.16.0", - "hono": ">=4.12.18", - "koa": ">=3.1.2", - "lodash-es": ">=4.18.0", - "minimatch@9": ">=9.0.7", - "minimatch@10": ">=10.2.3", - "path-to-regexp@0": "~0.1.13", - "path-to-regexp@8": ">=8.4.0", - "picomatch@2": ">=2.3.2", - "picomatch@4": ">=4.0.4", - "qs": ">=6.15.2", - "rollup": ">=4.59.0", - "serialize-javascript": ">=7.0.5", - "tar": ">=7.5.11", - "webpack": ">=5.104.1", - "yaml@2": ">=2.8.3", - "vite@6": ">=6.4.2", - "fast-uri": ">=3.1.2", - "uuid@11": ">=11.1.1 <12", - "ip-address": ">=10.1.1", - "@babel/plugin-transform-modules-systemjs": ">=7.29.4", - "ws": ">=8.20.1", - "webpack-dev-server": ">=5.2.4", - "uuid@8": ">=12.0.1" - } - } + "pnpm": {} } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b105498e..ec364534 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,39 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + node-forge: ^1.4.0 + axios: '>=1.15.2' + '@hono/node-server': '>=1.19.13' + ajv@8: '>=8.18.0' + brace-expansion@2: '>=2.0.3' + brace-expansion@5: '>=5.0.6' + flatted: '>=3.4.2' + follow-redirects: '>=1.16.0' + hono: '>=4.12.18' + koa: '>=3.1.2' + lodash-es: '>=4.18.0' + minimatch@9: '>=9.0.7' + minimatch@10: '>=10.2.3' + path-to-regexp@0: ~0.1.13 + path-to-regexp@8: '>=8.4.0' + picomatch@2: '>=2.3.2' + picomatch@4: '>=4.0.4' + qs: '>=6.15.2' + rollup: '>=4.59.0' + serialize-javascript: '>=7.0.5' + tar: '>=7.5.11' + webpack: '>=5.104.1' + yaml@2: '>=2.8.3' + vite@6: '>=6.4.2' + fast-uri: '>=3.1.2' + uuid@11: '>=11.1.1 <12' + ip-address: '>=10.1.1' + '@babel/plugin-transform-modules-systemjs': '>=7.29.4' + ws: '>=8.20.1' + webpack-dev-server: '>=5.2.4' + uuid@8: '>=12.0.1' + importers: .: @@ -438,7 +471,7 @@ packages: marked-shiki: ^1.2.1 prismjs: '*' shiki: ^1.29.2 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: '>=6.4.2' peerDependenciesMeta: '@nx/angular': optional: true @@ -467,7 +500,7 @@ packages: peerDependencies: '@angular-devkit/build-angular': ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 '@angular/build': ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: '>=6.4.2' peerDependenciesMeta: '@angular-devkit/build-angular': optional: true @@ -730,7 +763,7 @@ packages: resolution: {integrity: sha512-TajUJwGWbDwkCx/CZi7tRE8PVB7simCvKJfHUsSdvps+aTM/PDPP4gkLmKnc+x3CE//y9i/nj74GqdL/hwk7Iw==} engines: {node: '>=10'} peerDependencies: - ajv: '>=8' + ajv: '>=8.18.0' '@asamuzakjp/css-color@5.1.11': resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} @@ -2099,7 +2132,7 @@ packages: resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==} engines: {node: '>=18.14.1'} peerDependencies: - hono: ^4 + hono: '>=4.12.18' '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -2535,7 +2568,7 @@ packages: peerDependencies: typescript: ^4.9.0 || ^5.0.0 vue-tsc: '>=1.0.24' - webpack: ^5.0.0 + webpack: '>=5.104.1' peerDependenciesMeta: typescript: optional: true @@ -2550,7 +2583,7 @@ packages: peerDependencies: typescript: ^4.9.0 || ^5.0.0 vue-tsc: '>=1.0.24' - webpack: ^5.0.0 + webpack: '>=5.104.1' peerDependenciesMeta: typescript: optional: true @@ -2599,7 +2632,7 @@ packages: next: '*' react: ^16||^17||^18||^19 react-dom: ^16||^17||^18||^19 - webpack: ^5.40.0 + webpack: '>=5.104.1' peerDependenciesMeta: next: optional: true @@ -2687,7 +2720,7 @@ packages: '@module-federation/vite@1.16.2': resolution: {integrity: sha512-XjfReMlQWe+i0SCmkbhrqIuo7WEGIoWH4AsvBQ9gLBa+DxA4qnygJrL6kHi7T1z7EVNRhTTysTHm4ezXGkvr5Q==} peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: '>=6.4.2' '@module-federation/webpack-bundler-runtime@0.21.6': resolution: {integrity: sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ==} @@ -3063,14 +3096,14 @@ packages: '@nx/vite@22.7.5': resolution: {integrity: sha512-udKstx9fDT+Z/SacxVBJWdqDhaxee9/rA+F6nyg97PTH4JAGVuj+LZIFPakqiSg623GXMAGmK0gzAswAuWrYIQ==} peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: '>=6.4.2' vitest: ^1.3.1 || ^2.0.0 || ^3.0.0 || ^4.0.0 '@nx/vitest@22.7.5': resolution: {integrity: sha512-+E/IOIpzKbIfnTugx5vk9nDRw9tJEPIdNguYusSrzyZ6UNxiLBO9ipamNKiXw/4lPCtGH2TGx6M9nBQDUg/ciQ==} peerDependencies: '@nx/eslint': 22.7.5 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: '>=6.4.2' vitest: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 peerDependenciesMeta: '@nx/eslint': @@ -3715,7 +3748,7 @@ packages: resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} engines: {node: '>=20.19.0'} peerDependencies: - rollup: '>=4.0.0' + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -3726,7 +3759,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0 '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 + rollup: '>=4.59.0' peerDependenciesMeta: '@types/babel__core': optional: true @@ -3735,7 +3768,7 @@ packages: resolution: {integrity: sha512-S/ggWH1LU7jTyi9DxZOKyxpVd4hF/OZ0JrEbeLjXk/DFXwRny0tjD2c992zOUYQobLrVkRVMDdmHP16HKP7GRg==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -3744,7 +3777,7 @@ packages: resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -3753,7 +3786,7 @@ packages: resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -3762,7 +3795,7 @@ packages: resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -3771,7 +3804,7 @@ packages: resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -3779,13 +3812,13 @@ packages: '@rollup/plugin-replace@2.4.2': resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} peerDependencies: - rollup: ^1.20.0 || ^2.0.0 + rollup: '>=4.59.0' '@rollup/plugin-replace@6.0.3': resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -3794,7 +3827,7 @@ packages: resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -3803,7 +3836,7 @@ packages: resolution: {integrity: sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==} engines: {node: '>=20.0.0'} peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -3812,13 +3845,13 @@ packages: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0 + rollup: '>=4.59.0' '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + rollup: '>=4.59.0' peerDependenciesMeta: rollup: optional: true @@ -4580,9 +4613,6 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/node-forge@1.3.14': - resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@25.6.2': resolution: {integrity: sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==} @@ -4864,7 +4894,7 @@ packages: resolution: {integrity: sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} peerDependencies: - vite: ^6.0.0 || ^7.0.0 + vite: '>=6.4.2' '@vitest/coverage-v8@4.1.7': resolution: {integrity: sha512-qsYPeXc5Q9dFLd1i8Ap+Bx8sQgcp+rFVQo4R0dDsWNBzl26ldVF1qOO+RL24K7FDrR6pA+50XedRLSoSG24bVQ==} @@ -4882,7 +4912,7 @@ packages: resolution: {integrity: sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: '>=6.4.2' peerDependenciesMeta: msw: optional: true @@ -5036,7 +5066,7 @@ packages: ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: - ajv: ^8.0.0 + ajv: '>=8.18.0' peerDependenciesMeta: ajv: optional: true @@ -5044,7 +5074,7 @@ packages: ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: - ajv: ^8.0.0 + ajv: '>=8.18.0' peerDependenciesMeta: ajv: optional: true @@ -5057,7 +5087,7 @@ packages: ajv-keywords@5.1.0: resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: - ajv: ^8.8.2 + ajv: '>=8.18.0' ajv@6.14.0: resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} @@ -5224,7 +5254,7 @@ packages: engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 - webpack: '>=5' + webpack: '>=5.104.1' babel-plugin-const-enum@1.2.0: resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} @@ -5786,7 +5816,7 @@ packages: resolution: {integrity: sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==} engines: {node: '>= 20.9.0'} peerDependencies: - webpack: ^5.1.0 + webpack: '>=5.104.1' core-js-compat@3.49.0: resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} @@ -5880,7 +5910,7 @@ packages: engines: {node: '>= 12.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x - webpack: ^5.0.0 + webpack: '>=5.104.1' peerDependenciesMeta: '@rspack/core': optional: true @@ -5897,7 +5927,7 @@ packages: csso: '*' esbuild: '*' lightningcss: '*' - webpack: ^5.0.0 + webpack: '>=5.104.1' peerDependenciesMeta: '@parcel/css': optional: true @@ -6709,7 +6739,7 @@ packages: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: - picomatch: ^3 || ^4 + picomatch: '>=4.0.4' peerDependenciesMeta: picomatch: optional: true @@ -6804,7 +6834,7 @@ packages: engines: {node: '>=14.21.3'} peerDependencies: typescript: '>3.6.0' - webpack: ^5.11.0 + webpack: '>=5.104.1' form-data@4.0.5: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} @@ -7271,12 +7301,8 @@ packages: resolution: {integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==} engines: {node: '>=12.22.0'} - ip-address@10.0.1: - resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} - engines: {node: '>= 12'} - - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + ip-address@10.2.0: + resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} engines: {node: '>= 12'} ip-regex@4.3.0: @@ -7547,7 +7573,7 @@ packages: isomorphic-ws@5.0.0: resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: - ws: '*' + ws: '>=8.20.1' istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} @@ -7724,9 +7750,6 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@29.1.1: resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} @@ -7832,8 +7855,8 @@ packages: koa-compose@4.1.0: resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} - koa@3.0.3: - resolution: {integrity: sha512-MeuwbCoN1daWS32/Ni5qkzmrOtQO2qrnfdxDHjrm6s4b59yG4nexAJ0pTEFyzjLp0pBVO80CZp0vW8Ze30Ebow==} + koa@3.2.1: + resolution: {integrity: sha512-e7IpWJrnanNUroVK2taAgMxoEZvHLXdQiNjeExSu/DEIWm83jaKGBgb7tLmu2rMYpA027qFB3iLR/k3AVpFRnA==} engines: {node: '>= 18'} launch-editor@2.13.2: @@ -7855,7 +7878,7 @@ packages: peerDependencies: '@rspack/core': 0.x || 1.x less: ^3.5.0 || ^4.0.0 - webpack: ^5.0.0 + webpack: '>=5.104.1' peerDependenciesMeta: '@rspack/core': optional: true @@ -8250,7 +8273,7 @@ packages: resolution: {integrity: sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==} engines: {node: '>= 12.13.0'} peerDependencies: - webpack: ^5.0.0 + webpack: '>=5.104.1' minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} @@ -8878,7 +8901,7 @@ packages: peerDependencies: '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 + webpack: '>=5.104.1' peerDependenciesMeta: '@rspack/core': optional: true @@ -9137,10 +9160,6 @@ packages: resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} engines: {node: '>=16.0.0'} - qs@6.14.2: - resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} - engines: {node: '>=0.6'} - qs@6.15.2: resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==} engines: {node: '>=0.6'} @@ -9157,9 +9176,6 @@ packages: rambda@9.4.2: resolution: {integrity: sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -9362,18 +9378,13 @@ packages: hasBin: true peerDependencies: rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc - rollup: 2.x || 3.x || 4.x + rollup: '>=4.59.0' peerDependenciesMeta: rolldown: optional: true rollup: optional: true - rollup@2.80.0: - resolution: {integrity: sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==} - engines: {node: '>=10.0.0'} - hasBin: true - rollup@4.60.3: resolution: {integrity: sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -9553,7 +9564,7 @@ packages: node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 sass: ^1.3.0 sass-embedded: '*' - webpack: ^5.0.0 + webpack: '>=5.104.1' peerDependenciesMeta: '@rspack/core': optional: true @@ -9606,10 +9617,6 @@ packages: select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - selfsigned@5.5.0: resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} engines: {node: '>=18'} @@ -9640,9 +9647,6 @@ packages: resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} engines: {node: '>= 18'} - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serialize-javascript@7.0.5: resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==} engines: {node: '>=20.0.0'} @@ -9787,7 +9791,7 @@ packages: resolution: {integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==} engines: {node: '>= 18.12.0'} peerDependencies: - webpack: ^5.72.1 + webpack: '>=5.104.1' source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -9840,9 +9844,6 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - ssri@13.0.0: resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} engines: {node: ^20.17.0 || >=22.9.0} @@ -9970,7 +9971,7 @@ packages: resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} engines: {node: '>= 12.13.0'} peerDependencies: - webpack: ^5.0.0 + webpack: '>=5.104.1' stylehacks@7.0.8: resolution: {integrity: sha512-I3f053GBLIiS5Fg6OMFhq/c+yW+5Hc2+1fgq7gElDMMSqwlRb3tBf2ef6ucLStYRpId4q//bQO1FjcyNyy4yDQ==} @@ -10068,7 +10069,7 @@ packages: '@swc/core': '*' esbuild: '*' uglify-js: '*' - webpack: ^5.1.0 + webpack: '>=5.104.1' peerDependenciesMeta: '@swc/core': optional: true @@ -10203,7 +10204,7 @@ packages: engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' - webpack: ^5.0.0 + webpack: '>=5.104.1' ts-morph@21.0.1: resolution: {integrity: sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==} @@ -10553,9 +10554,8 @@ packages: resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} hasBin: true - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). + uuid@14.0.0: + resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==} hasBin: true v8-compile-cache-lib@3.0.1: @@ -10590,7 +10590,7 @@ packages: engines: {node: '>=16.0.0'} peerDependencies: '@vite-pwa/assets-generator': ^1.0.0 - vite: ^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: '>=6.4.2' workbox-build: ^7.4.1 workbox-window: ^7.4.1 peerDependenciesMeta: @@ -10600,7 +10600,7 @@ packages: vite-tsconfig-paths@6.1.1: resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==} peerDependencies: - vite: '*' + vite: '>=6.4.2' vite@7.3.2: resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} @@ -10617,7 +10617,7 @@ packages: sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 - yaml: ^2.4.2 + yaml: '>=2.8.3' peerDependenciesMeta: '@types/node': optional: true @@ -10658,7 +10658,7 @@ packages: sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 - yaml: ^2.4.2 + yaml: '>=2.8.3' peerDependenciesMeta: '@types/node': optional: true @@ -10688,7 +10688,7 @@ packages: vitefu@1.1.3: resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: '>=6.4.2' peerDependenciesMeta: vite: optional: true @@ -10709,7 +10709,7 @@ packages: '@vitest/ui': 4.1.7 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: '>=6.4.2' peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -10768,30 +10768,17 @@ packages: resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} engines: {node: '>= 18.12.0'} peerDependencies: - webpack: ^5.0.0 + webpack: '>=5.104.1' peerDependenciesMeta: webpack: optional: true - webpack-dev-server@5.2.2: - resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} - engines: {node: '>= 18.12.0'} - hasBin: true - peerDependencies: - webpack: ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - webpack-dev-server@5.2.4: resolution: {integrity: sha512-GqDPGZN9bRqKBTkp4aWkobDDHMsrXKoGSdOH56smIri8qR0JG8gfL8/v/f/OZR3/OKXjG8uwJbFVhKm/FNU/UA==} engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: - webpack: ^5.0.0 + webpack: '>=5.104.1' webpack-cli: '*' peerDependenciesMeta: webpack: @@ -10816,7 +10803,7 @@ packages: engines: {node: '>= 12'} peerDependencies: html-webpack-plugin: '>= 5.0.0-beta.1 < 6' - webpack: ^5.12.0 + webpack: '>=5.104.1' peerDependenciesMeta: html-webpack-plugin: optional: true @@ -10983,18 +10970,6 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.21.0: resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} engines: {node: '>=10.0.0'} @@ -13531,14 +13506,14 @@ snapshots: axios: 1.16.0 chalk: 3.0.0 fs-extra: 9.1.0 - isomorphic-ws: 5.0.0(ws@8.18.0) - koa: 3.0.3 + isomorphic-ws: 5.0.0(ws@8.21.0) + koa: 3.2.1 lodash.clonedeepwith: 4.5.0 log4js: 6.9.1 node-schedule: 2.1.1 rambda: 9.4.2 typescript: 6.0.3 - ws: 8.18.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - debug @@ -13553,11 +13528,11 @@ snapshots: '@module-federation/third-party-dts-extractor': 2.4.0 adm-zip: 0.5.10 ansi-colors: 4.1.3 - isomorphic-ws: 5.0.0(ws@8.18.0) + isomorphic-ws: 5.0.0(ws@8.21.0) node-schedule: 2.1.1 typescript: 6.0.3 undici: 7.24.7 - ws: 8.18.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - node-fetch @@ -13571,11 +13546,11 @@ snapshots: '@module-federation/third-party-dts-extractor': 2.5.0 adm-zip: 0.5.10 ansi-colors: 4.1.3 - isomorphic-ws: 5.0.0(ws@8.18.0) + isomorphic-ws: 5.0.0(ws@8.21.0) node-schedule: 2.1.1 typescript: 6.0.3 undici: 7.24.7 - ws: 8.18.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - node-fetch @@ -15055,12 +15030,12 @@ snapshots: optionalDependencies: rollup: 4.60.3 - '@rollup/plugin-babel@5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@2.80.0)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.3)': dependencies: '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 - '@rollup/pluginutils': 3.1.0(rollup@2.80.0) - rollup: 2.80.0 + '@rollup/pluginutils': 3.1.0(rollup@4.60.3) + rollup: 4.60.3 optionalDependencies: '@types/babel__core': 7.20.5 transitivePeerDependencies: @@ -15092,15 +15067,15 @@ snapshots: optionalDependencies: rollup: 4.60.3 - '@rollup/plugin-node-resolve@15.3.1(rollup@2.80.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.60.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@2.80.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.12 optionalDependencies: - rollup: 2.80.0 + rollup: 4.60.3 '@rollup/plugin-node-resolve@16.0.3(rollup@4.60.3)': dependencies: @@ -15112,11 +15087,11 @@ snapshots: optionalDependencies: rollup: 4.60.3 - '@rollup/plugin-replace@2.4.2(rollup@2.80.0)': + '@rollup/plugin-replace@2.4.2(rollup@4.60.3)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.80.0) + '@rollup/pluginutils': 3.1.0(rollup@4.60.3) magic-string: 0.25.9 - rollup: 2.80.0 + rollup: 4.60.3 '@rollup/plugin-replace@6.0.3(rollup@4.60.3)': dependencies: @@ -15125,13 +15100,13 @@ snapshots: optionalDependencies: rollup: 4.60.3 - '@rollup/plugin-terser@0.4.4(rollup@2.80.0)': + '@rollup/plugin-terser@0.4.4(rollup@4.60.3)': dependencies: - serialize-javascript: 6.0.2 + serialize-javascript: 7.0.5 smob: 1.6.1 terser: 5.47.1 optionalDependencies: - rollup: 2.80.0 + rollup: 4.60.3 '@rollup/plugin-terser@1.0.0(rollup@4.60.3)': dependencies: @@ -15141,20 +15116,12 @@ snapshots: optionalDependencies: rollup: 4.60.3 - '@rollup/pluginutils@3.1.0(rollup@2.80.0)': + '@rollup/pluginutils@3.1.0(rollup@4.60.3)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 - picomatch: 2.3.2 - rollup: 2.80.0 - - '@rollup/pluginutils@5.3.0(rollup@2.80.0)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 picomatch: 4.0.4 - optionalDependencies: - rollup: 2.80.0 + rollup: 4.60.3 '@rollup/pluginutils@5.3.0(rollup@4.60.3)': dependencies: @@ -15298,7 +15265,7 @@ snapshots: chokidar: 3.6.0 http-proxy-middleware: 2.0.9(@types/express@4.17.25) p-retry: 6.2.1 - webpack-dev-server: 5.2.2(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) + webpack-dev-server: 5.2.4(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) ws: 8.21.0 transitivePeerDependencies: - '@types/express' @@ -15889,10 +15856,6 @@ snapshots: '@types/mime@1.3.5': {} - '@types/node-forge@1.3.14': - dependencies: - '@types/node': 25.9.1 - '@types/node@25.6.2': dependencies: undici-types: 7.19.2 @@ -16813,7 +16776,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.14.2 + qs: 6.15.2 raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 @@ -18181,7 +18144,7 @@ snapshots: express-rate-limit@8.2.1(express@5.2.1): dependencies: express: 5.2.1 - ip-address: 10.0.1 + ip-address: 10.2.0 express@4.22.1: dependencies: @@ -18206,7 +18169,7 @@ snapshots: parseurl: 1.3.3 path-to-regexp: 0.1.13 proxy-addr: 2.0.7 - qs: 6.14.2 + qs: 6.15.2 range-parser: 1.2.1 safe-buffer: 5.2.1 send: 0.19.2 @@ -18937,12 +18900,7 @@ snapshots: transitivePeerDependencies: - supports-color - ip-address@10.0.1: {} - - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 + ip-address@10.2.0: {} ip-regex@4.3.0: {} @@ -19156,9 +19114,9 @@ snapshots: isobject@3.0.1: {} - isomorphic-ws@5.0.0(ws@8.18.0): + isomorphic-ws@5.0.0(ws@8.21.0): dependencies: - ws: 8.18.0 + ws: 8.21.0 istanbul-lib-coverage@3.2.2: {} @@ -19520,8 +19478,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@1.1.0: {} - jsdom@29.1.1: dependencies: '@asamuzakjp/css-color': 5.1.11 @@ -19626,10 +19582,10 @@ snapshots: koa-compose@4.1.0: {} - koa@3.0.3: + koa@3.2.1: dependencies: accepts: 1.3.8 - content-disposition: 0.5.4 + content-disposition: 1.0.1 content-type: 1.0.5 cookies: 0.9.1 delegates: 1.0.0 @@ -21207,10 +21163,6 @@ snapshots: pvutils@1.1.5: {} - qs@6.14.2: - dependencies: - side-channel: 1.1.0 - qs@6.15.2: dependencies: side-channel: 1.1.0 @@ -21223,10 +21175,6 @@ snapshots: rambda@9.4.2: {} - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - range-parser@1.2.1: {} raw-body@2.5.3: @@ -21479,10 +21427,6 @@ snapshots: rolldown: 1.0.2 rollup: 4.60.3 - rollup@2.80.0: - optionalDependencies: - fsevents: 2.3.3 - rollup@4.60.3: dependencies: '@types/estree': 1.0.8 @@ -21713,11 +21657,6 @@ snapshots: select-hose@2.0.0: {} - selfsigned@2.4.1: - dependencies: - '@types/node-forge': 1.3.14 - node-forge: 1.4.0 - selfsigned@5.5.0: dependencies: '@peculiar/x509': 1.14.3 @@ -21766,10 +21705,6 @@ snapshots: transitivePeerDependencies: - supports-color - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - serialize-javascript@7.0.5: {} serve-index@1.9.2: @@ -21934,7 +21869,7 @@ snapshots: sockjs@0.3.24: dependencies: faye-websocket: 0.11.4 - uuid: 8.3.2 + uuid: 14.0.0 websocket-driver: 0.7.4 socks-proxy-agent@8.0.5: @@ -21947,7 +21882,7 @@ snapshots: socks@2.8.4: dependencies: - ip-address: 9.0.5 + ip-address: 10.2.0 smart-buffer: 4.2.0 sorted-array-functions@1.3.0: {} @@ -22024,8 +21959,6 @@ snapshots: sprintf-js@1.0.3: {} - sprintf-js@1.1.3: {} - ssri@13.0.0: dependencies: minipass: 7.1.3 @@ -22758,7 +22691,7 @@ snapshots: uuid@11.1.1: {} - uuid@8.3.2: {} + uuid@14.0.0: {} v8-compile-cache-lib@3.0.1: {} @@ -22922,44 +22855,6 @@ snapshots: optionalDependencies: webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - webpack-dev-server@5.2.2(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.25 - '@types/express-serve-static-core': 4.19.8 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.10 - '@types/sockjs': 0.3.36 - '@types/ws': 8.18.1 - ansi-html-community: 0.0.8 - bonjour-service: 1.3.0 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.8.1 - connect-history-api-fallback: 2.0.0 - express: 4.22.1 - graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.25) - ipaddr.js: 2.4.0 - launch-editor: 2.13.2 - open: 10.1.2 - p-retry: 6.2.1 - schema-utils: 4.3.3 - selfsigned: 2.4.1 - serve-index: 1.9.2 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)) - ws: 8.21.0 - optionalDependencies: - webpack: 5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - webpack-dev-server@5.2.4(webpack@5.106.2(@swc/core@1.15.40(@swc/helpers@0.5.23))(esbuild@0.28.0)): dependencies: '@types/bonjour': 3.5.13 @@ -23160,10 +23055,10 @@ snapshots: '@babel/core': 7.29.0 '@babel/preset-env': 7.29.5(@babel/core@7.29.0) '@babel/runtime': 7.29.2 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@2.80.0) - '@rollup/plugin-node-resolve': 15.3.1(rollup@2.80.0) - '@rollup/plugin-replace': 2.4.2(rollup@2.80.0) - '@rollup/plugin-terser': 0.4.4(rollup@2.80.0) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.3) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.60.3) + '@rollup/plugin-replace': 2.4.2(rollup@4.60.3) + '@rollup/plugin-terser': 0.4.4(rollup@4.60.3) '@surma/rollup-plugin-off-main-thread': 2.2.3 ajv: 8.20.0 common-tags: 1.8.2 @@ -23172,7 +23067,7 @@ snapshots: glob: 11.1.0 lodash: 4.18.1 pretty-bytes: 5.6.0 - rollup: 2.80.0 + rollup: 4.60.3 source-map: 0.8.0-beta.0 stringify-object: 3.3.0 strip-comments: 2.0.1 @@ -23295,8 +23190,6 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - ws@8.18.0: {} - ws@8.21.0: {} wsl-utils@0.3.1: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8107ae1d..158f2b95 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,6 +3,39 @@ packages: - libs/* - tools/* +overrides: + node-forge: '^1.4.0' + axios: '>=1.15.2' + '@hono/node-server': '>=1.19.13' + ajv@8: '>=8.18.0' + brace-expansion@2: '>=2.0.3' + brace-expansion@5: '>=5.0.6' + flatted: '>=3.4.2' + follow-redirects: '>=1.16.0' + hono: '>=4.12.18' + koa: '>=3.1.2' + lodash-es: '>=4.18.0' + minimatch@9: '>=9.0.7' + minimatch@10: '>=10.2.3' + path-to-regexp@0: '~0.1.13' + path-to-regexp@8: '>=8.4.0' + picomatch@2: '>=2.3.2' + picomatch@4: '>=4.0.4' + qs: '>=6.15.2' + rollup: '>=4.59.0' + serialize-javascript: '>=7.0.5' + tar: '>=7.5.11' + webpack: '>=5.104.1' + yaml@2: '>=2.8.3' + vite@6: '>=6.4.2' + fast-uri: '>=3.1.2' + uuid@11: '>=11.1.1 <12' + ip-address: '>=10.1.1' + '@babel/plugin-transform-modules-systemjs': '>=7.29.4' + ws: '>=8.20.1' + webpack-dev-server: '>=5.2.4' + uuid@8: '>=12.0.1' + allowBuilds: '@parcel/watcher': true '@swc/core': true