From 6ce1d36406c3565154af38bfe8d653e8055fbaf1 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 13:32:34 -0400 Subject: [PATCH 01/33] fix(vite-plugin-angular): centralize stylesheet handling for hmr --- packages/platform/src/lib/options.ts | 10 +- packages/platform/src/lib/platform-plugin.ts | 1 + .../storybook-angular/src/lib/preset.spec.ts | 35 +- packages/storybook-angular/src/lib/preset.ts | 11 +- packages/storybook-angular/src/types.ts | 4 + .../src/lib/angular-jit-plugin.ts | 6 +- .../angular-vite-plugin-live-reload.spec.ts | 8 +- .../src/lib/angular-vite-plugin.spec.ts | 297 ++++++- .../src/lib/angular-vite-plugin.ts | 795 ++++++++++++++---- .../vite-plugin-angular/src/lib/host.spec.ts | 26 +- packages/vite-plugin-angular/src/lib/host.ts | 86 +- .../lib/plugins/file-replacements.plugin.ts | 7 +- .../src/lib/stylesheet-registry.spec.ts | 61 ++ .../src/lib/stylesheet-registry.ts | 133 +++ 14 files changed, 1280 insertions(+), 200 deletions(-) create mode 100644 packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts create mode 100644 packages/vite-plugin-angular/src/lib/stylesheet-registry.ts diff --git a/packages/platform/src/lib/options.ts b/packages/platform/src/lib/options.ts index 3f9982520..9489ac1b9 100644 --- a/packages/platform/src/lib/options.ts +++ b/packages/platform/src/lib/options.ts @@ -67,7 +67,7 @@ export interface Options { * * When `false`, the following top-level options are ignored because they * are only forwarded to the internal Angular plugin: `jit`, - * `disableTypeChecking`, `liveReload`, `inlineStylesExtension`, + * `disableTypeChecking`, `hmr`, `liveReload`, `inlineStylesExtension`, * `fileReplacements`, and `include`. * * Use this to configure the embedded Angular integration itself, not as the @@ -85,7 +85,13 @@ export interface Options { */ inlineStylesExtension?: string; /** - * Enables Angular's HMR during development + * Enables Angular's HMR during development/watch mode. + * + * Defaults to `true` for watch mode. + */ + hmr?: boolean; + /** + * @deprecated Use `hmr` instead. Kept as a compatibility alias. */ liveReload?: boolean; /** diff --git a/packages/platform/src/lib/platform-plugin.ts b/packages/platform/src/lib/platform-plugin.ts index bfe5a28b4..2acf79e8e 100644 --- a/packages/platform/src/lib/platform-plugin.ts +++ b/packages/platform/src/lib/platform-plugin.ts @@ -106,6 +106,7 @@ export function platformPlugin(opts: Options = {}): Plugin[] { ), ], additionalContentDirs: platformOptions.additionalContentDirs, + hmr: platformOptions.hmr, liveReload: platformOptions.liveReload, inlineStylesExtension: platformOptions.inlineStylesExtension, fileReplacements: platformOptions.fileReplacements, diff --git a/packages/storybook-angular/src/lib/preset.spec.ts b/packages/storybook-angular/src/lib/preset.spec.ts index e023be32f..56b30fefb 100644 --- a/packages/storybook-angular/src/lib/preset.spec.ts +++ b/packages/storybook-angular/src/lib/preset.spec.ts @@ -1,5 +1,7 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; +const angularPluginMock = vi.fn(() => ({ name: 'angular-mock' })); + /** * The preset module uses top-level imports that are hard to mock in isolation. * Instead, we test `resolveExperimentalZoneless` indirectly through `viteFinal` @@ -28,7 +30,7 @@ vi.mock('vite', () => ({ })); vi.mock('@analogjs/vite-plugin-angular', () => ({ - default: () => ({ name: 'angular-mock' }), + default: angularPluginMock, })); // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -38,6 +40,7 @@ let core: any; beforeEach(async () => { vi.resetModules(); + angularPluginMock.mockClear(); const mod = await import('./preset'); viteFinal = mod.viteFinal; core = mod.core; @@ -68,7 +71,7 @@ const registerDependencyMocks = ( ...viteOverrides, })); vi.doMock('@analogjs/vite-plugin-angular', () => ({ - default: () => ({ name: 'angular-mock' }), + default: angularPluginMock, })); }; @@ -128,6 +131,34 @@ describe('viteFinal', () => { plugins: [], }; + describe('Angular plugin options', () => { + it('prefers hmr over liveReload and keeps liveReload as compatibility input', async () => { + const options = makeOptions({ hmr: true, liveReload: false }); + + await viteFinal(baseConfig, options); + + expect(angularPluginMock).toHaveBeenCalledWith( + expect.objectContaining({ + hmr: true, + liveReload: false, + }), + ); + }); + + it('falls back to liveReload when hmr is omitted', async () => { + const options = makeOptions({ liveReload: true }); + + await viteFinal(baseConfig, options); + + expect(angularPluginMock).toHaveBeenCalledWith( + expect.objectContaining({ + hmr: true, + liveReload: true, + }), + ); + }); + }); + describe('experimentalZoneless resolution', () => { describe('tier 1: framework options', () => { it('should skip zone.js when experimentalZoneless is true', async () => { diff --git a/packages/storybook-angular/src/lib/preset.ts b/packages/storybook-angular/src/lib/preset.ts index ddc94adb3..39c898fe0 100644 --- a/packages/storybook-angular/src/lib/preset.ts +++ b/packages/storybook-angular/src/lib/preset.ts @@ -103,10 +103,13 @@ export const viteFinal = async (config: any, options: any): Promise => { typeof framework.options?.jit !== 'undefined' ? framework.options?.jit : true, - liveReload: - typeof framework.options?.liveReload !== 'undefined' - ? framework.options?.liveReload - : false, + hmr: + typeof framework.options?.hmr !== 'undefined' + ? framework.options?.hmr + : typeof framework.options?.liveReload !== 'undefined' + ? framework.options?.liveReload + : false, + liveReload: framework.options?.liveReload, tsconfig: typeof framework.options?.tsconfig !== 'undefined' ? framework.options?.tsconfig diff --git a/packages/storybook-angular/src/types.ts b/packages/storybook-angular/src/types.ts index ded5c2b03..1fa7f702c 100644 --- a/packages/storybook-angular/src/types.ts +++ b/packages/storybook-angular/src/types.ts @@ -10,6 +10,10 @@ type BuilderName = CompatibleString<'@storybook/builder-vite'>; export type FrameworkOptions = { builder?: BuilderOptions; jit?: boolean; + hmr?: boolean; + /** + * @deprecated Use `hmr` instead. Kept as a compatibility alias. + */ liveReload?: boolean; inlineStylesExtension?: string; tsconfig?: string; diff --git a/packages/vite-plugin-angular/src/lib/angular-jit-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-jit-plugin.ts index 79786dae7..1aa102f07 100644 --- a/packages/vite-plugin-angular/src/lib/angular-jit-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-jit-plugin.ts @@ -1,5 +1,6 @@ import { createHash } from 'node:crypto'; import { Plugin, ResolvedConfig, preprocessCSS } from 'vite'; +import { debugStyles } from './utils/debug.js'; export function jitPlugin({ inlineStylesExtension, @@ -44,7 +45,10 @@ export function jitPlugin({ ); styles = compiled?.code; } catch (e) { - console.error(`${e}`); + debugStyles('jit css compilation error', { + styleIdHash, + error: String(e), + }); } return `export default \`${styles}\``; diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin-live-reload.spec.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin-live-reload.spec.ts index ad85d9089..42fa5c5d4 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin-live-reload.spec.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin-live-reload.spec.ts @@ -68,7 +68,7 @@ async function setupLiveReloadPlugin( const { angular } = await import('./angular-vite-plugin'); const plugin = angular({ tsconfig: `${workspaceRoot}/tsconfig.base.json`, - liveReload: true, + hmr: true, inlineStylesExtension: 'css', stylePreprocessor, experimental: { @@ -104,7 +104,7 @@ async function setupLiveReloadPlugin( }; } -describe('angular liveReload style preprocessing', () => { +describe('angular hmr style preprocessing', () => { beforeEach(() => { process.env['NODE_ENV'] = 'development'; delete process.env['VITEST']; @@ -131,7 +131,7 @@ describe('angular liveReload style preprocessing', () => { // First run pays the cold-start cost of dynamically importing the full // plugin module graph after vi.resetModules(); CI can exceed the default 5s. it( - 'preprocesses external and inline stylesheets before liveReload transforms them', + 'preprocesses external and inline stylesheets before HMR serves them through Vite', { timeout: 15_000 }, async () => { const stylePreprocessor = vi.fn( @@ -182,7 +182,7 @@ describe('angular liveReload style preprocessing', () => { }, ); - it('prepends content via stylePreprocessor through the liveReload plugin path', async () => { + it('prepends content via stylePreprocessor through the HMR stylesheet path', async () => { const prepender = (code: string, _filename: string) => `@reference "../styles/tailwind.css";\n${code}`; diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts index b560da7f0..a10460edb 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts @@ -1,4 +1,5 @@ -import { describe, it, expect, vi } from 'vitest'; +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import type { Plugin } from 'vite'; import { angular, createFsWatcherCacheInvalidator, @@ -13,6 +14,35 @@ describe('angularVitePlugin', () => { }); }); +describe('hmr option', () => { + it('disables HMR helper plugins when hmr is false', () => { + const plugins = angular({ hmr: false }); + const names = plugins.map((plugin) => plugin.name); + + expect(names).not.toContain( + '@analogjs/vite-plugin-angular:hmr-vite-ignore', + ); + expect(names).not.toContain('analogjs-live-reload-plugin'); + }); + + it('accepts liveReload as a compatibility alias', () => { + const plugins = angular({ liveReload: true }); + const names = plugins.map((plugin) => plugin.name); + + expect(names).toContain('@analogjs/vitest-angular-esm-plugin'); + }); + + it('prefers hmr over liveReload when both are provided', () => { + const plugins = angular({ hmr: false, liveReload: true }); + const names = plugins.map((plugin) => plugin.name); + + expect(names).not.toContain( + '@analogjs/vite-plugin-angular:hmr-vite-ignore', + ); + expect(names).not.toContain('analogjs-live-reload-plugin'); + }); +}); + describe('isTestWatchMode', () => { it('should return false for vitest --run', () => { const result = isTestWatchMode(['--run']); @@ -258,3 +288,268 @@ describe('mapTemplateUpdatesToFiles', () => { ]); }); }); + +// ============================================================================= +// Tailwind CSS @reference injection +// +// Regression tests for the tailwind-reference Vite plugin and the +// buildStylePreprocessor function that together ensure Angular component CSS +// files receive `@reference` directives pointing to the root Tailwind +// stylesheet. Without @reference, @tailwindcss/vite processes each component +// CSS in isolation and can't resolve prefixed utilities like `sa:flex`. +// +// Background: +// - Angular component CSS (e.g. card.component.css) uses `@apply sa:flex` +// - Tailwind v4 needs `@import 'tailwindcss' prefix(sa)` or `@reference` +// to a file that has it, otherwise it treats `sa:` as an unknown variant +// - The `buildStylePreprocessor` injects @reference during Angular +// compilation (before Vite transforms) +// - The `tailwind-reference` plugin (enforce:"pre") acts as a Vite +// transform-level safety net +// ============================================================================= + +describe('tailwind-reference plugin', () => { + const ROOT_CSS = '/project/src/styles/tailwind.css'; + + /** + * Helper: extract the tailwind-reference sub-plugin from the array + * returned by angular(). Returns undefined if tailwindCss is not configured. + */ + function getTailwindReferencePlugin( + options?: Parameters[0], + ): Plugin | undefined { + const plugins = angular(options); + return plugins.find( + (p) => p.name === '@analogjs/vite-plugin-angular:tailwind-reference', + ); + } + + /** + * Helper: call the plugin's transform hook with the given CSS code and id. + * Returns the transformed output (string or undefined if skipped). + */ + function callTransform( + plugin: Plugin, + code: string, + id: string, + ): string | undefined { + const transform = + typeof plugin.transform === 'function' + ? plugin.transform + : (plugin.transform as any)?.handler; + // The transform is synchronous in this plugin + return transform?.call({} as any, code, id) as string | undefined; + } + + // --------------------------------------------------------------------------- + // Plugin creation + // --------------------------------------------------------------------------- + + it('is included when tailwindCss option is provided', () => { + const plugin = getTailwindReferencePlugin({ + tailwindCss: { rootStylesheet: ROOT_CSS }, + }); + expect(plugin).toBeDefined(); + expect(plugin!.enforce).toBe('pre'); + }); + + it('is NOT included when tailwindCss option is omitted', () => { + const plugin = getTailwindReferencePlugin(); + expect(plugin).toBeUndefined(); + }); + + it('is NOT included when tailwindCss option is undefined', () => { + const plugin = getTailwindReferencePlugin({ tailwindCss: undefined }); + expect(plugin).toBeUndefined(); + }); + + // --------------------------------------------------------------------------- + // @reference injection via transform + // --------------------------------------------------------------------------- + + describe('transform', () => { + let plugin: Plugin; + + beforeEach(() => { + plugin = getTailwindReferencePlugin({ + tailwindCss: { rootStylesheet: ROOT_CSS, prefixes: ['sa:'] }, + })!; + }); + + it('injects @reference into component CSS that uses the configured prefix', () => { + const css = '.demo { @apply sa:flex sa:gap-4; }'; + const result = callTransform( + plugin, + css, + '/project/src/app/demo.component.css', + ); + expect(result).toBe(`@reference "${ROOT_CSS}";\n${css}`); + }); + + it('injects @reference for CSS served with ?direct&ngcomp query params', () => { + // Angular externalizes component CSS with these query params + const css = ':host { @apply sa:grid; }'; + const result = callTransform( + plugin, + css, + '/project/src/app/card.component.css?direct&ngcomp=ng-c123&e=0', + ); + expect(result).toBe(`@reference "${ROOT_CSS}";\n${css}`); + }); + + it('skips non-CSS files', () => { + const result = callTransform( + plugin, + 'import { Component } from "@angular/core";', + '/project/src/app/app.component.ts', + ); + expect(result).toBeUndefined(); + }); + + it('skips the root stylesheet itself', () => { + const result = callTransform( + plugin, + '@import "tailwindcss" prefix(sa);', + ROOT_CSS, + ); + expect(result).toBeUndefined(); + }); + + it('skips the root stylesheet even with query params', () => { + const result = callTransform( + plugin, + '@import "tailwindcss" prefix(sa);', + `${ROOT_CSS}?direct`, + ); + expect(result).toBeUndefined(); + }); + + it('skips CSS that already has @reference', () => { + const css = `@reference "${ROOT_CSS}";\n.demo { @apply sa:flex; }`; + const result = callTransform( + plugin, + css, + '/project/src/app/demo.component.css', + ); + expect(result).toBeUndefined(); + }); + + it('skips CSS that imports tailwindcss directly (double quotes)', () => { + const css = + '@import "tailwindcss" prefix(sa);\n.demo { @apply sa:flex; }'; + const result = callTransform(plugin, css, '/project/src/app/global.css'); + expect(result).toBeUndefined(); + }); + + it('skips CSS that imports tailwindcss directly (single quotes)', () => { + const css = + "@import 'tailwindcss' prefix(sa);\n.demo { @apply sa:flex; }"; + const result = callTransform(plugin, css, '/project/src/app/global.css'); + expect(result).toBeUndefined(); + }); + + it('skips CSS that references the root stylesheet by basename', () => { + const css = `@import './tailwind.css';\n.demo { @apply sa:flex; }`; + const result = callTransform(plugin, css, '/project/src/app/main.css'); + expect(result).toBeUndefined(); + }); + + it('skips CSS that does not use the configured prefix', () => { + // Plain CSS with no Tailwind utilities — should not get @reference + const css = '.demo { display: flex; gap: 1rem; }'; + const result = callTransform( + plugin, + css, + '/project/src/app/demo.component.css', + ); + expect(result).toBeUndefined(); + }); + }); + + // --------------------------------------------------------------------------- + // Prefix detection + // --------------------------------------------------------------------------- + + describe('prefix detection', () => { + it('falls back to @apply detection when no prefixes are configured', () => { + const plugin = getTailwindReferencePlugin({ + tailwindCss: { rootStylesheet: ROOT_CSS }, + })!; + + // Contains @apply but no specific prefix + const css = '.demo { @apply flex gap-4; }'; + const result = callTransform( + plugin, + css, + '/project/src/app/demo.component.css', + ); + expect(result).toBe(`@reference "${ROOT_CSS}";\n${css}`); + }); + + it('does not inject for CSS without @apply when no prefixes configured', () => { + const plugin = getTailwindReferencePlugin({ + tailwindCss: { rootStylesheet: ROOT_CSS }, + })!; + + const css = '.demo { display: flex; }'; + const result = callTransform( + plugin, + css, + '/project/src/app/demo.component.css', + ); + expect(result).toBeUndefined(); + }); + + it('supports multiple configured prefixes', () => { + const plugin = getTailwindReferencePlugin({ + tailwindCss: { rootStylesheet: ROOT_CSS, prefixes: ['sa:', 'tw:'] }, + })!; + + // Uses tw: prefix (second in the list) + const css = '.demo { @apply tw:text-red-500; }'; + const result = callTransform( + plugin, + css, + '/project/src/app/demo.component.css', + ); + expect(result).toBe(`@reference "${ROOT_CSS}";\n${css}`); + }); + }); +}); + +// ============================================================================= +// hasComponent detection +// +// When useAngularCompilationAPI is enabled, the Vite transform hook receives +// already-compiled code (decorators stripped), so hasComponent is always false. +// These tests document the expected behavior for both compilation paths. +// ============================================================================= + +describe('hasComponent detection', () => { + it('detects @Component in raw TypeScript source (legacy path)', () => { + // Simulates what the legacy (non-API) compilation path sees + const rawTs = ` + import { Component } from '@angular/core'; + @Component({ selector: 'app-demo', template: '
hi
' }) + export class DemoComponent {} + `; + expect(rawTs.includes('@Component')).toBe(true); + }); + + it('does NOT detect @Component in compiled output (useAngularCompilationAPI path)', () => { + // Simulates what the Vite transform hook sees after Angular compilation — + // @Component is compiled into ɵɵdefineComponent(), so the naive string + // check returns false. This is expected and documented behavior. + const compiledJs = ` + import * as i0 from "@angular/core"; + export class DemoComponent {} + DemoComponent.ɵcmp = i0.ɵɵdefineComponent({ + type: DemoComponent, + selectors: [["app-demo"]], + decls: 1, + template: function(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "div"); } } + }); + `; + expect(compiledJs.includes('@Component')).toBe(false); + }); +}); diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts index 84a8708cc..12798af6c 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts @@ -1,6 +1,6 @@ import { NgtscProgram } from '@angular/compiler-cli'; import { union } from 'es-toolkit'; -import { existsSync, mkdirSync, writeFileSync } from 'node:fs'; +import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; import { basename, dirname, @@ -57,9 +57,13 @@ import { applyDebugOption, debugCompilationApi, debugCompiler, + debugCompilerV, debugHmr, + debugHmrV, debugStyles, + debugStylesV, debugTailwind, + debugTailwindV, type DebugOption, } from './utils/debug.js'; import { getJsTransformConfigKey, isRolldown } from './utils/rolldown.js'; @@ -78,7 +82,12 @@ import { replaceFiles, } from './plugins/file-replacements.plugin.js'; import { routerPlugin } from './router-plugin.js'; -import { createHash } from 'node:crypto'; +import { + AnalogStylesheetRegistry, + preprocessStylesheet, + registerStylesheetContent, + rewriteRelativeCssImports, +} from './stylesheet-registry.js'; export enum DiagnosticModes { None = 0, @@ -106,6 +115,16 @@ export interface PluginOptions { */ include?: string[]; additionalContentDirs?: string[]; + /** + * Enables Angular's HMR during development/watch mode. + * + * Defaults to `true` for watch mode. Set to `false` to disable HMR while + * keeping other stylesheet externalization behavior available when needed. + */ + hmr?: boolean; + /** + * @deprecated Use `hmr` instead. Kept as a compatibility alias. + */ liveReload?: boolean; disableTypeChecking?: boolean; fileReplacements?: FileReplacement[]; @@ -116,7 +135,7 @@ export interface PluginOptions { * Enable debug logging for specific scopes. * * - `true` → enables all `analog:angular:*` scopes - * - `string[]` → enables listed namespaces (e.g. `['analog:angular:compiler']`) + * - `string[]` → enables listed namespaces (e.g. `['analog:angular:tailwind']`) * - `{ scopes?, mode? }` → object form with optional `mode: 'build' | 'dev'` * to restrict output to a specific Vite command (omit for both) * @@ -218,8 +237,16 @@ interface DeclarationFile { /** * Builds a resolved stylePreprocessor function from plugin options. - * If `tailwindCss` is provided, creates an auto-reference injector. - * If `stylePreprocessor` is also provided, chains them (tailwind first, then user). + * + * When `tailwindCss` is configured, creates an injector that prepends + * `@reference ""` into component CSS that uses Tailwind + * utilities. Uses absolute paths because Angular's externalRuntimeStyles + * serves component CSS as virtual modules (hash-based IDs) with no + * meaningful directory — relative paths can't resolve from a hash. + * + * If both `tailwindCss` and `stylePreprocessor` are provided, they are + * chained: Tailwind reference injection runs first, then the user's + * custom preprocessor. */ function buildStylePreprocessor( options?: PluginOptions, @@ -231,7 +258,6 @@ function buildStylePreprocessor( return undefined; } - // Build the Tailwind @reference injector let tailwindPreprocessor: | ((code: string, filename: string) => string) | undefined; @@ -241,30 +267,41 @@ function buildStylePreprocessor( const prefixes = tw.prefixes; debugTailwind('configured', { rootStylesheet, prefixes }); + if (!existsSync(rootStylesheet)) { + console.warn( + `[@analogjs/vite-plugin-angular] tailwindCss.rootStylesheet not found ` + + `at "${rootStylesheet}". @reference directives will point to a ` + + `non-existent file, which will cause Tailwind CSS errors. ` + + `Ensure the path is absolute and the file exists.`, + ); + } + tailwindPreprocessor = (code: string, filename: string): string => { - // Skip if already has @reference or is a root Tailwind file + // Skip files that already define the Tailwind config if ( code.includes('@reference') || code.includes('@import "tailwindcss"') || code.includes("@import 'tailwindcss'") ) { - debugTailwind('skip (already has @reference or is root)', { filename }); + debugTailwindV('skip (already has @reference or is root)', { + filename, + }); return code; } - // Check if the file uses Tailwind utilities const needsReference = prefixes ? prefixes.some((prefix) => code.includes(prefix)) : code.includes('@apply'); if (!needsReference) { - debugTailwind('skip (no Tailwind usage detected)', { filename }); + debugTailwindV('skip (no Tailwind usage detected)', { filename }); return code; } - debugTailwind('injected @reference', { filename }); - const refPath = relative(dirname(filename), rootStylesheet); - return `@reference "${refPath}";\n${code}`; + debugTailwind('injected @reference via preprocessor', { filename }); + + // Absolute path — required for virtual modules (see JSDoc above). + return `@reference "${rootStylesheet}";\n${code}`; }; } @@ -303,11 +340,13 @@ export function angular(options?: PluginOptions): Plugin[] { jit: options?.jit, include: options?.include ?? [], additionalContentDirs: options?.additionalContentDirs ?? [], - liveReload: options?.liveReload ?? false, + hmr: options?.hmr ?? options?.liveReload ?? true, disableTypeChecking: options?.disableTypeChecking ?? true, fileReplacements: options?.fileReplacements ?? [], useAngularCompilationAPI: options?.experimental?.useAngularCompilationAPI ?? false, + hasTailwindCss: !!options?.tailwindCss, + tailwindCss: options?.tailwindCss, stylePreprocessor: buildStylePreprocessor(options), }; @@ -342,8 +381,142 @@ export function angular(options?: PluginOptions): Plugin[] { } let watchMode = false; let testWatchMode = isTestWatchMode(); - let inlineComponentStyles: Map | undefined; - let externalComponentStyles: Map | undefined; + + function shouldEnableHmr(): boolean { + const effectiveWatchMode = isTest ? testWatchMode : watchMode; + return !!(effectiveWatchMode && pluginOptions.hmr); + } + + /** + * Determines whether Angular should externalize component styles. + * + * When true, Angular emits style references (hash-based IDs) instead of + * inlining CSS strings. Vite's resolveId → load → transform pipeline + * then serves these virtual modules, allowing @tailwindcss/vite to + * process @reference directives. + * + * Required for TWO independent use-cases: + * 1. HMR — Vite needs external modules for hot replacement + * 2. Tailwind CSS (hasTailwindCss) — styles must pass through Vite's + * CSS pipeline so @tailwindcss/vite can resolve @apply directives + * + * In production builds (!watchMode), styles are NOT externalized — they + * are inlined after preprocessCSS runs eagerly in transformStylesheet. + */ + function shouldExternalizeStyles(): boolean { + const effectiveWatchMode = isTest ? testWatchMode : watchMode; + if (!effectiveWatchMode) return false; + return !!(shouldEnableHmr() || pluginOptions.hasTailwindCss); + } + + /** + * Validates the Tailwind CSS integration configuration and emits actionable + * warnings for common misconfigurations that cause silent failures. + * + * Called once during `configResolved` when `tailwindCss` is configured. + */ + function validateTailwindConfig( + config: ResolvedConfig, + isWatchMode: boolean, + ): void { + const PREFIX = '[@analogjs/vite-plugin-angular]'; + const tw = pluginOptions.tailwindCss; + + if (!tw) return; + + // rootStylesheet must be absolute — relative paths break when Angular + // externalizes styles as hash-based virtual modules. + if (!isAbsolute(tw.rootStylesheet)) { + console.warn( + `${PREFIX} tailwindCss.rootStylesheet must be an absolute path. ` + + `Got: "${tw.rootStylesheet}". Use path.resolve(__dirname, '...') ` + + `in your vite.config to convert it.`, + ); + } + + // Dev: @tailwindcss/vite must be registered, otherwise component CSS + // with @apply/@reference silently fails. + const resolvedPlugins = config.plugins; + const hasTailwindPlugin = resolvedPlugins.some( + (p) => + p.name.startsWith('@tailwindcss/vite') || + p.name.startsWith('tailwindcss'), + ); + + if (isWatchMode && !hasTailwindPlugin) { + throw new Error( + `${PREFIX} tailwindCss is configured but no @tailwindcss/vite ` + + `plugin was found. Component CSS with @apply directives will ` + + `not be processed.\n\n` + + ` Fix: npm install @tailwindcss/vite --save-dev\n` + + ` Then add tailwindcss() to your vite.config plugins array.\n`, + ); + } + + // Monorepo: rootStylesheet outside project root needs server.fs.allow + if (isWatchMode && tw.rootStylesheet) { + const projectRoot = config.root; + if (!tw.rootStylesheet.startsWith(projectRoot)) { + const fsAllow = config.server?.fs?.allow ?? []; + const isAllowed = fsAllow.some((allowed) => + tw.rootStylesheet.startsWith(allowed), + ); + if (!isAllowed) { + console.warn( + `${PREFIX} tailwindCss.rootStylesheet is outside the Vite ` + + `project root. The dev server may reject it with 403.\n\n` + + ` Root: ${projectRoot}\n` + + ` Stylesheet: ${tw.rootStylesheet}\n\n` + + ` Fix: server.fs.allow: ['${dirname(tw.rootStylesheet)}']\n`, + ); + } + } + } + + // Empty prefixes array means no component stylesheets get @reference + if (tw.prefixes !== undefined && tw.prefixes.length === 0) { + console.warn( + `${PREFIX} tailwindCss.prefixes is an empty array. No component ` + + `stylesheets will receive @reference injection. Either remove ` + + `the prefixes option (to use @apply detection) or specify your ` + + `prefixes: ['tw:']\n`, + ); + } + + // Duplicate analog() registrations cause orphaned style maps + const analogInstances = resolvedPlugins.filter( + (p) => p.name === '@analogjs/vite-plugin-angular', + ); + if (analogInstances.length > 1) { + throw new Error( + `${PREFIX} analog() is registered ${analogInstances.length} times. ` + + `Each instance creates separate style maps, causing component ` + + `styles to be lost. Remove duplicate registrations.`, + ); + } + + // rootStylesheet content must contain @import "tailwindcss" + if (existsSync(tw.rootStylesheet)) { + try { + const rootContent = readFileSync(tw.rootStylesheet, 'utf-8'); + if ( + !rootContent.includes('@import "tailwindcss"') && + !rootContent.includes("@import 'tailwindcss'") + ) { + console.warn( + `${PREFIX} tailwindCss.rootStylesheet does not contain ` + + `@import "tailwindcss". The @reference directive will ` + + `point to a file without Tailwind configuration.\n\n` + + ` File: ${tw.rootStylesheet}\n`, + ); + } + } catch { + // Silently skip — existence check already warned in buildStylePreprocessor. + } + } + } + + let stylesheetRegistry: AnalogStylesheetRegistry | undefined; const sourceFileCache: SourceFileCacheType = new SourceFileCache(); const isTest = process.env['NODE_ENV'] === 'test' || !!process.env['VITEST']; const isVitestVscode = !!process.env['VITEST_VSCODE']; @@ -382,18 +555,28 @@ export function angular(options?: PluginOptions): Plugin[] { function angularPlugin(): Plugin { let isProd = false; - if (angularFullVersion < 190000 || isTest) { - pluginOptions.liveReload = false; - debugHmr('liveReload disabled', { + if (angularFullVersion < 190000) { + // Angular < 19 does not support externalRuntimeStyles or _enableHmr. + pluginOptions.hmr = false; + } + + if (isTest) { + // Test mode: disable HMR because + // Vitest's runner doesn't support Vite's WebSocket-based HMR. + // This does NOT block style externalization — shouldExternalizeStyles() + // independently checks hasTailwindCss, so Tailwind utilities in + // component styles still work in unit tests. + pluginOptions.hmr = false; + debugHmr('hmr disabled', { angularVersion: angularFullVersion, isTest, }); } - // liveReload and fileReplacements guards were previously here and forced + // HMR and fileReplacements guards were previously here and forced // both options off when useAngularCompilationAPI was enabled. Those guards // have been removed because: - // - liveReload: the persistent compilation instance (above) now gives + // - HMR: the persistent compilation instance (above) now gives // Angular the prior state it needs to emit `templateUpdates` for HMR // - fileReplacements: Angular's AngularHostOptions already accepts a // `fileReplacements` record — we now convert and pass it through in @@ -491,7 +674,7 @@ export function angular(options?: PluginOptions): Plugin[] { return { [jsTransformConfigKey]: jsTransformConfigValue, optimizeDeps: { - include: ['rxjs/operators', 'rxjs'], + include: ['tslib'], exclude: ['@angular/platform-server'], ...(useRolldown ? { rolldownOptions } : { esbuildOptions }), }, @@ -506,10 +689,15 @@ export function angular(options?: PluginOptions): Plugin[] { configResolved(config) { resolvedConfig = config; + if (pluginOptions.hasTailwindCss) { + validateTailwindConfig(config, watchMode); + } + if (pluginOptions.useAngularCompilationAPI) { - externalComponentStyles = new Map(); - inlineComponentStyles = new Map(); - debugStyles('style maps initialized (Angular Compilation API)'); + stylesheetRegistry = new AnalogStylesheetRegistry(); + debugStyles( + 'stylesheet registry initialized (Angular Compilation API)', + ); } if (!jit) { @@ -565,7 +753,7 @@ export function angular(options?: PluginOptions): Plugin[] { let result; - if (pluginOptions.liveReload) { + if (shouldEnableHmr()) { await pendingCompilation; pendingCompilation = null; result = fileEmitter(fileId); @@ -577,7 +765,7 @@ export function angular(options?: PluginOptions): Plugin[] { } if ( - pluginOptions.liveReload && + shouldEnableHmr() && result?.hmrEligible && classNames.get(fileId) ) { @@ -613,14 +801,14 @@ export function angular(options?: PluginOptions): Plugin[] { ); if (isDirect || isInline) { - if (pluginOptions.liveReload && isDirect?.id && isDirect.file) { + if (shouldExternalizeStyles() && isDirect?.id && isDirect.file) { const isComponentStyle = isDirect.type === 'css' && isComponentStyleSheet(isDirect.id); if (isComponentStyle) { const { encapsulation } = getComponentStyleSheetMeta( isDirect.id, ); - debugStyles('HMR: component stylesheet changed', { + debugStylesV('HMR: component stylesheet changed', { file: isDirect.file, encapsulation, }); @@ -659,13 +847,51 @@ export function angular(options?: PluginOptions): Plugin[] { return ctx.modules; } + if ( + shouldEnableHmr() && + /\.(html|htm)$/.test(ctx.file) && + ctx.modules.length === 0 + ) { + const ownerModules = findTemplateOwnerModules(ctx.server, ctx.file); + if (ownerModules.length > 0) { + const ownerIds = ownerModules + .map((mod) => mod.id) + .filter(Boolean) as string[]; + + ownerModules.forEach((mod) => + ctx.server.moduleGraph.invalidateModule(mod), + ); + + pendingCompilation = performCompilation(resolvedConfig, ownerIds); + await pendingCompilation; + pendingCompilation = null; + + const updates = ownerIds.filter((id) => classNames.get(id)); + if (updates.length > 0) { + debugHmr('template owner module invalidation', { + file: ctx.file, + ownerIds, + updateCount: updates.length, + }); + updates.forEach((updateId) => { + const relativeFileId = `${normalizePath( + relative(process.cwd(), updateId), + )}@${classNames.get(updateId)}`; + sendHMRComponentUpdate(ctx.server, relativeFileId); + }); + + return ownerModules.map((mod) => markModuleSelfAccepting(mod)); + } + } + } + const mods: ModuleNode[] = []; const updates: string[] = []; ctx.modules.forEach((mod) => { mod.importers.forEach((imp) => { ctx.server.moduleGraph.invalidateModule(imp); - if (pluginOptions.liveReload && classNames.get(imp.id)) { + if (shouldExternalizeStyles() && classNames.get(imp.id)) { updates.push(imp.id as string); } else { mods.push(imp); @@ -674,7 +900,7 @@ export function angular(options?: PluginOptions): Plugin[] { }); pendingCompilation = performCompilation(resolvedConfig, [ - ...mods.map((mod) => mod.id as string), + ...mods.map((mod) => mod.id).filter(Boolean), ...updates, ]); @@ -719,17 +945,36 @@ export function angular(options?: PluginOptions): Plugin[] { )}?${id.includes(':style') ? 'inline' : 'raw'}`; } - // Map angular external styleUrls to the source file + // Map angular component stylesheets. Prefer registry-served CSS + // (preprocessed, with @reference) over external raw file mappings + // file path). Without this priority, Angular may emit a basename ID + // that resolves to the raw file, bypassing preprocessing. if (isComponentStyleSheet(id)) { const filename = getFilenameFromPath(id); - const componentStyles = externalComponentStyles?.get(filename); + + if (stylesheetRegistry?.hasServed(filename)) { + debugStylesV('resolveId: kept preprocessed ID', { filename }); + return id; + } + + const componentStyles = + stylesheetRegistry?.resolveExternalSource(filename); if (componentStyles) { - debugStyles('resolveId: mapped external stylesheet', { + debugStylesV('resolveId: mapped external stylesheet', { filename, resolvedPath: componentStyles, }); return componentStyles + new URL(id, 'http://localhost').search; } + + debugStyles( + 'resolveId: component stylesheet NOT FOUND in either map', + { + filename, + inlineMapSize: stylesheetRegistry?.servedCount ?? 0, + externalMapSize: stylesheetRegistry?.externalCount ?? 0, + }, + ); } return undefined; @@ -738,9 +983,10 @@ export function angular(options?: PluginOptions): Plugin[] { // Map angular inline styles to the source text if (isComponentStyleSheet(id)) { const filename = getFilenameFromPath(id); - const componentStyles = inlineComponentStyles?.get(filename); + const componentStyles = + stylesheetRegistry?.getServedContent(filename); if (componentStyles) { - debugStyles('load: served inline component stylesheet', { + debugStylesV('load: served inline component stylesheet', { filename, length: componentStyles.length, }); @@ -786,13 +1032,16 @@ export function angular(options?: PluginOptions): Plugin[] { } /** - * Encapsulate component stylesheets that use emulated encapsulation + * Encapsulate component stylesheets that use emulated encapsulation. + * Must run whenever styles are externalized (not just HMR), because + * Angular's externalRuntimeStyles skips its own encapsulation when + * styles are external — the build tool is expected to handle it. */ - if (pluginOptions.liveReload && isComponentStyleSheet(id)) { + if (shouldExternalizeStyles() && isComponentStyleSheet(id)) { const { encapsulation, componentId } = getComponentStyleSheetMeta(id); if (encapsulation === 'emulated' && componentId) { - debugStyles('applying emulated view encapsulation', { + debugStylesV('applying emulated view encapsulation', { stylesheet: id.split('?')[0], componentId, }); @@ -836,8 +1085,32 @@ export function angular(options?: PluginOptions): Plugin[] { } } + // Detect whether the code contains an Angular @Component decorator. + // + // IMPORTANT — useAngularCompilationAPI behavior: + // When `useAngularCompilationAPI: true`, the Angular Compilation API + // compiles TypeScript BEFORE this Vite transform hook fires. By the + // time `code` reaches here, @Component decorators have been compiled + // away into ɵɵdefineComponent() calls, so `hasComponent` is always + // false for actual component files. + // + // This is expected and NOT a bug. The Angular Compilation API handles + // template and style resolution through its own internal pipeline: + // - Templates: resolved during compilation, not via templateUrls + // - Styles: externalized and served via the resolveId/load hooks + // (confirmed by `analog:angular:styles resolveId: mapped external + // stylesheet` debug messages) + // + // The only consequence of hasComponent=false is that external template + // and style files are not registered via addWatchFile(), which means + // HMR for external HTML/CSS edits may trigger a full reload instead of + // a targeted hot replacement. The Angular Compilation API's own + // invalidation mechanism handles recompilation regardless. + // + // For the legacy (non-API) compilation path, hasComponent works as + // expected because the transform hook sees raw TypeScript source. const hasComponent = code.includes('@Component'); - debugCompiler('transform', { + debugCompilerV('transform', { id, codeLength: code.length, hasComponent, @@ -904,6 +1177,34 @@ export function angular(options?: PluginOptions): Plugin[] { }); } + // Angular's HMR initializer emits dynamic import() calls that Vite's + // import-analysis plugin cannot statically analyze, producing SSR + // warnings. The Angular compiler's IR includes a @vite-ignore comment + // but it can be lost during TypeScript emit. Re-inject it here so the + // warning is suppressed regardless of the compilation path used. + if (data.includes('HmrLoad')) { + const hasMetaUrl = data.includes('getReplaceMetadataURL'); + debugHmrV('vite-ignore injection', { + id, + dataLength: data.length, + hasMetaUrl, + }); + if (hasMetaUrl) { + data = data.replace( + /\bimport\(([a-zA-Z_$][\w$]*\.\u0275\u0275getReplaceMetadataURL)/g, + 'import(/* @vite-ignore */ $1', + ); + if (!data.includes('@vite-ignore')) { + debugHmrV('vite-ignore regex fallback', { id }); + // Fallback: broader replace + data = data.replace( + /import\((\S+getReplaceMetadataURL)/g, + 'import(/* @vite-ignore */ $1', + ); + } + } + } + return { code: data, map: null, @@ -927,8 +1228,106 @@ export function angular(options?: PluginOptions): Plugin[] { return [ replaceFiles(pluginOptions.fileReplacements, pluginOptions.workspaceRoot), + // Tailwind CSS v4 @reference injection for direct-file-loaded CSS. + // Catches CSS files loaded from disk (not virtual modules) that need + // @reference before @tailwindcss/vite processes them. + pluginOptions.hasTailwindCss && + ({ + name: '@analogjs/vite-plugin-angular:tailwind-reference', + enforce: 'pre', + transform(code: string, id: string) { + const tw = pluginOptions.tailwindCss; + if (!tw || !id.includes('.css')) return; + + const cleanId = id.split('?')[0]; + if (cleanId === tw.rootStylesheet) return; + + if ( + code.includes('@reference') || + code.includes('@import "tailwindcss"') || + code.includes("@import 'tailwindcss'") + ) { + return; + } + + // Skip entry stylesheets that @import the root config + const rootBasename = basename(tw.rootStylesheet); + if (code.includes(rootBasename)) return; + + const prefixes = tw.prefixes; + const needsRef = prefixes + ? prefixes.some((p) => code.includes(p)) + : code.includes('@apply'); + + if (needsRef) { + debugTailwind('injected @reference via pre-transform', { + id: id.split('/').slice(-2).join('/'), + }); + return `@reference "${tw.rootStylesheet}";\n${code}`; + } + }, + } satisfies Plugin), angularPlugin(), - pluginOptions.liveReload && liveReloadPlugin({ classNames, fileEmitter }), + // ----------------------------------------------------------------------- + // Angular HMR: suppress Vite "dynamic import cannot be analyzed" warnings + // ----------------------------------------------------------------------- + // + // Angular 21's compiler emits HMR metadata replacement code per component: + // + // import(i0.ɵɵgetReplaceMetadataURL(id, t, import.meta.url)) + // .then((m) => m.default && i0.ɵɵreplaceMetadata(Component, ...)) + // + // Vite's vite:import-analysis plugin cannot statically analyze this computed + // import() expression and emits a warning for every @Component in the app. + // + // The Angular compiler's IR *does* include a /* @vite-ignore */ comment on + // the import(), but it is stripped during TypeScript's emit phase (TS does + // not preserve comments inside expressions by default). + // + // This post-transform plugin re-injects /* @vite-ignore */ on the final JS + // output. It runs with enforce:"post" so it sees the code AFTER the Angular + // compilation and TypeScript emit have completed. + // + // LIMITATION — SSR environment: + // Vite processes client and SSR environments through separate plugin + // containers. This plugin's transform fires for .ts files in the CLIENT + // environment, silencing warnings there. However, the SSR environment's + // vite:import-analysis still sees the un-patched code and logs the same + // warnings. These SSR warnings are harmless — the import is runtime-only + // HMR plumbing, not a code-split boundary — but they add noise to the dev + // server console (~one per @Component). + // + // Consuming apps can suppress the SSR warnings in their Vite customLogger: + // + // logger.warn = (msg, options) => { + // if (typeof msg === 'string' && msg.includes('getReplaceMetadataURL')) return; + // originalWarn(msg, options); + // }; + // + pluginOptions.hmr && + ({ + name: '@analogjs/vite-plugin-angular:hmr-vite-ignore', + enforce: 'post' as const, + transform(code: string, id: string) { + if ( + !id.includes('.ts') || + id.includes('node_modules') || + !code.includes('\u0275\u0275getReplaceMetadataURL') + ) { + return; + } + + const patched = code.replace( + /\bimport\(([a-zA-Z_$][\w$]*\.\u0275\u0275getReplaceMetadataURL)/g, + 'import(/* @vite-ignore */ $1', + ); + + if (patched !== code) { + return { code: patched, map: null }; + } + }, + } satisfies Plugin), + pluginOptions.hmr && liveReloadPlugin({ classNames, fileEmitter }), ...(isTest && !isStackBlitz ? angularVitestPlugins() : []), (jit && jitPlugin({ @@ -947,9 +1346,9 @@ export function angular(options?: PluginOptions): Plugin[] { const workspaceRoot = normalizePath(resolve(pluginOptions.workspaceRoot)); // Map include patterns to absolute workspace paths - const globs = [ - ...pluginOptions.include.map((glob) => `${workspaceRoot}${glob}`), - ]; + const globs = pluginOptions.include.map( + (glob) => `${workspaceRoot}${glob}`, + ); // Discover TypeScript files using tinyglobby return globSync(globs, { @@ -1087,31 +1486,34 @@ export function angular(options?: PluginOptions): Plugin[] { `.${pluginOptions.inlineStylesExtension}`, ); - // Apply any user-defined stylesheet preprocessing before Vite transforms it. - const preprocessedData = pluginOptions.stylePreprocessor - ? (pluginOptions.stylePreprocessor(data, filename) ?? data) - : data; - - if (pluginOptions.liveReload && watchMode) { - // Store the preprocessed (but not yet CSS-transformed) data so that - // Vite's serve-time pipeline handles PostCSS / Tailwind processing - // exactly once when the load hook returns this CSS. Running - // preprocessCSS() here would strip directives like @reference before - // the CSS re-enters the transform pipeline, causing plugins such as - // @tailwindcss/vite to fail on the second pass. - // Guard must match the externalRuntimeStyles condition (line ~927) - // because the Angular compiler only emits external style references - // when externalRuntimeStyles is enabled. - const id = createHash('sha256') - .update(containingFile) - .update(className as string) - .update(String(order)) - .update(preprocessedData) - .digest('hex'); - const stylesheetId = id + '.' + pluginOptions.inlineStylesExtension; - inlineComponentStyles!.set(stylesheetId, preprocessedData); - - debugStyles('stylesheet deferred to Vite pipeline (liveReload)', { + const preprocessedData = preprocessStylesheet( + data, + filename, + pluginOptions.stylePreprocessor, + ); + + // Populate classNames during initial compilation so HMR for + // HTML template changes can find the parent TS module. + if (shouldEnableHmr() && className && containingFile) { + classNames.set(normalizePath(containingFile), className as string); + } + + if (shouldExternalizeStyles()) { + // Store preprocessed CSS so Vite's serve-time pipeline handles + // PostCSS / Tailwind processing when the load hook returns it. + const stylesheetId = registerStylesheetContent( + stylesheetRegistry!, + { + code: preprocessedData, + containingFile, + className: className as string | undefined, + order, + inlineStylesExtension: pluginOptions.inlineStylesExtension, + resourceFile: resourceFile ?? undefined, + }, + ); + + debugStyles('stylesheet deferred to Vite pipeline', { stylesheetId, resourceFile: resourceFile ?? '(inline)', }); @@ -1119,17 +1521,13 @@ export function angular(options?: PluginOptions): Plugin[] { return stylesheetId; } - // Non-liveReload: the CSS is returned directly to the Angular - // compiler and never re-enters Vite's pipeline, so we must run - // preprocessCSS() eagerly here. - debugStyles( - 'stylesheet processed inline via preprocessCSS (no liveReload)', - { - filename, - resourceFile: resourceFile ?? '(inline)', - dataLength: preprocessedData.length, - }, - ); + // Non-externalized: CSS is returned directly to the Angular compiler + // and never re-enters Vite's pipeline, so run preprocessCSS() eagerly. + debugStyles('stylesheet processed inline via preprocessCSS', { + filename, + resourceFile: resourceFile ?? '(inline)', + dataLength: preprocessedData.length, + }); let stylesheetResult; try { @@ -1139,7 +1537,11 @@ export function angular(options?: PluginOptions): Plugin[] { resolvedConfig, ); } catch (e) { - console.error(`${e}`); + debugStyles('preprocessCSS error', { + filename, + resourceFile: resourceFile ?? '(inline)', + error: String(e), + }); } return stylesheetResult?.code || ''; @@ -1149,19 +1551,23 @@ export function angular(options?: PluginOptions): Plugin[] { }, }, (tsCompilerOptions) => { - if (pluginOptions.liveReload && watchMode) { - tsCompilerOptions['_enableHmr'] = true; + if (shouldExternalizeStyles()) { tsCompilerOptions['externalRuntimeStyles'] = true; + } + + if (shouldEnableHmr()) { + tsCompilerOptions['_enableHmr'] = true; // Workaround for https://github.com/angular/angular/issues/59310 - // Force extra instructions to be generated for HMR w/defer tsCompilerOptions['supportTestBed'] = true; } debugCompiler('tsCompilerOptions (compilation API)', { - liveReload: pluginOptions.liveReload, + hmr: pluginOptions.hmr, + hasTailwindCss: pluginOptions.hasTailwindCss, watchMode, + shouldExternalize: shouldExternalizeStyles(), externalRuntimeStyles: !!tsCompilerOptions['externalRuntimeStyles'], - hmr: !!tsCompilerOptions['_enableHmr'], + hmrEnabled: !!tsCompilerOptions['_enableHmr'], }); if (tsCompilerOptions.compilationMode === 'partial') { @@ -1170,6 +1576,10 @@ export function angular(options?: PluginOptions): Plugin[] { tsCompilerOptions['supportJitMode'] = true; } + if (angularFullVersion >= 200000) { + tsCompilerOptions['_enableSelectorless'] = true; + } + if (!isTest && config.build?.lib) { tsCompilerOptions['declaration'] = true; tsCompilerOptions['declarationMap'] = watchMode; @@ -1186,66 +1596,120 @@ export function angular(options?: PluginOptions): Plugin[] { ); // ------------------------------------------------------------------- - // Register external stylesheets and bridge the hash mismatch + // Preprocess external stylesheets for Tailwind CSS @reference // - // Two independent hash maps coexist for component CSS: + // Angular's Compilation API with externalRuntimeStyles does NOT call + // transformStylesheet for external styleUrls (files referenced via + // `styleUrls: ['./foo.component.css']`). Angular's angular-host.js + // asserts this explicitly: // - // inlineComponentStyles — keyed by Analog's hash (computed in - // transformStylesheet from containingFile + className + order + - // preprocessedData). The preprocessedData includes `@reference` - // injected by buildStylePreprocessor. This map holds the CSS - // that Vite should serve (with Tailwind context). + // assert(!resourceFile || !hostOptions.externalStylesheets?.has(resourceFile), + // 'External runtime stylesheets should not be transformed') // - // externalComponentStyles — keyed by Angular's hash (computed by - // the Angular compiler internally, returned in - // compilationResult.externalStylesheets). Maps to the raw file - // path. This is what Angular emits in the browser-side URLs. + // Only inline styles (`styles: [...]`) go through transformStylesheet, + // which is where buildStylePreprocessor injects `@reference` for + // Tailwind CSS. External component CSS files are instead reported in + // compilationResult.externalStylesheets as Map. // - // Problem: the browser requests CSS using Angular's hash, but the - // preprocessed CSS lives in inlineComponentStyles under Analog's - // hash. resolveId checks inlineComponentStyles first (line ~785), - // misses (wrong key), falls through to externalComponentStyles, - // and resolves to the RAW file — which has no @reference. Then - // @tailwindcss/vite fails with: + // Without intervention, the resolveId hook maps Angular's hash to the + // raw file path, the load hook reads the raw file from disk, and + // @tailwindcss/vite processes CSS without @reference — causing: // // "Cannot apply utility class 'sa:grid' because the 'sa' // variant does not exist" // - // Fix: after compilation, copy the preprocessed CSS into - // inlineComponentStyles under Angular's hash. resolveId then finds - // it on the first lookup, the load hook serves the @reference- - // injected version, and @tailwindcss/vite compiles it correctly. - // - // The lookup uses basename(key) and key.replace(/^\//, '') because - // transformStylesheet stores under both of those keys (line ~1332). - // ------------------------------------------------------------------- - // ------------------------------------------------------------------- - // Register external stylesheets and preprocess for Tailwind - // - // Angular's Compilation API with externalRuntimeStyles does NOT call - // transformStylesheet for external styleUrls — it only reports them - // in compilationResult.externalStylesheets. Only inline styles (from - // `styles: [...]`) go through transformStylesheet. - // - // This means external component CSS files never get the @reference - // directive injected by buildStylePreprocessor. The resolveId hook - // maps Angular's hash to the raw file path, the load hook reads the - // raw file from disk, and @tailwindcss/vite processes CSS without - // @reference — causing "sa: variant does not exist" errors. - // - // Fix: for each external stylesheet, read the file, run the style - // preprocessor (which injects @reference), and store the result in - // inlineComponentStyles under Angular's hash. The resolveId hook + // Fix: for each external stylesheet, read the file from disk, run the + // style preprocessor (which injects @reference), and store the result + // in the stylesheet registry under Angular's hash. The resolveId hook // then finds it on the first lookup, the load hook serves the - // preprocessed version, and @tailwindcss/vite compiles correctly. + // @reference-injected version, and @tailwindcss/vite compiles correctly. // ------------------------------------------------------------------- + debugStyles('external stylesheets from compilation API', { + count: compilationResult.externalStylesheets?.size ?? 0, + hasPreprocessor: !!pluginOptions.stylePreprocessor, + hasInlineMap: !!stylesheetRegistry, + }); + const preprocessStats = { total: 0, injected: 0, skipped: 0, errors: 0 }; compilationResult.externalStylesheets?.forEach((value, key) => { - externalComponentStyles?.set(`${value}.css`, key); - debugStyles('external stylesheet registered for resolveId mapping', { - filename: `${value}.css`, + preprocessStats.total++; + const angularHash = `${value}.css`; + stylesheetRegistry?.registerExternalRequest(angularHash, key); + + // Read the raw CSS file from disk, run the style preprocessor + // (which injects @reference for Tailwind), and store the result + // in the stylesheet registry under Angular's hash. This way + // resolveId finds the preprocessed version on the first lookup + // and the load hook serves CSS that @tailwindcss/vite can compile. + // + // After preprocessing, resolve relative @import paths to absolute + // paths. When @tailwindcss/vite processes the CSS, the virtual + // hash-based module ID has no meaningful directory, so relative + // imports like `@import './submenu/submenu.component.css'` would + // fail to resolve from `/`. Converting to absolute paths ensures + // Tailwind's enhanced-resolve can find the imported files. + if ( + stylesheetRegistry && + pluginOptions.stylePreprocessor && + existsSync(key) + ) { + try { + const rawCss = readFileSync(key, 'utf-8'); + let preprocessed = preprocessStylesheet( + rawCss, + key, + pluginOptions.stylePreprocessor, + ); + if (preprocessed && preprocessed !== rawCss) { + preprocessStats.injected++; + preprocessed = rewriteRelativeCssImports(preprocessed, key); + stylesheetRegistry.registerServedStylesheet( + { + publicId: angularHash, + sourcePath: key, + originalCode: rawCss, + normalizedCode: preprocessed, + }, + [key, normalizePath(key), basename(key), key.replace(/^\//, '')], + ); + debugStylesV( + 'preprocessed external stylesheet for Tailwind @reference', + { + angularHash, + resolvedPath: key, + }, + ); + } else { + preprocessStats.skipped++; + } + } catch (e) { + preprocessStats.errors++; + console.warn( + `[@analogjs/vite-plugin-angular] failed to preprocess external stylesheet: ${key}: ${e}`, + ); + // Non-fatal: fall through to the external source mapping which + // serves the raw file. @tailwindcss/vite will still process + // it but without @reference (Tailwind prefix utilities won't + // resolve). + } + } else { + preprocessStats.skipped++; + debugStylesV('external stylesheet preprocessing skipped', { + filename: angularHash, + resolvedPath: key, + reason: !stylesheetRegistry + ? 'no stylesheetRegistry' + : !pluginOptions.stylePreprocessor + ? 'no stylePreprocessor' + : 'file not found on disk', + }); + } + + debugStylesV('external stylesheet registered for resolveId mapping', { + filename: angularHash, resolvedPath: key, }); }); + debugStyles('external stylesheet preprocessing complete', preprocessStats); const diagnostics = await angularCompilation.diagnoseFiles( pluginOptions.disableTypeChecking @@ -1341,6 +1805,8 @@ export function angular(options?: PluginOptions): Plugin[] { isProd ? 'prod' : 'dev', isTest ? 'test' : 'app', config.build?.lib ? 'lib' : 'nolib', + pluginOptions.hmr ? 'hmr' : 'nohmr', + pluginOptions.hasTailwindCss ? 'tw' : 'notw', ].join('|'); let cached = tsconfigOptionsCache.get(tsconfigKey); @@ -1370,17 +1836,21 @@ export function angular(options?: PluginOptions): Plugin[] { const tsCompilerOptions = { ...cached.options }; let rootNames = [...cached.rootNames]; - if (pluginOptions.liveReload && watchMode) { - tsCompilerOptions['_enableHmr'] = true; + if (shouldExternalizeStyles()) { tsCompilerOptions['externalRuntimeStyles'] = true; + } + + if (shouldEnableHmr()) { + tsCompilerOptions['_enableHmr'] = true; // Workaround for https://github.com/angular/angular/issues/59310 - // Force extra instructions to be generated for HMR w/defer tsCompilerOptions['supportTestBed'] = true; } debugCompiler('tsCompilerOptions (NgtscProgram path)', { + hmr: pluginOptions.hmr, + shouldExternalize: shouldExternalizeStyles(), externalRuntimeStyles: !!tsCompilerOptions['externalRuntimeStyles'], - hmr: !!tsCompilerOptions['_enableHmr'], + hmrEnabled: !!tsCompilerOptions['_enableHmr'], }); if (tsCompilerOptions['compilationMode'] === 'partial') { @@ -1389,6 +1859,10 @@ export function angular(options?: PluginOptions): Plugin[] { tsCompilerOptions['supportJitMode'] = true; } + if (angularFullVersion >= 200000) { + tsCompilerOptions['_enableSelectorless'] = true; + } + if (!isTest && config.build?.lib) { tsCompilerOptions['declaration'] = true; tsCompilerOptions['declarationMap'] = watchMode; @@ -1441,16 +1915,16 @@ export function angular(options?: PluginOptions): Plugin[] { if (!jit) { const externalizeStyles = !!tsCompilerOptions['externalRuntimeStyles']; - inlineComponentStyles = externalizeStyles ? new Map() : undefined; - externalComponentStyles = externalizeStyles ? new Map() : undefined; - debugStyles('style maps initialized (NgtscProgram path)', { + stylesheetRegistry = externalizeStyles + ? new AnalogStylesheetRegistry() + : undefined; + debugStyles('stylesheet registry initialized (NgtscProgram path)', { externalizeStyles, }); augmentHostWithResources(host, styleTransform, { inlineStylesExtension: pluginOptions.inlineStylesExtension, isProd, - inlineComponentStyles, - externalComponentStyles, + stylesheetRegistry, sourceFileCache, stylePreprocessor: pluginOptions.stylePreprocessor, }); @@ -1525,7 +1999,7 @@ export function angular(options?: PluginOptions): Plugin[] { const fileMetadata = getFileMetadata( builder, angularCompiler!, - pluginOptions.liveReload, + pluginOptions.hmr, pluginOptions.disableTypeChecking, ); @@ -1739,10 +2213,32 @@ function sendHMRComponentUpdate(server: ViteDevServer, id: string) { classNames.delete(id); } +function findTemplateOwnerModules( + server: ViteDevServer, + resourceFile: string, +): ModuleNode[] { + const normalizedResourceFile = normalizePath(resourceFile.split('?')[0]); + const candidateTsFiles = [ + normalizedResourceFile.replace(/\.(html|htm)$/i, '.ts'), + ]; + + const modules = new Map(); + for (const candidate of candidateTsFiles) { + const owners = server.moduleGraph.getModulesByFile(candidate); + owners?.forEach((mod) => { + if (mod.id) { + modules.set(mod.id, mod); + } + }); + } + + return [...modules.values()]; +} + export function getFileMetadata( program: ts.BuilderProgram, angularCompiler?: NgtscProgram['compiler'], - liveReload?: boolean, + hmrEnabled?: boolean, disableTypeChecking?: boolean, ) { const ts = require('typescript'); @@ -1781,7 +2277,7 @@ export function getFileMetadata( let hmrUpdateCode: string | null | undefined = undefined; let hmrEligible = false; - if (liveReload) { + if (hmrEnabled) { for (const node of sourceFile.statements) { if (ts.isClassDeclaration(node) && (node as any).name != null) { hmrUpdateCode = angularCompiler?.emitHmrUpdateModule(node as any); @@ -1864,7 +2360,16 @@ function getComponentStyleSheetMeta(id: string): { * @param id */ function getFilenameFromPath(id: string): string { - return new URL(id, 'http://localhost').pathname.replace(/^\//, ''); + try { + return new URL(id, 'http://localhost').pathname.replace(/^\//, ''); + } catch { + // Defensive fallback: if the ID cannot be parsed as a URL (e.g., it + // contains characters that are invalid in URLs but valid in file paths + // on some platforms), strip the query string manually. + const queryIndex = id.indexOf('?'); + const pathname = queryIndex >= 0 ? id.slice(0, queryIndex) : id; + return pathname.replace(/^\//, ''); + } } /** diff --git a/packages/vite-plugin-angular/src/lib/host.spec.ts b/packages/vite-plugin-angular/src/lib/host.spec.ts index acaecad85..11f8fa1c7 100644 --- a/packages/vite-plugin-angular/src/lib/host.spec.ts +++ b/packages/vite-plugin-angular/src/lib/host.spec.ts @@ -2,6 +2,7 @@ import { describe, expect, it, vi } from 'vitest'; import type * as ts from 'typescript'; import { augmentHostWithResources } from './host.js'; +import { AnalogStylesheetRegistry } from './stylesheet-registry.js'; describe('augmentHostWithResources', () => { it('preprocesses external stylesheets before Vite transforms them', async () => { @@ -65,17 +66,17 @@ describe('augmentHostWithResources', () => { ); }); - it('preprocesses inline styles stored via inlineComponentStyles', async () => { + it('preprocesses inline styles stored in the stylesheet registry', async () => { const host = { readFile: vi.fn() } as unknown as ts.CompilerHost; const transform = vi.fn(); - const inlineComponentStyles = new Map(); + const stylesheetRegistry = new AnalogStylesheetRegistry(); const stylePreprocessor = vi.fn( (code: string, filename: string) => `/* ${filename} */\n${code}`, ); augmentHostWithResources(host, transform as any, { inlineStylesExtension: 'css', - inlineComponentStyles, + stylesheetRegistry, stylePreprocessor, }); @@ -94,8 +95,25 @@ describe('augmentHostWithResources', () => { '/project/src/app/demo.component.css', ); expect(transform).not.toHaveBeenCalled(); - expect(inlineComponentStyles.get(result.content)).toBe( + expect(stylesheetRegistry.getServedContent(result.content)).toBe( '/* /project/src/app/demo.component.css */\n.demo { color: red; }', ); }); + + it('returns null when eager stylesheet transform fails', async () => { + const host = { readFile: vi.fn() } as unknown as ts.CompilerHost; + const transform = vi.fn().mockRejectedValue(new Error('boom')); + + augmentHostWithResources(host, transform as any, { + inlineStylesExtension: 'css', + }); + + await expect( + (host as any).transformResource('.demo { color: red; }', { + type: 'style', + resourceFile: '/project/src/app/demo.component.css', + containingFile: '/project/src/app/demo.component.ts', + }), + ).resolves.toBeNull(); + }); }); diff --git a/packages/vite-plugin-angular/src/lib/host.ts b/packages/vite-plugin-angular/src/lib/host.ts index ddb77d9f8..e21c8059b 100644 --- a/packages/vite-plugin-angular/src/lib/host.ts +++ b/packages/vite-plugin-angular/src/lib/host.ts @@ -6,6 +6,11 @@ import * as ts from 'typescript'; import { createHash } from 'node:crypto'; import path from 'node:path'; import type { StylePreprocessor } from './style-preprocessor.js'; +import { + AnalogStylesheetRegistry, + preprocessStylesheet, + registerStylesheetContent, +} from './stylesheet-registry.js'; import { debugStyles } from './utils/debug.js'; import type { SourceFileCache } from './utils/source-file-cache.js'; @@ -19,8 +24,7 @@ export function augmentHostWithResources( options: { inlineStylesExtension: string; isProd?: boolean; - inlineComponentStyles?: Map; - externalComponentStyles?: Map; + stylesheetRegistry?: AnalogStylesheetRegistry; sourceFileCache?: SourceFileCache; stylePreprocessor?: StylePreprocessor; }, @@ -55,42 +59,41 @@ export function augmentHostWithResources( '.ts', `.${options?.inlineStylesExtension}`, ); - const preprocessedData = options.stylePreprocessor - ? (options.stylePreprocessor(data, filename) ?? data) - : data; + const preprocessedData = preprocessStylesheet( + data, + filename, + options.stylePreprocessor, + ); - // liveReload path: store preprocessed CSS for Vite's serve-time pipeline. + // Externalized path: store preprocessed CSS for Vite's serve-time pipeline. // CSS must NOT be transformed here — the load hook returns it into // Vite's transform pipeline where PostCSS / Tailwind process it once. - if (options.inlineComponentStyles) { - const id = createHash('sha256') - .update(context.containingFile) - .update(context.className) - .update(String(context.order)) - .update(preprocessedData) - .digest('hex'); - const stylesheetId = id + '.' + options.inlineStylesExtension; - options.inlineComponentStyles.set(stylesheetId, preprocessedData); - debugStyles( - 'NgtscProgram: stylesheet deferred to Vite pipeline (liveReload)', + if (options.stylesheetRegistry) { + const stylesheetId = registerStylesheetContent( + options.stylesheetRegistry, { - stylesheetId, - resourceFile: context.resourceFile ?? '(inline)', + code: preprocessedData, + containingFile: context.containingFile, + className: context.className, + order: context.order, + inlineStylesExtension: options.inlineStylesExtension, + resourceFile: context.resourceFile ?? undefined, }, ); + debugStyles('NgtscProgram: stylesheet deferred to Vite pipeline', { + stylesheetId, + resourceFile: context.resourceFile ?? '(inline)', + }); return { content: stylesheetId }; } - // Non-liveReload: CSS is returned directly to the Angular compiler + // Non-externalized: CSS is returned directly to the Angular compiler // and never re-enters Vite's pipeline, so transform eagerly. - debugStyles( - 'NgtscProgram: stylesheet processed inline via transform (no liveReload)', - { - filename, - resourceFile: context.resourceFile ?? '(inline)', - dataLength: preprocessedData.length, - }, - ); + debugStyles('NgtscProgram: stylesheet processed inline via transform', { + filename, + resourceFile: context.resourceFile ?? '(inline)', + dataLength: preprocessedData.length, + }); let stylesheetResult; try { @@ -99,30 +102,41 @@ export function augmentHostWithResources( `${filename}?direct`, ); } catch (e) { - console.error(`${e}`); + debugStyles('NgtscProgram: stylesheet transform error', { + filename, + resourceFile: context.resourceFile ?? '(inline)', + error: String(e), + }); } - return { content: stylesheetResult?.code || '' }; + if (!stylesheetResult?.code) { + return null; + } + + return { content: stylesheetResult.code }; }; resourceHost.resourceNameToFileName = function ( resourceName, containingFile, + fallbackResolve, ) { - const resolvedPath = path.join(path.dirname(containingFile), resourceName); + const resolvedPath = normalizePath( + fallbackResolve + ? fallbackResolve(path.dirname(containingFile), resourceName) + : path.join(path.dirname(containingFile), resourceName), + ); // All resource names that have template file extensions are assumed to be templates - if (!options.externalComponentStyles || !hasStyleExtension(resolvedPath)) { + if (!options.stylesheetRegistry || !hasStyleExtension(resolvedPath)) { return resolvedPath; } // For external stylesheets, create a unique identifier and store the mapping - let externalId = options.externalComponentStyles.get(resolvedPath); - externalId ??= createHash('sha256').update(resolvedPath).digest('hex'); - + const externalId = createHash('sha256').update(resolvedPath).digest('hex'); const filename = externalId + path.extname(resolvedPath); - options.externalComponentStyles.set(filename, resolvedPath); + options.stylesheetRegistry.registerExternalRequest(filename, resolvedPath); debugStyles('NgtscProgram: external stylesheet ID mapped for resolveId', { resourceName, resolvedPath, diff --git a/packages/vite-plugin-angular/src/lib/plugins/file-replacements.plugin.ts b/packages/vite-plugin-angular/src/lib/plugins/file-replacements.plugin.ts index 0e081b41e..c9b76472d 100644 --- a/packages/vite-plugin-angular/src/lib/plugins/file-replacements.plugin.ts +++ b/packages/vite-plugin-angular/src/lib/plugins/file-replacements.plugin.ts @@ -1,6 +1,7 @@ // source: https://github.com/Myrmod/vitejs-theming/blob/master/build-plugins/rollup/replace-files.js import { isAbsolute, resolve } from 'node:path'; import { Plugin } from 'vite'; +import { debugCompiler } from '../utils/debug.js'; export function replaceFiles( replacements: FileReplacement[], @@ -61,7 +62,11 @@ export function replaceFiles( id: foundReplace.with, }; } catch (err) { - console.error(err); + debugCompiler('file replacement error', { + error: String(err), + source, + importer, + }); return null; } } diff --git a/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts b/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts new file mode 100644 index 000000000..610f9d72f --- /dev/null +++ b/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts @@ -0,0 +1,61 @@ +import { describe, expect, it, vi } from 'vitest'; +import { + AnalogStylesheetRegistry, + preprocessStylesheet, + registerStylesheetContent, + rewriteRelativeCssImports, +} from './stylesheet-registry.js'; + +describe('stylesheet-registry', () => { + it('applies the style preprocessor when provided', () => { + const stylePreprocessor = vi.fn((code: string, filename: string) => { + return `/* ${filename} */\n${code}`; + }); + + expect( + preprocessStylesheet( + '.demo { color: red; }', + '/project/src/app/demo.component.css', + stylePreprocessor, + ), + ).toBe('/* /project/src/app/demo.component.css */\n.demo { color: red; }'); + }); + + it('rewrites relative css imports to absolute paths', () => { + expect( + rewriteRelativeCssImports( + '@import "./submenu/submenu.component.css";\n.demo { color: red; }', + '/project/src/app/header.component.css', + ), + ).toBe( + '@import "/project/src/app/submenu/submenu.component.css";\n.demo { color: red; }', + ); + }); + + it('registers stylesheet content under the generated id and resource aliases', () => { + const registry = new AnalogStylesheetRegistry(); + + const stylesheetId = registerStylesheetContent(registry, { + code: '.demo { color: red; }', + containingFile: '/project/src/app/demo.component.ts', + className: 'DemoComponent', + order: 0, + inlineStylesExtension: 'css', + resourceFile: '/project/src/app/demo.component.css', + }); + + expect(stylesheetId).toMatch(/^[a-f0-9]+\.css$/); + expect(registry.getServedContent(stylesheetId)).toBe( + '.demo { color: red; }', + ); + expect( + registry.getServedContent('/project/src/app/demo.component.css'), + ).toBe('.demo { color: red; }'); + expect( + registry.getServedContent('project/src/app/demo.component.css'), + ).toBe('.demo { color: red; }'); + expect(registry.getServedContent('demo.component.css')).toBe( + '.demo { color: red; }', + ); + }); +}); diff --git a/packages/vite-plugin-angular/src/lib/stylesheet-registry.ts b/packages/vite-plugin-angular/src/lib/stylesheet-registry.ts new file mode 100644 index 000000000..cbc8881f1 --- /dev/null +++ b/packages/vite-plugin-angular/src/lib/stylesheet-registry.ts @@ -0,0 +1,133 @@ +import { createHash } from 'node:crypto'; +import { basename, dirname, normalize, resolve } from 'node:path'; +import { normalizePath } from 'vite'; +import type { StylePreprocessor } from './style-preprocessor.js'; + +export interface AnalogStylesheetRecord { + publicId: string; + sourcePath?: string; + originalCode?: string; + normalizedCode: string; +} + +export class AnalogStylesheetRegistry { + private servedById = new Map(); + private servedAliasToId = new Map(); + private externalRequestToSource = new Map(); + + get servedCount(): number { + return this.servedById.size; + } + + get externalCount(): number { + return this.externalRequestToSource.size; + } + + hasServed(requestId: string): boolean { + return this.resolveServedRecord(requestId) !== undefined; + } + + getServedContent(requestId: string): string | undefined { + return this.resolveServedRecord(requestId)?.normalizedCode; + } + + resolveExternalSource(requestId: string): string | undefined { + return this.externalRequestToSource.get(requestId); + } + + registerExternalRequest(requestId: string, sourcePath: string): void { + this.externalRequestToSource.set(requestId, sourcePath); + } + + registerServedStylesheet( + record: AnalogStylesheetRecord, + aliases: string[] = [], + ): void { + this.servedById.set(record.publicId, record); + this.servedAliasToId.set(record.publicId, record.publicId); + + for (const alias of aliases) { + this.servedAliasToId.set(alias, record.publicId); + } + } + + private resolveServedRecord( + requestId: string, + ): AnalogStylesheetRecord | undefined { + const publicId = this.servedAliasToId.get(requestId) ?? requestId; + return this.servedById.get(publicId); + } +} + +export function preprocessStylesheet( + code: string, + filename: string, + stylePreprocessor?: StylePreprocessor, +): string { + return stylePreprocessor ? (stylePreprocessor(code, filename) ?? code) : code; +} + +export function rewriteRelativeCssImports( + code: string, + filename: string, +): string { + const cssDir = dirname(filename); + return code.replace( + /@import\s+(['"])(\.[^'"]+)\1/g, + (_match, quote, relPath) => { + const absPath = resolve(cssDir, relPath); + return `@import ${quote}${absPath}${quote}`; + }, + ); +} + +export function registerStylesheetContent( + registry: AnalogStylesheetRegistry, + { + code, + containingFile, + className, + order, + inlineStylesExtension, + resourceFile, + }: { + code: string; + containingFile: string; + className?: string; + order?: number; + inlineStylesExtension: string; + resourceFile?: string; + }, +): string { + const id = createHash('sha256') + .update(containingFile) + .update(className ?? '') + .update(String(order ?? 0)) + .update(code) + .digest('hex'); + const stylesheetId = `${id}.${inlineStylesExtension}`; + + const aliases: string[] = []; + + if (resourceFile) { + const normalizedResourceFile = normalizePath(normalize(resourceFile)); + aliases.push( + resourceFile, + normalizedResourceFile, + basename(resourceFile), + resourceFile.replace(/^\//, ''), + normalizedResourceFile.replace(/^\//, ''), + ); + } + + registry.registerServedStylesheet( + { + publicId: stylesheetId, + sourcePath: resourceFile, + normalizedCode: code, + }, + aliases, + ); + + return stylesheetId; +} From eba6e08e2e4d8bd695e1051a786131c2af0878ed Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 13:32:36 -0400 Subject: [PATCH 02/33] feat(vite-plugin-angular): expand debug logging controls --- .gitignore | 1 + packages/platform/src/lib/utils/debug.spec.ts | 63 ++++++++++++++++++ .../src/lib/utils/debug.spec.ts | 64 +++++++++++++++++++ .../src/lib/utils/debug.ts | 24 ++++++- packages/vite-plugin-nitro/src/index.ts | 1 + .../src/lib/vite-plugin-nitro.ts | 2 +- tools/scripts/debug-nx-project-graph.mts | 37 +---------- 7 files changed, 155 insertions(+), 37 deletions(-) diff --git a/.gitignore b/.gitignore index 07c8d7119..ad4639911 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ node_modules npm-debug.log yarn-error.log testem.log +debug.analog.log /typings # System Files diff --git a/packages/platform/src/lib/utils/debug.spec.ts b/packages/platform/src/lib/utils/debug.spec.ts index c85625c9f..4d7c5584e 100644 --- a/packages/platform/src/lib/utils/debug.spec.ts +++ b/packages/platform/src/lib/utils/debug.spec.ts @@ -14,7 +14,15 @@ vi.mock('@analogjs/vite-plugin-nitro/internal', () => ({ debugInstances: [], })); +vi.mock('./debug-log-file.js', () => ({ + wrapInstancesForFileLog: vi.fn(), + wrapInstancesForScopedFileLog: vi.fn(), + DEBUG_LOG_DIR: 'tmp/debug', + DEBUG_LOG_FILENAME: 'debug.analog.log', +})); + import { enable } from 'obug'; +import { wrapInstancesForFileLog } from './debug-log-file.js'; import { applyDebugOption, activateDeferredDebug, @@ -24,6 +32,7 @@ import { describe('applyDebugOption (platform)', () => { beforeEach(() => { vi.mocked(enable).mockClear(); + vi.mocked(wrapInstancesForFileLog).mockClear(); _resetDeferredDebug(); }); @@ -61,3 +70,57 @@ describe('activateDeferredDebug (platform)', () => { expect(enable).toHaveBeenCalledWith('analog:*'); }); }); + +describe('applyDebugOption logFile (platform)', () => { + beforeEach(() => { + vi.mocked(enable).mockClear(); + vi.mocked(wrapInstancesForFileLog).mockClear(); + _resetDeferredDebug(); + }); + + it('sets up file logging when logFile is true in object form', () => { + applyDebugOption({ logFile: true }); + expect(wrapInstancesForFileLog).toHaveBeenCalled(); + expect(enable).toHaveBeenCalledWith('analog:*'); + }); + + it('sets up file logging with specific scopes', () => { + applyDebugOption({ scopes: ['analog:platform'], logFile: true }); + expect(wrapInstancesForFileLog).toHaveBeenCalled(); + expect(enable).toHaveBeenCalledWith('analog:platform'); + }); + + it('does not set up file logging when logFile is absent', () => { + applyDebugOption({ scopes: true }); + expect(wrapInstancesForFileLog).not.toHaveBeenCalled(); + }); + + it('does not set up file logging for boolean true', () => { + applyDebugOption(true); + expect(wrapInstancesForFileLog).not.toHaveBeenCalled(); + }); + + it('does not set up file logging for string array', () => { + applyDebugOption(['analog:platform']); + expect(wrapInstancesForFileLog).not.toHaveBeenCalled(); + }); + + it('extracts logFile from array of DebugModeOptions', () => { + applyDebugOption([ + { scopes: ['analog:platform'], logFile: true }, + { scopes: ['analog:angular:hmr'], mode: 'dev' }, + ]); + expect(wrapInstancesForFileLog).toHaveBeenCalled(); + }); + + it('uses provided workspaceRoot for file path', () => { + applyDebugOption({ logFile: true }, '/custom/root'); + const callArgs = vi.mocked(wrapInstancesForFileLog).mock.calls[0]; + expect(callArgs[1]).toContain('/custom/root'); + }); + + it('wraps both platform and nitro instances', () => { + applyDebugOption({ logFile: true }); + expect(wrapInstancesForFileLog).toHaveBeenCalledTimes(2); + }); +}); diff --git a/packages/vite-plugin-angular/src/lib/utils/debug.spec.ts b/packages/vite-plugin-angular/src/lib/utils/debug.spec.ts index 398d61a59..827a31e09 100644 --- a/packages/vite-plugin-angular/src/lib/utils/debug.spec.ts +++ b/packages/vite-plugin-angular/src/lib/utils/debug.spec.ts @@ -10,7 +10,15 @@ vi.mock('obug', () => ({ enable: vi.fn(), })); +vi.mock('./debug-log-file.js', () => ({ + wrapInstancesForFileLog: vi.fn(), + wrapInstancesForScopedFileLog: vi.fn(), + DEBUG_LOG_DIR: 'tmp/debug', + DEBUG_LOG_FILENAME: 'debug.analog.log', +})); + import { enable } from 'obug'; +import { wrapInstancesForFileLog } from './debug-log-file.js'; import { applyDebugOption, activateDeferredDebug, @@ -20,6 +28,7 @@ import { describe('applyDebugOption (angular)', () => { beforeEach(() => { vi.mocked(enable).mockClear(); + vi.mocked(wrapInstancesForFileLog).mockClear(); _resetDeferredDebug(); }); @@ -44,6 +53,7 @@ describe('applyDebugOption (angular)', () => { describe('activateDeferredDebug (angular)', () => { beforeEach(() => { vi.mocked(enable).mockClear(); + vi.mocked(wrapInstancesForFileLog).mockClear(); _resetDeferredDebug(); }); @@ -59,3 +69,57 @@ describe('activateDeferredDebug (angular)', () => { expect(enable).toHaveBeenCalledWith('analog:angular:*'); }); }); + +describe('applyDebugOption logFile (angular)', () => { + beforeEach(() => { + vi.mocked(enable).mockClear(); + vi.mocked(wrapInstancesForFileLog).mockClear(); + _resetDeferredDebug(); + }); + + it('sets up file logging when logFile is true in object form', () => { + applyDebugOption({ logFile: true }); + expect(wrapInstancesForFileLog).toHaveBeenCalled(); + expect(enable).toHaveBeenCalledWith('analog:angular:*'); + }); + + it('sets up file logging with specific scopes', () => { + applyDebugOption({ scopes: ['analog:angular:hmr'], logFile: true }); + expect(wrapInstancesForFileLog).toHaveBeenCalled(); + expect(enable).toHaveBeenCalledWith('analog:angular:hmr'); + }); + + it('does not set up file logging when logFile is absent', () => { + applyDebugOption({ scopes: true }); + expect(wrapInstancesForFileLog).not.toHaveBeenCalled(); + }); + + it('does not set up file logging for boolean true', () => { + applyDebugOption(true); + expect(wrapInstancesForFileLog).not.toHaveBeenCalled(); + }); + + it('does not set up file logging for string array', () => { + applyDebugOption(['analog:angular:hmr']); + expect(wrapInstancesForFileLog).not.toHaveBeenCalled(); + }); + + it('extracts logFile from array of DebugModeOptions', () => { + applyDebugOption([ + { scopes: ['analog:angular:hmr'], logFile: true }, + { scopes: ['analog:angular:compiler'], mode: 'build' }, + ]); + expect(wrapInstancesForFileLog).toHaveBeenCalled(); + }); + + it('uses provided workspaceRoot for file path', () => { + applyDebugOption({ logFile: true }, '/custom/root'); + const callArgs = vi.mocked(wrapInstancesForFileLog).mock.calls[0]; + expect(callArgs[1]).toContain('/custom/root'); + }); + + it('wraps only angular instances (single call)', () => { + applyDebugOption({ logFile: true }); + expect(wrapInstancesForFileLog).toHaveBeenCalledTimes(1); + }); +}); diff --git a/packages/vite-plugin-angular/src/lib/utils/debug.ts b/packages/vite-plugin-angular/src/lib/utils/debug.ts index 021b7814f..4b9e12914 100644 --- a/packages/vite-plugin-angular/src/lib/utils/debug.ts +++ b/packages/vite-plugin-angular/src/lib/utils/debug.ts @@ -1,29 +1,49 @@ import { createDebug } from 'obug'; import { createDebugHarness } from './debug-harness.js'; +import { + DEBUG_LOG_FILENAME, + wrapInstancesForFileLog, +} from './debug-log-file.js'; + +// Normal — key decisions, once per startup or per component +export const debugTailwind = createDebug('analog:angular:tailwind'); export const debugHmr = createDebug('analog:angular:hmr'); export const debugStyles = createDebug('analog:angular:styles'); export const debugCompiler = createDebug('analog:angular:compiler'); export const debugCompilationApi = createDebug( 'analog:angular:compilation-api', ); -export const debugTailwind = createDebug('analog:angular:tailwind'); + +// Verbose — per-file detail, enable with :v suffix or parent:* +export const debugTailwindV = createDebug('analog:angular:tailwind:v'); +export const debugHmrV = createDebug('analog:angular:hmr:v'); +export const debugStylesV = createDebug('analog:angular:styles:v'); +export const debugCompilerV = createDebug('analog:angular:compiler:v'); const angularDebugInstances = [ + debugTailwind, debugHmr, debugStyles, debugCompiler, debugCompilationApi, - debugTailwind, + debugTailwindV, + debugHmrV, + debugStylesV, + debugCompilerV, ]; export type DebugScope = | 'analog:angular:*' | 'analog:angular:hmr' + | 'analog:angular:hmr:v' | 'analog:angular:styles' + | 'analog:angular:styles:v' | 'analog:angular:compiler' + | 'analog:angular:compiler:v' | 'analog:angular:compilation-api' | 'analog:angular:tailwind' + | 'analog:angular:tailwind:v' | (string & {}); export type DebugMode = 'build' | 'dev'; diff --git a/packages/vite-plugin-nitro/src/index.ts b/packages/vite-plugin-nitro/src/index.ts index 0f800e804..0668d48d7 100644 --- a/packages/vite-plugin-nitro/src/index.ts +++ b/packages/vite-plugin-nitro/src/index.ts @@ -1,4 +1,5 @@ import { nitro } from './lib/vite-plugin-nitro.js'; +export { debugInstances } from './lib/utils/debug.js'; export type { Options, SitemapConfig, diff --git a/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts b/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts index 2e037a40e..28f13427f 100644 --- a/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts +++ b/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts @@ -32,7 +32,7 @@ import { apiMiddleware, } from './utils/renderers.js'; import { getBundleOptionsKey, isRolldown } from './utils/rolldown.js'; -import { debugNitro, debugSsr } from './utils/debug.js'; +import { debugNitro, debugSsr, debugPrerender } from './utils/debug.js'; function createNitroMiddlewareHandler(handler: string): NitroEventHandler { return { diff --git a/tools/scripts/debug-nx-project-graph.mts b/tools/scripts/debug-nx-project-graph.mts index cc2cfcd54..3a3be035b 100644 --- a/tools/scripts/debug-nx-project-graph.mts +++ b/tools/scripts/debug-nx-project-graph.mts @@ -1,42 +1,11 @@ import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs'; import { dirname, join, resolve, relative } from 'node:path'; import { fileURLToPath } from 'node:url'; +import { createDebug } from 'obug'; const __dirname = dirname(fileURLToPath(import.meta.url)); const workspaceRoot = resolve(__dirname, '../..'); -const DEBUG_NAMESPACE = 'analog:nx-project-graph'; - -function escapeRegExp(value: string) { - return value.replace(/[|\\{}()[\]^$+?.*]/g, '\\$&'); -} - -// Match DEBUG namespaces the same way the ad-hoc build diagnostics do so -// `DEBUG=analog:*` turns on every temporary probe consistently in CI. -function isDebugEnabled(namespace: string) { - const debugValue = process.env['DEBUG']; - if (!debugValue) { - return false; - } - - return debugValue - .split(/[\s,]+/) - .filter(Boolean) - .some((pattern) => { - const matcher = new RegExp( - `^${escapeRegExp(pattern).replace(/\\\*/g, '.*')}$`, - ); - return matcher.test(namespace); - }); -} - -function debug(label: string, details?: Record) { - if (details && Object.keys(details).length > 0) { - console.log(`DEBUG: ${label}`, details); - return; - } - - console.log(`DEBUG: ${label}`); -} +const debug = createDebug('analog:nx-project-graph'); function listEntries(path: string) { if (!existsSync(path)) { @@ -119,7 +88,7 @@ function collectManifestSummaries( // This script is intentionally quiet unless the debug namespace is enabled, // because it is wired into normal build targets as a preflight probe. -if (!isDebugEnabled(DEBUG_NAMESPACE)) { +if (!debug.enabled) { process.exit(0); } From 2c49f0a20ecc4569542ba3f374bac4b9c791106e Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 13:32:37 -0400 Subject: [PATCH 03/33] fix(content): split devtools into a dedicated entrypoint --- packages/content/devtools/src/index.ts | 5 +++++ packages/content/package.json | 5 +++++ packages/content/src/index.spec.ts | 16 ++++++++++++++++ packages/content/src/index.ts | 5 ----- packages/content/vite.config.lib.ts | 4 ++++ 5 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 packages/content/devtools/src/index.ts create mode 100644 packages/content/src/index.spec.ts diff --git a/packages/content/devtools/src/index.ts b/packages/content/devtools/src/index.ts new file mode 100644 index 000000000..21b547dba --- /dev/null +++ b/packages/content/devtools/src/index.ts @@ -0,0 +1,5 @@ +export { + contentDevToolsPlugin, + DevToolsContentRenderer, + withContentDevTools, +} from '../../src/lib/devtools/index'; diff --git a/packages/content/package.json b/packages/content/package.json index 81387c3d9..605c12543 100644 --- a/packages/content/package.json +++ b/packages/content/package.json @@ -100,6 +100,11 @@ "import": "./dist/fesm2022/analogjs-content-resources.mjs", "default": "./dist/fesm2022/analogjs-content-resources.mjs" }, + "./devtools": { + "types": "./dist/types/devtools/src/index.d.ts", + "import": "./dist/fesm2022/analogjs-content-devtools.mjs", + "default": "./dist/fesm2022/analogjs-content-devtools.mjs" + }, "./package.json": { "default": "./package.json" } diff --git a/packages/content/src/index.spec.ts b/packages/content/src/index.spec.ts new file mode 100644 index 000000000..9703b2061 --- /dev/null +++ b/packages/content/src/index.spec.ts @@ -0,0 +1,16 @@ +import * as content from './index'; +import * as devtools from '../devtools/src/index'; + +describe('@analogjs/content public entrypoints', () => { + it('does not expose devtools exports from the main entrypoint', () => { + expect(content).not.toHaveProperty('contentDevToolsPlugin'); + expect(content).not.toHaveProperty('DevToolsContentRenderer'); + expect(content).not.toHaveProperty('withContentDevTools'); + }); + + it('exposes devtools exports from the dedicated devtools entrypoint', () => { + expect(devtools.contentDevToolsPlugin).toBeTypeOf('function'); + expect(devtools.DevToolsContentRenderer).toBeDefined(); + expect(devtools.withContentDevTools).toBeTypeOf('function'); + }); +}); diff --git a/packages/content/src/index.ts b/packages/content/src/index.ts index b9ae175ca..c8f548a78 100644 --- a/packages/content/src/index.ts +++ b/packages/content/src/index.ts @@ -40,8 +40,3 @@ export { withContentFileLoader, CONTENT_FILE_LOADER, } from './lib/content-file-loader'; -export { - contentDevToolsPlugin, - DevToolsContentRenderer, - withContentDevTools, -} from './lib/devtools/index'; diff --git a/packages/content/vite.config.lib.ts b/packages/content/vite.config.lib.ts index 5bed79d1d..6ad4bf194 100644 --- a/packages/content/vite.config.lib.ts +++ b/packages/content/vite.config.lib.ts @@ -40,6 +40,10 @@ export default defineConfig({ import.meta.dirname, 'md4x/src/index.ts', ), + 'analogjs-content-devtools': resolve( + import.meta.dirname, + 'devtools/src/index.ts', + ), 'analogjs-content-resources': resolve( import.meta.dirname, 'resources/src/index.ts', From 8cbb8fd453bf85676c664d28bf4c1972053752ee Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 13:32:39 -0400 Subject: [PATCH 04/33] fix(router): prefer app routes over shared duplicates --- apps/blog-app/src/app/app.config.ts | 6 +--- packages/router/src/lib/route-builder.ts | 28 ++++++++++++++++-- packages/router/src/lib/routes.spec.ts | 36 ++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 7 deletions(-) diff --git a/apps/blog-app/src/app/app.config.ts b/apps/blog-app/src/app/app.config.ts index 6bcd51f2c..146ec42ed 100644 --- a/apps/blog-app/src/app/app.config.ts +++ b/apps/blog-app/src/app/app.config.ts @@ -9,10 +9,7 @@ import { withContentRoutes } from '@analogjs/router/content'; import { provideHttpClient } from '@angular/common/http'; import { ApplicationConfig } from '@angular/core'; import { provideClientHydration } from '@angular/platform-browser'; -import { - withEnabledBlockingInitialNavigation, - withInMemoryScrolling, -} from '@angular/router'; +import { withInMemoryScrolling } from '@angular/router'; export const appConfig: ApplicationConfig = { providers: [ @@ -27,7 +24,6 @@ export const appConfig: ApplicationConfig = { provideFileRouter( withContentRoutes(), withInMemoryScrolling({ anchorScrolling: 'enabled' }), - withEnabledBlockingInitialNavigation(), // Experimental: TanStack Router-inspired typed routes withTypedRouter(), withLoaderCaching({ defaultStaleTime: 60_000 }), diff --git a/packages/router/src/lib/route-builder.ts b/packages/router/src/lib/route-builder.ts index bf206e972..6e6da1d37 100644 --- a/packages/router/src/lib/route-builder.ts +++ b/packages/router/src/lib/route-builder.ts @@ -31,7 +31,16 @@ export function createRoutes( resolveModule: RouteModuleResolver, debug = false, ): Route[] { - const filenames = Object.keys(files); + const filenames = Object.keys(files).sort((a, b) => { + const aPriority = getCollisionPriority(a); + const bPriority = getCollisionPriority(b); + + if (aPriority !== bPriority) { + return aPriority - bPriority; + } + + return a.localeCompare(b); + }); if (filenames.length === 0) { return []; @@ -50,8 +59,9 @@ export function createRoutes( console.warn( `[Analog] Route files "${existing.filename}" and "${filename}" ` + `resolve to the same route path "${rawPath}". ` + - `Only "${filename}" will be used.`, + `Only "${existing.filename}" will be used.`, ); + return acc; } } @@ -111,6 +121,20 @@ export function createRoutes( return toRoutes(rawRoutes, files, resolveModule, debug); } +function getCollisionPriority(filename: string): number { + if ( + filename.includes('/src/app/pages/') || + filename.includes('/src/app/routes/') || + filename.includes('/app/pages/') || + filename.includes('/app/routes/') || + filename.includes('/src/content/') + ) { + return 0; + } + + return 1; +} + /** * Strips directory prefixes and file extensions from a route filename to * produce the raw path used for route segment construction. diff --git a/packages/router/src/lib/routes.spec.ts b/packages/router/src/lib/routes.spec.ts index 92c91db52..8dbf386f3 100644 --- a/packages/router/src/lib/routes.spec.ts +++ b/packages/router/src/lib/routes.spec.ts @@ -975,6 +975,42 @@ describe('routes', () => { }); }); + describe('duplicate route precedence', () => { + class AppRouteComponent {} + class SharedRouteComponent {} + + it('prefers app-local page routes over additional/shared page routes', async () => { + const spy = vi.spyOn(console, 'warn').mockImplementation(() => { + /* noop */ + }); + + const files: Files = { + '/libs/shared/feature/src/pages/blog/[slug].page.ts': () => + Promise.resolve({ default: SharedRouteComponent }), + '/src/app/pages/blog/[slug].page.ts': () => + Promise.resolve({ default: AppRouteComponent }), + }; + + const routes = createBaseRoutes( + files, + (_filename, fileLoader) => fileLoader as () => Promise, + ); + const route = routes.find((r) => r.path === 'blog/:slug'); + + expect(route).toBeDefined(); + const loadedRoutes = (await route!.loadChildren?.()) as Route[]; + + expect(loadedRoutes[0].component).toBe(AppRouteComponent); + expect(spy).toHaveBeenCalledWith( + expect.stringContaining( + 'Only "/src/app/pages/blog/[slug].page.ts" will be used.', + ), + ); + + spy.mockRestore(); + }); + }); + describe('merged route resolver dispatch', () => { class PageComponent {} From f23ce5a2af0bf838af03265dd735f94c01c6ca79 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 13:32:40 -0400 Subject: [PATCH 05/33] fix(platform): restore analog-app action and content examples --- .../tests/legacy-server-action.spec.ts | 29 +++++++++++ apps/analog-app/package.json | 1 + apps/analog-app/src/app/app.config.ts | 4 ++ .../src/app/pages/client/(client).page.ts | 18 +++---- .../src/app/pages/legacy-action.page.ts | 52 +++++++++++++++++++ .../src/app/pages/legacy-action.server.ts | 32 ++++++++++++ .../src/app/pages/newsletter.page.ts | 1 - .../src/app/pages/newsletter.server.ts | 35 +++++++------ apps/analog-app/src/routeTree.gen.ts | 25 +++++++++ apps/analog-app/vite.config.ts | 3 ++ pnpm-lock.yaml | 3 ++ 11 files changed, 175 insertions(+), 28 deletions(-) create mode 100644 apps/analog-app-e2e/tests/legacy-server-action.spec.ts create mode 100644 apps/analog-app/src/app/pages/legacy-action.page.ts create mode 100644 apps/analog-app/src/app/pages/legacy-action.server.ts diff --git a/apps/analog-app-e2e/tests/legacy-server-action.spec.ts b/apps/analog-app-e2e/tests/legacy-server-action.spec.ts new file mode 100644 index 000000000..6c5329dd9 --- /dev/null +++ b/apps/analog-app-e2e/tests/legacy-server-action.spec.ts @@ -0,0 +1,29 @@ +import { test, expect } from '@playwright/test'; + +test.describe('legacy PageServerAction - /legacy-action', () => { + test.beforeEach(async ({ page }) => { + await page.goto('/legacy-action'); + await page.locator('form[data-state]').waitFor({ timeout: 15_000 }); + }); + + test('submits successfully through the legacy action handler', async ({ + page, + }) => { + await page.locator('input[name="email"]').fill('legacy@example.com'); + await page.getByRole('button', { name: /submit/i }).click(); + + await expect(page.locator('#legacy-action-success')).toContainText( + 'legacy@example.com', + ); + }); + + test('returns validation errors through the legacy action handler', async ({ + page, + }) => { + await page.getByRole('button', { name: /submit/i }).click(); + + await expect(page.locator('#legacy-action-error')).toContainText( + 'Email is required', + ); + }); +}); diff --git a/apps/analog-app/package.json b/apps/analog-app/package.json index 176fb41e3..dc8b2824b 100644 --- a/apps/analog-app/package.json +++ b/apps/analog-app/package.json @@ -3,6 +3,7 @@ "private": true, "version": "0.0.0", "dependencies": { + "@analogjs/content": "workspace:*", "@analogjs/router": "workspace:*", "es-toolkit": "catalog:" }, diff --git a/apps/analog-app/src/app/app.config.ts b/apps/analog-app/src/app/app.config.ts index 12a19b649..98c993a9c 100644 --- a/apps/analog-app/src/app/app.config.ts +++ b/apps/analog-app/src/app/app.config.ts @@ -3,6 +3,7 @@ import { withFetch, withInterceptors, } from '@angular/common/http'; +import { provideContent, withMarkdownRenderer } from '@analogjs/content'; import type { ApplicationConfig } from '@angular/core'; import { provideClientHydration, @@ -17,6 +18,7 @@ import { withLoaderCaching, requestContextInterceptor, } from '@analogjs/router'; +import { withContentRoutes } from '@analogjs/router/content'; import { withNavigationErrorHandler } from '@angular/router'; const fallbackRoutes = [ @@ -28,6 +30,7 @@ export const appConfig: ApplicationConfig = { provideFileRouter( withNavigationErrorHandler(console.error), withDebugRoutes(), + withContentRoutes(), withExtraRoutes(fallbackRoutes), // Experimental: TanStack Router-inspired features withTypedRouter({ strictRouteParams: true }), @@ -42,6 +45,7 @@ export const appConfig: ApplicationConfig = { withFetch(), withInterceptors([requestContextInterceptor]), ), + provideContent(withMarkdownRenderer()), // Hydration must be configured for both server and client bootstraps so // SSR can serialize the metadata the browser uses to hydrate. provideClientHydration(withEventReplay()), diff --git a/apps/analog-app/src/app/pages/client/(client).page.ts b/apps/analog-app/src/app/pages/client/(client).page.ts index b82c27c6c..77b019cb9 100644 --- a/apps/analog-app/src/app/pages/client/(client).page.ts +++ b/apps/analog-app/src/app/pages/client/(client).page.ts @@ -1,5 +1,5 @@ import { ChangeDetectionStrategy, Component, signal } from '@angular/core'; -import { ServerOnly, type RouteMeta } from '@analogjs/router'; +import { type RouteMeta } from '@analogjs/router'; export const routeMeta: RouteMeta = { title: 'Client Component', @@ -12,14 +12,15 @@ export const routeMeta: RouteMeta = { }; @Component({ - imports: [ServerOnly], changeDetection: ChangeDetectionStrategy.OnPush, template: `

Client Component

- +

+ This route renders entirely on the client and updates without SSR. +

- +

Current count: {{ count() }}

@@ -27,14 +28,9 @@ export const routeMeta: RouteMeta = { `, }) export default class ClientComponent { - props = signal({ name: 'Brandon', count: 0 }); - props2 = signal({ name: 'Brandon', count: 4 }); + readonly count = signal(0); update() { - this.props.update((data) => ({ ...data, count: ++data.count })); - } - - log($event: object) { - console.log({ outputs: $event }); + this.count.update((value) => value + 1); } } diff --git a/apps/analog-app/src/app/pages/legacy-action.page.ts b/apps/analog-app/src/app/pages/legacy-action.page.ts new file mode 100644 index 000000000..d47729073 --- /dev/null +++ b/apps/analog-app/src/app/pages/legacy-action.page.ts @@ -0,0 +1,52 @@ +import { Component, signal } from '@angular/core'; +import { FormAction } from '@analogjs/router'; + +import { + type LegacyActionError, + type LegacyActionSuccess, +} from './legacy-action.server'; + +@Component({ + selector: 'analogjs-legacy-action-page', + standalone: true, + imports: [FormAction], + template: ` +

Legacy Server Action

+ + @if (submittedEmail()) { +
+ Legacy action submitted for {{ submittedEmail() }}. +
+ } @else { +
+
+ + +
+ + +
+ + @if (errors()?.email) { +

{{ errors()?.email }}

+ } + } + `, +}) +export default class LegacyActionComponent { + readonly submittedEmail = signal(''); + readonly errors = signal(undefined); + + handleSuccess(result: LegacyActionSuccess) { + this.errors.set(undefined); + this.submittedEmail.set(result.email); + } + + handleError(result?: LegacyActionError) { + this.errors.set(result); + } +} diff --git a/apps/analog-app/src/app/pages/legacy-action.server.ts b/apps/analog-app/src/app/pages/legacy-action.server.ts new file mode 100644 index 000000000..21aab98a1 --- /dev/null +++ b/apps/analog-app/src/app/pages/legacy-action.server.ts @@ -0,0 +1,32 @@ +import { + type PageServerAction, + fail, + json, +} from '@analogjs/router/server/actions'; + +export type LegacyActionSuccess = { + type: 'success'; + email: string; +}; + +export type LegacyActionError = + | { + email?: string; + } + | undefined; + +export async function action({ event }: PageServerAction) { + const body = await event.req.formData(); + const email = body.get('email'); + + if (typeof email !== 'string' || email.length === 0) { + return fail>(422, { + email: 'Email is required', + }); + } + + return json({ + type: 'success', + email, + }); +} diff --git a/apps/analog-app/src/app/pages/newsletter.page.ts b/apps/analog-app/src/app/pages/newsletter.page.ts index 7582781a4..1455608ad 100644 --- a/apps/analog-app/src/app/pages/newsletter.page.ts +++ b/apps/analog-app/src/app/pages/newsletter.page.ts @@ -25,7 +25,6 @@ type FormErrors = method="post" (onSuccess)="onSuccess($any($event))" (onError)="onError($any($event))" - (onStateChange)="errors.set(undefined)" >
diff --git a/apps/analog-app/src/app/pages/newsletter.server.ts b/apps/analog-app/src/app/pages/newsletter.server.ts index 2999efcfc..fe2f188d3 100644 --- a/apps/analog-app/src/app/pages/newsletter.server.ts +++ b/apps/analog-app/src/app/pages/newsletter.server.ts @@ -1,10 +1,10 @@ import { - type PageServerAction, - redirect, - json, + defineAction, fail, + json, + redirect, } from '@analogjs/router/server/actions'; -import { readFormData } from 'nitro/h3'; +import * as v from 'valibot'; export type NewsletterSubmitResponse = { type: 'success'; @@ -17,17 +17,20 @@ export function load() { }; } -export async function action({ event }: PageServerAction) { - const body = await readFormData(event); - const email = body.get('email') as string; - - if (!email) { - return fail(422, { email: 'Email is required' }); - } +const NewsletterSchema = v.object({ + email: v.pipe(v.string(), v.nonEmpty('Email is required')), +}); - if (email.length < 10) { - return redirect('/'); - } +export const action = defineAction({ + schema: NewsletterSchema, + handler: async ({ data }) => { + if (data.email.length < 10) { + return redirect('/'); + } - return json({ type: 'success', email }); -} + return json({ + type: 'success', + email: data.email, + }); + }, +}); diff --git a/apps/analog-app/src/routeTree.gen.ts b/apps/analog-app/src/routeTree.gen.ts index a242f7054..5bee9ae97 100644 --- a/apps/analog-app/src/routeTree.gen.ts +++ b/apps/analog-app/src/routeTree.gen.ts @@ -44,6 +44,12 @@ declare module '@analogjs/router' { query: Record; queryOutput: Record; }; + '/legacy-action': { + params: Record; + paramsOutput: Record; + query: Record; + queryOutput: Record; + }; '/newsletter': { params: Record; paramsOutput: Record; @@ -158,6 +164,7 @@ export interface AnalogFileRoutesById { "/cart": AnalogGeneratedRouteRecord<"/cart", "cart", "/cart", null, readonly []>; "/client/(client)": AnalogGeneratedRouteRecord<"/client/(client)", "client", "/client", null, readonly []>; "/contact": AnalogGeneratedRouteRecord<"/contact", "contact", "/contact", null, readonly []>; + "/legacy-action": AnalogGeneratedRouteRecord<"/legacy-action", "legacy-action", "/legacy-action", null, readonly []>; "/newsletter": AnalogGeneratedRouteRecord<"/newsletter", "newsletter", "/newsletter", null, readonly []>; "/package": AnalogGeneratedRouteRecord<"/package", "package", "/package", null, readonly []>; "/search": AnalogGeneratedRouteRecord<"/search", "search", "/search", null, readonly []>; @@ -180,6 +187,7 @@ export interface AnalogFileRoutesByFullPath { "/cart": AnalogFileRoutesById["/cart"]; "/client": AnalogFileRoutesById["/client/(client)"]; "/contact": AnalogFileRoutesById["/contact"]; + "/legacy-action": AnalogFileRoutesById["/legacy-action"]; "/newsletter": AnalogFileRoutesById["/newsletter"]; "/package": AnalogFileRoutesById["/package"]; "/search": AnalogFileRoutesById["/search"]; @@ -312,6 +320,22 @@ export const analogRouteTree = { isCatchAll: false, isOptionalCatchAll: false, } satisfies AnalogFileRoutesById["/contact"], + "/legacy-action": { + id: "/legacy-action", + path: "legacy-action", + fullPath: "/legacy-action", + parentId: null, + children: [] as const, + sourceFile: "/src/app/pages/legacy-action.page.ts", + kind: "page", + hasParamsSchema: false, + hasQuerySchema: false, + hasJsonLd: false, + isIndex: false, + isGroup: false, + isCatchAll: false, + isOptionalCatchAll: false, + } satisfies AnalogFileRoutesById["/legacy-action"], "/newsletter": { id: "/newsletter", path: "newsletter", @@ -528,6 +552,7 @@ export const analogRouteTree = { "/cart": "/cart", "/client": "/client/(client)", "/contact": "/contact", + "/legacy-action": "/legacy-action", "/newsletter": "/newsletter", "/package": "/package", "/search": "/search", diff --git a/apps/analog-app/vite.config.ts b/apps/analog-app/vite.config.ts index f005e0856..4739b4695 100644 --- a/apps/analog-app/vite.config.ts +++ b/apps/analog-app/vite.config.ts @@ -50,6 +50,9 @@ export default defineConfig(async ({ mode }) => { plugins: [ analog({ apiPrefix: 'api', + content: { + highlighter: 'prism', + }, include: ['/libs/my-package/src/**/*.ts'], discoverRoutes: true, fileReplacements, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4528365e9..62281a0d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -717,6 +717,9 @@ importers: apps/analog-app: dependencies: + '@analogjs/content': + specifier: workspace:* + version: link:../../packages/content '@analogjs/router': specifier: workspace:* version: link:../../packages/router From 8eec739f09a3352c3e037ddf1ba0018b42079af2 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 13:32:42 -0400 Subject: [PATCH 06/33] test(router): cover legacy PageServerAction compatibility --- .../src/page-server-action-compat.spec.ts | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 packages/router/server/actions/src/page-server-action-compat.spec.ts diff --git a/packages/router/server/actions/src/page-server-action-compat.spec.ts b/packages/router/server/actions/src/page-server-action-compat.spec.ts new file mode 100644 index 000000000..2935a34f0 --- /dev/null +++ b/packages/router/server/actions/src/page-server-action-compat.spec.ts @@ -0,0 +1,65 @@ +import { describe, expect, it, vi } from 'vitest'; +import type { PageServerAction } from './actions'; +import { fail, json } from './actions'; + +type LegacyActionSuccess = { + type: 'success'; + email: string; +}; + +async function legacyNewsletterAction({ event }: PageServerAction) { + const body = await event.req.formData(); + const email = body.get('email'); + + if (typeof email !== 'string' || email.length === 0) { + return fail(422, { email: 'Email is required' }); + } + + return json({ + type: 'success', + email, + }); +} + +function createLegacyActionContext(formData: FormData): PageServerAction { + return { + params: {}, + req: {} as never, + res: {} as never, + fetch: vi.fn() as never, + event: { + req: { + formData: vi.fn().mockResolvedValue(formData), + }, + } as never, + }; +} + +describe('PageServerAction compatibility pattern', () => { + it('supports reading form data from event.req.formData()', async () => { + const formData = new FormData(); + formData.set('email', 'legacy@example.com'); + + const response = await legacyNewsletterAction( + createLegacyActionContext(formData), + ); + + expect(response.status).toBe(200); + expect(await response.json()).toEqual({ + type: 'success', + email: 'legacy@example.com', + }); + }); + + it('supports returning validation errors through fail()', async () => { + const response = await legacyNewsletterAction( + createLegacyActionContext(new FormData()), + ); + + expect(response.status).toBe(422); + expect(response.headers.get('X-Analog-Errors')).toBe('true'); + expect(await response.json()).toEqual({ + email: 'Email is required', + }); + }); +}); From 84002ee3f8cec97c27e85446f9e85ba049374be2 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 13:32:43 -0400 Subject: [PATCH 07/33] fix(create-analog): scaffold Tailwind v4 PostCSS config --- apps/docs-app/docs/guides/migrating.md | 31 +++++++++++- .../integrations/angular-material/index.md | 2 +- .../docs/integrations/storybook/index.md | 32 ++++++++++++ .../docs/packages/create-analog/overview.md | 9 +++- .../vite-plugin-angular/css-preprocessors.md | 50 ++++++++++++++++++- packages/create-analog/__tests__/cli.spec.ts | 13 ++++- packages/create-analog/index.js | 10 ++++ .../src/generators/app/generator.spec.ts | 8 +++ .../generators/app/lib/add-tailwind-config.ts | 2 + .../app/lib/add-tailwind-helpers.ts | 26 ++++++++++ .../app/versions/nx_18_X/versions.ts | 2 + .../app/versions/tailwind-dependencies.ts | 16 +++++- packages/storybook-angular/README.md | 6 ++- 13 files changed, 196 insertions(+), 11 deletions(-) diff --git a/apps/docs-app/docs/guides/migrating.md b/apps/docs-app/docs/guides/migrating.md index b77035335..95ce225d7 100644 --- a/apps/docs-app/docs/guides/migrating.md +++ b/apps/docs-app/docs/guides/migrating.md @@ -181,7 +181,7 @@ export default defineConfig(({ mode }) => ({ ## Enabling HMR -Angular supports HMR/Live reload where in most cases components can be updated without a page reload. To enable it in Analog, use the `liveReload: true` option. +Angular supports HMR where in most cases components can be updated without a full page reload. In Analog, prefer the `hmr` option. `liveReload` is still accepted as a compatibility alias, but `hmr` is the primary API. ```ts /// @@ -194,8 +194,35 @@ export default defineConfig(({ mode }) => ({ // .. other configuration plugins: [ analog({ - liveReload: true, + hmr: true, }), ], })); ``` + +If you are also using Tailwind v4 for component styles, keep that configuration on the Analog side as well: + +```ts +/// + +import { resolve } from 'node:path'; +import { defineConfig } from 'vite'; +import analog from '@analogjs/platform'; +import tailwindcss from '@tailwindcss/vite'; + +export default defineConfig(() => ({ + plugins: [ + analog({ + hmr: true, + vite: { + tailwindCss: { + rootStylesheet: resolve(__dirname, 'src/styles.css'), + }, + }, + }), + tailwindcss(), + ], +})); +``` + +This is the recommended setup for Analog v3: one root Tailwind stylesheet, `@tailwindcss/vite` in Vite, and Analog handling component stylesheet preprocessing. diff --git a/apps/docs-app/docs/integrations/angular-material/index.md b/apps/docs-app/docs/integrations/angular-material/index.md index 7ca149878..595943501 100644 --- a/apps/docs-app/docs/integrations/angular-material/index.md +++ b/apps/docs-app/docs/integrations/angular-material/index.md @@ -164,7 +164,7 @@ export default defineConfig({ @import 'tailwindcss'; ``` -> **Note:** Analog's default Tailwind v4 setup uses `@tailwindcss/vite`. You do not need a `.postcssrc.json` file or a generated `tailwind.config.*` file for the standard Vite-based setup. +> **Note:** Analog's current Tailwind v4 setup uses `@tailwindcss/vite` and also commonly includes a `postcss.config.mjs` with `@tailwindcss/postcss` so the build path and related integrations use the same Tailwind pipeline. > > The scaffolded Tailwind v4 flow also expects a plain CSS entry file such as `src/styles.css`. If your app currently uses Sass or Less for the global entry point, keep your existing setup or migrate that entry file to CSS before adopting the default Tailwind v4 flow. diff --git a/apps/docs-app/docs/integrations/storybook/index.md b/apps/docs-app/docs/integrations/storybook/index.md index b4075ce95..e9d544b08 100644 --- a/apps/docs-app/docs/integrations/storybook/index.md +++ b/apps/docs-app/docs/integrations/storybook/index.md @@ -91,6 +91,8 @@ const config: StorybookConfig = { export default config; ``` +For current Analog projects, prefer `framework.options.hmr` if you need to configure Angular HMR. `liveReload` is still accepted as a compatibility alias, but `hmr` is the recommended option. + Remove the existing `webpackFinal` config function if present. Next, update the Storybook targets in the `angular.json` or `project.json` @@ -139,6 +141,36 @@ To register global styles, add them to the `@analogjs/storybook-angular` builder } ``` +### Tailwind v4 in Storybook + +If your project uses Tailwind v4, keep Storybook aligned with the same opinionated Analog setup you use in the app: + +- one root stylesheet such as `src/styles.css` +- `@import 'tailwindcss';` in that stylesheet +- `framework.options.tailwindCss.rootStylesheet` pointing at that stylesheet +- `framework.options.hmr` for Angular HMR behavior + +```ts +import { resolve } from 'node:path'; +import type { StorybookConfig } from '@analogjs/storybook-angular'; + +const config: StorybookConfig = { + framework: { + name: '@analogjs/storybook-angular', + options: { + hmr: true, + tailwindCss: { + rootStylesheet: resolve(__dirname, '../src/styles.css'), + }, + }, + }, +}; + +export default config; +``` + +This keeps Storybook on the same stylesheet pipeline as the app instead of relying on ad hoc per-story or per-component Tailwind wiring. + ## Enabling Zoneless Change Detection To use zoneless change detection for the Storybook, add the `experimentalZoneless` flag to the `@analogjs/storybook-angular` builder options in the `angular.json` or `project.json`. diff --git a/apps/docs-app/docs/packages/create-analog/overview.md b/apps/docs-app/docs/packages/create-analog/overview.md index 784d5844f..efc62021d 100644 --- a/apps/docs-app/docs/packages/create-analog/overview.md +++ b/apps/docs-app/docs/packages/create-analog/overview.md @@ -47,7 +47,14 @@ pnpm create analog ### Tailwind v4 -`create-analog` scaffolds Tailwind v4 with the Vite plugin by default for the current Analog templates. Generated projects use `@tailwindcss/vite`, add `@import 'tailwindcss';` to `src/styles.css`, and do not create a `.postcssrc.json` file or a `tailwind.config.*` file for the standard setup. +`create-analog` scaffolds Tailwind v4 with the Vite plugin by default for the current Analog templates. Generated projects use `@tailwindcss/vite`, add `@import 'tailwindcss';` to `src/styles.css`, and also generate a `postcss.config.mjs` with `@tailwindcss/postcss` so the build path and tool integrations use the same Tailwind setup. + +This is the recommended Analog v3 direction: + +- Keep one root stylesheet, usually `src/styles.css`, that contains `@import 'tailwindcss';` +- Keep `@tailwindcss/vite` enabled in `vite.config.ts` +- Let Analog handle component-level `@reference` injection through its Tailwind-aware stylesheet pipeline instead of adding `@reference` directives manually in every component stylesheet +- Prefer the `hmr` option over `liveReload` when you need to configure Angular HMR explicitly If you do not want Tailwind in the generated app, pass `--skipTailwind true`. The default Tailwind v4 flow expects a plain CSS entry file for global styles. diff --git a/apps/docs-app/docs/packages/vite-plugin-angular/css-preprocessors.md b/apps/docs-app/docs/packages/vite-plugin-angular/css-preprocessors.md index 110b9db85..9f6a49f9e 100644 --- a/apps/docs-app/docs/packages/vite-plugin-angular/css-preprocessors.md +++ b/apps/docs-app/docs/packages/vite-plugin-angular/css-preprocessors.md @@ -4,6 +4,48 @@ title: 'Using CSS Pre-processors' The Vite Plugin supports CSS pre-processing using external `styleUrls` and inline `styles` in the Component decorator metadata. +## Recommended Tailwind v4 setup + +If your app uses Tailwind v4, the recommended Analog setup is opinionated: + +- keep a single root stylesheet such as `src/styles.css` +- put `@import 'tailwindcss';` in that root stylesheet +- keep `@tailwindcss/vite` enabled in `vite.config.ts` +- configure Analog with `tailwindCss.rootStylesheet` + +This lets Analog preprocess component stylesheets and inject the correct `@reference` directive automatically for component CSS that uses Tailwind utilities. + +```ts +/// + +import { resolve } from 'node:path'; +import { defineConfig } from 'vite'; +import angular from '@analogjs/vite-plugin-angular'; +import tailwindcss from '@tailwindcss/vite'; + +export default defineConfig(() => ({ + plugins: [ + angular({ + tailwindCss: { + rootStylesheet: resolve(__dirname, 'src/styles.css'), + }, + hmr: true, + }), + tailwindcss(), + ], +})); +``` + +And in `src/styles.css`: + +```css +@import 'tailwindcss'; +``` + +Use an absolute path for `rootStylesheet`. Analog serves some component styles through virtual stylesheet ids during dev, so relative `@reference` paths are not reliable there. + +You only need `tailwindCss.prefixes` when your component styles use custom-prefixed utilities and you want Analog to look for those prefixes instead of the default `@apply` detection. + External `styleUrls` can be used without any additional configuration. An example with `styleUrls`: @@ -18,7 +60,7 @@ import { Component } from '@angular/core'; export class AppComponent {} ``` -In order to support pre-processing of inline `styles`, the plugin must be configured to provide the extension of the type of styles being used. +In order to support pre-processing of inline `styles`, configure the plugin with the `inlineStylesExtension` for the style language being used. An example of using `scss` with inline `styles`: @@ -44,7 +86,7 @@ import { Component } from '@angular/core'; export class AppComponent {} ``` -In the `vite.config.ts`, provide and object to the `angular` plugin function with the `inlineStylesExtension` property set to the CSS pre-processing file extension. +In `vite.config.ts`, pass an object to the `angular` plugin with `inlineStylesExtension` set to the CSS pre-processing file extension. ```ts import { defineConfig } from 'vite'; @@ -64,3 +106,7 @@ export default defineConfig(({ mode }) => { ``` Support CSS pre-processor extensions include `scss`, `sass` and `less`. More information about CSS pre-processing can be found in the [Vite Docs](https://vitejs.dev/guide/features.html#css-pre-processors). + +## Combining Tailwind and another style preprocessor + +If you use Tailwind and a custom stylesheet preprocessor together, keep Tailwind configured through `tailwindCss.rootStylesheet` and then add the other preprocessing options you need. Analog chains those steps in the right order for component styles. diff --git a/packages/create-analog/__tests__/cli.spec.ts b/packages/create-analog/__tests__/cli.spec.ts index 108e5d150..fe90609f7 100644 --- a/packages/create-analog/__tests__/cli.spec.ts +++ b/packages/create-analog/__tests__/cli.spec.ts @@ -46,14 +46,20 @@ const expectTailwindScaffold = () => { const viteConfig = readGeneratedViteConfig(); expect(pkg.devDependencies['tailwindcss']).toBe('^4.2.2'); + expect(pkg.devDependencies['postcss']).toBe('^8.5.6'); + expect(pkg.devDependencies['@tailwindcss/postcss']).toBe('^4.2.2'); expect(pkg.devDependencies['@tailwindcss/vite']).toBe('^4.2.2'); expect(pkg.dependencies['tailwindcss']).toBeUndefined(); expect(pkg.dependencies['@tailwindcss/vite']).toBeUndefined(); + expect(pkg.dependencies['@tailwindcss/postcss']).toBeUndefined(); expect(readGeneratedStyles()).toContain(`@import 'tailwindcss';`); expect(viteConfig).toContain(`import tailwindcss from '@tailwindcss/vite';`); expect(viteConfig).toMatch( /plugins:\s*\[[\s\S]*tailwindcss\(\),[\s\S]*analog\(/, ); + expect(readFileSync(join(genPath, 'postcss.config.mjs'), 'utf-8')).toContain( + `'@tailwindcss/postcss': {}`, + ); }; // Angular v18 starter template @@ -63,6 +69,9 @@ templateFiles.push('.git'); templateFiles = templateFiles .map((filePath) => (filePath === '_gitignore' ? '.gitignore' : filePath)) .sort((a, b) => a.localeCompare(b)); +const tailwindTemplateFiles = [...templateFiles, 'postcss.config.mjs'].sort( + (a, b) => a.localeCompare(b), +); beforeAll(async () => { await remove(genPath); mkdirpSync(tmpDir); @@ -115,7 +124,7 @@ test('successfully scaffolds a project based on angular starter template', () => // Assertions expect(stdout).toContain(`Scaffolding project in ${genPath}`); - expect(templateFiles).toEqual(generatedFiles); + expect(tailwindTemplateFiles).toEqual(generatedFiles); expectTailwindScaffold(); }); @@ -130,7 +139,7 @@ test('works with the -t alias', () => { // Assertions expect(stdout).toContain(`Scaffolding project in ${genPath}`); - expect(templateFiles).toEqual(generatedFiles); + expect(tailwindTemplateFiles).toEqual(generatedFiles); expectTailwindScaffold(); }); diff --git a/packages/create-analog/index.js b/packages/create-analog/index.js index 7598faf6d..ce18fa5c2 100755 --- a/packages/create-analog/index.js +++ b/packages/create-analog/index.js @@ -120,6 +120,13 @@ const renameFiles = { _gitignore: '.gitignore', }; +const TAILWIND_POSTCSS_CONFIG = `export default { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; +`; + async function init() { let targetDir = formatTargetDir(argv._[0]); let template = resolveTemplate(argv.template ?? argv.t); @@ -267,6 +274,7 @@ async function init() { if (!skipTailwind) { addTailwindDirectives(write, filesDir); + write('postcss.config.mjs', TAILWIND_POSTCSS_CONFIG); } replacePlaceholders(root, 'vite.config.ts', { @@ -471,7 +479,9 @@ function addTailwindDirectives(write, filesDir) { */ function addTailwindDependencies(pkg) { pkg.devDependencies ??= {}; + pkg.devDependencies.postcss = '^8.5.6'; pkg.devDependencies.tailwindcss = '^4.2.2'; + pkg.devDependencies['@tailwindcss/postcss'] = '^4.2.2'; pkg.devDependencies['@tailwindcss/vite'] = '^4.2.2'; } diff --git a/packages/nx-plugin/src/generators/app/generator.spec.ts b/packages/nx-plugin/src/generators/app/generator.spec.ts index 247197ac1..5a3de7474 100644 --- a/packages/nx-plugin/src/generators/app/generator.spec.ts +++ b/packages/nx-plugin/src/generators/app/generator.spec.ts @@ -96,12 +96,20 @@ describe('nx-plugin generator', () => { tree: Tree, dependencies: Record, ) => { + const postcssConfig = tree.read( + 'apps/tailwind-app/postcss.config.mjs', + 'utf-8', + ); + + expect(dependencies['postcss']).toBeDefined(); expect(dependencies['tailwindcss']).toBeDefined(); + expect(dependencies['@tailwindcss/postcss']).toBeDefined(); expect(dependencies['@tailwindcss/vite']).toBeDefined(); const viteConfig = tree.read('apps/tailwind-app/vite.config.ts', 'utf-8'); const styles = tree.read('apps/tailwind-app/src/styles.css', 'utf-8'); expect(styles?.includes(`@import 'tailwindcss';`)).toBeTruthy(); + expect(postcssConfig).toContain(`'@tailwindcss/postcss': {}`); expect(viteConfig).toContain( `import tailwindcss from '@tailwindcss/vite';`, ); diff --git a/packages/nx-plugin/src/generators/app/lib/add-tailwind-config.ts b/packages/nx-plugin/src/generators/app/lib/add-tailwind-config.ts index 6ed63448a..936d6426f 100644 --- a/packages/nx-plugin/src/generators/app/lib/add-tailwind-config.ts +++ b/packages/nx-plugin/src/generators/app/lib/add-tailwind-config.ts @@ -9,6 +9,7 @@ import { detectTailwindInstalledVersion, normalizeOptions, updateApplicationStyles, + writeTailwindPostcssConfig, } from './add-tailwind-helpers'; export async function addTailwindConfig( @@ -50,6 +51,7 @@ export async function setupTailwindGenerator( if (project.projectType === 'application') { updateApplicationStyles(tree, options, project); + writeTailwindPostcssConfig(tree, project); } if (!options.skipFormat) { diff --git a/packages/nx-plugin/src/generators/app/lib/add-tailwind-helpers.ts b/packages/nx-plugin/src/generators/app/lib/add-tailwind-helpers.ts index c596ea4da..dddcfa582 100644 --- a/packages/nx-plugin/src/generators/app/lib/add-tailwind-helpers.ts +++ b/packages/nx-plugin/src/generators/app/lib/add-tailwind-helpers.ts @@ -49,13 +49,39 @@ export function addTailwindRequiredPackages(tree: Tree): GeneratorCallback { return addDependenciesToPackageJson( tree, { + postcss: pkgVersions.postcss, tailwindcss: pkgVersions.tailwindcss, + '@tailwindcss/postcss': pkgVersions['@tailwindcss/postcss'], '@tailwindcss/vite': pkgVersions['@tailwindcss/vite'], }, {}, ); } +export function writeTailwindPostcssConfig( + tree: Tree, + project: ProjectConfiguration, +): void { + const postcssConfigPath = joinPathFragments( + project.root, + 'postcss.config.mjs', + ); + + if (tree.exists(postcssConfigPath)) { + return; + } + + tree.write( + postcssConfigPath, + `export default { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; +`, + ); +} + export function updateApplicationStyles( tree: Tree, options: NormalizedGeneratorOptions, diff --git a/packages/nx-plugin/src/generators/app/versions/nx_18_X/versions.ts b/packages/nx-plugin/src/generators/app/versions/nx_18_X/versions.ts index 373800324..2f8d57478 100644 --- a/packages/nx-plugin/src/generators/app/versions/nx_18_X/versions.ts +++ b/packages/nx-plugin/src/generators/app/versions/nx_18_X/versions.ts @@ -14,7 +14,9 @@ export const V18_X_MARKED_MANGLE = '^1.1.10'; export const V18_X_MERMAID = '^10.2.4'; export const V18_X_PRISMJS = '^1.29.0'; export const V18_X_TAILWINDCSS = '^4.2.2'; +export const V18_X_TAILWINDCSS_POSTCSS = '^4.2.2'; export const V18_X_TAILWINDCSS_VITE = '^4.2.2'; +export const V18_X_POSTCSS = '^8.5.6'; // devDependencies export const V18_X_ANALOG_JS_PLATFORM = '^3.0.0-alpha.24'; diff --git a/packages/nx-plugin/src/generators/app/versions/tailwind-dependencies.ts b/packages/nx-plugin/src/generators/app/versions/tailwind-dependencies.ts index e7d2debc3..e67356d68 100644 --- a/packages/nx-plugin/src/generators/app/versions/tailwind-dependencies.ts +++ b/packages/nx-plugin/src/generators/app/versions/tailwind-dependencies.ts @@ -1,6 +1,16 @@ -import { V18_X_TAILWINDCSS, V18_X_TAILWINDCSS_VITE } from './nx_18_X/versions'; +import { + V18_X_POSTCSS, + V18_X_TAILWINDCSS, + V18_X_TAILWINDCSS_POSTCSS, + V18_X_TAILWINDCSS_VITE, +} from './nx_18_X/versions'; -const tailwindDependencyKeys = ['tailwindcss', '@tailwindcss/vite'] as const; +const tailwindDependencyKeys = [ + 'postcss', + 'tailwindcss', + '@tailwindcss/postcss', + '@tailwindcss/vite', +] as const; export type TailwindDependency = (typeof tailwindDependencyKeys)[number]; @@ -9,7 +19,9 @@ export const getTailwindDependencies = (): Record< string > => { return { + postcss: V18_X_POSTCSS, tailwindcss: V18_X_TAILWINDCSS, + '@tailwindcss/postcss': V18_X_TAILWINDCSS_POSTCSS, '@tailwindcss/vite': V18_X_TAILWINDCSS_VITE, }; }; diff --git a/packages/storybook-angular/README.md b/packages/storybook-angular/README.md index dcf5d519e..2929136ae 100644 --- a/packages/storybook-angular/README.md +++ b/packages/storybook-angular/README.md @@ -34,7 +34,9 @@ const config: StorybookConfig = { // other config, addons, etc. framework: { name: '@analogjs/storybook-angular', - options: {}, + options: { + hmr: true, + }, }, }; @@ -121,6 +123,8 @@ In your global stylesheet, import Tailwind with: Storybook does not automatically infer the Tailwind plugin from your app's `vite.config.ts`, so add it in `viteFinal` when your stories depend on Tailwind utilities. +Angular HMR is controlled with `framework.options.hmr`. `liveReload` is still accepted as a compatibility alias, but `hmr` is the preferred option. + ## Enabling Zoneless Change Detection To use zoneless change detection for the Storybook, add the `experimentalZoneless` flag to the `@analogjs/storybook-angular` builder options in the `angular.json`. From b9b60be76be6b068b4a9c63a7b0201dc7d2f8404 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 21:47:44 -0400 Subject: [PATCH 08/33] fix(router): preserve app route precedence in production --- packages/router/src/lib/route-builder.ts | 8 ++++---- packages/router/src/lib/routes.spec.ts | 23 ++++++++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/packages/router/src/lib/route-builder.ts b/packages/router/src/lib/route-builder.ts index 6e6da1d37..14ffeadd7 100644 --- a/packages/router/src/lib/route-builder.ts +++ b/packages/router/src/lib/route-builder.ts @@ -53,16 +53,16 @@ export function createRoutes( const rawSegment = rawSegments[level]; const ancestorRawSegments = rawSegments.slice(0, level); - if (import.meta.env.DEV) { - const existing = acc[level]?.[rawPath]; - if (existing?.filename && existing.filename !== filename) { + const existing = acc[level]?.[rawPath]; + if (existing?.filename && existing.filename !== filename) { + if (import.meta.env.DEV) { console.warn( `[Analog] Route files "${existing.filename}" and "${filename}" ` + `resolve to the same route path "${rawPath}". ` + `Only "${existing.filename}" will be used.`, ); - return acc; } + return acc; } return { diff --git a/packages/router/src/lib/routes.spec.ts b/packages/router/src/lib/routes.spec.ts index 8dbf386f3..20566072f 100644 --- a/packages/router/src/lib/routes.spec.ts +++ b/packages/router/src/lib/routes.spec.ts @@ -1,6 +1,6 @@ import { Route, UrlSegment } from '@angular/router'; import { of } from 'rxjs'; -import { expect, vi } from 'vitest'; +import { afterEach, beforeEach, expect, vi } from 'vitest'; import { ROUTE_JSON_LD_KEY } from './json-ld'; import { RouteExport, RouteMeta } from './models'; import { createRoutes } from './routes'; @@ -978,12 +978,19 @@ describe('routes', () => { describe('duplicate route precedence', () => { class AppRouteComponent {} class SharedRouteComponent {} + let warnSpy: ReturnType; - it('prefers app-local page routes over additional/shared page routes', async () => { - const spy = vi.spyOn(console, 'warn').mockImplementation(() => { + beforeEach(() => { + warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { /* noop */ }); + }); + + afterEach(() => { + warnSpy.mockRestore(); + }); + it('prefers app-local page routes over additional/shared page routes', async () => { const files: Files = { '/libs/shared/feature/src/pages/blog/[slug].page.ts': () => Promise.resolve({ default: SharedRouteComponent }), @@ -995,19 +1002,21 @@ describe('routes', () => { files, (_filename, fileLoader) => fileLoader as () => Promise, ); - const route = routes.find((r) => r.path === 'blog/:slug'); + const blogRoute = routes.find((r) => r.path === 'blog'); + const route = blogRoute?.children?.find( + (child) => child.path === ':slug', + ); + expect(blogRoute).toBeDefined(); expect(route).toBeDefined(); const loadedRoutes = (await route!.loadChildren?.()) as Route[]; expect(loadedRoutes[0].component).toBe(AppRouteComponent); - expect(spy).toHaveBeenCalledWith( + expect(warnSpy).toHaveBeenCalledWith( expect.stringContaining( 'Only "/src/app/pages/blog/[slug].page.ts" will be used.', ), ); - - spy.mockRestore(); }); }); From 09482a9ef48c8906afe9e90ca70ad9f9db449ea9 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 21:47:59 -0400 Subject: [PATCH 09/33] feat(platform): add dev-time route idiom diagnostics --- apps/docs-app/docs/guides/idiomatic.md | 96 +++++ apps/docs-app/sidebars.js | 141 +++---- .../src/lib/route-idiom-diagnostics.spec.ts | 155 +++++++ .../src/lib/route-idiom-diagnostics.ts | 384 ++++++++++++++++++ .../platform/src/lib/router-plugin.spec.ts | 34 +- packages/platform/src/lib/router-plugin.ts | 58 +++ 6 files changed, 791 insertions(+), 77 deletions(-) create mode 100644 apps/docs-app/docs/guides/idiomatic.md create mode 100644 packages/platform/src/lib/route-idiom-diagnostics.spec.ts create mode 100644 packages/platform/src/lib/route-idiom-diagnostics.ts diff --git a/apps/docs-app/docs/guides/idiomatic.md b/apps/docs-app/docs/guides/idiomatic.md new file mode 100644 index 000000000..5e02410c6 --- /dev/null +++ b/apps/docs-app/docs/guides/idiomatic.md @@ -0,0 +1,96 @@ +--- +title: Idiomatic Analog +--- + +# Idiomatic Analog + +Analog works best when route files clearly express whether they are pages, layouts, or redirects. The easiest way to stay in the happy path is to make each `src/app/pages/**/*.page.ts` file do one job well. + +## Prefer the canonical route shape + +- Default-export the page component from each `.page.ts` file. +- Keep route metadata in `export const routeMeta = { ... }` or `defineRouteMeta({ ... })`. +- Treat `routeMeta.redirectTo` pages as redirect-only modules. +- Keep JSON-LD in `routeMeta.jsonLd` instead of exporting legacy top-level `routeJsonLd` values. +- When a page file is acting as a layout shell, import `RouterOutlet` and render a ``. + +```ts +import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; + +export const routeMeta = { + title: 'Products', +}; + +@Component({ + imports: [RouterOutlet], + template: '', +}) +export default class ProductsPage {} +``` + +## Redirects should be explicit + +Redirect route files are clearer when they only export `routeMeta`. + +```ts +export const routeMeta = { + redirectTo: '/home', + pathMatch: 'full', +}; +``` + +Avoid exporting a default component from the same file. Analog ignores that component when `redirectTo` is present, which makes the module misleading during maintenance. + +Use absolute redirect targets. This is especially important for nested redirects such as `src/app/pages/cities/index.page.ts`. + +## Layouts should look like layouts + +If a file has child routes beneath a matching folder, treat it as a parent shell. + +```treeview +src/ +└── app/ + └── pages/ + ├── products.page.ts + └── products/ + ├── (list).page.ts + └── [id].page.ts +``` + +In this shape, `products.page.ts` should usually render a router outlet. If it does not, child routes exist structurally but have nowhere idiomatic to mount. + +## Selectors should be explicit outside route files + +Non-page Angular components should declare an explicit, unique selector. + +```ts +@Component({ + selector: 'app-product-card', + template: `
...
`, +}) +export class ProductCardComponent {} +``` + +Selectorless components render as `ng-component`, which makes SSR output, diagnostics, and collision debugging harder to interpret. Analog therefore treats selectorless non-page components as invalid during Vite builds, and the workspace lint rules enforce the same standard. + +Page and layout route files are the exception. Components in `src/app/pages/**` or `*.page.ts` files may omit `selector` when they are only used as route entry points. + +## New dev-time route diagnostics + +Analog now parses page route modules with `oxc-parser` during development and emits focused warnings when a route file drifts away from the documented shape. + +Current diagnostics: + +- `oxc-parse`: the route module cannot be parsed cleanly. +- `missing-default-export`: a `.page.ts` file is neither a redirect route nor a default-exported page component. +- `redirect-with-component`: a redirect route also exports a component. +- `relative-redirect`: `routeMeta.redirectTo` is relative instead of absolute. +- `legacy-route-jsonld-export`: the module exports top-level `routeJsonLd` instead of using `routeMeta.jsonLd`. +- `layout-without-router-outlet`: a likely layout shell does not reference `RouterOutlet` or ``. + +These checks are intentionally narrow. They are meant to reinforce Analog semantics during `serve`, not turn the framework into a style-policing linter. + +## Why Oxc + +The diagnostics use `oxc-parser` because it is fast enough to run during dev-time route discovery and precise enough to detect route-export patterns without booting a full TypeScript program. That keeps feedback fast while still being structural instead of regex-only. diff --git a/apps/docs-app/sidebars.js b/apps/docs-app/sidebars.js index 50947bae6..665af4156 100644 --- a/apps/docs-app/sidebars.js +++ b/apps/docs-app/sidebars.js @@ -17,266 +17,271 @@ const sidebars = { docsSidebar: [ // { type: 'autogenerated', dirName: '.' }, { - type: 'doc', id: 'introduction', label: 'Introduction', + type: 'doc', }, { - type: 'doc', id: 'getting-started', label: 'Getting Started', + type: 'doc', }, { - type: 'category', - label: 'Core Concepts', items: [ { - type: 'category', - label: 'Routing', items: [ { - type: 'doc', id: 'features/routing/overview', - label: 'Overview', key: 'routing-overview', + label: 'Overview', + type: 'doc', }, { - type: 'doc', id: 'features/routing/metadata', label: 'Route Metadata', + type: 'doc', }, { - type: 'doc', id: 'features/routing/content', label: 'Content Routes', + type: 'doc', }, { - type: 'doc', id: 'features/routing/middleware', label: 'Middleware', + type: 'doc', }, { - type: 'doc', id: 'features/routing/typed-routes', label: 'Typed Routes (Experimental)', + type: 'doc', }, ], + label: 'Routing', + type: 'category', }, { - type: 'category', - label: 'API Routes', items: [ { - type: 'doc', id: 'features/api/overview', - label: 'Overview', key: 'api-overview', + label: 'Overview', + type: 'doc', }, { - type: 'doc', id: 'features/api/websockets', label: 'Websockets', + type: 'doc', }, { - type: 'doc', id: 'features/api/og-image-generation', label: 'OG Image Generation', + type: 'doc', }, ], + label: 'API Routes', + type: 'category', }, { - type: 'category', - label: 'Data Fetching', items: [ { - type: 'doc', id: 'features/data-fetching/overview', - label: 'Overview', key: 'data-fetching-overview', + label: 'Overview', + type: 'doc', }, { - type: 'doc', id: 'features/data-fetching/server-side-data-fetching', label: 'Server-Side Data Fetching', + type: 'doc', }, { - type: 'doc', id: 'features/data-fetching/validation', label: 'Schema Validation', + type: 'doc', }, ], + label: 'Data Fetching', + type: 'category', }, { - type: 'category', - label: 'Static Site Generation', items: [ { - type: 'doc', id: 'features/server/static-site-generation', - label: 'Overview', key: 'static-site-generation-overview', + label: 'Overview', + type: 'doc', }, ], + label: 'Static Site Generation', + type: 'category', }, { - type: 'category', - label: 'Server Side Rendering', items: [ { - type: 'doc', id: 'features/server/server-side-rendering', - label: 'Overview', key: 'server-side-rendering-overview', + label: 'Overview', + type: 'doc', }, ], + label: 'Server Side Rendering', + type: 'category', }, { - type: 'doc', id: 'guides/forms', label: 'Form Actions', + type: 'doc', }, { - type: 'category', - label: 'Code Generation', items: [ { - type: 'doc', id: 'features/generation/code-generation', - label: 'Overview', key: 'code-generation-overview', + label: 'Overview', + type: 'doc', }, ], + label: 'Code Generation', + type: 'category', }, ], + label: 'Core Concepts', + type: 'category', }, { - type: 'category', - label: 'Deployment', items: [ { - type: 'doc', id: 'features/deployment/overview', - label: 'Overview', key: 'deployment-overview', + label: 'Overview', + type: 'doc', }, { - type: 'doc', id: 'features/deployment/providers', label: 'Providers', + type: 'doc', }, ], + label: 'Deployment', + type: 'category', }, { - type: 'category', - label: 'Testing w/Vitest', items: [ { - type: 'doc', id: 'features/testing/overview', - label: 'Overview', key: 'testing-overview', + label: 'Overview', + type: 'doc', }, { - type: 'doc', id: 'features/testing/vitest', label: 'Setting Up Vitest', + type: 'doc', }, ], + label: 'Testing w/Vitest', + type: 'category', }, { - type: 'category', - label: 'Updating', items: [ { - type: 'doc', id: 'features/updating/overview', - label: 'Overview', key: 'updating-overview', + label: 'Overview', + type: 'doc', }, ], + label: 'Updating', + type: 'category', }, { - type: 'category', - label: 'Guides', items: [ { - type: 'doc', id: 'guides/migrating', label: 'Migrating an Angular app to Analog', + type: 'doc', }, { - type: 'doc', id: 'guides/libraries', label: 'Building an Angular library', + type: 'doc', }, { - type: 'doc', id: 'guides/compatibility', label: 'Version Compatibilty', + type: 'doc', }, { + id: 'guides/idiomatic', + label: 'Idiomatic Analog', type: 'doc', + }, + { id: 'guides/debugging', label: 'Debugging', + type: 'doc', }, ], + label: 'Guides', + type: 'category', }, { - type: 'category', - label: 'Integrations', items: [ { - type: 'doc', id: 'integrations/nx/index', label: 'Nx', + type: 'doc', }, { - type: 'doc', id: 'packages/astro-angular/overview', label: 'Astro', + type: 'doc', }, { - type: 'doc', id: 'packages/vite-plugin-angular/overview', label: 'Vite', + type: 'doc', }, { - type: 'doc', id: 'packages/vite-plugin-nitro/overview', label: 'Nitro', + type: 'doc', }, { - type: 'doc', id: 'integrations/angular-material/index', label: 'Angular Material', + type: 'doc', }, { - type: 'doc', id: 'integrations/ionic/index', label: 'Ionic Framework', + type: 'doc', }, { - type: 'doc', id: 'integrations/storybook/index', label: 'Storybook', + type: 'doc', }, ], + label: 'Integrations', + type: 'category', }, { - type: 'doc', id: 'contributors', label: 'Contributors', + type: 'doc', }, { - type: 'doc', id: 'support', label: 'Support', + type: 'doc', }, ], // But you can create a sidebar manually /* - docsSidebar: [ + DocsSidebar: [ { type: 'category', label: 'Docs', diff --git a/packages/platform/src/lib/route-idiom-diagnostics.spec.ts b/packages/platform/src/lib/route-idiom-diagnostics.spec.ts new file mode 100644 index 000000000..01c01e250 --- /dev/null +++ b/packages/platform/src/lib/route-idiom-diagnostics.spec.ts @@ -0,0 +1,155 @@ +import { describe, expect, it } from 'vitest'; + +import { + analyzeAnalogRouteFile, + formatAnalogRouteIdiomDiagnostic, +} from './route-idiom-diagnostics.js'; + +describe('route-idiom-diagnostics', () => { + it('reports OXC parse errors with codeframes', () => { + const diagnostics = analyzeAnalogRouteFile({ + filename: '/workspace/src/app/pages/broken.page.ts', + code: 'const =', + }); + + expect(diagnostics).toHaveLength(1); + expect(diagnostics[0]).toMatchObject({ + code: 'oxc-parse', + severity: 'error', + }); + expect(diagnostics[0].details).toContain('Unexpected token'); + }); + + it('warns when a page route has no default export', () => { + const diagnostics = analyzeAnalogRouteFile({ + filename: '/workspace/src/app/pages/about.page.ts', + code: "export const title = 'About';", + }); + + expect(diagnostics.map((diagnostic) => diagnostic.code)).toContain( + 'missing-default-export', + ); + }); + + it('does not warn about missing default exports for redirect-only routes', () => { + const diagnostics = analyzeAnalogRouteFile({ + filename: '/workspace/src/app/pages/index.page.ts', + code: [ + 'export const routeMeta = {', + " redirectTo: '/home',", + " pathMatch: 'full',", + '};', + ].join('\n'), + }); + + expect(diagnostics.map((diagnostic) => diagnostic.code)).not.toContain( + 'missing-default-export', + ); + }); + + it('warns when redirect routes also default-export a component', () => { + const diagnostics = analyzeAnalogRouteFile({ + filename: '/workspace/src/app/pages/index.page.ts', + code: [ + 'export const routeMeta = {', + " redirectTo: '/home',", + " pathMatch: 'full',", + '};', + '', + 'export default class HomeRedirectPage {}', + ].join('\n'), + }); + + expect(diagnostics.map((diagnostic) => diagnostic.code)).toContain( + 'redirect-with-component', + ); + }); + + it('warns on relative redirect targets', () => { + const diagnostics = analyzeAnalogRouteFile({ + filename: '/workspace/src/app/pages/cities/index.page.ts', + code: [ + 'export const routeMeta = {', + " redirectTo: 'new-york',", + " pathMatch: 'full',", + '};', + ].join('\n'), + }); + + expect(diagnostics.map((diagnostic) => diagnostic.code)).toContain( + 'relative-redirect', + ); + }); + + it('warns on the legacy routeJsonLd export', () => { + const diagnostics = analyzeAnalogRouteFile({ + filename: '/workspace/src/app/pages/article.page.ts', + code: [ + 'export const routeJsonLd = {', + " '@context': 'https://schema.org',", + " '@type': 'Article',", + '};', + '', + 'export default class ArticlePage {}', + ].join('\n'), + }); + + expect(diagnostics.map((diagnostic) => diagnostic.code)).toContain( + 'legacy-route-jsonld-export', + ); + }); + + it('warns when a layout-looking route does not reference RouterOutlet', () => { + const diagnostics = analyzeAnalogRouteFile({ + filename: '/workspace/src/app/pages/products.page.ts', + code: 'export default class ProductsPage {}', + routeFiles: [ + '/workspace/src/app/pages/products.page.ts', + '/workspace/src/app/pages/products/[id].page.ts', + ], + }); + + expect(diagnostics.map((diagnostic) => diagnostic.code)).toContain( + 'layout-without-router-outlet', + ); + }); + + it('does not warn when a layout-looking route references RouterOutlet', () => { + const diagnostics = analyzeAnalogRouteFile({ + filename: '/workspace/src/app/pages/products.page.ts', + code: [ + "import { Component } from '@angular/core';", + "import { RouterOutlet } from '@angular/router';", + '', + '@Component({', + ' imports: [RouterOutlet],', + " template: '',", + '})', + 'export default class ProductsPage {}', + ].join('\n'), + routeFiles: [ + '/workspace/src/app/pages/products.page.ts', + '/workspace/src/app/pages/products/[id].page.ts', + ], + }); + + expect(diagnostics.map((diagnostic) => diagnostic.code)).not.toContain( + 'layout-without-router-outlet', + ); + }); + + it('formats diagnostics with workspace-relative file paths', () => { + const message = formatAnalogRouteIdiomDiagnostic( + { + code: 'missing-default-export', + severity: 'warning', + message: 'Missing default export.', + }, + '/workspace/src/app/pages/about.page.ts', + '/workspace', + ); + + expect(message).toContain('/src/app/pages/about.page.ts'); + expect(message).toContain('WARNING: Missing default export.'); + }); +}); diff --git a/packages/platform/src/lib/route-idiom-diagnostics.ts b/packages/platform/src/lib/route-idiom-diagnostics.ts new file mode 100644 index 000000000..333887a76 --- /dev/null +++ b/packages/platform/src/lib/route-idiom-diagnostics.ts @@ -0,0 +1,384 @@ +import { parseSync, type OxcError, type Severity } from 'oxc-parser'; +import { relative } from 'node:path'; +import { normalizePath } from 'vite'; + +export interface AnalogRouteIdiomDiagnostic { + code: string; + severity: 'error' | 'warning'; + message: string; + details?: string; +} + +export interface AnalyzeAnalogRouteFileOptions { + filename: string; + code: string; + routeFiles?: string[]; +} + +const PAGE_FILE_RE = /\.page\.ts$/; +const ROUTER_OUTLET_RE = /\bRouterOutlet\b|)/; + +export function analyzeAnalogRouteFile( + options: AnalyzeAnalogRouteFileOptions, +): AnalogRouteIdiomDiagnostic[] { + const { filename, code, routeFiles = [] } = options; + const parseResult = parseSync(filename, code, { + lang: 'ts', + sourceType: 'module', + range: true, + showSemanticErrors: true, + }); + + const parseDiagnostics = parseResult.errors.map((error) => + toParseDiagnostic(error), + ); + + if (parseDiagnostics.some((diagnostic) => diagnostic.severity === 'error')) { + return parseDiagnostics; + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const program: any = parseResult.program; + const exportedBindings = collectExportedBindings(program); + const routeMetaBindingName = exportedBindings.routeMeta; + const routeJsonLdBindingName = exportedBindings.routeJsonLd; + const diagnostics = [...parseDiagnostics]; + + const routeMetaInfo = routeMetaBindingName + ? getRouteMetaInfo(program, routeMetaBindingName) + : null; + + if (!exportedBindings.hasDefaultExport && !routeMetaInfo?.hasRedirect) { + diagnostics.push({ + code: 'missing-default-export', + severity: 'warning', + message: + 'Route files should default-export the page component, unless they are redirect-only routes.', + details: + 'Add `export default class ...` or define `routeMeta.redirectTo` for a redirect route.', + }); + } + + if (exportedBindings.hasDefaultExport && routeMetaInfo?.hasRedirect) { + diagnostics.push({ + code: 'redirect-with-component', + severity: 'warning', + message: 'Redirect routes should not also export a page component.', + details: + 'Analog ignores the default export when `routeMeta.redirectTo` is present. Remove the component export or remove the redirect.', + }); + } + + if ( + routeMetaInfo?.hasRedirect && + routeMetaInfo.redirectTo && + !routeMetaInfo.redirectTo.startsWith('/') + ) { + diagnostics.push({ + code: 'relative-redirect', + severity: 'warning', + message: '`routeMeta.redirectTo` should use an absolute path.', + details: + 'Nested redirects are documented to use absolute targets such as `/cities/new-york`.', + }); + } + + if (routeJsonLdBindingName) { + diagnostics.push({ + code: 'legacy-route-jsonld-export', + severity: 'warning', + message: + 'Prefer `routeMeta.jsonLd` over the legacy top-level `routeJsonLd` export.', + details: + 'Keeping JSON-LD inside `routeMeta` makes the route module easier to read and matches the current docs.', + }); + } + + if ( + isLikelyLayoutRoute(filename, routeFiles) && + !ROUTER_OUTLET_RE.test(code) + ) { + diagnostics.push({ + code: 'layout-without-router-outlet', + severity: 'warning', + message: + 'This route file looks like a layout shell, but it does not reference `RouterOutlet` or ``.', + details: + 'Parent layout pages usually import `RouterOutlet` and render an outlet so child routes have somewhere to mount.', + }); + } + + return diagnostics; +} + +export function formatAnalogRouteIdiomDiagnostic( + diagnostic: AnalogRouteIdiomDiagnostic, + filename: string, + workspaceRoot: string, +): string { + const displayName = toDisplayPath(filename, workspaceRoot); + const header = `[Analog] ${displayName} (${diagnostic.code})`; + const severity = diagnostic.severity.toUpperCase(); + + if (diagnostic.details) { + return `${header}\n${severity}: ${diagnostic.message}\n${diagnostic.details}`; + } + + return `${header}\n${severity}: ${diagnostic.message}`; +} + +function toDisplayPath(filename: string, workspaceRoot: string): string { + const normalizedFilename = normalizePath(filename); + const normalizedRoot = normalizePath(workspaceRoot); + const relativePath = normalizePath( + relative(normalizedRoot, normalizedFilename), + ); + + if (relativePath && !relativePath.startsWith('..')) { + return `/${relativePath}`; + } + + return normalizedFilename; +} + +function toParseDiagnostic(error: OxcError): AnalogRouteIdiomDiagnostic { + return { + code: 'oxc-parse', + severity: error.severity === severityError ? 'error' : 'warning', + message: error.message, + details: error.codeframe ?? error.helpMessage ?? undefined, + }; +} + +const severityError: Severity = 'Error'; + +function isLikelyLayoutRoute(filename: string, routeFiles: string[]): boolean { + if (!PAGE_FILE_RE.test(filename)) { + return false; + } + + const routeStem = filename.replace(PAGE_FILE_RE, ''); + return routeFiles.some( + (routeFile) => + routeFile !== filename && routeFile.startsWith(`${routeStem}/`), + ); +} + +function getRouteMetaInfo( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + program: any, + bindingName: string, +): { + hasRedirect: boolean; + redirectTo?: string; +} | null { + const initializer = getExportedBindingInitializer(program, bindingName); + const routeMetaNode = unwrapRouteMetaObject(initializer); + + if (!routeMetaNode) { + return null; + } + + let redirectTo: string | undefined; + + for (const property of routeMetaNode.properties ?? []) { + if (property?.type !== 'Property') { + continue; + } + + const keyName = getPropertyName(property.key); + if (keyName !== 'redirectTo') { + continue; + } + + redirectTo = getStringValue(property.value); + } + + return { + hasRedirect: typeof redirectTo === 'string' && redirectTo.length > 0, + redirectTo, + }; +} + +function unwrapRouteMetaObject( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + initializer: any, + // eslint-disable-next-line @typescript-eslint/no-explicit-any +): any | null { + if (!initializer) { + return null; + } + + if (initializer.type === 'ObjectExpression') { + return initializer; + } + + if ( + initializer.type === 'CallExpression' && + initializer.callee?.type === 'Identifier' && + initializer.callee.name === 'defineRouteMeta' + ) { + const firstArgument = initializer.arguments?.[0]; + return firstArgument?.type === 'ObjectExpression' ? firstArgument : null; + } + + return null; +} + +function getExportedBindingInitializer( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + program: any, + bindingName: string, + // eslint-disable-next-line @typescript-eslint/no-explicit-any +): any | undefined { + for (const statement of program.body ?? []) { + if (statement?.type === 'VariableDeclaration') { + const initializer = getVariableInitializer(statement, bindingName); + if (initializer) { + return initializer; + } + continue; + } + + if ( + statement?.type === 'ExportNamedDeclaration' && + statement.declaration?.type === 'VariableDeclaration' + ) { + const initializer = getVariableInitializer( + statement.declaration, + bindingName, + ); + if (initializer) { + return initializer; + } + } + } + + return undefined; +} + +function getVariableInitializer( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + declaration: any, + bindingName: string, + // eslint-disable-next-line @typescript-eslint/no-explicit-any +): any | undefined { + for (const declarator of declaration.declarations ?? []) { + if ( + declarator.id?.type === 'Identifier' && + declarator.id.name === bindingName + ) { + return declarator.init; + } + } + + return undefined; +} + +function collectExportedBindings( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + program: any, +): { + hasDefaultExport: boolean; + routeMeta?: string; + routeJsonLd?: string; +} { + let hasDefaultExport = false; + let routeMeta: string | undefined; + let routeJsonLd: string | undefined; + + for (const statement of program.body ?? []) { + if (statement?.type === 'ExportDefaultDeclaration') { + hasDefaultExport = true; + continue; + } + + if (statement?.type !== 'ExportNamedDeclaration') { + continue; + } + + const declaration = statement.declaration; + if (declaration?.type === 'VariableDeclaration') { + for (const declarator of declaration.declarations ?? []) { + if (declarator.id?.type !== 'Identifier') { + continue; + } + + if (declarator.id.name === 'routeMeta') { + routeMeta = 'routeMeta'; + } + + if (declarator.id.name === 'routeJsonLd') { + routeJsonLd = 'routeJsonLd'; + } + } + } + + for (const specifier of statement.specifiers ?? []) { + if ( + specifier?.type !== 'ExportSpecifier' || + specifier.local?.type !== 'Identifier' + ) { + continue; + } + + if (specifier.exported?.type !== 'Identifier') { + continue; + } + + if (specifier.exported.name === 'routeMeta') { + routeMeta = specifier.local.name; + } + + if (specifier.exported.name === 'routeJsonLd') { + routeJsonLd = specifier.local.name; + } + } + } + + return { + hasDefaultExport, + routeMeta, + routeJsonLd, + }; +} + +function getPropertyName( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + node: any, +): string | undefined { + if (node?.type === 'Identifier') { + return node.name; + } + + if ( + (node?.type === 'Literal' || node?.type === 'StringLiteral') && + typeof node.value === 'string' + ) { + return node.value; + } + + return undefined; +} + +function getStringValue( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + node: any, +): string | undefined { + if ( + (node?.type === 'Literal' || node?.type === 'StringLiteral') && + typeof node.value === 'string' + ) { + return node.value; + } + + if ( + node?.type === 'TemplateLiteral' && + node.expressions?.length === 0 && + node.quasis?.length === 1 + ) { + return node.quasis[0].value.cooked ?? node.quasis[0].value.raw; + } + + return undefined; +} diff --git a/packages/platform/src/lib/router-plugin.spec.ts b/packages/platform/src/lib/router-plugin.spec.ts index 84887304d..5588527f0 100644 --- a/packages/platform/src/lib/router-plugin.spec.ts +++ b/packages/platform/src/lib/router-plugin.spec.ts @@ -381,12 +381,20 @@ describe('routerPlugin', () => { // so ANALOG_CONTENT_ROUTE_FILES stayed empty — silently dropping all .md // page routes (/about, /contact, etc.) and causing NG04002 during prerender. it('transforms ANALOG_CONTENT_ROUTE_FILES in an isolated content module (no ANALOG_ROUTE_FILES present)', () => { - vi.mocked(globSync) - .mockReturnValueOnce([]) // page files — none - .mockReturnValueOnce([ - `${appRoot}/src/app/pages/about.md`, - `${appRoot}/src/content/hello.md`, - ]); // content files + vi.mocked(globSync).mockImplementation((patterns) => { + const joinedPatterns = Array.isArray(patterns) + ? patterns.join(' ') + : String(patterns); + + if (joinedPatterns.includes('**/*.md')) { + return [ + `${appRoot}/src/app/pages/about.md`, + `${appRoot}/src/content/hello.md`, + ]; + } + + return []; + }); const transform = getTransformPlugin('analog-glob-routes'); @@ -405,9 +413,17 @@ describe('routerPlugin', () => { }); it('transforms ANALOG_ROUTE_FILES in an isolated page module (no ANALOG_CONTENT_ROUTE_FILES present)', () => { - vi.mocked(globSync) - .mockReturnValueOnce([`${appRoot}/src/app/pages/home.page.ts`]) - .mockReturnValueOnce([]); // content files — none + vi.mocked(globSync).mockImplementation((patterns) => { + const joinedPatterns = Array.isArray(patterns) + ? patterns.join(' ') + : String(patterns); + + if (joinedPatterns.includes('**/*.page.ts')) { + return [`${appRoot}/src/app/pages/home.page.ts`]; + } + + return []; + }); const transform = getTransformPlugin('analog-glob-routes'); diff --git a/packages/platform/src/lib/router-plugin.ts b/packages/platform/src/lib/router-plugin.ts index 3101c9d4b..3eda2ebc9 100644 --- a/packages/platform/src/lib/router-plugin.ts +++ b/packages/platform/src/lib/router-plugin.ts @@ -1,8 +1,13 @@ import { normalizePath, Plugin, UserConfig, ViteDevServer } from 'vite'; import { globSync } from 'tinyglobby'; +import { readFileSync } from 'node:fs'; import { isAbsolute, relative, resolve } from 'node:path'; import { Options } from './options.js'; +import { + analyzeAnalogRouteFile, + formatAnalogRouteIdiomDiagnostic, +} from './route-idiom-diagnostics.js'; /** * Router plugin that handles route file discovery and hot module replacement. @@ -77,6 +82,7 @@ export function routerPlugin(options?: Options): Plugin[] { let routeFilesCache: string[] | undefined; let contentRouteFilesCache: string[] | undefined; let endpointFilesCache: string[] | undefined; + const routeDiagnosticCache = new Map(); const isRouteLikeFile = (path: string) => { // Watcher paths from chokidar are already absolute — `normalizePath` // (forward-slash only) is sufficient; `resolve()` would be a no-op. @@ -128,6 +134,42 @@ export function routerPlugin(options?: Options): Plugin[] { contentRouteFilesCache = undefined; endpointFilesCache = undefined; }; + const reportRouteDiagnostics = (path: string) => { + if (!path.endsWith('.page.ts')) { + return; + } + + try { + const code = readFileSync(path, 'utf-8'); + const routeFiles = discoverRouteFiles().filter((file) => + file.endsWith('.page.ts'), + ); + const diagnostics = analyzeAnalogRouteFile({ + filename: path, + code, + routeFiles, + }); + + const rendered = diagnostics.map((diagnostic) => + formatAnalogRouteIdiomDiagnostic(diagnostic, path, workspaceRoot), + ); + const fingerprint = rendered.join('\n\n'); + + if (!fingerprint) { + routeDiagnosticCache.delete(path); + return; + } + + if (routeDiagnosticCache.get(path) === fingerprint) { + return; + } + + routeDiagnosticCache.set(path, fingerprint); + rendered.forEach((message) => console.warn(message)); + } catch { + routeDiagnosticCache.delete(path); + } + }; const getModuleKey = (module: string) => { // Before config sets `root`, fall back to workspace-relative keys. if (!root) { @@ -187,6 +229,12 @@ export function routerPlugin(options?: Options): Plugin[] { invalidateDiscoveryCaches(); } + if (event === 'unlink') { + routeDiagnosticCache.delete(path); + } else { + reportRouteDiagnostics(path); + } + invalidateFileModules(server, path); // For an in-place edit we only need module invalidation. Keeping the @@ -207,6 +255,12 @@ export function routerPlugin(options?: Options): Plugin[] { }); }); + server.ws.send('analog:debug-full-reload', { + plugin: 'platform:router-plugin', + reason: 'route-graph-shape-changed', + event, + path, + }); server.ws.send({ type: 'full-reload', }); @@ -224,6 +278,10 @@ export function routerPlugin(options?: Options): Plugin[] { for (const dir of [...additionalPagesDirs, ...additionalContentDirs]) { server.watcher.add(dir); } + + discoverRouteFiles() + .filter((file) => file.endsWith('.page.ts')) + .forEach((file) => reportRouteDiagnostics(file)); }, }, { From d8742e39fc2af09215bcfc500f99922185f7fe68 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 21:48:17 -0400 Subject: [PATCH 10/33] feat(vite-plugin-angular): improve component stylesheet hmr --- apps/analog-app/vite.config.ts | 2 +- apps/docs-app/docs/guides/migrating.md | 2 +- .../integrations/angular-material/index.md | 2 +- apps/tailwind-debug-app-e2e/package.json | 4 + .../playwright.config.ts | 28 + apps/tailwind-debug-app-e2e/project.json | 16 + .../tests/component-css-hmr.spec.ts | 86 + apps/tailwind-debug-app/eslint.config.mjs | 34 + apps/tailwind-debug-app/index.html | 15 + apps/tailwind-debug-app/package.json | 13 + apps/tailwind-debug-app/postcss.config.mjs | 5 + apps/tailwind-debug-app/project.json | 56 + apps/tailwind-debug-app/public/.gitkeep | 0 apps/tailwind-debug-app/public/analog.svg | 1 + apps/tailwind-debug-app/public/favicon.ico | Bin 0 -> 1642 bytes .../src/app/app.component.spec.ts | 23 + .../src/app/app.component.ts | 9 + .../src/app/app.config.server.ts | 10 + apps/tailwind-debug-app/src/app/app.config.ts | 6 + .../src/app/debug/debug-stream.service.ts | 205 +++ .../src/app/debug/debug-stream.shared.ts | 78 + .../src/app/debug/hmr-diagnostics.spec.ts | 57 + .../src/app/debug/hmr-diagnostics.ts | 192 +++ .../src/app/pages/(home).page.ts | 10 + .../src/app/pages/analog-welcome.component.ts | 40 + .../probes/debug-stream-panel.component.ts | 550 +++++++ .../src/app/probes/style-probe.component.css | 29 + .../app/probes/style-probe.component.spec.ts | 34 + .../src/app/probes/style-probe.component.ts | 39 + .../probes/tailwind-debug-shell.component.ts | 94 ++ apps/tailwind-debug-app/src/main.server.ts | 7 + apps/tailwind-debug-app/src/main.ts | 15 + apps/tailwind-debug-app/src/routeTree.gen.ts | 73 + .../src/server/routes/api/v1/hello.ts | 3 + .../src/server/routes/api/ws/debug-stream.ts | 234 +++ apps/tailwind-debug-app/src/styles.css | 17 + apps/tailwind-debug-app/src/test-setup.ts | 6 + apps/tailwind-debug-app/src/vite-env.d.ts | 1 + apps/tailwind-debug-app/tsconfig.app.json | 14 + apps/tailwind-debug-app/tsconfig.editor.json | 7 + apps/tailwind-debug-app/tsconfig.json | 34 + apps/tailwind-debug-app/tsconfig.spec.json | 9 + apps/tailwind-debug-app/vite.config.ts | 129 ++ .../2026-04-04-reset-investigation/README.md | 41 + .../src/lib/angular-jit-plugin.ts | 8 +- .../src/lib/angular-vite-plugin.spec.ts | 659 +++++++- .../src/lib/angular-vite-plugin.ts | 1442 ++++++++++++++++- .../src/lib/component-resolvers.spec.ts | 95 +- .../src/lib/component-resolvers.ts | 108 +- .../src/lib/stylesheet-registry.spec.ts | 108 +- .../src/lib/stylesheet-registry.ts | 135 +- .../src/lib/utils/debug.ts | 5 - .../src/lib/utils/devkit.ts | 8 +- .../src/lib/vite-plugin-nitro.spec.ts | 2 +- .../src/lib/vite-plugin-nitro.ts | 6 +- 55 files changed, 4726 insertions(+), 80 deletions(-) create mode 100644 apps/tailwind-debug-app-e2e/package.json create mode 100644 apps/tailwind-debug-app-e2e/playwright.config.ts create mode 100644 apps/tailwind-debug-app-e2e/project.json create mode 100644 apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts create mode 100644 apps/tailwind-debug-app/eslint.config.mjs create mode 100644 apps/tailwind-debug-app/index.html create mode 100644 apps/tailwind-debug-app/package.json create mode 100644 apps/tailwind-debug-app/postcss.config.mjs create mode 100644 apps/tailwind-debug-app/project.json create mode 100644 apps/tailwind-debug-app/public/.gitkeep create mode 100644 apps/tailwind-debug-app/public/analog.svg create mode 100644 apps/tailwind-debug-app/public/favicon.ico create mode 100644 apps/tailwind-debug-app/src/app/app.component.spec.ts create mode 100644 apps/tailwind-debug-app/src/app/app.component.ts create mode 100644 apps/tailwind-debug-app/src/app/app.config.server.ts create mode 100644 apps/tailwind-debug-app/src/app/app.config.ts create mode 100644 apps/tailwind-debug-app/src/app/debug/debug-stream.service.ts create mode 100644 apps/tailwind-debug-app/src/app/debug/debug-stream.shared.ts create mode 100644 apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.spec.ts create mode 100644 apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.ts create mode 100644 apps/tailwind-debug-app/src/app/pages/(home).page.ts create mode 100644 apps/tailwind-debug-app/src/app/pages/analog-welcome.component.ts create mode 100644 apps/tailwind-debug-app/src/app/probes/debug-stream-panel.component.ts create mode 100644 apps/tailwind-debug-app/src/app/probes/style-probe.component.css create mode 100644 apps/tailwind-debug-app/src/app/probes/style-probe.component.spec.ts create mode 100644 apps/tailwind-debug-app/src/app/probes/style-probe.component.ts create mode 100644 apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.ts create mode 100644 apps/tailwind-debug-app/src/main.server.ts create mode 100644 apps/tailwind-debug-app/src/main.ts create mode 100644 apps/tailwind-debug-app/src/routeTree.gen.ts create mode 100644 apps/tailwind-debug-app/src/server/routes/api/v1/hello.ts create mode 100644 apps/tailwind-debug-app/src/server/routes/api/ws/debug-stream.ts create mode 100644 apps/tailwind-debug-app/src/styles.css create mode 100644 apps/tailwind-debug-app/src/test-setup.ts create mode 100644 apps/tailwind-debug-app/src/vite-env.d.ts create mode 100644 apps/tailwind-debug-app/tsconfig.app.json create mode 100644 apps/tailwind-debug-app/tsconfig.editor.json create mode 100644 apps/tailwind-debug-app/tsconfig.json create mode 100644 apps/tailwind-debug-app/tsconfig.spec.json create mode 100644 apps/tailwind-debug-app/vite.config.ts create mode 100644 changes/2026-04-04-reset-investigation/README.md diff --git a/apps/analog-app/vite.config.ts b/apps/analog-app/vite.config.ts index 4739b4695..eb0f14589 100644 --- a/apps/analog-app/vite.config.ts +++ b/apps/analog-app/vite.config.ts @@ -75,7 +75,7 @@ export default defineConfig(async ({ mode }) => { vite: { inlineStylesExtension: 'scss', }, - liveReload: true, + hmr: true, experimental: { useAngularCompilationAPI: true, typedRouter: true, diff --git a/apps/docs-app/docs/guides/migrating.md b/apps/docs-app/docs/guides/migrating.md index 95ce225d7..6c343b332 100644 --- a/apps/docs-app/docs/guides/migrating.md +++ b/apps/docs-app/docs/guides/migrating.md @@ -216,7 +216,7 @@ export default defineConfig(() => ({ hmr: true, vite: { tailwindCss: { - rootStylesheet: resolve(__dirname, 'src/styles.css'), + rootStylesheet: resolve(import.meta.dirname, 'src/styles.css'), }, }, }), diff --git a/apps/docs-app/docs/integrations/angular-material/index.md b/apps/docs-app/docs/integrations/angular-material/index.md index 595943501..7a6eb5905 100644 --- a/apps/docs-app/docs/integrations/angular-material/index.md +++ b/apps/docs-app/docs/integrations/angular-material/index.md @@ -142,7 +142,7 @@ If you use Tailwind CSS, add the Vite plugin to make it work correctly with Angu 1. **Install the Tailwind Vite plugin:** ```shell -npm install @tailwindcss/vite +npm install -D tailwindcss @tailwindcss/vite postcss @tailwindcss/postcss ``` 2. **Add the plugin to your `vite.config.ts`:** diff --git a/apps/tailwind-debug-app-e2e/package.json b/apps/tailwind-debug-app-e2e/package.json new file mode 100644 index 000000000..51844b176 --- /dev/null +++ b/apps/tailwind-debug-app-e2e/package.json @@ -0,0 +1,4 @@ +{ + "name": "tailwind-debug-app-e2e", + "private": true +} diff --git a/apps/tailwind-debug-app-e2e/playwright.config.ts b/apps/tailwind-debug-app-e2e/playwright.config.ts new file mode 100644 index 000000000..161dbf953 --- /dev/null +++ b/apps/tailwind-debug-app-e2e/playwright.config.ts @@ -0,0 +1,28 @@ +import { defineConfig, devices } from '@playwright/test'; + +export default defineConfig({ + testDir: './tests', + fullyParallel: false, + workers: 1, + forbidOnly: !!process.env['CI'], + retries: process.env['CI'] ? 2 : 0, + reporter: 'html', + outputDir: '../../dist/.playwright/apps/tailwind-debug-app-e2e/output', + use: { + baseURL: 'http://localhost:43040', + trace: 'on-first-retry', + }, + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + ], + webServer: { + command: 'pnpm exec vite --config apps/tailwind-debug-app/vite.config.ts', + url: 'http://localhost:43040', + reuseExistingServer: !process.env['CI'], + timeout: 120_000, + cwd: '../..', + }, +}); diff --git a/apps/tailwind-debug-app-e2e/project.json b/apps/tailwind-debug-app-e2e/project.json new file mode 100644 index 000000000..641ae35a4 --- /dev/null +++ b/apps/tailwind-debug-app-e2e/project.json @@ -0,0 +1,16 @@ +{ + "name": "tailwind-debug-app-e2e", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/tailwind-debug-app-e2e/tests", + "projectType": "application", + "tags": [], + "targets": { + "e2e": { + "executor": "nx:run-commands", + "options": { + "cwd": "apps/tailwind-debug-app-e2e", + "command": "playwright test" + } + } + } +} diff --git a/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts b/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts new file mode 100644 index 000000000..df6f34ce7 --- /dev/null +++ b/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts @@ -0,0 +1,86 @@ +import { expect, test } from '@playwright/test'; +import { readFileSync, writeFileSync } from 'node:fs'; +import { join } from 'node:path'; + +const WORKSPACE_ROOT = join(process.cwd(), '../..'); +const STYLE_PROBE_CSS_PATH = join( + WORKSPACE_ROOT, + 'apps/tailwind-debug-app/src/app/probes/style-probe.component.css', +); +const WS_LOG_PATH = join( + WORKSPACE_ROOT, + 'tmp/debug/tailwind-debug-app.vite-ws.log', +); +const HMR_LOG_PATH = join( + WORKSPACE_ROOT, + 'tmp/debug/tailwind-debug-app.vite-hmr.log', +); + +const ORIGINAL_CSS = readFileSync(STYLE_PROBE_CSS_PATH, 'utf8'); +const BLUE_CLASS = 'tdbg:bg-blue-500'; +const RED_CLASS = 'tdbg:bg-red-500'; + +function replaceProbeColor(className: string) { + const nextCss = ORIGINAL_CSS.replace(BLUE_CLASS, className).replace( + RED_CLASS, + className, + ); + writeFileSync(STYLE_PROBE_CSS_PATH, nextCss, 'utf8'); +} + +function truncateDebugLogs() { + writeFileSync(WS_LOG_PATH, '', 'utf8'); + writeFileSync(HMR_LOG_PATH, '', 'utf8'); +} + +test.beforeEach(() => { + replaceProbeColor(BLUE_CLASS); + truncateDebugLogs(); +}); + +test.afterAll(() => { + replaceProbeColor(BLUE_CLASS); +}); + +test('updates the component stylesheet without a full reload', async ({ + page, +}) => { + await page.goto('/'); + await expect(page.getByTestId('probe-card')).toBeVisible(); + + await page.getByTestId('probe-counter').click(); + await expect(page.getByTestId('probe-counter')).toContainText('Clicks 1'); + + const initialBootCount = await page.evaluate( + () => window.__TAILWIND_DEBUG__?.bootCount, + ); + + truncateDebugLogs(); + replaceProbeColor(RED_CLASS); + + await expect + .poll( + async () => + page.getByTestId('probe-card').evaluate((element) => { + return window.getComputedStyle(element).backgroundColor; + }), + { timeout: 30_000 }, + ) + .toBe('rgb(239, 68, 68)'); + + await expect(page.getByTestId('probe-counter')).toContainText('Clicks 1'); + + await expect + .poll( + async () => page.evaluate(() => window.__TAILWIND_DEBUG__?.bootCount), + { timeout: 10_000 }, + ) + .toBe(initialBootCount); + + const wsLog = readFileSync(WS_LOG_PATH, 'utf8'); + const hmrLog = readFileSync(HMR_LOG_PATH, 'utf8'); + + expect(wsLog).toContain('"type":"css-update"'); + expect(wsLog).not.toContain('"type":"full-reload"'); + expect(hmrLog).toContain('style-probe.component.css'); +}); diff --git a/apps/tailwind-debug-app/eslint.config.mjs b/apps/tailwind-debug-app/eslint.config.mjs new file mode 100644 index 000000000..af5ff32a0 --- /dev/null +++ b/apps/tailwind-debug-app/eslint.config.mjs @@ -0,0 +1,34 @@ +import nx from '@nx/eslint-plugin'; +import baseConfig from '../../eslint.config.mjs'; + +export default [ + ...nx.configs['flat/angular'], + ...nx.configs['flat/angular-template'], + ...baseConfig, + { + files: ['**/*.ts'], + rules: { + '@angular-eslint/directive-selector': [ + 'error', + { + type: 'attribute', + prefix: 'app', + style: 'camelCase', + }, + ], + '@angular-eslint/component-selector': [ + 'error', + { + type: 'element', + prefix: 'app', + style: 'kebab-case', + }, + ], + }, + }, + { + files: ['**/*.html'], + // Override or add rules here + rules: {}, + }, +]; diff --git a/apps/tailwind-debug-app/index.html b/apps/tailwind-debug-app/index.html new file mode 100644 index 000000000..d9f916c7a --- /dev/null +++ b/apps/tailwind-debug-app/index.html @@ -0,0 +1,15 @@ + + + + + tailwind-debug-app + + + + + + + + + + diff --git a/apps/tailwind-debug-app/package.json b/apps/tailwind-debug-app/package.json new file mode 100644 index 000000000..7d8a9aef0 --- /dev/null +++ b/apps/tailwind-debug-app/package.json @@ -0,0 +1,13 @@ +{ + "name": "tailwind-debug-app", + "private": true, + "type": "module", + "dependencies": { + "@analogjs/router": "workspace:*" + }, + "devDependencies": { + "@analogjs/platform": "workspace:*", + "@analogjs/vite-plugin-angular": "workspace:*", + "@analogjs/vitest-angular": "workspace:*" + } +} diff --git a/apps/tailwind-debug-app/postcss.config.mjs b/apps/tailwind-debug-app/postcss.config.mjs new file mode 100644 index 000000000..a34a3d560 --- /dev/null +++ b/apps/tailwind-debug-app/postcss.config.mjs @@ -0,0 +1,5 @@ +export default { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; diff --git a/apps/tailwind-debug-app/project.json b/apps/tailwind-debug-app/project.json new file mode 100644 index 000000000..40fa6cb44 --- /dev/null +++ b/apps/tailwind-debug-app/project.json @@ -0,0 +1,56 @@ +{ + "name": "tailwind-debug-app", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/tailwind-debug-app/src", + "prefix": "tdbg", + "tags": [], + "targets": { + "build": { + "executor": "@nx/vite:build", + "dependsOn": ["platform:build", "router:build"], + "outputs": [ + "{options.outputPath}", + "{workspaceRoot}/dist/apps/tailwind-debug-app/.nitro", + "{workspaceRoot}/dist/apps/tailwind-debug-app/ssr", + "{workspaceRoot}/dist/apps/tailwind-debug-app/analog" + ], + "options": { + "configFile": "apps/tailwind-debug-app/vite.config.ts", + "outputPath": "dist/apps/tailwind-debug-app/client" + }, + "defaultConfiguration": "production", + "configurations": { + "development": { + "mode": "development" + }, + "production": { + "sourcemap": false, + "mode": "production" + } + } + }, + "serve": { + "executor": "nx:run-commands", + "dependsOn": [], + "options": { + "command": "pnpm exec vite --config apps/tailwind-debug-app/vite.config.ts" + } + }, + "lint": { + "executor": "@nx/eslint:lint" + }, + "serve-nitro": { + "executor": "nx:run-commands", + "options": { + "cwd": "dist/apps/tailwind-debug-app/analog", + "command": "node --unhandled-rejections=throw ./server/index.mjs", + "env": { "PORT": "43040" } + } + }, + "test": { + "executor": "@nx/vitest:test", + "outputs": ["{projectRoot}/coverage"] + } + } +} diff --git a/apps/tailwind-debug-app/public/.gitkeep b/apps/tailwind-debug-app/public/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/tailwind-debug-app/public/analog.svg b/apps/tailwind-debug-app/public/analog.svg new file mode 100644 index 000000000..e4f555aa7 --- /dev/null +++ b/apps/tailwind-debug-app/public/analog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/tailwind-debug-app/public/favicon.ico b/apps/tailwind-debug-app/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1cceb8320133505f616b784afb243c17f33c4ee6 GIT binary patch literal 1642 zcmZWqNl#Nz7<~+CTgD(DlL%4>W3@#=4GN`2T4|tdDnqeAK~PZ(f)k^fXe4eNVq$co z3lkGH8h3^S*+7i3#$llwBT*N+(!bz2elM3qlk=T(?)P5bz4yCAe=jb0Tbq+iIVMfh zlH4w*ADV~AH>?HM|6W{}MZg+IU0vgvmXOAXK~6o28*)4C0hgpYT0HB0>EglBo1n~7 z&5|$*s?Jk)SPl+y!gS*Q?ug>oW+Y$L1s09H`oCW0`>H^z`Pe`uXV_d!myOHk! zuOEThoS<#FlBte;dv#YQJiAUsj3B&;`&g`{yCX$zmMDw>Vi75b%BelpEl``8HS-(o z{t&e63ia#)05+YxZWAyA~lu#V}ex(J8BNm zvD?f?dWCmRudWrc4e~a>@2$%Nv(L0WponD}JZJ-jOF&!0%g-TzzPSB^eE-dPNjlC! zhhE=LZz`^ug8ew3DGxq9afoRZ8SdoZXIT(OLnS8Q0@B*RuK$6P8-cqc-(lmj=vPuh zarAnvjpr%-%ZsTI4svq?2 { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [RouterTestingModule, AppComponent], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it('should render the router outlet shell', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + expect(fixture.nativeElement.innerHTML).toContain('router-outlet'); + }); +}); diff --git a/apps/tailwind-debug-app/src/app/app.component.ts b/apps/tailwind-debug-app/src/app/app.component.ts new file mode 100644 index 000000000..44b7ed443 --- /dev/null +++ b/apps/tailwind-debug-app/src/app/app.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; + +@Component({ + selector: 'app-root', + imports: [RouterOutlet], + template: ` `, +}) +export class AppComponent {} diff --git a/apps/tailwind-debug-app/src/app/app.config.server.ts b/apps/tailwind-debug-app/src/app/app.config.server.ts new file mode 100644 index 000000000..0da63b09b --- /dev/null +++ b/apps/tailwind-debug-app/src/app/app.config.server.ts @@ -0,0 +1,10 @@ +import { mergeApplicationConfig, ApplicationConfig } from '@angular/core'; +import { provideServerRendering } from '@angular/platform-server'; + +import { appConfig } from './app.config'; + +const serverConfig: ApplicationConfig = { + providers: [provideServerRendering()], +}; + +export const config = mergeApplicationConfig(appConfig, serverConfig); diff --git a/apps/tailwind-debug-app/src/app/app.config.ts b/apps/tailwind-debug-app/src/app/app.config.ts new file mode 100644 index 000000000..e61e9bb0b --- /dev/null +++ b/apps/tailwind-debug-app/src/app/app.config.ts @@ -0,0 +1,6 @@ +import type { ApplicationConfig } from '@angular/core'; +import { provideFileRouter } from '@analogjs/router'; + +export const appConfig: ApplicationConfig = { + providers: [provideFileRouter()], +}; diff --git a/apps/tailwind-debug-app/src/app/debug/debug-stream.service.ts b/apps/tailwind-debug-app/src/app/debug/debug-stream.service.ts new file mode 100644 index 000000000..f37462110 --- /dev/null +++ b/apps/tailwind-debug-app/src/app/debug/debug-stream.service.ts @@ -0,0 +1,205 @@ +import { + DestroyRef, + Injectable, + PLATFORM_ID, + computed, + inject, + signal, +} from '@angular/core'; +import { isPlatformBrowser } from '@angular/common'; +import { + TAILWIND_DEBUG_BREADCRUMB_EVENT, + type HmrBreadcrumb, +} from './hmr-diagnostics'; +import { + type TailwindDebugEventEntry, + type TailwindDebugSocketMessage, + toBrowserEntry, +} from './debug-stream.shared'; + +const STREAM_LIMIT = 200; + +function appendEntry( + entries: readonly TailwindDebugEventEntry[], + nextEntry: TailwindDebugEventEntry, +) { + return [...entries, nextEntry].slice(-STREAM_LIMIT); +} + +@Injectable({ providedIn: 'root' }) +export class TailwindDebugStreamService { + private readonly destroyRef = inject(DestroyRef); + private readonly platformId = inject(PLATFORM_ID); + private readonly isBrowser = isPlatformBrowser(this.platformId); + private readonly clientId = Math.random().toString(36).slice(2, 10); + private socket?: WebSocket; + private reconnectTimer?: number; + private queuedMessages: string[] = []; + + readonly connectionState = signal<'closed' | 'connecting' | 'open'>( + this.isBrowser ? 'connecting' : 'closed', + ); + readonly entries = signal([]); + readonly sourceCounts = computed(() => { + const counts: Record = {}; + for (const entry of this.entries()) { + counts[entry.source] = (counts[entry.source] ?? 0) + 1; + } + return counts; + }); + readonly latestEntry = computed(() => { + const entries = this.entries(); + return entries[entries.length - 1]; + }); + readonly fullReloadCount = computed( + () => + this.entries().filter((entry) => { + const payload = entry.payload as { type?: string }; + return entry.source === 'vite:ws' && payload.type === 'full-reload'; + }).length, + ); + readonly browserErrorCount = computed( + () => + this.entries().filter((entry) => { + const payload = entry.payload as { phase?: string }; + return ( + entry.source === 'browser' && + (payload.phase === 'window:error' || + payload.phase === 'window:unhandledrejection') + ); + }).length, + ); + + constructor() { + if (!this.isBrowser) { + return; + } + + this.seedFromWindow(); + this.connect(); + + const onBreadcrumb = (event: Event) => { + const detail = (event as CustomEvent).detail; + const entry = toBrowserEntry(detail, this.clientId); + this.entries.update((entries) => appendEntry(entries, entry)); + this.send({ + entry, + type: 'entry', + } satisfies TailwindDebugSocketMessage); + }; + + window.addEventListener(TAILWIND_DEBUG_BREADCRUMB_EVENT, onBreadcrumb); + this.destroyRef.onDestroy(() => { + if (this.reconnectTimer) { + window.clearTimeout(this.reconnectTimer); + } + window.removeEventListener(TAILWIND_DEBUG_BREADCRUMB_EVENT, onBreadcrumb); + this.socket?.close(); + }); + } + + reconnect() { + if (!this.isBrowser) { + return; + } + + if (this.reconnectTimer) { + window.clearTimeout(this.reconnectTimer); + this.reconnectTimer = undefined; + } + + this.socket?.close(); + this.connectionState.set('connecting'); + this.connect(); + } + + clear() { + this.entries.set([]); + } + + private connect() { + if (this.socket?.readyState === WebSocket.OPEN) { + return; + } + + const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; + const socket = new WebSocket( + `${protocol}//${window.location.host}/api/ws/debug-stream`, + ); + this.socket = socket; + + socket.addEventListener('open', () => { + this.connectionState.set('open'); + if (this.reconnectTimer) { + window.clearTimeout(this.reconnectTimer); + this.reconnectTimer = undefined; + } + for (const message of this.queuedMessages) { + socket.send(message); + } + this.queuedMessages = []; + }); + + socket.addEventListener('message', (event) => { + try { + const message = JSON.parse(event.data) as TailwindDebugSocketMessage; + if (message.type === 'snapshot' && message.entries) { + const serverEntries = message.entries.filter( + (entry) => entry.clientId !== this.clientId, + ); + this.entries.update((entries) => + [...entries, ...serverEntries].slice(-STREAM_LIMIT), + ); + } + + if (message.type === 'entry' && message.entry) { + if (message.entry.clientId === this.clientId) { + return; + } + this.entries.update((entries) => + appendEntry(entries, message.entry!), + ); + } + } catch { + // Ignore malformed diagnostics messages. + } + }); + + let closed = false; + const onClosed = () => { + if (closed || this.socket !== socket) { + return; + } + closed = true; + this.connectionState.set('closed'); + this.socket = undefined; + this.reconnectTimer = window.setTimeout(() => { + this.connectionState.set('connecting'); + this.connect(); + }, 1000); + }; + + socket.addEventListener('close', onClosed); + socket.addEventListener('error', onClosed); + } + + private seedFromWindow() { + const debugState = window.__TAILWIND_DEBUG__; + const previousEntries = debugState?.previousSessionBreadcrumbs ?? []; + const sessionEntries = debugState?.breadcrumbs ?? []; + + const seededEntries = [...previousEntries, ...sessionEntries].map( + (breadcrumb) => toBrowserEntry(breadcrumb, this.clientId), + ); + this.entries.set(seededEntries.slice(-STREAM_LIMIT)); + } + + private send(message: TailwindDebugSocketMessage) { + const encoded = JSON.stringify(message); + if (this.socket?.readyState === WebSocket.OPEN) { + this.socket.send(encoded); + return; + } + this.queuedMessages.push(encoded); + } +} diff --git a/apps/tailwind-debug-app/src/app/debug/debug-stream.shared.ts b/apps/tailwind-debug-app/src/app/debug/debug-stream.shared.ts new file mode 100644 index 000000000..bab21808f --- /dev/null +++ b/apps/tailwind-debug-app/src/app/debug/debug-stream.shared.ts @@ -0,0 +1,78 @@ +import type { HmrBreadcrumb } from './hmr-diagnostics'; + +export type TailwindDebugSource = 'browser' | 'vite:hmr' | 'vite:ws' | 'system'; + +export interface TailwindDebugEventEntry { + id: string; + timestamp: string; + source: TailwindDebugSource; + summary: string; + payload: unknown; + clientId?: string; +} + +export interface TailwindDebugSocketMessage { + entry?: TailwindDebugEventEntry; + entries?: TailwindDebugEventEntry[]; + type: 'entry' | 'snapshot' | 'system'; +} + +export function createEntryId( + source: TailwindDebugSource, + timestamp: string, + salt: string, +): string { + return `${source}:${timestamp}:${salt}`; +} + +export function summarizeBrowserBreadcrumb(breadcrumb: HmrBreadcrumb): string { + return breadcrumb.phase; +} + +export function summarizePayload( + source: Exclude, + payload: unknown, +): string { + if (source === 'vite:hmr') { + const candidate = payload as { + file?: string; + modules?: Array<{ url?: string }>; + }; + const moduleCount = candidate.modules?.length ?? 0; + return candidate.file + ? `hot update ${candidate.file} (${moduleCount} modules)` + : `hot update (${moduleCount} modules)`; + } + + if (source === 'vite:ws') { + const candidate = payload as { + type?: string; + updates?: Array<{ type?: string }>; + }; + const updateCount = candidate.updates?.length ?? 0; + return candidate.type + ? `ws ${candidate.type}${updateCount ? ` (${updateCount} updates)` : ''}` + : 'ws event'; + } + + const candidate = payload as { message?: string }; + return candidate.message ?? 'system event'; +} + +export function toBrowserEntry( + breadcrumb: HmrBreadcrumb, + clientId: string, +): TailwindDebugEventEntry { + const timestamp = new Date( + Date.now() - performance.now() + breadcrumb.now, + ).toISOString(); + + return { + clientId, + id: createEntryId('browser', timestamp, breadcrumb.phase), + payload: breadcrumb, + source: 'browser', + summary: summarizeBrowserBreadcrumb(breadcrumb), + timestamp, + }; +} diff --git a/apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.spec.ts b/apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.spec.ts new file mode 100644 index 000000000..b5a4da897 --- /dev/null +++ b/apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.spec.ts @@ -0,0 +1,57 @@ +import { + appendBreadcrumb, + classifyVitePayload, + readStoredBreadcrumbs, + writeStoredBreadcrumbs, + type HmrBreadcrumb, +} from './hmr-diagnostics'; + +describe('hmr-diagnostics helpers', () => { + it('trims breadcrumb history to the requested limit', () => { + const history = [ + { href: '/', now: 1, phase: 'one' }, + { href: '/', now: 2, phase: 'two' }, + ] satisfies HmrBreadcrumb[]; + + const next = appendBreadcrumb( + history, + { href: '/', now: 3, phase: 'three' }, + 2, + ); + + expect(next.map((entry) => entry.phase)).toEqual(['two', 'three']); + }); + + it('classifies vite full reload payloads', () => { + expect(classifyVitePayload({ type: 'full-reload' })).toBe('full-reload'); + }); + + it('classifies vite css updates', () => { + expect( + classifyVitePayload({ + type: 'update', + updates: [{ type: 'css-update' }], + }), + ).toBe('css-update'); + }); + + it('round-trips stored breadcrumbs', () => { + const store = new Map(); + const storage = { + getItem(key: string) { + return store.get(key) ?? null; + }, + setItem(key: string, value: string) { + store.set(key, value); + }, + }; + + const breadcrumbs: HmrBreadcrumb[] = [ + { href: '/', now: 1, phase: 'bootstrap' }, + ]; + + writeStoredBreadcrumbs(storage, breadcrumbs); + + expect(readStoredBreadcrumbs(storage)).toEqual(breadcrumbs); + }); +}); diff --git a/apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.ts b/apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.ts new file mode 100644 index 000000000..654d26081 --- /dev/null +++ b/apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.ts @@ -0,0 +1,192 @@ +export interface HmrBreadcrumb { + details?: unknown; + href: string; + now: number; + phase: string; +} + +export interface TailwindDebugState { + bootCount: number; + breadcrumbs: HmrBreadcrumb[]; + previousSessionBreadcrumbs: HmrBreadcrumb[]; +} + +export const TAILWIND_DEBUG_BREADCRUMB_EVENT = + 'tailwind-debug:breadcrumb' as const; + +const BREADCRUMB_LIMIT = 50; +const BREADCRUMB_KEY = 'tailwind-debug-app.hmr.breadcrumbs'; +const BOOT_COUNT_KEY = 'tailwind-debug-app.hmr.boot-count'; + +export function appendBreadcrumb( + history: readonly HmrBreadcrumb[], + breadcrumb: HmrBreadcrumb, + limit = BREADCRUMB_LIMIT, +): HmrBreadcrumb[] { + return [...history, breadcrumb].slice(-limit); +} + +export function classifyVitePayload(payload: unknown): string { + if (!payload || typeof payload !== 'object') { + return 'unknown'; + } + + const candidate = payload as { + type?: string; + updates?: Array<{ type?: string }>; + }; + + if (candidate.type === 'full-reload') { + return 'full-reload'; + } + + if ( + candidate.type === 'update' && + candidate.updates?.some((update) => update.type === 'css-update') + ) { + return 'css-update'; + } + + return candidate.type ?? 'unknown'; +} + +export function readStoredBreadcrumbs( + storage: Pick, + key = BREADCRUMB_KEY, +): HmrBreadcrumb[] { + const raw = storage.getItem(key); + if (!raw) { + return []; + } + + try { + const parsed = JSON.parse(raw); + if (!Array.isArray(parsed)) { + return []; + } + return parsed.filter( + (entry): entry is HmrBreadcrumb => + !!entry && + typeof entry === 'object' && + typeof entry.phase === 'string' && + typeof entry.href === 'string' && + typeof entry.now === 'number', + ); + } catch { + return []; + } +} + +export function writeStoredBreadcrumbs( + storage: Pick, + breadcrumbs: readonly HmrBreadcrumb[], + key = BREADCRUMB_KEY, +) { + storage.setItem(key, JSON.stringify(breadcrumbs)); +} + +function readBootCount(storage: Pick): number { + const raw = storage.getItem(BOOT_COUNT_KEY); + const count = raw ? Number.parseInt(raw, 10) : 0; + return Number.isFinite(count) ? count : 0; +} + +function writeBootCount(storage: Pick, count: number) { + storage.setItem(BOOT_COUNT_KEY, String(count)); +} + +export function setupBrowserDiagnostics( + hot: ImportMeta['hot'], + target: Window, + storage: Storage, +): TailwindDebugState { + const previousSessionBreadcrumbs = readStoredBreadcrumbs(storage); + const bootCount = readBootCount(storage) + 1; + writeBootCount(storage, bootCount); + + const state: TailwindDebugState = { + bootCount, + breadcrumbs: [], + previousSessionBreadcrumbs, + }; + + const append = (phase: string, details?: unknown) => { + const breadcrumb: HmrBreadcrumb = { + details, + href: target.location.href, + now: target.performance.now(), + phase, + }; + + state.breadcrumbs = appendBreadcrumb(state.breadcrumbs, breadcrumb); + writeStoredBreadcrumbs(storage, state.breadcrumbs); + target.dispatchEvent( + new CustomEvent(TAILWIND_DEBUG_BREADCRUMB_EVENT, { + detail: breadcrumb, + }), + ); + globalThis.console.info('[tailwind-debug-app]', phase, details ?? {}); + }; + + Object.assign(target, { + __TAILWIND_DEBUG__: state, + }); + + append('bootstrap', { + previousSessionBreadcrumbs: previousSessionBreadcrumbs.length, + }); + + hot?.on('vite:beforeUpdate', (payload) => { + append('vite:beforeUpdate', { + classification: classifyVitePayload(payload), + payload, + }); + }); + hot?.on('vite:afterUpdate', (payload) => { + append('vite:afterUpdate', { + classification: classifyVitePayload(payload), + payload, + }); + }); + hot?.on('vite:beforeFullReload', (payload) => { + append('vite:beforeFullReload', payload); + }); + hot?.on('vite:invalidate', (payload) => { + append('vite:invalidate', payload); + }); + + target.addEventListener('beforeunload', () => { + append('beforeunload'); + }); + target.addEventListener('pageshow', (event) => { + append('pageshow', { persisted: event.persisted }); + }); + target.addEventListener('pagehide', (event) => { + append('pagehide', { persisted: event.persisted }); + }); + target.addEventListener('visibilitychange', () => { + append('visibilitychange', { + visibilityState: target.document.visibilityState, + }); + }); + target.addEventListener('error', (event) => { + append('window:error', { + message: event.message, + source: event.filename, + }); + }); + target.addEventListener('unhandledrejection', (event) => { + append('window:unhandledrejection', { + reason: + typeof event.reason === 'string' ? event.reason : String(event.reason), + }); + }); + + return state; +} + +declare global { + interface Window { + __TAILWIND_DEBUG__?: TailwindDebugState; + } +} diff --git a/apps/tailwind-debug-app/src/app/pages/(home).page.ts b/apps/tailwind-debug-app/src/app/pages/(home).page.ts new file mode 100644 index 000000000..41cf02c9e --- /dev/null +++ b/apps/tailwind-debug-app/src/app/pages/(home).page.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +import { TailwindDebugShellComponent } from '../probes/tailwind-debug-shell.component'; + +@Component({ + selector: 'app-tailwind-debug-home', + imports: [TailwindDebugShellComponent], + template: ` `, +}) +export default class HomeComponent {} diff --git a/apps/tailwind-debug-app/src/app/pages/analog-welcome.component.ts b/apps/tailwind-debug-app/src/app/pages/analog-welcome.component.ts new file mode 100644 index 000000000..0956b4941 --- /dev/null +++ b/apps/tailwind-debug-app/src/app/pages/analog-welcome.component.ts @@ -0,0 +1,40 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tailwind-debug-analog-welcome', + standalone: true, + styles: [ + ` + :host { + display: block; + padding: 3rem 1.5rem; + font-family: ui-sans-serif, system-ui, sans-serif; + } + + .welcome { + margin: 0 auto; + max-width: 48rem; + } + + h1 { + margin: 0 0 1rem; + font-size: 2.5rem; + line-height: 1.1; + } + + p { + margin: 0; + color: rgb(82 82 91); + font-size: 1.125rem; + line-height: 1.75rem; + } + `, + ], + template: ` +
+

Tailwind Debug App

+

Use this app to verify Tailwind and Analog integration behavior.

+
+ `, +}) +export class AnalogWelcomeComponent {} diff --git a/apps/tailwind-debug-app/src/app/probes/debug-stream-panel.component.ts b/apps/tailwind-debug-app/src/app/probes/debug-stream-panel.component.ts new file mode 100644 index 000000000..3085c378b --- /dev/null +++ b/apps/tailwind-debug-app/src/app/probes/debug-stream-panel.component.ts @@ -0,0 +1,550 @@ +import { JsonPipe } from '@angular/common'; +import { + ChangeDetectionStrategy, + Component, + computed, + inject, + signal, +} from '@angular/core'; +import { + type TailwindDebugEventEntry, + type TailwindDebugSource, +} from '../debug/debug-stream.shared'; +import { TailwindDebugStreamService } from '../debug/debug-stream.service'; + +const ALL_SOURCES: TailwindDebugSource[] = [ + 'browser', + 'vite:hmr', + 'vite:ws', + 'system', +]; + +@Component({ + selector: 'app-tailwind-debug-stream-panel', + standalone: true, + imports: [JsonPipe], + template: ` +
+
+
+

Live diagnostics

+

Wiretap console

+

+ Browser breadcrumbs, Vite HMR payloads, websocket traffic, and + runtime failures share one live feed. +

+
+ +
+ + + {{ stream.connectionState() }} + +
+ + + +
+
+
+ +
+
+ Visible entries + {{ visibleEntries().length }} + + {{ stream.entries().length }} captured in memory + +
+
+ Full reloads + {{ stream.fullReloadCount() }} + Should stay at zero during CSS HMR +
+
+ Browser faults + {{ stream.browserErrorCount() }} + window errors + unhandled rejections +
+ @for (source of sources(); track source.key) { +
+ {{ source.key }} + {{ source.value }} + Stream source +
+ } +
+ +
+ + +
+ +
+ @for (source of sourceOptions(); track source.source) { + + } +
+
+
+ + @if (stream.latestEntry(); as latest) { +
+
+ + {{ latest.timestamp }} +
+
+ + {{ latest.source }} + + {{ latest.summary }} +
+
+ } + +
+
+ + + Newest events on the right. Paused feed freezes the list, not the + transport. + +
+
+ @for (entry of recentTimeline(); track entry.id) { + + } +
+
+ +
+ @if (!visibleEntries().length) { +
+ No matching events. +

+ Change the filter or search query, or wait for the next browser or + HMR event to arrive. +

+
+ } + + @for (entry of visibleEntries(); track entry.id) { +
+
+
+ + {{ entry.source }} + + {{ entry.summary }} +
+ +
+
{{ entry.payload | json }}
+
+ } +
+
+ `, + styles: [ + ` + :host { + display: block; + } + + .panel { + display: grid; + gap: 1.25rem; + padding: 1.5rem; + border: 1px solid rgba(148, 163, 184, 0.18); + background: + linear-gradient(180deg, rgba(15, 23, 42, 0.94), rgba(2, 6, 23, 0.92)), + radial-gradient( + circle at top right, + rgba(56, 189, 248, 0.16), + transparent 30% + ); + box-shadow: 0 24px 80px rgba(2, 6, 23, 0.35); + backdrop-filter: blur(18px); + border-radius: 1.5rem; + } + + .panel-header, + .section-header, + .entry-header, + .entry-title, + .latest-summary, + .header-meta, + .header-actions { + display: flex; + gap: 0.75rem; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + } + + .title-block { + display: grid; + gap: 0.35rem; + max-width: 42rem; + } + + .panel-kicker, + .section-label, + .stat-label { + margin: 0; + text-transform: uppercase; + letter-spacing: 0.16em; + font-size: 0.7rem; + color: rgba(148, 163, 184, 0.88); + } + + h2 { + margin: 0; + font-size: 1.9rem; + line-height: 1; + letter-spacing: -0.04em; + } + + .panel-copy, + .timeline-copy, + .stat-footnote, + .empty-state p { + margin: 0; + font-size: 0.82rem; + line-height: 1.6; + color: rgba(191, 219, 254, 0.68); + } + + .status, + .source-pill, + .filter-pill, + .action-button { + display: inline-flex; + align-items: center; + gap: 0.45rem; + border-radius: 999px; + padding: 0.45rem 0.8rem; + font-size: 0.78rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.08em; + } + + .action-button, + .filter-pill { + border: 1px solid rgba(148, 163, 184, 0.18); + background: rgba(15, 23, 42, 0.88); + color: rgba(226, 232, 240, 0.88); + cursor: pointer; + } + + .action-button:hover, + .filter-pill:hover { + border-color: rgba(125, 211, 252, 0.36); + color: rgb(125 211 252); + } + + .status-dot, + .timeline-dot { + display: inline-flex; + border-radius: 999px; + } + + .status-dot { + width: 0.6rem; + height: 0.6rem; + background: currentcolor; + box-shadow: 0 0 0.9rem currentcolor; + } + + .status[data-state='open'] { + background: rgba(16, 185, 129, 0.18); + color: rgb(110 231 183); + } + + .status[data-state='open'] .status-dot { + animation: pulse 1.6s infinite; + } + + .status[data-state='connecting'] { + background: rgba(250, 204, 21, 0.18); + color: rgb(253 224 71); + } + + .status[data-state='closed'] { + background: rgba(248, 113, 113, 0.18); + color: rgb(252 165 165); + } + + .stats { + display: grid; + gap: 0.75rem; + grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); + } + + .stat-card, + .latest, + .entry, + .timeline, + .control-strip, + .empty-state { + border-radius: 1rem; + border: 1px solid rgba(148, 163, 184, 0.12); + background: rgba(2, 6, 23, 0.58); + padding: 1rem; + } + + .stat-card-primary { + background: linear-gradient( + 135deg, + rgba(14, 165, 233, 0.18), + rgba(30, 41, 59, 0.72) + ); + } + + .stat-value { + display: block; + margin-top: 0.35rem; + font-size: 1.7rem; + } + + .control-strip { + display: grid; + gap: 1rem; + } + + .search { + display: grid; + gap: 0.5rem; + } + + input[type='search'] { + width: 100%; + border-radius: 0.9rem; + border: 1px solid rgba(148, 163, 184, 0.16); + background: rgba(15, 23, 42, 0.92); + padding: 0.9rem 1rem; + color: rgb(226 232 240); + } + + .filters { + display: grid; + gap: 0.5rem; + } + + .filter-row { + display: flex; + flex-wrap: wrap; + gap: 0.6rem; + } + + .filter-pill.active { + border-color: rgba(125, 211, 252, 0.5); + background: rgba(8, 47, 73, 0.9); + } + + .filter-pill span { + color: rgba(191, 219, 254, 0.8); + } + + .feed { + display: grid; + gap: 0.75rem; + max-height: 34rem; + overflow: auto; + } + + .entry { + display: grid; + gap: 0.85rem; + } + + .entry pre { + margin: 0; + overflow: auto; + white-space: pre-wrap; + word-break: break-word; + font-size: 0.78rem; + line-height: 1.45; + color: rgba(226, 232, 240, 0.86); + } + + .timeline-track { + display: grid; + grid-template-columns: repeat(24, minmax(0, 1fr)); + gap: 0.35rem; + margin-top: 0.9rem; + } + + .timeline-dot { + height: 0.7rem; + min-width: 0.7rem; + background: rgba(148, 163, 184, 0.16); + } + + time, + .latest-time { + color: rgba(148, 163, 184, 0.75); + font-size: 0.78rem; + } + + .source-pill[data-source='browser'], + .filter-pill[data-source='browser'].active, + .timeline-dot[data-source='browser'] { + background: rgba(56, 189, 248, 0.16); + color: rgb(125 211 252); + } + + .source-pill[data-source='vite:hmr'], + .filter-pill[data-source='vite:hmr'].active, + .timeline-dot[data-source='vite:hmr'] { + background: rgba(167, 139, 250, 0.18); + color: rgb(196 181 253); + } + + .source-pill[data-source='vite:ws'], + .filter-pill[data-source='vite:ws'].active, + .timeline-dot[data-source='vite:ws'] { + background: rgba(251, 146, 60, 0.18); + color: rgb(253 186 116); + } + + .source-pill[data-source='system'], + .filter-pill[data-source='system'].active, + .timeline-dot[data-source='system'] { + background: rgba(148, 163, 184, 0.16); + color: rgb(203 213 225); + } + + .empty-state { + display: grid; + gap: 0.35rem; + } + + @keyframes pulse { + 0%, + 100% { + opacity: 1; + transform: scale(1); + } + + 50% { + opacity: 0.55; + transform: scale(0.85); + } + } + `, + ], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class DebugStreamPanelComponent { + readonly stream = inject(TailwindDebugStreamService); + readonly query = signal(''); + readonly paused = signal(false); + readonly enabledSources = signal>({ + browser: true, + 'vite:hmr': true, + 'vite:ws': true, + system: true, + }); + readonly frozenEntries = signal([]); + readonly displayedEntries = computed(() => + this.paused() ? this.frozenEntries() : this.stream.entries(), + ); + readonly visibleEntries = computed(() => { + const query = this.query().trim().toLowerCase(); + const enabledSources = this.enabledSources(); + + return this.displayedEntries() + .filter((entry) => enabledSources[entry.source]) + .filter((entry) => { + if (!query) { + return true; + } + + const haystack = `${entry.summary} ${entry.timestamp} ${JSON.stringify( + entry.payload, + )}`.toLowerCase(); + + return haystack.includes(query); + }) + .slice() + .reverse(); + }); + readonly recentTimeline = computed(() => this.stream.entries().slice(-24)); + readonly sources = computed(() => + Object.entries(this.stream.sourceCounts()).map(([key, value]) => ({ + key, + value, + })), + ); + readonly sourceOptions = computed(() => { + const counts = this.stream.sourceCounts(); + const enabled = this.enabledSources(); + + return ALL_SOURCES.map((source) => ({ + count: counts[source] ?? 0, + enabled: enabled[source], + source, + })); + }); + + togglePaused() { + const nextPaused = !this.paused(); + this.paused.set(nextPaused); + if (nextPaused) { + this.frozenEntries.set(this.stream.entries()); + return; + } + this.frozenEntries.set([]); + } + + toggleSource(source: TailwindDebugSource) { + this.enabledSources.update((sources) => ({ + ...sources, + [source]: !sources[source], + })); + } +} diff --git a/apps/tailwind-debug-app/src/app/probes/style-probe.component.css b/apps/tailwind-debug-app/src/app/probes/style-probe.component.css new file mode 100644 index 000000000..9ec4e46a5 --- /dev/null +++ b/apps/tailwind-debug-app/src/app/probes/style-probe.component.css @@ -0,0 +1,29 @@ +@reference "../../styles.css"; + +.probe-card { + @apply tdbg:bg-red-500 tdbg:text-white tdbg:rounded-[2rem] tdbg:border tdbg:border-white/20 tdbg:p-8 tdbg:shadow-2xl tdbg:shadow-blue-950/40; +} + +.probe-kicker { + @apply tdbg:mb-3 tdbg:text-xs tdbg:font-bold tdbg:uppercase tdbg:tracking-[0.28em] tdbg:text-white/75; +} + +.probe-title { + @apply tdbg:text-3xl tdbg:font-semibold tdbg:tracking-tight; +} + +.probe-copy { + @apply tdbg:mt-4 tdbg:max-w-2xl tdbg:text-sm tdbg:leading-7 tdbg:text-white/85; +} + +.probe-toolbar { + @apply tdbg:mt-6 tdbg:flex tdbg:flex-wrap tdbg:items-center tdbg:gap-3; +} + +.probe-chip { + @apply tdbg:inline-flex tdbg:items-center tdbg:rounded-full tdbg:bg-white/15 tdbg:px-4 tdbg:py-2 tdbg:text-xs tdbg:font-medium tdbg:tracking-[0.12em] tdbg:uppercase; +} + +.probe-button { + @apply tdbg:inline-flex tdbg:items-center tdbg:rounded-full tdbg:bg-slate-950 tdbg:px-4 tdbg:py-2 tdbg:text-sm tdbg:font-semibold tdbg:text-white tdbg:ring-1 tdbg:ring-white/20; +} diff --git a/apps/tailwind-debug-app/src/app/probes/style-probe.component.spec.ts b/apps/tailwind-debug-app/src/app/probes/style-probe.component.spec.ts new file mode 100644 index 000000000..9f401ccd2 --- /dev/null +++ b/apps/tailwind-debug-app/src/app/probes/style-probe.component.spec.ts @@ -0,0 +1,34 @@ +import { TestBed } from '@angular/core/testing'; +import { StyleProbeComponent } from './style-probe.component'; + +describe('StyleProbeComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [StyleProbeComponent], + }).compileComponents(); + }); + + it('renders the probe shell', () => { + const fixture = TestBed.createComponent(StyleProbeComponent); + fixture.detectChanges(); + + expect( + fixture.nativeElement.querySelector('[data-testid="probe-card"]'), + ).toBeTruthy(); + expect(fixture.nativeElement.textContent).toContain( + 'Tailwind-prefixed CSS HMR probe', + ); + }); + + it('preserves local state across css-only assertions', () => { + const fixture = TestBed.createComponent(StyleProbeComponent); + fixture.componentInstance.increment(); + fixture.detectChanges(); + + expect( + fixture.nativeElement + .querySelector('[data-testid="probe-counter"]') + ?.textContent?.trim(), + ).toContain('Clicks 1'); + }); +}); diff --git a/apps/tailwind-debug-app/src/app/probes/style-probe.component.ts b/apps/tailwind-debug-app/src/app/probes/style-probe.component.ts new file mode 100644 index 000000000..efe991cbd --- /dev/null +++ b/apps/tailwind-debug-app/src/app/probes/style-probe.component.ts @@ -0,0 +1,39 @@ +import { ChangeDetectionStrategy, Component, signal } from '@angular/core'; + +@Component({ + selector: 'app-tailwind-style-probe', + standalone: true, + styleUrl: './style-probe.component.css', + template: ` +
+

Component stylesheet

+

Tailwind-prefixed CSS HMR probe

+

+ This card is intentionally styled through an external Angular component + stylesheet using tdbg:-prefixed Tailwind utilities. +

+ +
+ + Expect blue or red without a page reload + + +
+
+ `, + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class StyleProbeComponent { + readonly count = signal(0); + + increment() { + this.count.update((value) => value + 1); + } +} diff --git a/apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.ts b/apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.ts new file mode 100644 index 000000000..3df1af3aa --- /dev/null +++ b/apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.ts @@ -0,0 +1,94 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { StyleProbeComponent } from './style-probe.component'; + +@Component({ + selector: 'app-tailwind-debug-shell', + standalone: true, + imports: [StyleProbeComponent], + template: ` +
+
+

Analog tailwind debug app

+

+ Wiretap-first repro harness for Angular CSS HMR +

+

+ This app exists to reproduce and trace prefixed Tailwind component + stylesheet updates, wrapper/direct stylesheet identities, and any + accidental full reloads emitted during the same edit cycle. +

+
+ +
+ +
+
+ `, + styles: [ + ` + .shell { + display: grid; + min-height: 100vh; + gap: 2rem; + padding: 3rem; + background: + radial-gradient( + circle at top left, + rgba(56, 189, 248, 0.22), + transparent 36% + ), + radial-gradient( + circle at right center, + rgba(59, 130, 246, 0.18), + transparent 28% + ), + linear-gradient(180deg, #020617 0%, #0f172a 100%); + } + + .hero { + display: grid; + gap: 1rem; + max-width: 56rem; + } + + .workspace { + display: grid; + grid-template-columns: minmax(0, 28rem) minmax(0, 1fr); + gap: 1.5rem; + align-items: start; + } + + .eyebrow { + margin: 0; + letter-spacing: 0.26em; + text-transform: uppercase; + font-size: 0.75rem; + font-weight: 700; + color: rgba(226, 232, 240, 0.76); + } + + .headline { + margin: 0; + font-size: clamp(2.75rem, 5vw, 5rem); + line-height: 0.95; + letter-spacing: -0.06em; + } + + .lede { + margin: 0; + max-width: 48rem; + font-size: 1rem; + line-height: 1.75; + color: rgba(226, 232, 240, 0.8); + } + + @media (max-width: 960px) { + .workspace { + grid-template-columns: 1fr; + } + } + `, + ], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class TailwindDebugShellComponent {} diff --git a/apps/tailwind-debug-app/src/main.server.ts b/apps/tailwind-debug-app/src/main.server.ts new file mode 100644 index 000000000..4b055f389 --- /dev/null +++ b/apps/tailwind-debug-app/src/main.server.ts @@ -0,0 +1,7 @@ +import '@angular/platform-server/init'; +import { render } from '@analogjs/router/server'; + +import { AppComponent } from './app/app.component'; +import { config } from './app/app.config.server'; + +export default render(AppComponent, config); diff --git a/apps/tailwind-debug-app/src/main.ts b/apps/tailwind-debug-app/src/main.ts new file mode 100644 index 000000000..ddab236c6 --- /dev/null +++ b/apps/tailwind-debug-app/src/main.ts @@ -0,0 +1,15 @@ +import 'zone.js'; +import { bootstrapApplication } from '@angular/platform-browser'; + +import { AppComponent } from './app/app.component'; +import { appConfig } from './app/app.config'; +import { setupBrowserDiagnostics } from './app/debug/hmr-diagnostics'; +import './routeTree.gen'; + +if (import.meta.env.DEV && typeof window !== 'undefined') { + setupBrowserDiagnostics(import.meta.hot, window, window.sessionStorage); +} + +bootstrapApplication(AppComponent, appConfig).catch((err) => + console.error(err), +); diff --git a/apps/tailwind-debug-app/src/routeTree.gen.ts b/apps/tailwind-debug-app/src/routeTree.gen.ts new file mode 100644 index 000000000..e99f5c4d3 --- /dev/null +++ b/apps/tailwind-debug-app/src/routeTree.gen.ts @@ -0,0 +1,73 @@ +// This file is auto-generated by @analogjs/platform +// Do not edit manually + +declare module '@analogjs/router' { + interface AnalogRouteTable { + '/': { + params: Record; + paramsOutput: Record; + query: Record; + queryOutput: Record; + }; + } +} + +export {}; + +export interface AnalogGeneratedRouteRecord< + TId extends string = string, + TPath extends string = string, + TFullPath extends string = string, + TParentId extends string | null = string | null, + TChildren extends readonly string[] = readonly string[], +> { + id: TId; + path: TPath; + fullPath: TFullPath; + parentId: TParentId; + children: TChildren; + sourceFile: string; + kind: 'page' | 'content'; + hasParamsSchema: boolean; + hasQuerySchema: boolean; + hasJsonLd: boolean; + isIndex: boolean; + isGroup: boolean; + isCatchAll: boolean; + isOptionalCatchAll: boolean; +} + +export interface AnalogFileRoutesById { + "/(home)": AnalogGeneratedRouteRecord<"/(home)", "/", "/", null, readonly []>; +} + +export interface AnalogFileRoutesByFullPath { + "/": AnalogFileRoutesById["/(home)"]; +} + +export type AnalogRouteTreeId = keyof AnalogFileRoutesById; +export type AnalogRouteTreeFullPath = keyof AnalogFileRoutesByFullPath; + +export const analogRouteTree = { + byId: { + "/(home)": { + id: "/(home)", + path: "/", + fullPath: "/", + parentId: null, + children: [] as const, + sourceFile: "/src/app/pages/(home).page.ts", + kind: "page", + hasParamsSchema: false, + hasQuerySchema: false, + hasJsonLd: false, + isIndex: false, + isGroup: true, + isCatchAll: false, + isOptionalCatchAll: false, + } satisfies AnalogFileRoutesById["/(home)"], + }, + byFullPath: { + "/": "/(home)", + }, +} as const; diff --git a/apps/tailwind-debug-app/src/server/routes/api/v1/hello.ts b/apps/tailwind-debug-app/src/server/routes/api/v1/hello.ts new file mode 100644 index 000000000..644b2c81d --- /dev/null +++ b/apps/tailwind-debug-app/src/server/routes/api/v1/hello.ts @@ -0,0 +1,3 @@ +import { defineHandler } from 'nitro/h3'; + +export default defineHandler(() => ({ message: 'Hello World' })); diff --git a/apps/tailwind-debug-app/src/server/routes/api/ws/debug-stream.ts b/apps/tailwind-debug-app/src/server/routes/api/ws/debug-stream.ts new file mode 100644 index 000000000..dbbb00aeb --- /dev/null +++ b/apps/tailwind-debug-app/src/server/routes/api/ws/debug-stream.ts @@ -0,0 +1,234 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { defineWebSocketHandler } from 'nitro/h3'; +import { + createEntryId, + summarizePayload, + type TailwindDebugEventEntry, + type TailwindDebugSocketMessage, +} from '../../../../app/debug/debug-stream.shared'; + +const WORKSPACE_ROOT = process.cwd(); +const DEBUG_DIR = path.join(WORKSPACE_ROOT, 'tmp/debug'); +const HMR_LOG_PATH = path.join(DEBUG_DIR, 'tailwind-debug-app.vite-hmr.log'); +const WS_LOG_PATH = path.join(DEBUG_DIR, 'tailwind-debug-app.vite-ws.log'); +const SNAPSHOT_LIMIT = 150; + +type TailwindDebugPeer = { + send: (message: string) => void; + toString: () => string; +}; + +const peers = new Set(); +const fileOffsets = new Map(); +const recentEntries: TailwindDebugEventEntry[] = []; +let watcher: fs.FSWatcher | undefined; + +function appendRecentEntry(entry: TailwindDebugEventEntry) { + recentEntries.push(entry); + if (recentEntries.length > SNAPSHOT_LIMIT) { + recentEntries.splice(0, recentEntries.length - SNAPSHOT_LIMIT); + } +} + +function parseLogLines(filePath: string, source: 'vite:hmr' | 'vite:ws') { + if (!fs.existsSync(filePath)) { + fileOffsets.set(filePath, 0); + return []; + } + + const raw = fs.readFileSync(filePath, 'utf8'); + fileOffsets.set(filePath, Buffer.byteLength(raw)); + + return raw + .split('\n') + .filter(Boolean) + .map((line, index) => { + const firstSpace = line.indexOf(' '); + if (firstSpace === -1) { + return undefined; + } + + const timestamp = line.slice(0, firstSpace); + const body = line.slice(firstSpace + 1); + + try { + const payload = JSON.parse(body); + return { + id: createEntryId(source, timestamp, `${index}`), + payload, + source, + summary: summarizePayload(source, payload), + timestamp, + } satisfies TailwindDebugEventEntry; + } catch { + return undefined; + } + }) + .filter((entry): entry is TailwindDebugEventEntry => !!entry); +} + +function loadSnapshot() { + const entries = [ + ...parseLogLines(HMR_LOG_PATH, 'vite:hmr'), + ...parseLogLines(WS_LOG_PATH, 'vite:ws'), + ...recentEntries.filter((entry) => entry.source === 'browser'), + ] + .sort((left, right) => left.timestamp.localeCompare(right.timestamp)) + .slice(-SNAPSHOT_LIMIT); + + recentEntries.splice(0, recentEntries.length, ...entries); + return entries; +} + +function readNewEntries(filePath: string, source: 'vite:hmr' | 'vite:ws') { + if (!fs.existsSync(filePath)) { + fileOffsets.set(filePath, 0); + return []; + } + + const stat = fs.statSync(filePath); + const previousOffset = fileOffsets.get(filePath) ?? 0; + const start = stat.size < previousOffset ? 0 : previousOffset; + const stream = fs.readFileSync(filePath, 'utf8'); + fileOffsets.set(filePath, Buffer.byteLength(stream)); + const delta = Buffer.from(stream).subarray(start).toString('utf8'); + + if (!delta.trim()) { + return []; + } + + return delta + .split('\n') + .filter(Boolean) + .map((line, index) => { + const firstSpace = line.indexOf(' '); + if (firstSpace === -1) { + return undefined; + } + + const timestamp = line.slice(0, firstSpace); + const body = line.slice(firstSpace + 1); + + try { + const payload = JSON.parse(body); + return { + id: createEntryId(source, timestamp, `${start}:${index}`), + payload, + source, + summary: summarizePayload(source, payload), + timestamp, + } satisfies TailwindDebugEventEntry; + } catch { + return undefined; + } + }) + .filter((entry): entry is TailwindDebugEventEntry => !!entry); +} + +function broadcast(message: TailwindDebugSocketMessage) { + const encoded = JSON.stringify(message); + for (const peer of peers) { + peer.send(encoded); + } +} + +function ensureWatcher() { + if (watcher) { + return; + } + + fs.mkdirSync(DEBUG_DIR, { recursive: true }); + loadSnapshot(); + + watcher = fs.watch(DEBUG_DIR, (_eventType, filename) => { + if (!filename) { + return; + } + + const resolved = path.join(DEBUG_DIR, filename.toString()); + const source = + resolved === HMR_LOG_PATH + ? 'vite:hmr' + : resolved === WS_LOG_PATH + ? 'vite:ws' + : undefined; + + if (!source) { + return; + } + + const entries = readNewEntries(resolved, source); + for (const entry of entries) { + appendRecentEntry(entry); + broadcast({ + entry, + type: 'entry', + }); + } + }); +} + +function teardownWatcher() { + if (peers.size > 0 || !watcher) { + return; + } + + watcher.close(); + watcher = undefined; +} + +export default defineWebSocketHandler({ + open(peer) { + const tailwindPeer = peer as unknown as TailwindDebugPeer; + peers.add(tailwindPeer); + ensureWatcher(); + + tailwindPeer.send( + JSON.stringify({ + entries: loadSnapshot(), + type: 'snapshot', + } satisfies TailwindDebugSocketMessage), + ); + + tailwindPeer.send( + JSON.stringify({ + entry: { + id: createEntryId( + 'system', + new Date().toISOString(), + peer.toString(), + ), + payload: { + connections: peers.size, + message: 'debug stream connected', + }, + source: 'system', + summary: 'debug stream connected', + timestamp: new Date().toISOString(), + }, + type: 'entry', + } satisfies TailwindDebugSocketMessage), + ); + }, + message(_peer, message) { + try { + const data = JSON.parse(message.text()) as TailwindDebugSocketMessage; + if (data.type !== 'entry' || !data.entry) { + return; + } + + appendRecentEntry(data.entry); + broadcast({ + entry: data.entry, + type: 'entry', + }); + } catch { + // Ignore malformed browser diagnostic payloads. + } + }, + close(peer) { + peers.delete(peer as unknown as TailwindDebugPeer); + teardownWatcher(); + }, +}); diff --git a/apps/tailwind-debug-app/src/styles.css b/apps/tailwind-debug-app/src/styles.css new file mode 100644 index 000000000..216f6f569 --- /dev/null +++ b/apps/tailwind-debug-app/src/styles.css @@ -0,0 +1,17 @@ +@import 'tailwindcss' prefix(tdbg); + +html, +body { + display: block; + height: 100%; +} + +body { + margin: 0; + font-family: 'IBM Plex Sans', 'Avenir Next', system-ui, sans-serif; + @apply tdbg:bg-slate-950 tdbg:text-slate-100; +} + +* { + box-sizing: border-box; +} diff --git a/apps/tailwind-debug-app/src/test-setup.ts b/apps/tailwind-debug-app/src/test-setup.ts new file mode 100644 index 000000000..b0f7cdcb0 --- /dev/null +++ b/apps/tailwind-debug-app/src/test-setup.ts @@ -0,0 +1,6 @@ +import '@angular/compiler'; +import '@analogjs/vitest-angular/setup-snapshots'; +import '@analogjs/vitest-angular/setup-serializers'; +import { setupTestBed } from '@analogjs/vitest-angular/setup-testbed'; + +setupTestBed(); diff --git a/apps/tailwind-debug-app/src/vite-env.d.ts b/apps/tailwind-debug-app/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/apps/tailwind-debug-app/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/tailwind-debug-app/tsconfig.app.json b/apps/tailwind-debug-app/tsconfig.app.json new file mode 100644 index 000000000..9a4d03ac0 --- /dev/null +++ b/apps/tailwind-debug-app/tsconfig.app.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [] + }, + "files": ["src/main.ts", "src/main.server.ts"], + "include": [ + "src/**/*.d.ts", + "src/app/pages/**/*.page.ts", + "src/server/middleware/**/*.ts" + ], + "exclude": ["**/*.test.ts", "**/*.spec.ts"] +} diff --git a/apps/tailwind-debug-app/tsconfig.editor.json b/apps/tailwind-debug-app/tsconfig.editor.json new file mode 100644 index 000000000..a3149979a --- /dev/null +++ b/apps/tailwind-debug-app/tsconfig.editor.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "include": ["**/*.ts"], + "compilerOptions": { + "types": ["node", "vitest/globals"] + } +} diff --git a/apps/tailwind-debug-app/tsconfig.json b/apps/tailwind-debug-app/tsconfig.json new file mode 100644 index 000000000..31ba29bcc --- /dev/null +++ b/apps/tailwind-debug-app/tsconfig.json @@ -0,0 +1,34 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "exclude": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + }, + { + "path": "./tsconfig.editor.json" + } + ], + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "moduleResolution": "bundler" + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/apps/tailwind-debug-app/tsconfig.spec.json b/apps/tailwind-debug-app/tsconfig.spec.json new file mode 100644 index 000000000..dd6a38311 --- /dev/null +++ b/apps/tailwind-debug-app/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node", "vitest/globals"] + }, + "files": ["src/test-setup.ts"], + "include": ["src/**/*.spec.ts", "**/*.d.ts"] +} diff --git a/apps/tailwind-debug-app/vite.config.ts b/apps/tailwind-debug-app/vite.config.ts new file mode 100644 index 000000000..11f7e98f8 --- /dev/null +++ b/apps/tailwind-debug-app/vite.config.ts @@ -0,0 +1,129 @@ +/// + +import analog from '@analogjs/platform'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import tailwindcss from '@tailwindcss/vite'; +import fs from 'node:fs'; +import path from 'node:path'; +import { createLogger, defineConfig, type Plugin } from 'vite'; + +const DEBUG_DIR = path.resolve(__dirname, '../../tmp/debug'); +const HMR_LOG_PATH = path.join(DEBUG_DIR, 'tailwind-debug-app.vite-hmr.log'); +const WS_LOG_PATH = path.join(DEBUG_DIR, 'tailwind-debug-app.vite-ws.log'); + +function writeDebugLog(filePath: string, payload: unknown) { + fs.mkdirSync(path.dirname(filePath), { recursive: true }); + fs.appendFileSync( + filePath, + `${new Date().toISOString()} ${JSON.stringify(payload)}\n`, + 'utf8', + ); +} + +function hmrWiretapPlugin(): Plugin { + return { + apply: 'serve', + name: 'tailwind-debug-app-hmr-wiretap', + configureServer(server) { + const originalSend = server.ws.send.bind(server.ws); + server.ws.send = ((payload: unknown, ...args: unknown[]) => { + writeDebugLog(WS_LOG_PATH, payload); + return (originalSend as (...inner: unknown[]) => unknown)( + payload, + ...args, + ); + }) as typeof server.ws.send; + }, + handleHotUpdate(ctx) { + writeDebugLog(HMR_LOG_PATH, { + file: ctx.file, + modules: ctx.modules.map((module) => ({ + file: module.file, + id: module.id, + type: module.type, + url: module.url, + })), + timestamp: ctx.timestamp, + }); + }, + }; +} + +// https://vitejs.dev/config/ +export default defineConfig(({ mode }) => { + return { + root: __dirname, + publicDir: 'public', + cacheDir: '../../node_modules/.vite', + build: { + outDir: '../../dist/apps/tailwind-debug-app/client', + reportCompressedSize: true, + target: ['es2020'], + }, + optimizeDeps: { + include: ['@angular/forms'], + noDiscovery: true, + }, + customLogger: (() => { + const logger = createLogger(); + const warn = logger.warn.bind(logger); + logger.warn = (msg, options) => { + if ( + typeof msg === 'string' && + msg.includes('ɵɵgetReplaceMetadataURL') + ) { + return; + } + warn(msg, options); + }; + return logger; + })(), + plugins: [ + analog({ + apiPrefix: 'api', + hmr: true, + ssr: false, + experimental: { + useAngularCompilationAPI: true, + }, + nitro: { + experimental: { + websocket: true, + }, + }, + tailwindCss: { + prefixes: ['tdbg:'], + rootStylesheet: 'apps/tailwind-debug-app/src/styles.css', + }, + }), + tailwindcss(), + nxViteTsPaths(), + hmrWiretapPlugin(), + ], + test: { + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/apps/tailwind-debug-app', + provider: 'v8', + }, + globals: true, + environment: 'jsdom', + setupFiles: ['src/test-setup.ts'], + include: ['**/*.spec.ts'], + }, + define: { + 'import.meta.vitest': mode !== 'production', + }, + server: { + port: 43040, + fs: { + allow: ['.'], + }, + hmr: { + clientPort: 4201, + path: 'vite-hmr', + port: 4201, + }, + }, + }; +}); diff --git a/changes/2026-04-04-reset-investigation/README.md b/changes/2026-04-04-reset-investigation/README.md new file mode 100644 index 000000000..a206d0b3d --- /dev/null +++ b/changes/2026-04-04-reset-investigation/README.md @@ -0,0 +1,41 @@ +## 2026-04-04 Reset Investigation + +This folder snapshots the Analog repo changes made during the HMR and Angular compilation investigation before reverting the live code back to `HEAD`. + +### Purpose + +- preserve the exact work done in the local Analog fork +- make it easy to re-apply one slice at a time +- reset the working tree to a stable baseline for smaller, controlled re-implementation + +### Captured Scope + +The saved patches cover: + +- docs and contributor guidance +- `@analogjs/platform` local-linking behavior +- `@analogjs/vite-plugin-angular` HMR, external resource tracking, and served HMR module changes + +### Files + +- `status-before-revert.txt` + - working tree status before restoration +- `patches/full.patch` + - complete combined diff for the captured Analog changes +- `patches/docs.patch` + - `CONTRIBUTING.md` and docs-app debugging guide changes +- `patches/platform.patch` + - `packages/platform/src/lib/platform-plugin.ts` + - `packages/platform/src/lib/platform-plugin.spec.ts` +- `patches/vite-plugin-angular.patch` + - `packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts` + - `packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts` + - `packages/vite-plugin-angular/src/lib/angular-vite-plugin-live-reload.spec.ts` + - `packages/vite-plugin-angular/src/lib/live-reload-plugin.ts` + - `packages/vite-plugin-angular/src/lib/live-reload-plugin.spec.ts` + +### Notes + +- This snapshot intentionally does not treat `BundleSizeAnalysisPlan.md` as part of the revert set. +- Some late-stage probe logging was included in the captured `vite-plugin-angular` patch to preserve the exact investigation state. +- After this snapshot is created, the intended next step is restoring the modified tracked files to `HEAD` and re-implementing in smaller steps. diff --git a/packages/vite-plugin-angular/src/lib/angular-jit-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-jit-plugin.ts index 1aa102f07..2fe3c30da 100644 --- a/packages/vite-plugin-angular/src/lib/angular-jit-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-jit-plugin.ts @@ -45,10 +45,16 @@ export function jitPlugin({ ); styles = compiled?.code; } catch (e) { + const errorMessage = e instanceof Error ? e.message : String(e); debugStyles('jit css compilation error', { styleIdHash, - error: String(e), + error: errorMessage, }); + console.warn( + '[@analogjs/vite-plugin-angular]: Failed to preprocess inline JIT stylesheet %s. Returning an empty stylesheet instead. %s', + styleIdHash, + errorMessage, + ); } return `export default \`${styles}\``; diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts index a10460edb..9f1790cc8 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts @@ -1,45 +1,86 @@ -import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { afterEach, beforeEach, describe, it, expect, vi } from 'vitest'; +import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; import type { Plugin } from 'vite'; import { angular, createFsWatcherCacheInvalidator, + findBoundClassAndNgClassConflicts, + findStaticClassAndBoundClassConflicts, + findTemplateOwnerModules, + findComponentStylesheetWrapperModules, + getModulesForChangedFile, + isModuleForChangedResource, + isIgnoredHmrFile, mapTemplateUpdatesToFiles, + normalizeIncludeGlob, + refreshStylesheetRegistryForFile, toAngularCompilationFileReplacements, isTestWatchMode, } from './angular-vite-plugin'; +import { AnalogStylesheetRegistry } from './stylesheet-registry.js'; + +const hmrPluginNames = [ + '@analogjs/vite-plugin-angular:hmr-vite-ignore', + 'analogjs-live-reload-plugin', +]; +const originalNodeEnv = process.env['NODE_ENV']; +const originalVitestEnv = process.env['VITEST']; describe('angularVitePlugin', () => { it('should work', () => { - expect(angular()[0].name).toEqual('@analogjs/vite-plugin-angular'); + expect(angular().map((plugin) => plugin.name)).toContain( + '@analogjs/vite-plugin-angular', + ); }); }); describe('hmr option', () => { + beforeEach(() => { + process.env['NODE_ENV'] = 'development'; + delete process.env['VITEST']; + }); + + afterEach(() => { + if (typeof originalNodeEnv === 'undefined') { + delete process.env['NODE_ENV']; + } else { + process.env['NODE_ENV'] = originalNodeEnv; + } + + if (typeof originalVitestEnv === 'undefined') { + delete process.env['VITEST']; + } else { + process.env['VITEST'] = originalVitestEnv; + } + }); + it('disables HMR helper plugins when hmr is false', () => { const plugins = angular({ hmr: false }); const names = plugins.map((plugin) => plugin.name); - expect(names).not.toContain( - '@analogjs/vite-plugin-angular:hmr-vite-ignore', - ); - expect(names).not.toContain('analogjs-live-reload-plugin'); + expect(names).toEqual(expect.not.arrayContaining(hmrPluginNames)); + }); + + it('enables HMR helper plugins by default', () => { + const names = angular().map((plugin) => plugin.name); + + expect(names).toEqual(expect.arrayContaining(hmrPluginNames)); }); - it('accepts liveReload as a compatibility alias', () => { + it('accepts liveReload as a compatibility alias for HMR', () => { const plugins = angular({ liveReload: true }); const names = plugins.map((plugin) => plugin.name); - expect(names).toContain('@analogjs/vitest-angular-esm-plugin'); + expect(names).toEqual(expect.arrayContaining(hmrPluginNames)); }); it('prefers hmr over liveReload when both are provided', () => { const plugins = angular({ hmr: false, liveReload: true }); const names = plugins.map((plugin) => plugin.name); - expect(names).not.toContain( - '@analogjs/vite-plugin-angular:hmr-vite-ignore', - ); - expect(names).not.toContain('analogjs-live-reload-plugin'); + expect(names).toEqual(expect.not.arrayContaining(hmrPluginNames)); }); }); @@ -87,6 +128,298 @@ describe('isTestWatchMode', () => { }); }); +describe('normalizeIncludeGlob', () => { + const workspaceRoot = '/workspace/analog'; + + it('leaves workspace-rooted globs unchanged', () => { + expect( + normalizeIncludeGlob(workspaceRoot, '/workspace/analog/libs/**'), + ).toBe('/workspace/analog/libs/**'); + }); + + it('prefixes workspace-relative globs that start with a slash', () => { + expect(normalizeIncludeGlob(workspaceRoot, '/libs/**')).toBe( + '/workspace/analog/libs/**', + ); + }); + + it('resolves bare relative globs against the workspace root', () => { + expect(normalizeIncludeGlob(workspaceRoot, 'libs/**')).toBe( + '/workspace/analog/libs/**', + ); + }); +}); + +describe('isIgnoredHmrFile', () => { + it('ignores TypeScript build info files', () => { + expect( + isIgnoredHmrFile('/workspace/apps/demo/tsconfig.app.tsbuildinfo'), + ).toBe(true); + }); + + it('does not ignore normal TypeScript source files', () => { + expect( + isIgnoredHmrFile('/workspace/apps/demo/src/app/app.component.ts'), + ).toBe(false); + }); +}); + +describe('getModulesForChangedFile', () => { + it('includes module-graph entries when the watcher event omits direct css modules', async () => { + const directModule = { + id: '/workspace/apps/demo/src/app/demo.component.css?direct&ngcomp=ng-c1&e=0', + file: '/workspace/apps/demo/src/app/demo.component.css', + url: '/src/app/demo.component.css?direct&ngcomp=ng-c1&e=0', + type: 'css', + } as any; + const sourceModule = { + id: '/workspace/apps/demo/src/app/demo.component.css', + file: '/workspace/apps/demo/src/app/demo.component.css', + url: '/src/app/demo.component.css', + type: 'css', + } as any; + const server = { + moduleGraph: { + getModulesByFile: vi.fn().mockReturnValue(new Set([directModule])), + getModuleByUrl: vi.fn(), + getModuleById: vi.fn(), + }, + } as any; + + const result = await getModulesForChangedFile( + server, + '/workspace/apps/demo/src/app/demo.component.css', + [sourceModule], + ); + + expect(result).toEqual([sourceModule, directModule]); + expect(server.moduleGraph.getModulesByFile).toHaveBeenCalledWith( + '/workspace/apps/demo/src/app/demo.component.css', + ); + }); + + it('deduplicates modules by id across watcher and module-graph sources', async () => { + const sharedModule = { + id: '/workspace/apps/demo/src/app/demo.component.css', + file: '/workspace/apps/demo/src/app/demo.component.css', + } as any; + const server = { + moduleGraph: { + getModulesByFile: vi.fn().mockReturnValue(new Set([sharedModule])), + getModuleByUrl: vi.fn(), + getModuleById: vi.fn(), + }, + } as any; + + const result = await getModulesForChangedFile( + server, + '/workspace/apps/demo/src/app/demo.component.css', + [sharedModule], + ); + + expect(result).toEqual([sharedModule]); + }); + + it('includes tracked virtual stylesheet modules for a changed source stylesheet', async () => { + const virtualModule = { + id: '/abc123.css?ngcomp=ng-c1&e=0', + file: '/abc123.css', + url: '/abc123.css?ngcomp=ng-c1&e=0', + type: 'js', + } as any; + const server = { + moduleGraph: { + getModulesByFile: vi.fn().mockReturnValue(undefined), + getModuleByUrl: vi.fn().mockImplementation((id: string) => { + return id === '/abc123.css?ngcomp=ng-c1&e=0' + ? virtualModule + : undefined; + }), + getModuleById: vi.fn().mockImplementation((id: string) => { + return id === '/abc123.css?ngcomp=ng-c1&e=0' + ? virtualModule + : undefined; + }), + }, + } as any; + const stylesheetRegistry = { + getRequestIdsForSource: vi + .fn() + .mockReturnValue(['abc123.css?ngcomp=ng-c1&e=0']), + } as any; + + const result = await getModulesForChangedFile( + server, + '/workspace/apps/demo/src/app/demo.component.css', + [], + stylesheetRegistry, + ); + + expect(result).toEqual([virtualModule]); + expect(stylesheetRegistry.getRequestIdsForSource).toHaveBeenCalledWith( + '/workspace/apps/demo/src/app/demo.component.css', + ); + expect(server.moduleGraph.getModuleById).toHaveBeenCalledWith( + 'abc123.css?ngcomp=ng-c1&e=0', + ); + expect(server.moduleGraph.getModuleByUrl).toHaveBeenCalledWith( + '/abc123.css?ngcomp=ng-c1&e=0', + ); + expect(server.moduleGraph.getModuleById).not.toHaveBeenCalledWith( + '/abc123.css?ngcomp=ng-c1&e=0', + ); + }); + + it('falls back to getModuleById when getModuleByUrl misses a tracked request id', async () => { + const virtualModule = { + id: '/abc123.css?direct&ngcomp=ng-c1&e=0', + file: '/abc123.css', + url: '/abc123.css?direct&ngcomp=ng-c1&e=0', + type: 'css', + } as any; + const server = { + moduleGraph: { + getModulesByFile: vi.fn().mockReturnValue(undefined), + getModuleByUrl: vi.fn().mockResolvedValue(undefined), + getModuleById: vi.fn().mockImplementation((id: string) => { + return id === '/abc123.css?direct&ngcomp=ng-c1&e=0' + ? virtualModule + : undefined; + }), + }, + } as any; + const stylesheetRegistry = { + getRequestIdsForSource: vi + .fn() + .mockReturnValue(['abc123.css?direct&ngcomp=ng-c1&e=0']), + } as any; + + const result = await getModulesForChangedFile( + server, + '/workspace/apps/demo/src/app/demo.component.css', + [], + stylesheetRegistry, + ); + + expect(result).toEqual([virtualModule]); + expect(server.moduleGraph.getModuleByUrl).toHaveBeenCalledWith( + 'abc123.css?direct&ngcomp=ng-c1&e=0', + ); + expect(server.moduleGraph.getModuleByUrl).toHaveBeenCalledWith( + '/abc123.css?direct&ngcomp=ng-c1&e=0', + ); + expect(server.moduleGraph.getModuleById).toHaveBeenCalledWith( + 'abc123.css?direct&ngcomp=ng-c1&e=0', + ); + expect(server.moduleGraph.getModuleById).toHaveBeenCalledWith( + '/abc123.css?direct&ngcomp=ng-c1&e=0', + ); + }); +}); + +describe('isModuleForChangedResource', () => { + it('matches a virtual component stylesheet module back to its source css file', () => { + const mod = { + id: '/abc123.css?direct&ngcomp=ng-c1&e=0', + file: '/abc123.css', + type: 'css', + } as any; + const stylesheetRegistry = { + resolveExternalSource: vi.fn().mockImplementation((id: string) => { + return id === 'abc123.css' + ? '/workspace/apps/demo/src/app/demo.component.css' + : undefined; + }), + } as any; + + expect( + isModuleForChangedResource( + mod, + '/workspace/apps/demo/src/app/demo.component.css', + stylesheetRegistry, + ), + ).toBe(true); + }); +}); + +describe('findComponentStylesheetWrapperModules', () => { + it('recovers the js wrapper module from a direct stylesheet request id', async () => { + const wrapperModule = { + id: '/abc123.css?ngcomp=ng-c1&e=0', + file: '/abc123.css', + url: '/abc123.css?ngcomp=ng-c1&e=0', + type: 'js', + } as any; + const directModule = { + id: '/abc123.css?direct&ngcomp=ng-c1&e=0', + file: '/abc123.css', + url: '/abc123.css?direct&ngcomp=ng-c1&e=0', + type: 'css', + } as any; + const server = { + moduleGraph: { + getModuleByUrl: vi.fn().mockImplementation((id: string) => { + return id === '/abc123.css?ngcomp=ng-c1&e=0' + ? wrapperModule + : undefined; + }), + getModuleById: vi.fn(), + }, + } as any; + const stylesheetRegistry = { + resolveExternalSource: vi.fn().mockImplementation((id: string) => { + return id === 'abc123.css' + ? '/workspace/apps/demo/src/app/demo.component.css' + : undefined; + }), + getRequestIdsForSource: vi + .fn() + .mockReturnValue(['/abc123.css?direct&ngcomp=ng-c1&e=0']), + } as any; + + const result = await findComponentStylesheetWrapperModules( + server, + '/workspace/apps/demo/src/app/demo.component.css', + directModule, + [directModule], + stylesheetRegistry, + ); + + expect(result).toEqual([wrapperModule]); + expect(server.moduleGraph.getModuleByUrl).toHaveBeenCalledWith( + '/abc123.css?ngcomp=ng-c1&e=0', + ); + }); +}); + +describe('refreshStylesheetRegistryForFile', () => { + it('updates served stylesheet content from the changed source file', () => { + const tempDir = mkdtempSync(join(tmpdir(), 'analog-styles-')); + const stylesheetPath = join(tempDir, 'demo.component.css'); + writeFileSync(stylesheetPath, '.demo { color: red; }', 'utf-8'); + + const registry = new AnalogStylesheetRegistry(); + registry.registerServedStylesheet( + { + publicId: 'abc123.css', + sourcePath: stylesheetPath, + normalizedCode: '.demo { color: blue; }', + }, + [stylesheetPath, stylesheetPath.replace(/^\//, '')], + ); + + try { + refreshStylesheetRegistryForFile(stylesheetPath, registry); + + expect(registry.getServedContent('abc123.css')).toBe( + '.demo { color: red; }', + ); + } finally { + rmSync(tempDir, { recursive: true, force: true }); + } + }); +}); + describe('JIT resolveId', () => { it('should resolve style files with ?inline suffix (single ?)', () => { const plugins = angular({ jit: true }); @@ -289,6 +622,308 @@ describe('mapTemplateUpdatesToFiles', () => { }); }); +describe('findTemplateOwnerModules', () => { + it('maps an external html template back to its ts owner module', () => { + const ownerModule = { + id: '/workspace/apps/demo/src/app/demo.component.ts', + file: '/workspace/apps/demo/src/app/demo.component.ts', + } as any; + const server = { + moduleGraph: { + getModulesByFile: vi.fn().mockReturnValue(new Set([ownerModule])), + }, + } as any; + + const result = findTemplateOwnerModules( + server, + '/workspace/apps/demo/src/app/demo.component.html', + ); + + expect(server.moduleGraph.getModulesByFile).toHaveBeenCalledWith( + '/workspace/apps/demo/src/app/demo.component.ts', + ); + expect(result).toEqual([ownerModule]); + }); + + it('returns no owners when the module graph has no matching ts module', () => { + const server = { + moduleGraph: { + getModulesByFile: vi.fn().mockReturnValue(undefined), + }, + } as any; + + const result = findTemplateOwnerModules( + server, + '/workspace/apps/demo/src/app/demo.component.html', + ); + + expect(result).toEqual([]); + }); +}); + +describe('findStaticClassAndBoundClassConflicts', () => { + it('detects an element that mixes static class and [class]', () => { + const template = `
`; + + expect(findStaticClassAndBoundClassConflicts(template)).toEqual([ + expect.objectContaining({ + line: 1, + snippet: `
`, + }), + ]); + }); + + it('does not flag static class with explicit [class.foo] bindings', () => { + const template = `
`; + + expect(findStaticClassAndBoundClassConflicts(template)).toEqual([]); + }); +}); + +describe('findBoundClassAndNgClassConflicts', () => { + it('detects an element that mixes [class] and [ngClass]', () => { + const template = `
`; + + expect(findBoundClassAndNgClassConflicts(template)).toEqual([ + expect.objectContaining({ + line: 1, + snippet: `
`, + }), + ]); + }); + + it('does not flag [class.foo] with [ngClass]', () => { + const template = `
`; + + expect(findBoundClassAndNgClassConflicts(template)).toEqual([]); + }); +}); + +describe('template class binding guard plugin', () => { + it('throws for inline templates that mix static class and [class]', () => { + const plugin = angular().find( + (p) => + p.name === '@analogjs/vite-plugin-angular:template-class-binding-guard', + ) as Plugin; + + const transform = + typeof plugin.transform === 'function' + ? plugin.transform + : (plugin.transform as any)?.handler; + + expect(() => + transform.call( + {} as any, + ` + @Component({ + template: \`
\` + }) + export class DemoComponent {} + `, + '/workspace/apps/demo/src/app/demo.component.ts', + ), + ).toThrow(/Invalid template class binding/); + }); + + it('throws for external html templates that mix static class and [class]', () => { + const plugin = angular().find( + (p) => + p.name === '@analogjs/vite-plugin-angular:template-class-binding-guard', + ) as Plugin; + + const transform = + typeof plugin.transform === 'function' + ? plugin.transform + : (plugin.transform as any)?.handler; + + expect(() => + transform.call( + {} as any, + `
`, + '/workspace/apps/demo/src/app/demo.component.html', + ), + ).toThrow(/Use `\[ngClass\]` or explicit `\[class\.foo\]` bindings/); + }); + + it('warns for external html templates that mix [class] and [ngClass]', () => { + const plugin = angular().find( + (p) => + p.name === '@analogjs/vite-plugin-angular:template-class-binding-guard', + ) as Plugin; + + const transform = + typeof plugin.transform === 'function' + ? plugin.transform + : (plugin.transform as any)?.handler; + const warn = vi.fn(); + + transform.call( + { warn } as any, + `
`, + '/workspace/apps/demo/src/app/demo.component.html', + ); + + expect(warn).toHaveBeenCalledWith( + expect.stringMatching(/Conflicting class composition/), + ); + }); + + it('throws for selectorless non-page components', () => { + const plugin = angular().find( + (p) => + p.name === '@analogjs/vite-plugin-angular:template-class-binding-guard', + ) as Plugin; + + const transform = + typeof plugin.transform === 'function' + ? plugin.transform + : (plugin.transform as any)?.handler; + expect(() => + transform.call( + { warn: vi.fn() } as any, + ` + @Component({ + template: '
' + }) + export class DemoDialogComponent {} + `, + '/workspace/libs/demo/src/lib/demo-dialog.component.ts', + ), + ).toThrow(/Selectorless component detected/); + }); + + it('allows selectorless page components', () => { + const plugin = angular().find( + (p) => + p.name === '@analogjs/vite-plugin-angular:template-class-binding-guard', + ) as Plugin; + + const transform = + typeof plugin.transform === 'function' + ? plugin.transform + : (plugin.transform as any)?.handler; + + expect(() => + transform.call( + { warn: vi.fn() } as any, + ` + @Component({ + template: '
Page
' + }) + export default class DemoPageComponent {} + `, + '/workspace/apps/demo/src/app/pages/demo.page.ts', + ), + ).not.toThrow(); + }); + + it('allows selectorless components inside pages directories', () => { + const plugin = angular().find( + (p) => + p.name === '@analogjs/vite-plugin-angular:template-class-binding-guard', + ) as Plugin; + + const transform = + typeof plugin.transform === 'function' + ? plugin.transform + : (plugin.transform as any)?.handler; + + expect(() => + transform.call( + { warn: vi.fn() } as any, + ` + @Component({ + imports: [RouterOutlet], + template: '' + }) + export default class DemoShellComponent {} + `, + '/workspace/apps/demo/src/app/pages/(shell).ts', + ), + ).not.toThrow(); + }); + + it('throws for duplicate selectors in the active graph', () => { + const plugin = angular().find( + (p) => + p.name === '@analogjs/vite-plugin-angular:template-class-binding-guard', + ) as Plugin; + + const transform = + typeof plugin.transform === 'function' + ? plugin.transform + : (plugin.transform as any)?.handler; + + transform.call( + { warn: vi.fn() } as any, + ` + @Component({ + selector: 'demo-card', + template: '
' + }) + export class DemoCardComponent {} + `, + '/workspace/libs/demo/src/lib/demo-card.component.ts', + ); + + expect(() => + transform.call( + { warn: vi.fn() } as any, + ` + @Component({ + selector: 'demo-card', + template: '
' + }) + export class DemoCardCloneComponent {} + `, + '/workspace/libs/demo/src/lib/demo-card-clone.component.ts', + ), + ).toThrow(/Duplicate component selector detected/); + }); + + it('warns for duplicate component class names in the active graph', () => { + const plugin = angular().find( + (p) => + p.name === '@analogjs/vite-plugin-angular:template-class-binding-guard', + ) as Plugin; + + const transform = + typeof plugin.transform === 'function' + ? plugin.transform + : (plugin.transform as any)?.handler; + const firstWarn = vi.fn(); + const secondWarn = vi.fn(); + + transform.call( + { warn: firstWarn } as any, + ` + @Component({ + selector: 'demo-alpha', + template: '
' + }) + export class DemoSharedComponent {} + `, + '/workspace/libs/demo/src/lib/demo-alpha.component.ts', + ); + + transform.call( + { warn: secondWarn } as any, + ` + @Component({ + selector: 'demo-beta', + template: '
' + }) + export class DemoSharedComponent {} + `, + '/workspace/libs/demo/src/lib/demo-beta.component.ts', + ); + + expect(secondWarn).toHaveBeenCalledWith( + expect.stringMatching(/Duplicate component class name detected/), + ); + }); +}); + // ============================================================================= // Tailwind CSS @reference injection // diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts index 12798af6c..c8abdcf82 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts @@ -1,6 +1,13 @@ import { NgtscProgram } from '@angular/compiler-cli'; import { union } from 'es-toolkit'; -import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { createHash } from 'node:crypto'; +import { + existsSync, + mkdirSync, + readFileSync, + statSync, + writeFileSync, +} from 'node:fs'; import { basename, dirname, @@ -34,6 +41,7 @@ import { createRolldownCompilerPlugin, } from './compiler-plugin.js'; import { + getAngularComponentMetadata, StyleUrlsResolver, TemplateUrlsResolver, } from './component-resolvers.js'; @@ -221,6 +229,27 @@ export interface PluginOptions { }; } +export function normalizeIncludeGlob( + workspaceRoot: string, + glob: string, +): string { + const normalizedWorkspaceRoot = normalizePath(resolve(workspaceRoot)); + const normalizedGlob = normalizePath(glob); + + if ( + normalizedGlob === normalizedWorkspaceRoot || + normalizedGlob.startsWith(`${normalizedWorkspaceRoot}/`) + ) { + return normalizedGlob; + } + + if (normalizedGlob.startsWith('/')) { + return `${normalizedWorkspaceRoot}${normalizedGlob}`; + } + + return normalizePath(resolve(normalizedWorkspaceRoot, normalizedGlob)); +} + /** * TypeScript file extension regex * Match .(c or m)ts, .ts extensions with an optional ? for query params @@ -229,6 +258,10 @@ export interface PluginOptions { const TS_EXT_REGEX = /\.[cm]?(ts)[^x]?\??/; const classNames = new Map(); +export function isIgnoredHmrFile(file: string): boolean { + return file.endsWith('.tsbuildinfo'); +} + interface DeclarationFile { declarationFileDir: string; declarationPath: string; @@ -381,6 +414,18 @@ export function angular(options?: PluginOptions): Plugin[] { } let watchMode = false; let testWatchMode = isTestWatchMode(); + // Dev-time component identity index for the currently active Vite graph. + // We intentionally populate this during the pre-transform pass instead of a + // workspace-wide scan so diagnostics stay tied to the app the developer is + // actually serving, and so they track hot-updated files incrementally. + const activeGraphComponentMetadata = new Map< + string, + ActiveGraphComponentRecord[] + >(); + const selectorOwners = new Map>(); + const classNameOwners = new Map>(); + const transformedStyleOwnerMetadata = new Map(); + const styleSourceOwners = new Map>(); function shouldEnableHmr(): boolean { const effectiveWatchMode = isTest ? testWatchMode : watchMode; @@ -516,6 +561,121 @@ export function angular(options?: PluginOptions): Plugin[] { } } + function isLikelyPageOnlyComponent(id: string): boolean { + return ( + id.includes('/pages/') || + /\.page\.[cm]?[jt]sx?$/i.test(id) || + /\([^/]+\)\.page\.[cm]?[jt]sx?$/i.test(id) + ); + } + + function removeActiveGraphMetadata(file: string) { + const previous = activeGraphComponentMetadata.get(file); + if (!previous) { + return; + } + + for (const record of previous) { + const location = `${record.file}#${record.className}`; + if (record.selector) { + const selectorSet = selectorOwners.get(record.selector); + selectorSet?.delete(location); + if (selectorSet?.size === 0) { + selectorOwners.delete(record.selector); + } + } + + const classNameSet = classNameOwners.get(record.className); + classNameSet?.delete(location); + if (classNameSet?.size === 0) { + classNameOwners.delete(record.className); + } + } + + activeGraphComponentMetadata.delete(file); + } + + function registerActiveGraphMetadata( + file: string, + records: ActiveGraphComponentRecord[], + ) { + removeActiveGraphMetadata(file); + + if (records.length === 0) { + return; + } + + activeGraphComponentMetadata.set(file, records); + + for (const record of records) { + const location = `${record.file}#${record.className}`; + + if (record.selector) { + let selectorSet = selectorOwners.get(record.selector); + if (!selectorSet) { + selectorSet = new Set(); + selectorOwners.set(record.selector, selectorSet); + } + selectorSet.add(location); + } + + let classNameSet = classNameOwners.get(record.className); + if (!classNameSet) { + classNameSet = new Set(); + classNameOwners.set(record.className, classNameSet); + } + classNameSet.add(location); + } + } + + function removeStyleOwnerMetadata(file: string) { + const previous = transformedStyleOwnerMetadata.get(file); + if (!previous) { + return; + } + + for (const record of previous) { + const owners = styleSourceOwners.get(record.sourcePath); + owners?.delete(record.ownerFile); + if (owners?.size === 0) { + styleSourceOwners.delete(record.sourcePath); + } + } + + transformedStyleOwnerMetadata.delete(file); + } + + function registerStyleOwnerMetadata(file: string, styleUrls: string[]) { + removeStyleOwnerMetadata(file); + + const records = styleUrls + .map((urlSet) => { + const [, absoluteFileUrl] = urlSet.split('|'); + return absoluteFileUrl + ? { + ownerFile: file, + sourcePath: normalizePath(absoluteFileUrl), + } + : undefined; + }) + .filter((record): record is StyleOwnerRecord => !!record); + + if (records.length === 0) { + return; + } + + transformedStyleOwnerMetadata.set(file, records); + + for (const record of records) { + let owners = styleSourceOwners.get(record.sourcePath); + if (!owners) { + owners = new Set(); + styleSourceOwners.set(record.sourcePath, owners); + } + owners.add(record.ownerFile); + } + } + let stylesheetRegistry: AnalogStylesheetRegistry | undefined; const sourceFileCache: SourceFileCacheType = new SourceFileCache(); const isTest = process.env['NODE_ENV'] === 'test' || !!process.env['VITEST']; @@ -555,8 +715,16 @@ export function angular(options?: PluginOptions): Plugin[] { function angularPlugin(): Plugin { let isProd = false; - if (angularFullVersion < 190000) { + if (angularFullVersion < 190000 && pluginOptions.hmr) { // Angular < 19 does not support externalRuntimeStyles or _enableHmr. + debugHmr('hmr disabled: Angular version does not support HMR APIs', { + angularVersion: angularFullVersion, + isTest, + }); + console.warn( + '[@analogjs/vite-plugin-angular]: HMR was disabled because Angular v19+ is required for externalRuntimeStyles/_enableHmr support. Detected Angular version: %s.', + angularFullVersion, + ); pluginOptions.hmr = false; } @@ -745,6 +913,11 @@ export function angular(options?: PluginOptions): Plugin[] { } }, async handleHotUpdate(ctx) { + if (isIgnoredHmrFile(ctx.file)) { + debugHmr('ignored file change', { file: ctx.file }); + return []; + } + if (TS_EXT_REGEX.test(ctx.file)) { const [fileId] = ctx.file.split('?'); debugHmr('TS file changed', { file: ctx.file, fileId }); @@ -762,6 +935,22 @@ export function angular(options?: PluginOptions): Plugin[] { hmrEligible: !!result?.hmrEligible, hasClassName: !!classNames.get(fileId), }); + debugHmrV('ts hmr evaluation', { + file: ctx.file, + fileId, + hasResult: !!result, + hmrEligible: !!result?.hmrEligible, + hasClassName: !!classNames.get(fileId), + className: classNames.get(fileId), + updateCode: result?.hmrUpdateCode + ? describeStylesheetContent(result.hmrUpdateCode) + : undefined, + errors: result?.errors?.length ?? 0, + warnings: result?.warnings?.length ?? 0, + hint: result?.hmrEligible + ? 'A TS-side component change, including inline template edits, produced an Angular HMR payload.' + : 'No Angular HMR payload was emitted for this TS change; the change may not affect component template state.', + }); } if ( @@ -774,6 +963,12 @@ export function angular(options?: PluginOptions): Plugin[] { )}@${classNames.get(fileId)}`; debugHmr('sending component update', { relativeFileId }); + debugHmrV('ts hmr component update payload', { + file: ctx.file, + fileId, + relativeFileId, + className: classNames.get(fileId), + }); sendHMRComponentUpdate(ctx.server, relativeFileId); return ctx.modules.map((mod) => { @@ -789,70 +984,343 @@ export function angular(options?: PluginOptions): Plugin[] { if (/\.(html|htm|css|less|sass|scss)$/.test(ctx.file)) { debugHmr('resource file changed', { file: ctx.file }); fileTransformMap.delete(ctx.file.split('?')[0]); + if (/\.(css|less|sass|scss)$/.test(ctx.file)) { + refreshStylesheetRegistryForFile( + ctx.file, + stylesheetRegistry, + pluginOptions.stylePreprocessor, + ); + } + if ( + /\.(css|less|sass|scss)$/.test(ctx.file) && + existsSync(ctx.file) + ) { + try { + const rawResource = readFileSync(ctx.file, 'utf-8'); + debugHmrV('resource source snapshot', { + file: ctx.file, + mtimeMs: safeStatMtimeMs(ctx.file), + ...describeStylesheetContent(rawResource), + }); + } catch (error) { + debugHmrV('resource source snapshot failed', { + file: ctx.file, + error: String(error), + }); + } + } + // Angular component resources frequently enter HMR with incomplete + // watcher context. In practice `ctx.modules` may only contain the + // source file, only the `?direct` module, or nothing at all after a + // TS-driven component refresh. Resolve the full live module set from + // Vite's module graph and our stylesheet registry before deciding how + // to hot update the resource. + const fileModules = await getModulesForChangedFile( + ctx.server, + ctx.file, + ctx.modules, + stylesheetRegistry, + ); + debugHmrV('resource modules resolved', { + file: ctx.file, + eventModuleCount: ctx.modules.length, + fileModuleCount: fileModules.length, + modules: fileModules.map((mod) => ({ + id: mod.id, + file: mod.file, + type: mod.type, + url: mod.url, + })), + }); /** * Check to see if this was a direct request * for an external resource (styles, html). */ - const isDirect = ctx.modules.find( - (mod) => ctx.file === mod.file && mod.id?.includes('?direct'), + const isDirect = fileModules.find( + (mod) => + !!mod.id && + mod.id.includes('?direct') && + isModuleForChangedResource(mod, ctx.file, stylesheetRegistry), ); - const isInline = ctx.modules.find( - (mod) => ctx.file === mod.file && mod.id?.includes('?inline'), + const isInline = fileModules.find( + (mod) => + !!mod.id && + mod.id.includes('?inline') && + isModuleForChangedResource(mod, ctx.file, stylesheetRegistry), ); + debugHmrV('resource direct/inline detection', { + file: ctx.file, + hasDirect: !!isDirect, + directId: isDirect?.id, + hasInline: !!isInline, + inlineId: isInline?.id, + }); if (isDirect || isInline) { if (shouldExternalizeStyles() && isDirect?.id && isDirect.file) { const isComponentStyle = isDirect.type === 'css' && isComponentStyleSheet(isDirect.id); + debugHmrV('resource direct branch', { + file: ctx.file, + directId: isDirect.id, + directType: isDirect.type, + shouldExternalize: shouldExternalizeStyles(), + isComponentStyle, + }); if (isComponentStyle) { const { encapsulation } = getComponentStyleSheetMeta( isDirect.id, ); + // Angular component styles are served through two live module + // shapes: + // 1. a `?direct&ngcomp=...` CSS module that Vite can patch with + // a normal `css-update` + // 2. a `?ngcomp=...` JS wrapper module that embeds `__vite__css` + // for Angular's runtime consumption + // + // If we only patch the direct CSS module, the browser can keep + // running a stale wrapper whose embedded CSS no longer matches + // the source file. We therefore invalidate any wrapper modules + // that map back to the same source stylesheet before sending + // the CSS update. + const wrapperModules = + await findComponentStylesheetWrapperModules( + ctx.server, + ctx.file, + isDirect, + fileModules, + stylesheetRegistry, + ); + const stylesheetDiagnosis = diagnoseComponentStylesheetPipeline( + ctx.file, + isDirect, + stylesheetRegistry, + wrapperModules, + pluginOptions.stylePreprocessor, + ); debugStylesV('HMR: component stylesheet changed', { file: isDirect.file, encapsulation, }); + debugHmrV('component stylesheet wrapper modules', { + file: ctx.file, + wrapperCount: wrapperModules.length, + wrapperIds: wrapperModules.map((mod) => mod.id), + availableModuleIds: fileModules.map((mod) => mod.id), + }); + debugHmrV( + 'component stylesheet pipeline diagnosis', + stylesheetDiagnosis, + ); + + // The stylesheet registry may already hold the fresh served CSS + // while Vite still has a stale transform result cached for the + // direct `?direct&ngcomp=...` module id. Invalidate the direct + // module up front so subsequent wrapper generation and explicit + // fetches cannot keep serving the pre-edit CSS payload. + ctx.server.moduleGraph.invalidateModule(isDirect); + debugHmrV('component stylesheet direct module invalidated', { + file: ctx.file, + directModuleId: isDirect.id, + directModuleUrl: isDirect.url, + reason: + 'Ensure Vite drops stale direct CSS transform results before wrapper or fallback handling continues.', + }); // Track if the component uses ShadowDOM encapsulation // Shadow DOM components currently require a full reload. // Vite's CSS hot replacement does not support shadow root searching. - if (encapsulation !== 'shadow') { - ctx.server.ws.send({ - type: 'update', - updates: [ - { - type: 'css-update', - timestamp: Date.now(), - path: isDirect.url, - acceptedPath: isDirect.file, - }, - ], + const trackedWrapperRequestIds = + stylesheetDiagnosis.trackedRequestIds.filter((id) => + id.includes('?ngcomp='), + ); + const canUseCssUpdate = + encapsulation !== 'shadow' && + (wrapperModules.length > 0 || + trackedWrapperRequestIds.length > 0); + + if (canUseCssUpdate) { + wrapperModules.forEach((mod) => + ctx.server.moduleGraph.invalidateModule(mod), + ); + // A live wrapper ModuleNode is ideal because we can + // invalidate it directly, but it is not strictly required. + // When the browser has already loaded the wrapper URL and the + // registry knows that wrapper request id, a normal CSS patch + // against the direct stylesheet is still the most accurate + // update path available. Falling back to full reload in that + // state is needlessly pessimistic and causes the exact UX + // regression we are trying to eliminate. + debugHmrV('sending css-update for component stylesheet', { + file: ctx.file, + path: isDirect.url, + acceptedPath: isDirect.file, + wrapperCount: wrapperModules.length, + trackedWrapperRequestIds, + hint: + wrapperModules.length > 0 + ? 'Live wrapper modules were found and invalidated before sending the CSS update.' + : 'No live wrapper ModuleNode was available, but the wrapper request id is already tracked, so Analog is trusting the browser-visible wrapper identity and patching the direct stylesheet instead of forcing a reload.', }); + sendCssUpdate(ctx.server, { + path: isDirect.url, + acceptedPath: isDirect.file, + }); + logComponentStylesheetHmrOutcome({ + file: ctx.file, + encapsulation, + diagnosis: stylesheetDiagnosis, + outcome: 'css-update', + directModuleId: isDirect.id, + wrapperIds: wrapperModules.map((mod) => mod.id), + }); + + return union( + fileModules + .filter((mod) => { + // Component stylesheets will have 2 modules (*.component.scss and *.component.scss?direct&ngcomp=xyz&e=x) + // We remove the module with the query params to prevent vite double logging the stylesheet name "hmr update *.component.scss, *.component.scss?direct&ngcomp=xyz&e=x" + return mod.file !== ctx.file || mod.id !== isDirect.id; + }) + .map((mod) => { + if (mod.file === ctx.file) { + return markModuleSelfAccepting(mod); + } + return mod; + }) as ModuleNode[], + wrapperModules.map((mod) => markModuleSelfAccepting(mod)), + ); + } + + // A direct CSS patch without the browser-visible `?ngcomp=...` + // wrapper module is not trustworthy. Angular consumes the + // wrapper JS module, which embeds `__vite__css` for runtime + // style application. When that wrapper is missing from the live + // module graph, prefer correctness over a partial update and + // force a reload so the component re-evaluates with fresh CSS. + debugHmrV('component stylesheet hmr fallback: full reload', { + file: ctx.file, + encapsulation, + reason: + trackedWrapperRequestIds.length === 0 + ? 'missing-wrapper-module' + : encapsulation === 'shadow' + ? 'shadow-encapsulation' + : 'tracked-wrapper-still-not-patchable', + directId: isDirect.id, + trackedRequestIds: + stylesheetRegistry?.getRequestIdsForSource(ctx.file) ?? [], + }); + const ownerModules = findStyleOwnerModules( + ctx.server, + ctx.file, + styleSourceOwners, + ); + debugHmrV('component stylesheet owner fallback lookup', { + file: ctx.file, + ownerCount: ownerModules.length, + ownerIds: ownerModules.map((mod) => mod.id), + ownerFiles: [ + ...(styleSourceOwners.get(normalizePath(ctx.file)) ?? []), + ], + }); - return ctx.modules - .filter((mod) => { - // Component stylesheets will have 2 modules (*.component.scss and *.component.scss?direct&ngcomp=xyz&e=x) - // We remove the module with the query params to prevent vite double logging the stylesheet name "hmr update *.component.scss, *.component.scss?direct&ngcomp=xyz&e=x" - return mod.file !== ctx.file || mod.id !== isDirect.id; - }) - .map((mod) => { - if (mod.file === ctx.file) { - return markModuleSelfAccepting(mod); - } - return mod; - }) as ModuleNode[]; + if (ownerModules.length > 0) { + pendingCompilation = performCompilation(resolvedConfig, [ + ...ownerModules.map((mod) => mod.id).filter(Boolean), + ]); + await pendingCompilation; + pendingCompilation = null; + + const updates = ownerModules + .map((mod) => mod.id) + .filter((id): id is string => !!id && !!classNames.get(id)); + const derivedUpdates = ownerModules + .map((mod) => mod.id) + .filter((id): id is string => !!id) + .flatMap((ownerId) => + resolveComponentClassNamesForStyleOwner( + ownerId, + ctx.file, + ).map((className) => ({ + ownerId, + className, + via: 'raw-component-metadata' as const, + })), + ); + debugHmrV('component stylesheet owner fallback compilation', { + file: ctx.file, + ownerIds: ownerModules.map((mod) => mod.id), + updateIds: updates, + classNames: updates.map((id) => ({ + id, + className: classNames.get(id), + })), + derivedUpdates, + }); + // Keep owner recompilation and metadata derivation as + // diagnostics only. For externalized component styles, a + // component-update message is not a safe substitute for a + // missing `?ngcomp=...` wrapper module because Angular can + // re-render the component without forcing the browser to + // re-evaluate the live stylesheet wrapper. That exact shape + // produced false-positive "successful HMR" logs while the UI + // stayed visually stale. If the wrapper is absent, prefer a + // hard reload after gathering the owner evidence needed to + // explain why the fallback was necessary. + if (derivedUpdates.length > 0) { + debugHmrV( + 'component stylesheet owner fallback derived updates', + { + file: ctx.file, + updates: derivedUpdates, + hint: 'Angular did not repopulate classNames during CSS-only owner recompilation, so Analog derived component identities from raw component metadata.', + }, + ); + } } + + logComponentStylesheetHmrOutcome({ + file: ctx.file, + encapsulation, + diagnosis: stylesheetDiagnosis, + outcome: 'full-reload', + directModuleId: isDirect.id, + wrapperIds: wrapperModules.map((mod) => mod.id), + ownerIds: ownerModules.map((mod) => mod.id), + }); + sendFullReload(ctx.server, { + file: ctx.file, + encapsulation, + reason: + wrapperModules.length === 0 + ? 'missing-wrapper-module-and-no-owner-updates' + : 'shadow-encapsulation', + directId: isDirect.id, + trackedRequestIds: + stylesheetRegistry?.getRequestIdsForSource(ctx.file) ?? [], + }); + return []; } } - return ctx.modules; + return fileModules; } if ( shouldEnableHmr() && /\.(html|htm)$/.test(ctx.file) && - ctx.modules.length === 0 + fileModules.length === 0 ) { const ownerModules = findTemplateOwnerModules(ctx.server, ctx.file); + debugHmrV('template owner lookup', { + file: ctx.file, + ownerCount: ownerModules.length, + ownerIds: ownerModules.map((mod) => mod.id), + hint: + ownerModules.length > 0 + ? 'The external template has candidate TS owner modules that can be recompiled for HMR.' + : 'No TS owner modules were visible for this external template change; HMR will fall through to the generic importer path.', + }); if (ownerModules.length > 0) { const ownerIds = ownerModules .map((mod) => mod.id) @@ -867,6 +1335,19 @@ export function angular(options?: PluginOptions): Plugin[] { pendingCompilation = null; const updates = ownerIds.filter((id) => classNames.get(id)); + debugHmrV('template owner recompilation result', { + file: ctx.file, + ownerIds, + updates, + updateClassNames: updates.map((id) => ({ + id, + className: classNames.get(id), + })), + hint: + updates.length > 0 + ? 'External template recompilation produced Angular component update targets.' + : 'External template recompilation completed, but no Angular component update targets were surfaced.', + }); if (updates.length > 0) { debugHmr('template owner module invalidation', { file: ctx.file, @@ -887,7 +1368,7 @@ export function angular(options?: PluginOptions): Plugin[] { const mods: ModuleNode[] = []; const updates: string[] = []; - ctx.modules.forEach((mod) => { + fileModules.forEach((mod) => { mod.importers.forEach((imp) => { ctx.server.moduleGraph.invalidateModule(imp); @@ -898,6 +1379,16 @@ export function angular(options?: PluginOptions): Plugin[] { } }); }); + debugHmrV('resource importer analysis', { + file: ctx.file, + fileModuleCount: fileModules.length, + importerCount: fileModules.reduce( + (count, mod) => count + mod.importers.size, + 0, + ), + updates, + mods: mods.map((mod) => mod.id), + }); pendingCompilation = performCompilation(resolvedConfig, [ ...mods.map((mod) => mod.id).filter(Boolean), @@ -920,7 +1411,7 @@ export function angular(options?: PluginOptions): Plugin[] { sendHMRComponentUpdate(ctx.server, impRelativeFileId); }); - return ctx.modules.map((mod) => { + return fileModules.map((mod) => { if (mod.id === ctx.file) { return markModuleSelfAccepting(mod); } @@ -986,9 +1477,34 @@ export function angular(options?: PluginOptions): Plugin[] { const componentStyles = stylesheetRegistry?.getServedContent(filename); if (componentStyles) { + stylesheetRegistry?.registerActiveRequest(id); + // Register the concrete request id that was just served. During HMR + // the changed file event references the original source stylesheet + // path, but the live browser module graph references hashed + // stylesheet request ids such as `/abc123.css?ngcomp=...`. This is + // the bridge between those two worlds. + debugHmrV('stylesheet active request registered', { + requestId: id, + filename, + sourcePath: + stylesheetRegistry?.resolveExternalSource(filename) ?? + stylesheetRegistry?.resolveExternalSource( + filename.replace(/^\//, ''), + ), + trackedRequestIds: + stylesheetRegistry?.getRequestIdsForSource( + stylesheetRegistry?.resolveExternalSource(filename) ?? + stylesheetRegistry?.resolveExternalSource( + filename.replace(/^\//, ''), + ) ?? + '', + ) ?? [], + }); debugStylesV('load: served inline component stylesheet', { filename, length: componentStyles.length, + requestId: id, + ...describeStylesheetContent(componentStyles), }); return componentStyles; } @@ -1228,6 +1744,142 @@ export function angular(options?: PluginOptions): Plugin[] { return [ replaceFiles(pluginOptions.fileReplacements, pluginOptions.workspaceRoot), + { + name: '@analogjs/vite-plugin-angular:template-class-binding-guard', + enforce: 'pre', + transform(code: string, id: string) { + if (id.includes('node_modules')) { + return; + } + + const cleanId = id.split('?')[0]; + + if (/\.(html|htm)$/i.test(cleanId)) { + const staticClassIssue = + findStaticClassAndBoundClassConflicts(code)[0]; + if (staticClassIssue) { + throwTemplateClassBindingConflict(cleanId, staticClassIssue); + } + + const mixedClassIssue = findBoundClassAndNgClassConflicts(code)[0]; + if (mixedClassIssue) { + this.warn( + [ + '[Analog Angular] Conflicting class composition.', + `File: ${cleanId}:${mixedClassIssue.line}:${mixedClassIssue.column}`, + 'This element mixes `[class]` and `[ngClass]`.', + 'Prefer a single class-binding strategy so class merging stays predictable.', + 'Use one `[ngClass]` expression or explicit `[class.foo]` bindings.', + `Snippet: ${mixedClassIssue.snippet}`, + ].join('\n'), + ); + } + return; + } + + if (TS_EXT_REGEX.test(cleanId)) { + const rawStyleUrls = styleUrlsResolver.resolve(code, cleanId); + registerStyleOwnerMetadata(cleanId, rawStyleUrls); + debugHmrV('component stylesheet owner metadata registered', { + file: cleanId, + styleUrlCount: rawStyleUrls.length, + styleUrls: rawStyleUrls, + ownerSources: [ + ...(transformedStyleOwnerMetadata + .get(cleanId) + ?.map((record) => record.sourcePath) ?? []), + ], + }); + + // Parse raw component decorators before Angular compilation strips + // them. This lets Analog fail fast on template/class-footguns and + // keep a lightweight active-graph index for duplicate selector/class + // diagnostics without requiring a full compiler pass first. + const components = getAngularComponentMetadata(code); + + const inlineTemplateIssue = components.flatMap((component) => + component.inlineTemplates.flatMap((template) => + findStaticClassAndBoundClassConflicts(template), + ), + )[0]; + + if (inlineTemplateIssue) { + throwTemplateClassBindingConflict(cleanId, inlineTemplateIssue); + } + + const mixedInlineClassIssue = components.flatMap((component) => + component.inlineTemplates.flatMap((template) => + findBoundClassAndNgClassConflicts(template), + ), + )[0]; + + if (mixedInlineClassIssue) { + this.warn( + [ + '[Analog Angular] Conflicting class composition.', + `File: ${cleanId}:${mixedInlineClassIssue.line}:${mixedInlineClassIssue.column}`, + 'This element mixes `[class]` and `[ngClass]`.', + 'Prefer a single class-binding strategy so class merging stays predictable.', + 'Use one `[ngClass]` expression or explicit `[class.foo]` bindings.', + `Snippet: ${mixedInlineClassIssue.snippet}`, + ].join('\n'), + ); + } + + const activeGraphRecords = components.map((component) => ({ + file: cleanId, + className: component.className, + selector: component.selector, + })); + + registerActiveGraphMetadata(cleanId, activeGraphRecords); + + for (const component of components) { + if (!component.selector && !isLikelyPageOnlyComponent(cleanId)) { + throw new Error( + [ + '[Analog Angular] Selectorless component detected.', + `File: ${cleanId}`, + `Component: ${component.className}`, + 'This component has no `selector`, so Angular will render it as `ng-component`.', + 'That increases the chance of component ID collisions and makes diagnostics harder to interpret.', + 'Add an explicit selector for reusable components.', + 'Selectorless components are only supported for page and route-only files.', + ].join('\n'), + ); + } + + if (component.selector) { + const selectorEntries = selectorOwners.get(component.selector); + if (selectorEntries && selectorEntries.size > 1) { + throw new Error( + [ + '[Analog Angular] Duplicate component selector detected.', + `Selector: ${component.selector}`, + 'Multiple components in the active application graph use the same selector.', + 'Selectors must be unique within the active graph to avoid ambiguous rendering and confusing diagnostics.', + `Locations:\n${formatActiveGraphLocations(selectorEntries)}`, + ].join('\n'), + ); + } + } + + const classNameEntries = classNameOwners.get(component.className); + if (classNameEntries && classNameEntries.size > 1) { + this.warn( + [ + '[Analog Angular] Duplicate component class name detected.', + `Class name: ${component.className}`, + 'Two or more Angular components in the active graph share the same exported class name.', + 'Rename one of them to keep HMR, stack traces, and compiler diagnostics unambiguous.', + `Locations:\n${formatActiveGraphLocations(classNameEntries)}`, + ].join('\n'), + ); + } + } + } + }, + } satisfies Plugin, // Tailwind CSS v4 @reference injection for direct-file-loaded CSS. // Catches CSS files loaded from disk (not virtual modules) that need // @reference before @tailwindcss/vite processes them. @@ -1343,11 +1995,9 @@ export function angular(options?: PluginOptions): Plugin[] { ].filter(Boolean) as Plugin[]; function findIncludes() { - const workspaceRoot = normalizePath(resolve(pluginOptions.workspaceRoot)); - // Map include patterns to absolute workspace paths - const globs = pluginOptions.include.map( - (glob) => `${workspaceRoot}${glob}`, + const globs = pluginOptions.include.map((glob) => + normalizeIncludeGlob(pluginOptions.workspaceRoot, glob), ); // Discover TypeScript files using tinyglobby @@ -1517,6 +2167,12 @@ export function angular(options?: PluginOptions): Plugin[] { stylesheetId, resourceFile: resourceFile ?? '(inline)', }); + debugStylesV('stylesheet deferred content snapshot', { + stylesheetId, + filename, + resourceFile: resourceFile ?? '(inline)', + ...describeStylesheetContent(preprocessedData), + }); return stylesheetId; } @@ -1659,6 +2315,12 @@ export function angular(options?: PluginOptions): Plugin[] { key, pluginOptions.stylePreprocessor, ); + debugStylesV('external stylesheet raw snapshot', { + angularHash, + resolvedPath: key, + mtimeMs: safeStatMtimeMs(key), + ...describeStylesheetContent(rawCss), + }); if (preprocessed && preprocessed !== rawCss) { preprocessStats.injected++; preprocessed = rewriteRelativeCssImports(preprocessed, key); @@ -1676,10 +2338,19 @@ export function angular(options?: PluginOptions): Plugin[] { { angularHash, resolvedPath: key, + mtimeMs: safeStatMtimeMs(key), + raw: describeStylesheetContent(rawCss), + served: describeStylesheetContent(preprocessed), }, ); } else { preprocessStats.skipped++; + debugStylesV('external stylesheet unchanged after preprocessing', { + angularHash, + resolvedPath: key, + mtimeMs: safeStatMtimeMs(key), + raw: describeStylesheetContent(rawCss), + }); } } catch (e) { preprocessStats.errors++; @@ -2204,7 +2875,436 @@ export function mapTemplateUpdatesToFiles( return updatesByFile; } +/** + * Returns every live Vite module that can legitimately represent a changed + * Angular resource file. + * + * For normal files, `getModulesByFile()` is enough. For Angular component + * stylesheets, it is not: the browser often holds virtual hashed requests + * (`/abc123.css?direct&ngcomp=...` and `/abc123.css?ngcomp=...`) that are no + * longer discoverable from the original source path alone. We therefore merge: + * - watcher event modules + * - module-graph modules by source file + * - registry-tracked live request ids resolved back through the module graph + */ +export async function getModulesForChangedFile( + server: ViteDevServer, + file: string, + eventModules: readonly ModuleNode[] = [], + stylesheetRegistry?: AnalogStylesheetRegistry, +): Promise { + const normalizedFile = normalizePath(file.split('?')[0]); + const modules = new Map(); + + for (const mod of eventModules) { + if (mod.id) { + modules.set(mod.id, mod); + } + } + + server.moduleGraph.getModulesByFile(normalizedFile)?.forEach((mod) => { + if (mod.id) { + modules.set(mod.id, mod); + } + }); + + const stylesheetRequestIds = + stylesheetRegistry?.getRequestIdsForSource(normalizedFile) ?? []; + const requestIdHits: Array<{ + requestId: string; + candidate: string; + via: 'url' | 'id'; + moduleId?: string; + }> = []; + for (const requestId of stylesheetRequestIds) { + const candidates = [ + requestId, + requestId.startsWith('/') ? requestId : `/${requestId}`, + ]; + + for (const candidate of candidates) { + // `getModuleByUrl()` is the important lookup here. Angular's wrapper + // module is served by URL and can be absent from a straight `getModuleById` + // lookup during CSS HMR, even though it is the browser-visible module + // that must be refreshed. We keep `getModuleById()` as a compatibility + // fallback for the simpler direct CSS case. + const mod = + (await server.moduleGraph.getModuleByUrl(candidate)) ?? + server.moduleGraph.getModuleById(candidate); + requestIdHits.push({ + requestId, + candidate, + via: mod?.url === candidate ? 'url' : 'id', + moduleId: mod?.id, + }); + if (mod?.id) { + modules.set(mod.id, mod); + } + } + } + + debugHmrV('getModulesForChangedFile registry lookup', { + file: normalizedFile, + stylesheetRequestIds, + requestIdHits, + resolvedModuleIds: [...modules.keys()], + }); + + return [...modules.values()]; +} + +export function isModuleForChangedResource( + mod: ModuleNode, + changedFile: string, + stylesheetRegistry?: AnalogStylesheetRegistry, +): boolean { + const normalizedChangedFile = normalizePath(changedFile.split('?')[0]); + + if (normalizePath((mod.file ?? '').split('?')[0]) === normalizedChangedFile) { + return true; + } + + if (!mod.id) { + return false; + } + + // Virtual Angular stylesheet modules do not report the original source file + // as `mod.file`; they point at the served hashed stylesheet asset instead. + // Recover the source file through the stylesheet registry so HMR can still + // answer "does this live module belong to the resource that just changed?" + const requestPath = getFilenameFromPath(mod.id); + const sourcePath = + stylesheetRegistry?.resolveExternalSource(requestPath) ?? + stylesheetRegistry?.resolveExternalSource(requestPath.replace(/^\//, '')); + + return ( + normalizePath((sourcePath ?? '').split('?')[0]) === normalizedChangedFile + ); +} + +function describeStylesheetContent(code: string): { + length: number; + digest: string; + preview: string; +} { + return { + length: code.length, + digest: createHash('sha256').update(code).digest('hex').slice(0, 12), + preview: code.replace(/\s+/g, ' ').trim().slice(0, 160), + }; +} + +function safeStatMtimeMs(file: string): number | undefined { + try { + return statSync(file).mtimeMs; + } catch { + return undefined; + } +} + +/** + * Refreshes any already-served stylesheet records that map back to a changed + * source file. + * + * This is the critical bridge for externalized Angular component styles during + * HMR. Angular's resource watcher can notice that `/src/...component.css` + * changed before Angular recompilation has had a chance to repopulate the + * stylesheet registry. If we emit a CSS update against the existing virtual + * stylesheet id without first refreshing the registry content, the browser gets + * a hot update containing stale CSS. By rewriting the existing served records + * from disk up front, HMR always pushes the latest source content. + */ +export function refreshStylesheetRegistryForFile( + file: string, + stylesheetRegistry?: AnalogStylesheetRegistry, + stylePreprocessor?: StylePreprocessor, +): void { + const normalizedFile = normalizePath(file.split('?')[0]); + if (!stylesheetRegistry || !existsSync(normalizedFile)) { + return; + } + + const publicIds = stylesheetRegistry.getPublicIdsForSource(normalizedFile); + if (publicIds.length === 0) { + return; + } + + const rawCss = readFileSync(normalizedFile, 'utf-8'); + let servedCss = preprocessStylesheet( + rawCss, + normalizedFile, + stylePreprocessor, + ); + servedCss = rewriteRelativeCssImports(servedCss, normalizedFile); + + for (const publicId of publicIds) { + stylesheetRegistry.registerServedStylesheet( + { + publicId, + sourcePath: normalizedFile, + originalCode: rawCss, + normalizedCode: servedCss, + }, + [ + normalizedFile, + normalizePath(normalizedFile), + basename(normalizedFile), + normalizedFile.replace(/^\//, ''), + ], + ); + } + + debugStylesV('stylesheet registry refreshed from source file', { + file: normalizedFile, + publicIds, + source: describeStylesheetContent(rawCss), + served: describeStylesheetContent(servedCss), + }); +} + +function diagnoseComponentStylesheetPipeline( + changedFile: string, + directModule: ModuleNode, + stylesheetRegistry: AnalogStylesheetRegistry | undefined, + wrapperModules: ModuleNode[], + stylePreprocessor?: StylePreprocessor, +): { + file: string; + sourcePath?: string; + source?: ReturnType; + registry?: ReturnType; + directModuleId?: string; + directModuleUrl?: string; + trackedRequestIds: string[]; + wrapperCount: number; + anomalies: string[]; + hints: string[]; +} { + const normalizedFile = normalizePath(changedFile.split('?')[0]); + const sourceExists = existsSync(normalizedFile); + const sourceCode = sourceExists + ? readFileSync(normalizedFile, 'utf-8') + : undefined; + + const directRequestPath = directModule.id + ? getFilenameFromPath(directModule.id) + : undefined; + const sourcePath = directRequestPath + ? (stylesheetRegistry?.resolveExternalSource(directRequestPath) ?? + stylesheetRegistry?.resolveExternalSource( + directRequestPath.replace(/^\//, ''), + )) + : normalizedFile; + const registryCode = directRequestPath + ? stylesheetRegistry?.getServedContent(directRequestPath) + : undefined; + const trackedRequestIds = + stylesheetRegistry?.getRequestIdsForSource(sourcePath ?? '') ?? []; + + const anomalies: string[] = []; + const hints: string[] = []; + + if (!sourceExists) { + anomalies.push('source_file_missing'); + hints.push( + 'The stylesheet watcher fired for a file that no longer exists on disk.', + ); + } + + if (!registryCode) { + anomalies.push('registry_content_missing'); + hints.push( + 'The stylesheet registry has no served content for the direct module request path.', + ); + } + + if (sourceCode && registryCode) { + // Compare against the same served representation that the registry stores, + // not the raw file on disk. Analog intentionally prepends `@reference` + // and rewrites relative imports before the stylesheet reaches Vite, so a + // raw-source hash comparison would flag a false positive on every healthy + // update. + let expectedRegistryCode = preprocessStylesheet( + sourceCode, + normalizedFile, + stylePreprocessor, + ); + expectedRegistryCode = rewriteRelativeCssImports( + expectedRegistryCode, + normalizedFile, + ); + const sourceDigest = describeStylesheetContent(expectedRegistryCode).digest; + const registryDigest = describeStylesheetContent(registryCode).digest; + if (sourceDigest !== registryDigest) { + anomalies.push('source_registry_mismatch'); + hints.push( + 'The source file changed, but the served stylesheet content in the registry is still stale.', + ); + } + } + + if (trackedRequestIds.length === 0) { + anomalies.push('no_tracked_requests'); + hints.push( + 'No live stylesheet requests are tracked for this source file, so HMR has no browser-facing target.', + ); + } + + if ( + trackedRequestIds.some((id) => id.includes('?ngcomp=')) && + wrapperModules.length === 0 + ) { + anomalies.push('tracked_wrapper_missing_from_module_graph'); + hints.push( + 'A wrapper request id is known, but Vite did not expose a live wrapper module during this HMR pass.', + ); + } + + if ( + trackedRequestIds.every((id) => !id.includes('?ngcomp=')) && + wrapperModules.length === 0 + ) { + anomalies.push('wrapper_not_yet_tracked'); + hints.push( + 'Only direct stylesheet requests were tracked during this HMR pass; the wrapper request may be appearing too late.', + ); + } + + return { + file: changedFile, + sourcePath, + source: sourceCode + ? describeStylesheetContent( + rewriteRelativeCssImports( + preprocessStylesheet(sourceCode, normalizedFile, stylePreprocessor), + normalizedFile, + ), + ) + : undefined, + registry: registryCode + ? describeStylesheetContent(registryCode) + : undefined, + directModuleId: directModule.id, + directModuleUrl: directModule.url, + trackedRequestIds, + wrapperCount: wrapperModules.length, + anomalies, + hints, + }; +} + +export async function findComponentStylesheetWrapperModules( + server: ViteDevServer, + changedFile: string, + directModule: ModuleNode, + fileModules: ModuleNode[], + stylesheetRegistry?: AnalogStylesheetRegistry, +): Promise { + const wrapperModules = new Map(); + + // Fast path: if the wrapper JS module is already present in the resolved + // fileModules set for this HMR cycle, use it directly. + for (const mod of fileModules) { + if ( + mod.id && + mod.type === 'js' && + isComponentStyleSheet(mod.id) && + isModuleForChangedResource(mod, changedFile, stylesheetRegistry) + ) { + wrapperModules.set(mod.id, mod); + } + } + + const directRequestIds = new Set(); + if (directModule.id) { + directRequestIds.add(directModule.id); + } + if (directModule.url) { + directRequestIds.add(directModule.url); + } + + const requestPath = directModule.id + ? getFilenameFromPath(directModule.id) + : undefined; + const sourcePath = requestPath + ? (stylesheetRegistry?.resolveExternalSource(requestPath) ?? + stylesheetRegistry?.resolveExternalSource(requestPath.replace(/^\//, ''))) + : undefined; + + // HMR timing matters here. On a pure CSS edit, the browser often already has + // the `?ngcomp=...` wrapper module loaded, but the registry may only know + // about the `?direct&ngcomp=...` request at the moment the file watcher + // fires. Pull in any already-tracked wrapper ids for the same source file, + // then derive wrapper candidates from the known direct request ids. + for (const requestId of stylesheetRegistry?.getRequestIdsForSource( + sourcePath ?? '', + ) ?? []) { + if (requestId.includes('?ngcomp=')) { + directRequestIds.add(requestId); + } + } + + const candidateWrapperIds = [...directRequestIds] + .filter((id) => id.includes('?direct&ngcomp=')) + .map((id) => id.replace('?direct&ngcomp=', '?ngcomp=')); + + const lookupHits: Array<{ + candidate: string; + via?: 'url' | 'id'; + moduleId?: string; + moduleType?: string; + }> = []; + + for (const candidate of candidateWrapperIds) { + // Wrapper modules are served by URL and can be absent from a straight + // module-id lookup during HMR. Prefer URL resolution first, then fall back + // to id lookup for compatibility with simpler module graph states. + const mod = + (await server.moduleGraph.getModuleByUrl(candidate)) ?? + server.moduleGraph.getModuleById(candidate); + lookupHits.push({ + candidate, + via: mod?.url === candidate ? 'url' : mod ? 'id' : undefined, + moduleId: mod?.id, + moduleType: mod?.type, + }); + if ( + mod?.id && + mod.type === 'js' && + isComponentStyleSheet(mod.id) && + isModuleForChangedResource(mod, changedFile, stylesheetRegistry) + ) { + wrapperModules.set(mod.id, mod); + } + } + + debugHmrV('component stylesheet wrapper lookup', { + file: changedFile, + sourcePath, + directModuleId: directModule.id, + directModuleUrl: directModule.url, + candidateWrapperIds, + lookupHits, + }); + + if (wrapperModules.size === 0) { + debugHmrV('component stylesheet wrapper lookup empty', { + file: changedFile, + sourcePath, + directModuleId: directModule.id, + directModuleUrl: directModule.url, + candidateWrapperIds, + }); + } + + return [...wrapperModules.values()]; +} + function sendHMRComponentUpdate(server: ViteDevServer, id: string) { + debugHmrV('ws send: angular component update', { + id, + timestamp: Date.now(), + }); server.ws.send('angular:component-update', { id: encodeURIComponent(id), timestamp: Date.now(), @@ -2213,7 +3313,250 @@ function sendHMRComponentUpdate(server: ViteDevServer, id: string) { classNames.delete(id); } -function findTemplateOwnerModules( +function sendCssUpdate( + server: ViteDevServer, + update: { + path: string; + acceptedPath: string; + }, +) { + const timestamp = Date.now(); + debugHmrV('ws send: css-update', { + ...update, + timestamp, + }); + server.ws.send({ + type: 'update', + updates: [ + { + type: 'css-update', + timestamp, + path: update.path, + acceptedPath: update.acceptedPath, + }, + ], + }); +} + +function sendFullReload( + server: ViteDevServer, + details: Record, +) { + debugHmrV('ws send: full-reload', details); + server.ws.send('analog:debug-full-reload', details); + server.ws.send({ type: 'full-reload' }); +} + +function resolveComponentClassNamesForStyleOwner( + ownerFile: string, + sourcePath: string, +): string[] { + if (!existsSync(ownerFile)) { + return []; + } + + const ownerCode = readFileSync(ownerFile, 'utf-8'); + const components = getAngularComponentMetadata(ownerCode); + const normalizedSourcePath = normalizePath(sourcePath); + + return components + .filter((component) => + component.styleUrls.some( + (styleUrl) => + normalizePath(resolve(dirname(ownerFile), styleUrl)) === + normalizedSourcePath, + ), + ) + .map((component) => component.className); +} + +interface TemplateClassBindingIssue { + line: number; + column: number; + snippet: string; +} + +interface ActiveGraphComponentRecord { + file: string; + className: string; + selector?: string; +} + +interface StyleOwnerRecord { + sourcePath: string; + ownerFile: string; +} + +type ComponentStylesheetHmrOutcome = + | 'css-update' + | 'owner-component-update' + | 'full-reload'; + +export function findStaticClassAndBoundClassConflicts( + template: string, +): TemplateClassBindingIssue[] { + const issues: TemplateClassBindingIssue[] = []; + const tagPattern = /<([a-zA-Z][\w:-]*)([\s\S]*?)>/g; + + for (const match of template.matchAll(tagPattern)) { + const snippet = match[0]; + if (!snippet.includes('[class]')) { + continue; + } + + const hasStaticClass = /\sclass\s*=\s*(['"])(?:(?!\1)[\s\S])*\1/.test( + snippet, + ); + const hasBoundClass = /\s\[class\]\s*=\s*(['"])(?:(?!\1)[\s\S])*\1/.test( + snippet, + ); + + if (hasStaticClass && hasBoundClass && match.index !== undefined) { + const prefix = template.slice(0, match.index); + const line = prefix.split('\n').length; + const lastNewline = prefix.lastIndexOf('\n'); + const column = match.index - lastNewline; + issues.push({ + line, + column, + snippet: snippet.replace(/\s+/g, ' ').trim(), + }); + } + } + + return issues; +} + +function throwTemplateClassBindingConflict( + id: string, + issue: TemplateClassBindingIssue, +): never { + throw new Error( + [ + '[Analog Angular] Invalid template class binding.', + `File: ${id}:${issue.line}:${issue.column}`, + 'The same element uses both a static `class="..."` attribute and a whole-element `[class]="..."` binding.', + 'That pattern can replace or conflict with static Tailwind classes, which makes styles appear to stop applying.', + 'Use `[ngClass]` or explicit `[class.foo]` bindings instead of `[class]` when the element also has static classes.', + `Snippet: ${issue.snippet}`, + ].join('\n'), + ); +} + +export function findBoundClassAndNgClassConflicts( + template: string, +): TemplateClassBindingIssue[] { + const issues: TemplateClassBindingIssue[] = []; + const tagPattern = /<([a-zA-Z][\w:-]*)([\s\S]*?)>/g; + + for (const match of template.matchAll(tagPattern)) { + const snippet = match[0]; + if (!snippet.includes('[class]') || !snippet.includes('[ngClass]')) { + continue; + } + + if (match.index !== undefined) { + const prefix = template.slice(0, match.index); + const line = prefix.split('\n').length; + const lastNewline = prefix.lastIndexOf('\n'); + const column = match.index - lastNewline; + issues.push({ + line, + column, + snippet: snippet.replace(/\s+/g, ' ').trim(), + }); + } + } + + return issues; +} + +function formatActiveGraphLocations(entries: Iterable): string { + return [...entries] + .sort() + .map((entry) => `- ${entry}`) + .join('\n'); +} + +function logComponentStylesheetHmrOutcome(details: { + file: string; + encapsulation: string; + diagnosis: ReturnType; + outcome: ComponentStylesheetHmrOutcome; + directModuleId?: string; + wrapperIds?: string[]; + ownerIds?: Array; + updateIds?: string[]; +}) { + const pitfalls: string[] = []; + const rejectedPreferredPaths: string[] = []; + const hints: string[] = []; + + if (details.encapsulation === 'shadow') { + pitfalls.push('shadow-encapsulation'); + rejectedPreferredPaths.push('css-update'); + rejectedPreferredPaths.push('owner-component-update'); + hints.push( + 'Shadow DOM styles cannot rely on Vite CSS patching because Angular applies them inside a shadow root.', + ); + } + + if (details.diagnosis.anomalies.includes('wrapper_not_yet_tracked')) { + pitfalls.push('wrapper-not-yet-tracked'); + rejectedPreferredPaths.push('css-update'); + hints.push( + 'The direct stylesheet module exists, but the browser-visible Angular wrapper module was not available in the live graph during this HMR pass.', + ); + } + + if ( + details.diagnosis.anomalies.includes( + 'tracked_wrapper_missing_from_module_graph', + ) + ) { + pitfalls.push('tracked-wrapper-missing-from-module-graph'); + rejectedPreferredPaths.push('css-update'); + hints.push( + 'A wrapper request id is known, but Vite could not resolve a live wrapper module for targeted CSS HMR.', + ); + } + + if ((details.ownerIds?.filter(Boolean).length ?? 0) === 0) { + pitfalls.push('no-owner-modules'); + if (details.outcome === 'full-reload') { + rejectedPreferredPaths.push('owner-component-update'); + hints.push( + 'No owning TS component modules were available in the module graph for owner-based fallback.', + ); + } + } else if ((details.updateIds?.length ?? 0) === 0) { + pitfalls.push('owner-modules-without-class-identities'); + if (details.outcome === 'full-reload') { + rejectedPreferredPaths.push('owner-component-update'); + hints.push( + 'Owner modules were found, but Angular did not expose component class identities after recompilation, so no targeted component update could be sent.', + ); + } + } + + debugHmrV('component stylesheet hmr outcome', { + file: details.file, + outcome: details.outcome, + encapsulation: details.encapsulation, + directModuleId: details.directModuleId, + wrapperIds: details.wrapperIds ?? [], + ownerIds: details.ownerIds ?? [], + updateIds: details.updateIds ?? [], + preferredPath: + details.encapsulation === 'shadow' ? 'full-reload' : 'css-update', + rejectedPreferredPaths: [...new Set(rejectedPreferredPaths)], + pitfalls: [...new Set(pitfalls)], + anomalies: details.diagnosis.anomalies, + hints: [...new Set([...details.diagnosis.hints, ...hints])], + }); +} + +export function findTemplateOwnerModules( server: ViteDevServer, resourceFile: string, ): ModuleNode[] { @@ -2235,6 +3578,29 @@ function findTemplateOwnerModules( return [...modules.values()]; } +function findStyleOwnerModules( + server: ViteDevServer, + resourceFile: string, + styleSourceOwners: Map>, +): ModuleNode[] { + const normalizedResourceFile = normalizePath(resourceFile.split('?')[0]); + const candidateOwnerFiles = [ + ...(styleSourceOwners.get(normalizedResourceFile) ?? []), + ]; + const modules = new Map(); + + for (const ownerFile of candidateOwnerFiles) { + const owners = server.moduleGraph.getModulesByFile(ownerFile); + owners?.forEach((mod) => { + if (mod.id) { + modules.set(mod.id, mod); + } + }); + } + + return [...modules.values()]; +} + export function getFileMetadata( program: ts.BuilderProgram, angularCompiler?: NgtscProgram['compiler'], diff --git a/packages/vite-plugin-angular/src/lib/component-resolvers.spec.ts b/packages/vite-plugin-angular/src/lib/component-resolvers.spec.ts index bb9646703..ab9fc1c07 100644 --- a/packages/vite-plugin-angular/src/lib/component-resolvers.spec.ts +++ b/packages/vite-plugin-angular/src/lib/component-resolvers.spec.ts @@ -1,6 +1,11 @@ import { describe, it, expect } from 'vitest'; -import { StyleUrlsResolver, TemplateUrlsResolver } from './component-resolvers'; +import { + getAngularComponentMetadata, + getInlineTemplates, + StyleUrlsResolver, + TemplateUrlsResolver, +} from './component-resolvers'; import { normalizePath } from 'vite'; import { relative } from 'node:path'; @@ -379,4 +384,92 @@ describe('component-resolvers', () => { }); }); }); + + describe('component-resolvers inline template', () => { + it('extracts inline template strings from component decorators', () => { + const code = ` + @Component({ + template: \`
Hello
\` + }) + export class MyComponent {} + `; + + expect(getInlineTemplates(code)).toEqual([ + '
Hello
', + ]); + }); + + it('extracts multiple inline templates across a file', () => { + const code = ` + @Component({ template: '
A
' }) + export class A {} + + @Component({ template: \`
B
\` }) + export class B {} + `; + + expect(getInlineTemplates(code)).toEqual([ + '
A
', + '
B
', + ]); + }); + + it('extracts component metadata for selector, class name, and templates', () => { + const code = ` + @Component({ + selector: 'demo-card', + templateUrl: './demo-card.component.html', + template: '
Inline
' + }) + export class DemoCardComponent {} + + @Component({ + template: \`
Selectorless
\` + }) + export class DemoDialogComponent {} + `; + + expect(getAngularComponentMetadata(code)).toEqual([ + { + className: 'DemoCardComponent', + selector: 'demo-card', + styleUrls: [], + templateUrls: ['./demo-card.component.html'], + inlineTemplates: ['
Inline
'], + }, + { + className: 'DemoDialogComponent', + styleUrls: [], + templateUrls: [], + inlineTemplates: ['
Selectorless
'], + }, + ]); + }); + + it('extracts component styleUrls alongside other metadata', () => { + const code = ` + @Component({ + selector: 'demo-card', + styleUrl: './demo-card.component.css', + styleUrls: ['./demo-card.theme.css', '../shared/demo-card.tokens.css'], + template: '
Inline
' + }) + export class DemoCardComponent {} + `; + + expect(getAngularComponentMetadata(code)).toEqual([ + { + className: 'DemoCardComponent', + selector: 'demo-card', + styleUrls: [ + './demo-card.component.css', + './demo-card.theme.css', + '../shared/demo-card.tokens.css', + ], + templateUrls: [], + inlineTemplates: ['
Inline
'], + }, + ]); + }); + }); }); diff --git a/packages/vite-plugin-angular/src/lib/component-resolvers.ts b/packages/vite-plugin-angular/src/lib/component-resolvers.ts index 4fc285406..dd6e614ee 100644 --- a/packages/vite-plugin-angular/src/lib/component-resolvers.ts +++ b/packages/vite-plugin-angular/src/lib/component-resolvers.ts @@ -57,10 +57,12 @@ function getStringValue(node: any): string | undefined { function collectComponentUrls(code: string): { styleUrls: string[]; templateUrls: string[]; + inlineTemplates: string[]; } { const { program } = parseSync('cmp.ts', code); const styleUrls: string[] = []; const templateUrls: string[] = []; + const inlineTemplates: string[] = []; const visitor = new Visitor({ // The Visitor callback receives raw ESTree nodes. We use `any` @@ -87,11 +89,110 @@ function collectComponentUrls(code: string): { const val = getStringValue(node.value); if (val !== undefined) templateUrls.push(val); } + + if (name === 'template') { + const val = getStringValue(node.value); + if (val !== undefined) inlineTemplates.push(val); + } + }, + }); + visitor.visit(program); + + return { styleUrls, templateUrls, inlineTemplates }; +} + +export interface AngularComponentMetadata { + className: string; + selector?: string; + styleUrls: string[]; + templateUrls: string[]; + inlineTemplates: string[]; +} + +/** + * Extract Angular component identities from raw source code before Angular's + * compilation pipeline strips decorators. This is used for dev-time + * diagnostics such as duplicate selectors, duplicate component class names, + * selectorless shared components, and inline-template validation. + */ +export function getAngularComponentMetadata( + code: string, +): AngularComponentMetadata[] { + const { program } = parseSync('cmp.ts', code); + const components: AngularComponentMetadata[] = []; + + const visitor = new Visitor({ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ClassDeclaration(node: any) { + const decorators = node.decorators ?? []; + for (const decorator of decorators) { + const expression = decorator.expression; + if ( + expression?.type !== 'CallExpression' || + expression.callee?.type !== 'Identifier' || + expression.callee.name !== 'Component' + ) { + continue; + } + + const componentArg = expression.arguments?.[0]; + if (componentArg?.type !== 'ObjectExpression') { + continue; + } + + const metadata: AngularComponentMetadata = { + className: node.id?.name ?? '(anonymous)', + styleUrls: [], + templateUrls: [], + inlineTemplates: [], + }; + + for (const property of componentArg.properties ?? []) { + if ( + property?.type !== 'Property' || + property.key?.type !== 'Identifier' + ) { + continue; + } + + const name = property.key.name; + if (name === 'selector') { + metadata.selector = getStringValue(property.value); + } else if (name === 'styleUrl') { + const val = getStringValue(property.value); + if (val !== undefined) { + metadata.styleUrls.push(val); + } + } else if ( + name === 'styleUrls' && + property.value?.type === 'ArrayExpression' + ) { + for (const el of property.value.elements ?? []) { + const val = getStringValue(el); + if (val !== undefined) { + metadata.styleUrls.push(val); + } + } + } else if (name === 'templateUrl') { + const val = getStringValue(property.value); + if (val !== undefined) { + metadata.templateUrls.push(val); + } + } else if (name === 'template') { + const val = getStringValue(property.value); + if (val !== undefined) { + metadata.inlineTemplates.push(val); + } + } + } + + components.push(metadata); + } }, }); visitor.visit(program); - return { styleUrls, templateUrls }; + return components; } /** Extract all `styleUrl` / `styleUrls` values from Angular component source. */ @@ -104,6 +205,11 @@ export function getTemplateUrls(code: string): string[] { return collectComponentUrls(code).templateUrls; } +/** Extract inline `template` strings from Angular component source. */ +export function getInlineTemplates(code: string): string[] { + return collectComponentUrls(code).inlineTemplates; +} + // --------------------------------------------------------------------------- // Resolver caches // --------------------------------------------------------------------------- diff --git a/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts b/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts index 610f9d72f..d14427d34 100644 --- a/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts +++ b/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts @@ -54,8 +54,112 @@ describe('stylesheet-registry', () => { expect( registry.getServedContent('project/src/app/demo.component.css'), ).toBe('.demo { color: red; }'); - expect(registry.getServedContent('demo.component.css')).toBe( - '.demo { color: red; }', + expect(registry.getServedContent('demo.component.css')).toBeUndefined(); + }); + + it('tracks active request ids for a source stylesheet', () => { + const registry = new AnalogStylesheetRegistry(); + + registry.registerExternalRequest( + 'abc123.css', + '/project/src/app/demo.component.css', + ); + registry.registerServedStylesheet({ + publicId: 'abc123.css', + sourcePath: '/project/src/app/demo.component.css', + normalizedCode: '.demo { color: red; }', + }); + registry.registerActiveRequest('abc123.css?ngcomp=ng-c1&e=0'); + + expect( + registry.getPublicIdsForSource('/project/src/app/demo.component.css'), + ).toEqual(['abc123.css']); + expect( + registry.getRequestIdsForSource('/project/src/app/demo.component.css'), + ).toEqual(['abc123.css?ngcomp=ng-c1&e=0']); + }); + + it('tracks active request ids when the served request path starts with a slash', () => { + const registry = new AnalogStylesheetRegistry(); + + registry.registerExternalRequest( + 'abc123.css', + '/project/src/app/demo.component.css', + ); + registry.registerServedStylesheet({ + publicId: 'abc123.css', + sourcePath: '/project/src/app/demo.component.css', + normalizedCode: '.demo { color: red; }', + }); + registry.registerActiveRequest('/abc123.css?ngcomp=ng-c1&e=0'); + + expect( + registry.getRequestIdsForSource('/project/src/app/demo.component.css'), + ).toEqual(['abc123.css?ngcomp=ng-c1&e=0']); + }); + + it('canonicalizes timestamped request ids for active wrapper modules', () => { + const registry = new AnalogStylesheetRegistry(); + + registry.registerExternalRequest( + 'abc123.css', + '/project/src/app/demo.component.css', + ); + registry.registerServedStylesheet({ + publicId: 'abc123.css', + sourcePath: '/project/src/app/demo.component.css', + normalizedCode: '.demo { color: red; }', + }); + + registry.registerActiveRequest('/abc123.css?ngcomp=ng-c1&e=0&t=123'); + registry.registerActiveRequest('abc123.css?ngcomp=ng-c1&e=0&t=456'); + + expect( + registry.getRequestIdsForSource('/project/src/app/demo.component.css'), + ).toEqual(['abc123.css?ngcomp=ng-c1&e=0']); + }); + + it('serves the same stylesheet content for timestamped direct and wrapper requests', () => { + const registry = new AnalogStylesheetRegistry(); + + registry.registerExternalRequest( + 'abc123.css', + '/project/src/app/demo.component.css', ); + registry.registerServedStylesheet({ + publicId: 'abc123.css', + sourcePath: '/project/src/app/demo.component.css', + normalizedCode: '.demo { color: red; }', + }); + + expect( + registry.getServedContent('/abc123.css?ngcomp=ng-c1&e=0&t=123'), + ).toBe('.demo { color: red; }'); + expect( + registry.getServedContent('/abc123.css?direct&ngcomp=ng-c1&e=0&t=123'), + ).toBe('.demo { color: red; }'); + }); + + it('preserves bare direct query flags and eagerly tracks the paired wrapper request', () => { + const registry = new AnalogStylesheetRegistry(); + + registry.registerExternalRequest( + 'abc123.css', + '/project/src/app/demo.component.css', + ); + registry.registerServedStylesheet({ + publicId: 'abc123.css', + sourcePath: '/project/src/app/demo.component.css', + normalizedCode: '.demo { color: red; }', + }); + + registry.registerActiveRequest('/abc123.css?direct&ngcomp=ng-c1&e=0&t=123'); + + expect( + registry.getRequestIdsForSource('/project/src/app/demo.component.css'), + ).toEqual([ + 'abc123.css?direct&ngcomp=ng-c1&e=0', + 'abc123.css?ngcomp=ng-c1&e=0', + ]); }); }); diff --git a/packages/vite-plugin-angular/src/lib/stylesheet-registry.ts b/packages/vite-plugin-angular/src/lib/stylesheet-registry.ts index cbc8881f1..83cabd349 100644 --- a/packages/vite-plugin-angular/src/lib/stylesheet-registry.ts +++ b/packages/vite-plugin-angular/src/lib/stylesheet-registry.ts @@ -1,5 +1,5 @@ import { createHash } from 'node:crypto'; -import { basename, dirname, normalize, resolve } from 'node:path'; +import { dirname, normalize, resolve } from 'node:path'; import { normalizePath } from 'vite'; import type { StylePreprocessor } from './style-preprocessor.js'; @@ -14,6 +14,57 @@ export class AnalogStylesheetRegistry { private servedById = new Map(); private servedAliasToId = new Map(); private externalRequestToSource = new Map(); + /** + * Maps a real source stylesheet path back to the generated public stylesheet + * ids Analog serves for Angular. This is stable across requests and lets HMR + * reason about "which virtual stylesheet came from this source file?" + */ + private sourceToPublicIds = new Map>(); + /** + * Tracks the live request ids Vite/Angular have actually served for a source + * stylesheet, including both `?direct&ngcomp=...` CSS modules and + * `?ngcomp=...` JS wrapper modules. HMR must use these live request ids + * because Angular component styles are no longer addressed by their original + * file paths once externalized. + */ + private sourceToRequestIds = new Map>(); + + /** + * Canonicalizes browser-facing stylesheet request ids so Vite timestamp + * variants (`?t=...`) and path-shape variants (`abc.css?...` vs + * `/abc.css?...`) all collapse onto one logical module identity. + * + * This is critical for Angular component stylesheet HMR because the browser + * can keep both timestamped and non-timestamped requests alive for the same + * externalized stylesheet. If Analog tracks them as distinct resources, HMR + * can update one module while the browser continues rendering another stale + * module for the same public stylesheet id. + */ + private normalizeRequestId(requestId: string): string { + const [rawPathname, rawSearch = ''] = requestId.split('?'); + const normalizedPathname = rawPathname.replace(/^\//, ''); + + if (!rawSearch) { + return normalizedPathname; + } + + // Preserve bare query flags like `?direct&ngcomp=...` exactly. Using + // URLSearchParams reserializes `direct` as `direct=`, which changes the + // module identity and breaks Vite module-graph lookups for Angular's + // externalized component stylesheet requests. + const normalizedSearch = rawSearch + .split('&') + .filter((segment) => segment.length > 0) + .filter((segment) => { + const [key] = segment.split('='); + return key !== 't'; + }) + .join('&'); + + return normalizedSearch + ? `${normalizedPathname}?${normalizedSearch}` + : normalizedPathname; + } get servedCount(): number { return this.servedById.size; @@ -32,29 +83,84 @@ export class AnalogStylesheetRegistry { } resolveExternalSource(requestId: string): string | undefined { - return this.externalRequestToSource.get(requestId); + const normalizedRequestId = this.normalizeRequestId(requestId); + return this.externalRequestToSource.get(normalizedRequestId); + } + + getPublicIdsForSource(sourcePath: string): string[] { + return [...(this.sourceToPublicIds.get(sourcePath) ?? [])]; + } + + getRequestIdsForSource(sourcePath: string): string[] { + return [...(this.sourceToRequestIds.get(sourcePath) ?? [])]; } registerExternalRequest(requestId: string, sourcePath: string): void { - this.externalRequestToSource.set(requestId, sourcePath); + this.externalRequestToSource.set( + this.normalizeRequestId(requestId), + sourcePath, + ); + } + + registerActiveRequest(requestId: string): void { + // Requests arrive in multiple shapes depending on who asked for the + // stylesheet (`abc123.css?...` vs `/abc123.css?...`). Normalize both back to + // the source file so later HMR events for `/src/...component.css` can find + // the currently active virtual requests. + const normalizedRequestId = this.normalizeRequestId(requestId); + const requestPath = normalizedRequestId.split('?')[0]; + const sourcePath = + this.resolveExternalSource(requestPath) ?? + this.resolveExternalSource(requestPath.replace(/^\//, '')); + if (!sourcePath) { + return; + } + + const requestIds = this.sourceToRequestIds.get(sourcePath) ?? new Set(); + requestIds.add(normalizedRequestId); + // Angular component styles are served through both a direct CSS request + // (`?direct&ngcomp=...`) and a JS wrapper request (`?ngcomp=...`). The + // browser can already have the wrapper loaded even when Vite's live module + // graph only surfaces the direct request during a CSS-only edit. Track the + // derived wrapper id eagerly so HMR can reason about the browser-visible + // stylesheet identity without waiting for that wrapper request to be + // observed later in the session. + if (normalizedRequestId.includes('?direct&ngcomp=')) { + requestIds.add( + normalizedRequestId.replace('?direct&ngcomp=', '?ngcomp='), + ); + } + this.sourceToRequestIds.set(sourcePath, requestIds); } registerServedStylesheet( record: AnalogStylesheetRecord, aliases: string[] = [], ): void { - this.servedById.set(record.publicId, record); - this.servedAliasToId.set(record.publicId, record.publicId); + const publicId = this.normalizeRequestId(record.publicId); + this.servedById.set(publicId, { ...record, publicId }); + this.servedAliasToId.set(publicId, publicId); for (const alias of aliases) { - this.servedAliasToId.set(alias, record.publicId); + this.servedAliasToId.set(this.normalizeRequestId(alias), publicId); + } + + if (record.sourcePath) { + const publicIds = + this.sourceToPublicIds.get(record.sourcePath) ?? new Set(); + publicIds.add(publicId); + this.sourceToPublicIds.set(record.sourcePath, publicIds); } } private resolveServedRecord( requestId: string, ): AnalogStylesheetRecord | undefined { - const publicId = this.servedAliasToId.get(requestId) ?? requestId; + const normalizedRequestId = this.normalizeRequestId(requestId); + const publicId = + this.servedAliasToId.get(normalizedRequestId) ?? + this.servedAliasToId.get(normalizedRequestId.split('?')[0]) ?? + normalizedRequestId.split('?')[0]; return this.servedById.get(publicId); } } @@ -73,10 +179,16 @@ export function rewriteRelativeCssImports( ): string { const cssDir = dirname(filename); return code.replace( - /@import\s+(['"])(\.[^'"]+)\1/g, - (_match, quote, relPath) => { + /@import\s+(?:url\(\s*(["']?)(\.[^'")\s;]+)\1\s*\)|(["'])(\.[^'"]+)\3)/g, + (_match, urlQuote, urlPath, stringQuote, stringPath) => { + const relPath = urlPath ?? stringPath; const absPath = resolve(cssDir, relPath); - return `@import ${quote}${absPath}${quote}`; + + if (typeof urlPath === 'string') { + return `@import url(${urlQuote}${absPath}${urlQuote})`; + } + + return `@import ${stringQuote}${absPath}${stringQuote}`; }, ); } @@ -111,10 +223,11 @@ export function registerStylesheetContent( if (resourceFile) { const normalizedResourceFile = normalizePath(normalize(resourceFile)); + // Avoid basename-only aliases here: shared filenames like `index.css` + // can collide across components and break HMR lookups. aliases.push( resourceFile, normalizedResourceFile, - basename(resourceFile), resourceFile.replace(/^\//, ''), normalizedResourceFile.replace(/^\//, ''), ); diff --git a/packages/vite-plugin-angular/src/lib/utils/debug.ts b/packages/vite-plugin-angular/src/lib/utils/debug.ts index 4b9e12914..60515edfe 100644 --- a/packages/vite-plugin-angular/src/lib/utils/debug.ts +++ b/packages/vite-plugin-angular/src/lib/utils/debug.ts @@ -1,11 +1,6 @@ import { createDebug } from 'obug'; import { createDebugHarness } from './debug-harness.js'; -import { - DEBUG_LOG_FILENAME, - wrapInstancesForFileLog, -} from './debug-log-file.js'; - // Normal — key decisions, once per startup or per component export const debugTailwind = createDebug('analog:angular:tailwind'); export const debugHmr = createDebug('analog:angular:hmr'); diff --git a/packages/vite-plugin-angular/src/lib/utils/devkit.ts b/packages/vite-plugin-angular/src/lib/utils/devkit.ts index c622dbae7..e0af9cb2c 100644 --- a/packages/vite-plugin-angular/src/lib/utils/devkit.ts +++ b/packages/vite-plugin-angular/src/lib/utils/devkit.ts @@ -5,11 +5,11 @@ import * as sfc from './source-file-cache.js'; const require = createRequire(import.meta.url); -const angularMajor: number = Number(VERSION.major); -const angularMinor: number = Number(VERSION.minor); -const angularPatch: number = Number(VERSION.patch); +const angularMajor = Number(VERSION.major); +const angularMinor = Number(VERSION.minor); +const angularPatch = Number(VERSION.patch); const padVersion = (version: number) => String(version).padStart(2, '0'); -const angularFullVersion: number = Number( +const angularFullVersion = Number( `${angularMajor}${padVersion(angularMinor)}${padVersion(angularPatch)}`, ); let sourceFileCache: any; diff --git a/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.spec.ts b/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.spec.ts index d4c3a9a85..2102da3c4 100644 --- a/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.spec.ts +++ b/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.spec.ts @@ -51,7 +51,7 @@ describe('nitro', () => { expect(nitro({})[1].name).toEqual('@analogjs/vite-plugin-nitro'); }); - it(`should not call the route middleware in test mode `, async () => { + it('should not call the route middleware in test mode', async () => { // Arrange const spy = vi.spyOn(mockViteDevServer.middlewares, 'use'); diff --git a/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts b/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts index 28f13427f..7b347adbc 100644 --- a/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts +++ b/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts @@ -32,7 +32,7 @@ import { apiMiddleware, } from './utils/renderers.js'; import { getBundleOptionsKey, isRolldown } from './utils/rolldown.js'; -import { debugNitro, debugSsr, debugPrerender } from './utils/debug.js'; +import { debugNitro, debugSsr } from './utils/debug.js'; function createNitroMiddlewareHandler(handler: string): NitroEventHandler { return { @@ -1209,6 +1209,10 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] { // Reload the page after the server rebuild completes so the next // request observes the updated API route implementation. + viteServer.ws.send('analog:debug-full-reload', { + plugin: 'vite-plugin-nitro', + reason: 'nitro-server-rebuilt', + }); viteServer.ws.send({ type: 'full-reload' }); })() .catch((error: unknown) => { From 87ad7d21b20f85c089df26b0aa9a2a959f4fac18 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 21:48:33 -0400 Subject: [PATCH 11/33] test: align fixtures with explicit selector enforcement --- apps/analog-app/oxlint.config.ts | 7 ++++++ .../src/app/pages/docs.page.ts | 2 +- .../src/app/pages/docs/[[...slug]].page.ts | 2 +- .../src/app/pages/docs/index.page.ts | 2 +- .../src/lib/my-package/my-package.spec.ts | 2 +- packages/astro-angular/oxlint.config.ts | 7 ++++++ .../src/lib/mdc-renderer.directive.spec.ts | 1 + packages/content/oxlint.config.ts | 7 ++++++ .../lib/anchor-navigation.directive.spec.ts | 3 ++- packages/platform/oxlint.config.ts | 7 ++++++ packages/router/oxlint.config.ts | 7 ++++++ packages/router/src/lib/debug/debug.page.ts | 6 ++++- .../src/lib/form-action.directive.spec.ts | 2 ++ packages/router/src/lib/json-ld.spec.ts | 23 ++++++++++++++++--- packages/router/src/lib/meta-tags.spec.ts | 1 + .../src/lib/provide-file-router.spec.ts | 6 ++++- packages/storybook-angular/oxlint.config.ts | 7 ++++++ packages/vite-plugin-angular/oxlint.config.ts | 7 ++++++ .../src/lib/angular-vitest-plugin.spec.ts | 4 ++-- .../angular-fixture-snapshot.spec.ts.snap | 8 +++---- .../angular-fixture-snapshot.spec.ts | 2 +- 21 files changed, 96 insertions(+), 17 deletions(-) diff --git a/apps/analog-app/oxlint.config.ts b/apps/analog-app/oxlint.config.ts index eb62790c1..f93c111f5 100644 --- a/apps/analog-app/oxlint.config.ts +++ b/apps/analog-app/oxlint.config.ts @@ -31,9 +31,16 @@ export default defineConfig({ style: 'kebab-case', }, ], + '@angular-eslint/use-component-selector': 'error', '@angular-eslint/prefer-standalone': 'error', }, }, + { + files: ['src/**/pages/**/*.ts', 'src/**/*.page.ts', 'src/**/*.page.tsx'], + rules: { + '@angular-eslint/use-component-selector': 'off', + }, + }, { files: ['src/stories/**/*.ts', 'src/stories/**/*.tsx'], rules: { diff --git a/apps/opt-catchall-app/src/app/pages/docs.page.ts b/apps/opt-catchall-app/src/app/pages/docs.page.ts index edc9a7e6c..be295ffb8 100644 --- a/apps/opt-catchall-app/src/app/pages/docs.page.ts +++ b/apps/opt-catchall-app/src/app/pages/docs.page.ts @@ -2,7 +2,7 @@ import { Component } from '@angular/core'; import { RouterLink, RouterOutlet } from '@angular/router'; @Component({ - selector: 'app-docs-index-page', + selector: 'app-docs-layout-page', standalone: true, imports: [RouterOutlet, RouterLink], template: ` diff --git a/apps/opt-catchall-app/src/app/pages/docs/[[...slug]].page.ts b/apps/opt-catchall-app/src/app/pages/docs/[[...slug]].page.ts index 8f0388f3a..46fceca57 100644 --- a/apps/opt-catchall-app/src/app/pages/docs/[[...slug]].page.ts +++ b/apps/opt-catchall-app/src/app/pages/docs/[[...slug]].page.ts @@ -6,7 +6,7 @@ import { JsonPipe } from '@angular/common'; import { MarkdownComponent } from '@analogjs/content'; import { map } from 'rxjs'; @Component({ - selector: 'app-docs-optional-catchall-page', + selector: 'app-docs-optional-catchall-slug-page', standalone: true, template: ` diff --git a/apps/opt-catchall-app/src/app/pages/docs/index.page.ts b/apps/opt-catchall-app/src/app/pages/docs/index.page.ts index 38d50da51..e3adae1ac 100644 --- a/apps/opt-catchall-app/src/app/pages/docs/index.page.ts +++ b/apps/opt-catchall-app/src/app/pages/docs/index.page.ts @@ -5,7 +5,7 @@ import { injectContent, MarkdownComponent } from '@analogjs/content'; import { AsyncPipe } from '@angular/common'; @Component({ - selector: 'app-docs-optional-catchall-page', + selector: 'app-docs-index-page', standalone: true, imports: [RouterLink], template: ` diff --git a/libs/my-package/src/lib/my-package/my-package.spec.ts b/libs/my-package/src/lib/my-package/my-package.spec.ts index ad4d26f22..eb42dba2e 100644 --- a/libs/my-package/src/lib/my-package/my-package.spec.ts +++ b/libs/my-package/src/lib/my-package/my-package.spec.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from 'vitest'; import { MyPackage } from './my-package'; import { page } from 'vitest/browser'; -describe(MyPackage.name, () => { +describe('MyPackage', () => { it('works', async () => { TestBed.createComponent(MyPackage); diff --git a/packages/astro-angular/oxlint.config.ts b/packages/astro-angular/oxlint.config.ts index af2e74493..fdf414775 100644 --- a/packages/astro-angular/oxlint.config.ts +++ b/packages/astro-angular/oxlint.config.ts @@ -10,8 +10,15 @@ export default defineConfig({ { files: ['src/**/*.ts'], rules: { + '@angular-eslint/use-component-selector': 'error', '@angular-eslint/prefer-standalone': 'error', }, }, + { + files: ['src/**/pages/**/*.ts', 'src/**/*.page.ts'], + rules: { + '@angular-eslint/use-component-selector': 'off', + }, + }, ], }); diff --git a/packages/content/mdc/src/lib/mdc-renderer.directive.spec.ts b/packages/content/mdc/src/lib/mdc-renderer.directive.spec.ts index 04cb26fa9..33737411a 100644 --- a/packages/content/mdc/src/lib/mdc-renderer.directive.spec.ts +++ b/packages/content/mdc/src/lib/mdc-renderer.directive.spec.ts @@ -15,6 +15,7 @@ class TestAlertComponent { } @Component({ + selector: 'analog-test-host', standalone: true, imports: [MdcRendererDirective], template: '
', diff --git a/packages/content/oxlint.config.ts b/packages/content/oxlint.config.ts index e1c2afdf7..e9ded26f5 100644 --- a/packages/content/oxlint.config.ts +++ b/packages/content/oxlint.config.ts @@ -18,8 +18,15 @@ export default defineConfig({ 'error', { type: 'element', prefix: 'analog', style: 'kebab-case' }, ], + '@angular-eslint/use-component-selector': 'error', '@angular-eslint/prefer-standalone': 'error', }, }, + { + files: ['src/**/pages/**/*.ts', 'src/**/*.page.ts'], + rules: { + '@angular-eslint/use-component-selector': 'off', + }, + }, ], }); diff --git a/packages/content/src/lib/anchor-navigation.directive.spec.ts b/packages/content/src/lib/anchor-navigation.directive.spec.ts index f047ec8e6..9d463ee8a 100644 --- a/packages/content/src/lib/anchor-navigation.directive.spec.ts +++ b/packages/content/src/lib/anchor-navigation.directive.spec.ts @@ -140,9 +140,10 @@ function setup() { } @Component({ - standalone: true, imports: [AnchorNavigationDirective], hostDirectives: [PreventRealNavigationDirective], + selector: 'analog-test-anchor-navigation-host', + standalone: true, template: ` Out of Scope Link diff --git a/packages/platform/oxlint.config.ts b/packages/platform/oxlint.config.ts index af2e74493..fdf414775 100644 --- a/packages/platform/oxlint.config.ts +++ b/packages/platform/oxlint.config.ts @@ -10,8 +10,15 @@ export default defineConfig({ { files: ['src/**/*.ts'], rules: { + '@angular-eslint/use-component-selector': 'error', '@angular-eslint/prefer-standalone': 'error', }, }, + { + files: ['src/**/pages/**/*.ts', 'src/**/*.page.ts'], + rules: { + '@angular-eslint/use-component-selector': 'off', + }, + }, ], }); diff --git a/packages/router/oxlint.config.ts b/packages/router/oxlint.config.ts index 02d4cf66f..d23a824aa 100644 --- a/packages/router/oxlint.config.ts +++ b/packages/router/oxlint.config.ts @@ -18,8 +18,15 @@ export default defineConfig({ 'error', { type: 'element', prefix: 'analogjs', style: 'kebab-case' }, ], + '@angular-eslint/use-component-selector': 'error', '@angular-eslint/prefer-standalone': 'error', }, }, + { + files: ['src/**/pages/**/*.ts', 'src/**/*.page.ts'], + rules: { + '@angular-eslint/use-component-selector': 'off', + }, + }, ], }); diff --git a/packages/router/src/lib/debug/debug.page.ts b/packages/router/src/lib/debug/debug.page.ts index 2d1671608..3b24c6484 100644 --- a/packages/router/src/lib/debug/debug.page.ts +++ b/packages/router/src/lib/debug/debug.page.ts @@ -40,7 +40,11 @@ type CollectedRoute = { {{ collectedRoute.isLayout ? 'Layout' : 'Page' }}
- + {{ collectedRoute.source }}
diff --git a/packages/router/src/lib/form-action.directive.spec.ts b/packages/router/src/lib/form-action.directive.spec.ts index ab5466ce3..8e83cfdb4 100644 --- a/packages/router/src/lib/form-action.directive.spec.ts +++ b/packages/router/src/lib/form-action.directive.spec.ts @@ -20,6 +20,7 @@ function deferred() { } @Component({ + selector: 'analogjs-post-form-action-host', standalone: true, imports: [FormAction], template: ` @@ -43,6 +44,7 @@ class PostHostComponent { } @Component({ + selector: 'analogjs-get-form-action-host', standalone: true, imports: [FormAction], template: ` diff --git a/packages/router/src/lib/json-ld.spec.ts b/packages/router/src/lib/json-ld.spec.ts index f845bc841..b403a5972 100644 --- a/packages/router/src/lib/json-ld.spec.ts +++ b/packages/router/src/lib/json-ld.spec.ts @@ -16,6 +16,7 @@ import { describe('updateJsonLdOnRouteChange', () => { function setup() { @Component({ + selector: 'analogjs-json-ld-test-shell', standalone: true, imports: [RouterOutlet], template: '', @@ -134,13 +135,18 @@ describe('updateJsonLdOnRouteChange', () => { // Navigate to a child that has NO JSON-LD — but parent still has it, // so let's create a dedicated setup for a truly empty route. @Component({ + selector: 'analogjs-json-ld-empty-shell', standalone: true, imports: [RouterOutlet], template: '', }) class ShellComponent {} - @Component({ standalone: true, template: '

No JSON-LD

' }) + @Component({ + selector: 'analogjs-json-ld-empty', + standalone: true, + template: '

No JSON-LD

', + }) class EmptyComponent {} const jsonLd = { @@ -198,13 +204,18 @@ describe('updateJsonLdOnRouteChange', () => { }; @Component({ + selector: 'analogjs-json-ld-graph-shell', standalone: true, imports: [RouterOutlet], template: '', }) class ShellComponent {} - @Component({ standalone: true, template: '

Graph

' }) + @Component({ + selector: 'analogjs-json-ld-graph', + standalone: true, + template: '

Graph

', + }) class GraphComponent {} TestBed.resetTestingModule(); @@ -257,13 +268,18 @@ describe('updateJsonLdOnRouteChange', () => { ]; @Component({ + selector: 'analogjs-json-ld-multi-shell', standalone: true, imports: [RouterOutlet], template: '', }) class ShellComponent {} - @Component({ standalone: true, template: '

Multi

' }) + @Component({ + selector: 'analogjs-json-ld-multi', + standalone: true, + template: '

Multi

', + }) class MultiComponent {} TestBed.resetTestingModule(); @@ -310,6 +326,7 @@ describe('updateJsonLdOnRouteChange', () => { circular.self = circular; @Component({ + selector: 'analogjs-json-ld-object-shell', standalone: true, imports: [RouterOutlet], template: '', diff --git a/packages/router/src/lib/meta-tags.spec.ts b/packages/router/src/lib/meta-tags.spec.ts index 1da448c59..21bbe9556 100644 --- a/packages/router/src/lib/meta-tags.spec.ts +++ b/packages/router/src/lib/meta-tags.spec.ts @@ -19,6 +19,7 @@ import { describe('updateMetaTagsOnRouteChange', () => { function setup() { @Component({ + selector: 'analogjs-meta-tags-test', standalone: true, imports: [RouterOutlet], template: '', diff --git a/packages/router/src/lib/provide-file-router.spec.ts b/packages/router/src/lib/provide-file-router.spec.ts index 3482b0955..e9bca2c79 100644 --- a/packages/router/src/lib/provide-file-router.spec.ts +++ b/packages/router/src/lib/provide-file-router.spec.ts @@ -12,7 +12,11 @@ import { import { provideFileRouter, withExtraRoutes } from './provide-file-router'; import { withContentRoutes } from '../../content/src/lib/with-content-routes'; -@Component({ standalone: true, template: '' }) +@Component({ + selector: 'analogjs-stub-route-host', + standalone: true, + template: '', +}) class StubComponent {} function stubModule(): Promise { diff --git a/packages/storybook-angular/oxlint.config.ts b/packages/storybook-angular/oxlint.config.ts index af2e74493..fdf414775 100644 --- a/packages/storybook-angular/oxlint.config.ts +++ b/packages/storybook-angular/oxlint.config.ts @@ -10,8 +10,15 @@ export default defineConfig({ { files: ['src/**/*.ts'], rules: { + '@angular-eslint/use-component-selector': 'error', '@angular-eslint/prefer-standalone': 'error', }, }, + { + files: ['src/**/pages/**/*.ts', 'src/**/*.page.ts'], + rules: { + '@angular-eslint/use-component-selector': 'off', + }, + }, ], }); diff --git a/packages/vite-plugin-angular/oxlint.config.ts b/packages/vite-plugin-angular/oxlint.config.ts index af2e74493..fdf414775 100644 --- a/packages/vite-plugin-angular/oxlint.config.ts +++ b/packages/vite-plugin-angular/oxlint.config.ts @@ -10,8 +10,15 @@ export default defineConfig({ { files: ['src/**/*.ts'], rules: { + '@angular-eslint/use-component-selector': 'error', '@angular-eslint/prefer-standalone': 'error', }, }, + { + files: ['src/**/pages/**/*.ts', 'src/**/*.page.ts'], + rules: { + '@angular-eslint/use-component-selector': 'off', + }, + }, ], }); diff --git a/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.spec.ts b/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.spec.ts index 1c6c4e6c4..f950e13a8 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.spec.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vitest-plugin.spec.ts @@ -5,7 +5,7 @@ import { } from './angular-vitest-plugin'; import { defineConfig, resolveConfig } from 'vite'; -describe(angularVitestPlugin.name, () => { +describe('angularVitestPlugin', () => { /* Setting the pool to vmThreads by default to avoid issues related to global conflicts when using JSDOM. * This also aligns with the default pool setting in Jest. * This is not ideal as vmThreads comes with its own set of issues, but it's the best option we have for now. @@ -35,7 +35,7 @@ describe(angularVitestPlugin.name, () => { }); }); -describe(angularVitestSourcemapPlugin.name, () => { +describe('angularVitestSourcemapPlugin', () => { it('should match queried TypeScript module ids', () => { const plugin = angularVitestSourcemapPlugin(); const filter = diff --git a/tests/vitest-angular/src/snapshot-serializers/__snapshots__/angular-fixture-snapshot.spec.ts.snap b/tests/vitest-angular/src/snapshot-serializers/__snapshots__/angular-fixture-snapshot.spec.ts.snap index bd1711109..933fa7b1c 100644 --- a/tests/vitest-angular/src/snapshot-serializers/__snapshots__/angular-fixture-snapshot.spec.ts.snap +++ b/tests/vitest-angular/src/snapshot-serializers/__snapshots__/angular-fixture-snapshot.spec.ts.snap @@ -1,7 +1,7 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Angular Fixture Snapshot > create angular component componentRef fixture snapshot 1`] = ` - +
create angular component componentRef fixtur Analog documentation

- + `; exports[`Angular Fixture Snapshot > create angular fixture snapshot 1`] = ` - +
create angular fixture snapshot 1`] = ` Analog documentation

- + `; diff --git a/tests/vitest-angular/src/snapshot-serializers/angular-fixture-snapshot.spec.ts b/tests/vitest-angular/src/snapshot-serializers/angular-fixture-snapshot.spec.ts index 261a0f51b..f6d3d399e 100644 --- a/tests/vitest-angular/src/snapshot-serializers/angular-fixture-snapshot.spec.ts +++ b/tests/vitest-angular/src/snapshot-serializers/angular-fixture-snapshot.spec.ts @@ -4,7 +4,7 @@ import { describe, beforeEach, it, expect } from 'vitest'; describe('Angular Fixture Snapshot', () => { @Component({ - selector: 'app-test', + selector: 'lib-test', template: `
From 2f2f717167b6b03fb25da153c796ca6729a19a5b Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 21:48:38 -0400 Subject: [PATCH 12/33] test(router): stabilize legacy page action fixture --- apps/analog-app-e2e/tests/legacy-server-action.spec.ts | 2 +- apps/analog-app/src/app/pages/legacy-action.page.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/analog-app-e2e/tests/legacy-server-action.spec.ts b/apps/analog-app-e2e/tests/legacy-server-action.spec.ts index 6c5329dd9..dbab812db 100644 --- a/apps/analog-app-e2e/tests/legacy-server-action.spec.ts +++ b/apps/analog-app-e2e/tests/legacy-server-action.spec.ts @@ -3,7 +3,7 @@ import { test, expect } from '@playwright/test'; test.describe('legacy PageServerAction - /legacy-action', () => { test.beforeEach(async ({ page }) => { await page.goto('/legacy-action'); - await page.locator('form[data-state]').waitFor({ timeout: 15_000 }); + await page.locator('form').waitFor({ timeout: 15_000 }); }); test('submits successfully through the legacy action handler', async ({ diff --git a/apps/analog-app/src/app/pages/legacy-action.page.ts b/apps/analog-app/src/app/pages/legacy-action.page.ts index d47729073..622e4180d 100644 --- a/apps/analog-app/src/app/pages/legacy-action.page.ts +++ b/apps/analog-app/src/app/pages/legacy-action.page.ts @@ -25,7 +25,7 @@ import { >
- +
From 162043ded00fe05118314acbdbc7058337f67a0e Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 21:48:51 -0400 Subject: [PATCH 13/33] fix(platform): emit debug reload reasons for content changes --- packages/platform/src/lib/content-plugin.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/platform/src/lib/content-plugin.ts b/packages/platform/src/lib/content-plugin.ts index dfffdff6b..92fd4bbf0 100644 --- a/packages/platform/src/lib/content-plugin.ts +++ b/packages/platform/src/lib/content-plugin.ts @@ -191,6 +191,11 @@ export function contentPlugin( }); }); + server.ws.send('analog:debug-full-reload', { + plugin: 'platform:content-plugin', + reason: 'content-file-set-changed', + path, + }); server.ws.send({ type: 'full-reload', }); From 605d215001384814b62782c7f4d4f8c099570c1d Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 21:53:49 -0400 Subject: [PATCH 14/33] build: adopt workspace catalogs for repo deps --- nx.json | 29 +- oxlint.config.ts | 3 - package.json | 50 +- pnpm-lock.yaml | 11627 ++++++++++++++++++++++-------------------- pnpm-workspace.yaml | 17 + 5 files changed, 6046 insertions(+), 5680 deletions(-) diff --git a/nx.json b/nx.json index 4702c3bdb..93e047c28 100644 --- a/nx.json +++ b/nx.json @@ -1,7 +1,11 @@ { "$schema": "./node_modules/nx/schemas/nx-schema.json", - "workspaceLayout": { "libsDir": "packages" }, - "cli": { "packageManager": "pnpm" }, + "workspaceLayout": { + "libsDir": "packages" + }, + "cli": { + "packageManager": "pnpm" + }, "parallel": 8, "targetDefaults": { "build": { @@ -15,17 +19,24 @@ "e2e": { "cache": true }, - "serve": { "dependsOn": ["^build"] }, + "serve": { + "dependsOn": ["^build"] + }, "@nx/eslint:lint": { "inputs": ["default", "{workspaceRoot}/eslint.config.mjs"], - "options": { "quiet": true }, + "options": { + "quiet": true + }, "cache": true }, "@angular-devkit/build-angular:application": { "cache": true, "inputs": ["production", "^production"] }, - "@nx/vitest:test": { "cache": true, "inputs": ["default", "^production"] } + "@nx/vitest:test": { + "cache": true, + "inputs": ["default", "^production"] + } }, "generators": { "@nx/angular:application": { @@ -38,7 +49,9 @@ "linter": "eslint", "unitTestRunner": "vitest-analog" }, - "@nx/angular:component": { "style": "css" } + "@nx/angular:component": { + "style": "css" + } }, "defaultProject": "analog-app", "namedInputs": { @@ -61,7 +74,9 @@ "plugins": [ { "plugin": "@nx/eslint/plugin", - "options": { "targetName": "eslint:lint" } + "options": { + "targetName": "eslint:lint" + } } ], "analytics": false diff --git a/oxlint.config.ts b/oxlint.config.ts index 622429b5f..def36abb2 100644 --- a/oxlint.config.ts +++ b/oxlint.config.ts @@ -13,9 +13,6 @@ export default defineConfig({ node: true, es2024: true, }, - rules: { - 'typescript/tsconfig-error': 'allow', - }, ignorePatterns: [ '**/dist', '**/out-tsc', diff --git a/package.json b/package.json index 69fc7a33d..bae46b5c2 100644 --- a/package.json +++ b/package.json @@ -67,15 +67,16 @@ "@angular/material": "21.2.4", "@angular/platform-browser": "21.2.6", "@angular/platform-browser-dynamic": "21.2.6", - "@angular/platform-server": "21.2.6", + "@angular/platform-server": "~21.2.6", "@angular/router": "21.2.6", "@angular/ssr": "21.2.4", "@astrojs/mdx": "catalog:", "@astrojs/react": "catalog:", "@mdx-js/react": "3.1.1", - "@nx/angular": "22.6.2", - "@nx/devkit": "22.6.2", + "@nx/angular": "catalog:", + "@nx/devkit": "catalog:", "@standard-schema/spec": "catalog:", + "@tailwindcss/postcss": "catalog:", "@tanstack/angular-query-experimental": "^5.95.2", "@tanstack/query-core": "^5.95.2", "ajv-formats": "^3.0.1", @@ -118,14 +119,15 @@ "@eslint/eslintrc": "^3.3.5", "@eslint/js": "^10.0.1", "@netlify/functions": "^5.1.5", - "@nx/eslint": "22.6.2", - "@nx/eslint-plugin": "22.6.2", - "@nx/playwright": "22.6.2", - "@nx/plugin": "22.6.2", - "@nx/storybook": "22.6.2", - "@nx/vite": "22.6.2", - "@nx/vitest": "22.6.2", - "@nx/web": "22.6.2", + "@nx/eslint": "catalog:", + "@nx/eslint-plugin": "catalog:", + "@nx/js": "catalog:", + "@nx/playwright": "catalog:", + "@nx/plugin": "catalog:", + "@nx/storybook": "catalog:", + "@nx/vite": "catalog:", + "@nx/vitest": "catalog:", + "@nx/web": "catalog:", "@oxc-angular/vite": "^0.0.22", "@oxc-project/runtime": "^0.123.0", "@playwright/test": "^1.58.2", @@ -139,6 +141,9 @@ "@storybook/addon-vitest": "^10.3.3", "@storybook/angular": "10.3.3", "@storybook/builder-vite": "catalog:peerStorybook10", + "@swc-node/register": "catalog:", + "@swc/core": "catalog:", + "@swc/helpers": "catalog:", "@tailwindcss/vite": "catalog:", "@types/hast": "^3.0.4", "@types/node": "^25.5.0", @@ -146,15 +151,16 @@ "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/semver": "^7.7.1", - "@typescript-eslint/eslint-plugin": "8.57.2", - "@typescript-eslint/parser": "8.57.2", - "@typescript-eslint/type-utils": "8.57.2", + "@typescript-eslint/eslint-plugin": "8.58.0", + "@typescript-eslint/parser": "8.58.0", + "@typescript-eslint/type-utils": "8.58.0", "@typescript-eslint/utils": "^8.57.2", "@vitest/browser-playwright": "4.1.2", "@vitest/coverage-v8": "4.1.2", "@vitest/ui": "4.1.2", "ajv": "^8.18.0", "all-contributors-cli": "^6.26.1", + "angular-eslint": "catalog:", "astro": "catalog:", "conventional-changelog": "^7.2.0", "cpy-cli": "^7.0.0", @@ -183,7 +189,7 @@ "minimist": "^1.2.8", "ng-packagr": "21.2.1", "nitro": "catalog:", - "nx": "22.6.2", + "nx": "catalog:", "obug": "^2.1.1", "ofetch": "catalog:", "oxc-parser": "catalog:", @@ -200,8 +206,8 @@ "rolldown-plugin-dts": "^0.23.0", "rollup": "^4.60.0", "rollup-plugin-visualizer": "^7.0.1", - "sass": "1.98.0", - "sass-embedded": "1.98.0", + "sass": "1.99.0", + "sass-embedded": "1.99.0", "satori": "^0.26.0", "satori-html": "catalog:", "schema-dts": "catalog:", @@ -255,19 +261,11 @@ "@typescript-eslint/type-utils": "$@typescript-eslint/type-utils", "jiti": "$jiti", "less": "$less", - "nitropack": { - "vite": "$vite" - }, "rolldown": "$rolldown", "sass-embedded": "$sass-embedded", "sass": "$sass", "typescript": "$typescript", "vite": "$vite", "zone.js": "$zone.js" - }, - "workspaces": [ - "apps/*", - "packages/*", - "libs/**" - ] + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 62281a0d3..d7bc69c1d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,18 +12,66 @@ catalogs: '@astrojs/react': specifier: ^5.0.2 version: 5.0.2 + '@nx/angular': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 + '@nx/devkit': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 + '@nx/eslint': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 + '@nx/eslint-plugin': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 + '@nx/js': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 + '@nx/playwright': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 + '@nx/plugin': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 + '@nx/storybook': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 + '@nx/vite': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 + '@nx/vitest': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 + '@nx/web': + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 '@standard-schema/spec': specifier: ^1.1.0 version: 1.1.0 + '@swc-node/register': + specifier: ~1.11.1 + version: 1.11.1 + '@swc/core': + specifier: ~1.15.5 + version: 1.15.24 + '@swc/helpers': + specifier: ~0.5.18 + version: 0.5.21 + '@tailwindcss/postcss': + specifier: ^4.2.2 + version: 4.2.2 '@tailwindcss/vite': specifier: ^4.2.2 version: 4.2.2 + angular-eslint: + specifier: ^21.2.0 + version: 21.3.1 astro: specifier: 6.1.1 version: 6.1.1 defu: specifier: ^6.1.4 - version: 6.1.4 + version: 6.1.6 es-toolkit: specifier: ^1.45.1 version: 1.45.1 @@ -48,6 +96,9 @@ catalogs: nitro: specifier: 3.0.260311-beta version: 3.0.260311-beta + nx: + specifier: 22.7.0-beta.10 + version: 22.7.0-beta.10 obug: specifier: ^2.1.1 version: 2.1.1 @@ -110,7 +161,7 @@ catalogs: version: 6.0.2 vitefu: specifier: ^1.1.2 - version: 1.1.2 + version: 1.1.3 xmlbuilder2: specifier: ^4.0.3 version: 4.0.3 @@ -196,7 +247,7 @@ catalogs: version: 10.3.3 '@storybook/builder-vite': specifier: ^10.3.3 - version: 10.3.3 + version: 10.3.4 storybook: specifier: ^10.0.0 version: 10.3.3 @@ -206,7 +257,7 @@ catalogs: version: 2.4.0 '@angular-devkit/architect': specifier: '>=0.1500.0 < 0.2200.0' - version: 0.2102.4 + version: 0.2102.6 '@angular-devkit/schematics': specifier: '>=17.0.0' version: 21.2.4 @@ -249,7 +300,7 @@ importers: specifier: 21.2.6 version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))) '@angular/platform-server': - specifier: 21.2.6 + specifier: ~21.2.6 version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/router': specifier: 21.2.6 @@ -259,34 +310,37 @@ importers: version: 21.2.4(7413267c1883f3ede58570ed37d43fb5) '@astrojs/mdx': specifier: 'catalog:' - version: 5.0.3(astro@6.1.1(@types/node@25.5.0)(db0@0.3.4)(ioredis@5.10.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(typescript@6.0.2)(yaml@2.8.2)) + version: 5.0.3(astro@6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.2)(yaml@2.8.3)) '@astrojs/react': specifier: 'catalog:' - version: 5.0.2(@types/node@25.5.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + version: 5.0.2(@types/node@25.5.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) '@mdx-js/react': specifier: 3.1.1 version: 3.1.1(@types/react@19.2.14)(react@19.2.4) '@nx/angular': - specifier: 22.6.2 - version: 22.6.2(a628988cf4934ddb1865ff37c54d348f) + specifier: 'catalog:' + version: 22.7.0-beta.10(4e99d45cd480f6afd2d570979ef69272) '@nx/devkit': - specifier: 22.6.2 - version: 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + specifier: 'catalog:' + version: 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@standard-schema/spec': specifier: 'catalog:' version: 1.1.0 + '@tailwindcss/postcss': + specifier: 'catalog:' + version: 4.2.2 '@tanstack/angular-query-experimental': specifier: ^5.95.2 - version: 5.95.2(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) + version: 5.96.2(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) '@tanstack/query-core': specifier: ^5.95.2 - version: 5.95.2 + version: 5.96.2 ajv-formats: specifier: ^3.0.1 version: 3.0.1(ajv@8.18.0) defu: specifier: 'catalog:' - version: 6.1.4 + version: 6.1.6 destr: specifier: ^2.0.5 version: 2.0.5 @@ -304,7 +358,7 @@ importers: version: 2.2.3(marked@17.0.5) mermaid: specifier: ^11.13.0 - version: 11.13.0 + version: 11.14.0 radix3: specifier: 'catalog:' version: 1.1.2 @@ -347,7 +401,7 @@ importers: version: 0.2102.6(chokidar@5.0.0) '@angular-devkit/build-angular': specifier: 21.2.4 - version: 21.2.4(562e135550fb493df3034c3b70b31f89) + version: 21.2.4(add8bde166a9c825117621996a363ef3) '@angular-devkit/core': specifier: 21.2.4 version: 21.2.4(chokidar@5.0.0) @@ -356,19 +410,19 @@ importers: version: 21.2.4(chokidar@5.0.0) '@angular-eslint/eslint-plugin': specifier: 21.3.1 - version: 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + version: 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@angular-eslint/eslint-plugin-template': specifier: 21.3.1 - version: 21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + version: 21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@angular-eslint/template-parser': specifier: 21.3.1 - version: 21.3.1(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + version: 21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@angular/build': specifier: 21.2.4 - version: 21.2.4(ce7d2ad427afc0ad407f7182efa58bb6) + version: 21.2.4(d177fe19ad80c073ee03544d343f9ed0) '@angular/cli': specifier: 21.2.4 - version: 21.2.4(@types/node@25.5.0)(chokidar@5.0.0) + version: 21.2.4(@types/node@25.5.2)(chokidar@5.0.0) '@angular/compiler-cli': specifier: 21.2.6 version: 21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2) @@ -380,55 +434,58 @@ importers: version: 1.0.5 '@commitlint/cli': specifier: ^20.5.0 - version: 20.5.0(@types/node@25.5.0)(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.3.0)(typescript@6.0.2) + version: 20.5.0(@types/node@25.5.2)(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)(typescript@6.0.2) '@commitlint/config-conventional': specifier: ^20.5.0 version: 20.5.0 '@compodoc/compodoc': specifier: ^1.2.1 - version: 1.2.1(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)(keycharm@0.2.0)(typescript@6.0.2)(vis-data@8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)))(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)) + version: 1.2.1(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)(keycharm@0.4.0)(typescript@6.0.2)(vis-data@8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)))(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)) '@eslint/eslintrc': specifier: ^3.3.5 version: 3.3.5 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.1.0(jiti@2.6.1)) + version: 10.0.1(eslint@10.2.0(jiti@2.6.1)) '@netlify/functions': specifier: ^5.1.5 version: 5.1.5 '@nx/eslint': - specifier: 22.6.2 - version: 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + specifier: 'catalog:' + version: 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@nx/eslint-plugin': - specifier: 22.6.2 - version: 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint-config-prettier@10.1.8(eslint@10.1.0(jiti@2.6.1)))(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2) + specifier: 'catalog:' + version: 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-config-prettier@10.1.8(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2) + '@nx/js': + specifier: 'catalog:' + version: 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@nx/playwright': - specifier: 22.6.2 - version: 22.6.2(@babel/traverse@7.29.0)(@playwright/test@1.58.2)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + specifier: 'catalog:' + version: 22.7.0-beta.10(@babel/traverse@7.29.0)(@playwright/test@1.59.1)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@nx/plugin': - specifier: 22.6.2 - version: 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(ts-node@10.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(typescript@6.0.2))(typescript@6.0.2) + specifier: 'catalog:' + version: 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/node@25.5.2)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2) '@nx/storybook': - specifier: 22.6.2 - version: 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(cypress@15.11.0)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2) + specifier: 'catalog:' + version: 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2) '@nx/vite': - specifier: 22.6.2 - version: 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) + specifier: 'catalog:' + version: 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) '@nx/vitest': - specifier: 22.6.2 - version: 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) + specifier: 'catalog:' + version: 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) '@nx/web': - specifier: 22.6.2 - version: 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + specifier: 'catalog:' + version: 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@oxc-angular/vite': specifier: ^0.0.22 - version: 0.0.22(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 0.0.22(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) '@oxc-project/runtime': specifier: ^0.123.0 version: 0.123.0 '@playwright/test': specifier: ^1.58.2 - version: 1.58.2 + version: 1.59.1 '@schematics/angular': specifier: 21.2.4 version: 21.2.4(chokidar@5.0.0) @@ -443,28 +500,37 @@ importers: version: 10.0.1(semantic-release@25.0.3(typescript@6.0.2)) '@storybook/addon-docs': specifier: ^10.3.3 - version: 10.3.3(@types/react@19.2.14)(esbuild@0.27.4)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + version: 10.3.4(@types/react@19.2.14)(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) '@storybook/addon-links': specifier: ^10.3.3 - version: 10.3.3(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + version: 10.3.4(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) '@storybook/addon-vitest': specifier: ^10.3.3 - version: 10.3.3(@vitest/browser-playwright@4.1.2)(@vitest/browser@4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2))(@vitest/runner@4.1.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vitest@4.1.2) + version: 10.3.4(@vitest/browser-playwright@4.1.2)(@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2))(@vitest/runner@4.1.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vitest@4.1.2) '@storybook/angular': specifier: 10.3.3 - version: 10.3.3(03faf32c23c06f1c41ddb71d67300a79) + version: 10.3.3(bc89a49b7ef7c3b0ebc444702278ad2d) '@storybook/builder-vite': specifier: catalog:peerStorybook10 - version: 10.3.3(esbuild@0.27.4)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + version: 10.3.4(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@swc-node/register': + specifier: 'catalog:' + version: 1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2) + '@swc/core': + specifier: 'catalog:' + version: 1.15.24(@swc/helpers@0.5.21) + '@swc/helpers': + specifier: 'catalog:' + version: 0.5.21 '@tailwindcss/vite': specifier: 'catalog:' - version: 4.2.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) '@types/hast': specifier: ^3.0.4 version: 3.0.4 '@types/node': specifier: ^25.5.0 - version: 25.5.0 + version: 25.5.2 '@types/prismjs': specifier: ^1.26.6 version: 1.26.6 @@ -478,23 +544,23 @@ importers: specifier: ^7.7.1 version: 7.7.1 '@typescript-eslint/eslint-plugin': - specifier: 8.57.2 - version: 8.57.2(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + specifier: 8.58.0 + version: 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@typescript-eslint/parser': - specifier: 8.57.2 - version: 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + specifier: 8.58.0 + version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@typescript-eslint/type-utils': - specifier: 8.57.2 - version: 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + specifier: 8.58.0 + version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@typescript-eslint/utils': specifier: ^8.57.2 - version: 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@vitest/browser-playwright': specifier: 4.1.2 - version: 4.1.2(playwright@1.58.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) + version: 4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) '@vitest/coverage-v8': specifier: 4.1.2 - version: 4.1.2(@vitest/browser@4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2))(vitest@4.1.2) + version: 4.1.2(@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2))(vitest@4.1.2) '@vitest/ui': specifier: 4.1.2 version: 4.1.2(vitest@4.1.2) @@ -504,9 +570,12 @@ importers: all-contributors-cli: specifier: ^6.26.1 version: 6.26.1(encoding@0.1.13) + angular-eslint: + specifier: 'catalog:' + version: 21.3.1(@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@10.2.0(jiti@2.6.1))(typescript-eslint@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(typescript@6.0.2) astro: specifier: 'catalog:' - version: 6.1.1(@types/node@25.5.0)(db0@0.3.4)(ioredis@5.10.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(typescript@6.0.2)(yaml@2.8.2) + version: 6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.2)(yaml@2.8.3) conventional-changelog: specifier: ^7.2.0 version: 7.2.0(conventional-commits-filter@5.0.0) @@ -518,19 +587,19 @@ importers: version: 4.0.0-beta.36 eslint: specifier: ^10.1.0 - version: 10.1.0(jiti@2.6.1) + version: 10.2.0(jiti@2.6.1) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@10.1.0(jiti@2.6.1)) + version: 10.1.8(eslint@10.2.0(jiti@2.6.1)) eslint-plugin-oxlint: specifier: ^1.57.0 - version: 1.57.0(oxlint@1.57.0(oxlint-tsgolint@0.19.0)) + version: 1.58.0(oxlint@1.58.0(oxlint-tsgolint@0.19.0)) eslint-plugin-playwright: specifier: ^2.10.1 - version: 2.10.1(eslint@10.1.0(jiti@2.6.1)) + version: 2.10.1(eslint@10.2.0(jiti@2.6.1)) eslint-plugin-storybook: specifier: 10.3.3 - version: 10.3.3(eslint@10.1.0(jiti@2.6.1))(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2) + version: 10.3.3(eslint@10.2.0(jiti@2.6.1))(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2) execa: specifier: ^9.6.1 version: 9.6.1 @@ -587,10 +656,10 @@ importers: version: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) nitro: specifier: 'catalog:' - version: 3.0.260311-beta(chokidar@5.0.0)(dotenv@17.3.1)(giget@2.0.0)(ioredis@5.10.0)(jiti@2.6.1)(lru-cache@11.2.7)(rollup@4.60.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 3.0.260311-beta(chokidar@5.0.0)(dotenv@16.4.7)(jiti@2.6.1)(lru-cache@11.2.7)(rollup@4.60.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) nx: - specifier: 22.6.2 - version: 22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)) + specifier: 'catalog:' + version: 22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) obug: specifier: ^2.1.1 version: 2.1.1 @@ -599,22 +668,22 @@ importers: version: 2.0.0-alpha.3 oxc-parser: specifier: 'catalog:' - version: 0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + version: 0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxc-resolver: specifier: 'catalog:' - version: 11.19.1 + version: 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxc-transform: specifier: 'catalog:' - version: 0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + version: 0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxlint: specifier: ^1.57.0 - version: 1.57.0(oxlint-tsgolint@0.19.0) + version: 1.58.0(oxlint-tsgolint@0.19.0) oxlint-tsgolint: specifier: ^0.19.0 version: 0.19.0 playwright: specifier: ^1.58.2 - version: 1.58.2 + version: 1.59.1 postcss: specifier: ^8.5.8 version: 8.5.8 @@ -632,7 +701,7 @@ importers: version: 1.0.0-rc.13 rolldown-plugin-dts: specifier: ^0.23.0 - version: 0.23.2(oxc-resolver@11.19.1)(rolldown@1.0.0-rc.13)(typescript@6.0.2) + version: 0.23.2(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@1.0.0-rc.13)(typescript@6.0.2) rollup: specifier: ^4.60.0 version: 4.60.1 @@ -640,11 +709,11 @@ importers: specifier: ^7.0.1 version: 7.0.1(rolldown@1.0.0-rc.13)(rollup@4.60.1) sass: - specifier: 1.98.0 - version: 1.98.0 + specifier: 1.99.0 + version: 1.99.0 sass-embedded: - specifier: 1.98.0 - version: 1.98.0 + specifier: 1.99.0 + version: 1.99.0 satori: specifier: ^0.26.0 version: 0.26.0 @@ -671,7 +740,7 @@ importers: version: 3.0.0 storybook: specifier: 10.3.3 - version: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tailwindcss: specifier: 'catalog:' version: 4.2.2 @@ -686,31 +755,31 @@ importers: version: 27.0.2 tsdown: specifier: 'catalog:' - version: 0.21.7(oxc-resolver@11.19.1)(synckit@0.11.11)(typescript@6.0.2) + version: 0.21.7(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(synckit@0.11.12)(typescript@6.0.2) typescript: specifier: 'catalog:' version: 6.0.2 typescript-eslint: specifier: ^8.57.2 - version: 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) vite: specifier: ^8.0.3 - version: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@10.1.0(jiti@2.6.1))(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 1.8.1(eslint@10.2.0(jiti@2.6.1))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) vite-plugin-inspect: specifier: 12.0.0-beta.1 - version: 12.0.0-beta.1(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(ws@8.19.0) + version: 12.0.0-beta.1(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(ws@8.20.0) vite-tsconfig-paths: specifier: ^7.0.0-alpha.1 - version: 7.0.0-alpha.1(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 7.0.0-alpha.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) vitefu: specifier: 'catalog:' - version: 1.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 1.1.3(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) xmlbuilder2: specifier: 'catalog:' version: 4.0.3 @@ -746,13 +815,13 @@ importers: version: link:../../packages/astro-angular '@astrojs/mdx': specifier: 'catalog:' - version: 5.0.3(astro@6.1.1(@types/node@25.5.0)(db0@0.3.4)(ioredis@5.10.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(typescript@5.9.3)(yaml@2.8.2)) + version: 5.0.3(astro@6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@5.9.3)(yaml@2.8.3)) '@astrojs/react': specifier: 'catalog:' - version: 5.0.2(@types/node@25.5.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + version: 5.0.2(@types/node@25.5.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) astro: specifier: 'catalog:' - version: 6.1.1(@types/node@25.5.0)(db0@0.3.4)(ioredis@5.10.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(typescript@5.9.3)(yaml@2.8.2) + version: 6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@5.9.3)(yaml@2.8.3) apps/astro-app-e2e-playwright: {} @@ -775,10 +844,10 @@ importers: dependencies: '@docusaurus/core': specifier: 3.9.2 - version: 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + version: 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/preset-classic': specifier: 3.9.2 - version: 3.9.2(@algolia/client-search@5.48.1)(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/react@18.3.28)(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.14.0)(typescript@6.0.2) + version: 3.9.2(@algolia/client-search@5.50.1)(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/react@18.3.28)(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2) '@mdx-js/react': specifier: ^3.1.1 version: 3.1.1(@types/react@18.3.28)(react@19.2.4) @@ -797,13 +866,13 @@ importers: devDependencies: '@docusaurus/module-type-aliases': specifier: 3.9.2 - version: 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/tsconfig': specifier: 3.9.2 version: 3.9.2 '@docusaurus/types': specifier: 3.9.2 - version: 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/react': specifier: ^18.3.28 version: 18.3.28 @@ -823,6 +892,24 @@ importers: specifier: workspace:* version: link:../../packages/router + apps/tailwind-debug-app: + dependencies: + '@analogjs/router': + specifier: workspace:* + version: link:../../packages/router + devDependencies: + '@analogjs/platform': + specifier: workspace:* + version: link:../../packages/platform + '@analogjs/vite-plugin-angular': + specifier: workspace:* + version: link:../../packages/vite-plugin-angular + '@analogjs/vitest-angular': + specifier: workspace:* + version: link:../../packages/vitest-angular + + apps/tailwind-debug-app-e2e: {} + apps/tanstack-query-app: dependencies: '@analogjs/router': @@ -837,7 +924,7 @@ importers: version: link:../../packages/vitest-angular '@tailwindcss/vite': specifier: 'catalog:' - version: 4.2.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) daisyui: specifier: ^5.5.19 version: 5.5.19 @@ -884,7 +971,7 @@ importers: version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/build': specifier: catalog:peerAngular20Plus - version: 21.2.4(ce7d2ad427afc0ad407f7182efa58bb6) + version: 21.2.4(d177fe19ad80c073ee03544d343f9ed0) '@angular/common': specifier: catalog:peerAngular20Plus version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) @@ -917,7 +1004,7 @@ importers: version: 2.8.1 vite: specifier: catalog:peerCompat - version: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) packages/content: dependencies: @@ -935,7 +1022,7 @@ importers: version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@nx/devkit': specifier: catalog:peerCompat - version: 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + version: 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@standard-schema/spec': specifier: 'catalog:' version: 1.1.0 @@ -984,13 +1071,13 @@ importers: dependencies: '@nx/devkit': specifier: catalog:peerCompat - version: 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + version: 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) tsdown: specifier: 'catalog:' - version: 0.21.7(oxc-resolver@11.19.1)(synckit@0.11.11)(typescript@6.0.2) + version: 0.21.7(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(synckit@0.11.12)(typescript@6.0.2) vite: specifier: catalog:peerCompat - version: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) packages/create-analog: dependencies: @@ -1024,13 +1111,13 @@ importers: version: link:../vite-plugin-nitro '@nx/angular': specifier: catalog:peerCompat - version: 22.6.2(f9c0e4d784851f77ce1f57a6551032f7) + version: 22.6.2(2a579566a2f9025e1fc42cc56ec7d2ef) '@nx/devkit': specifier: catalog:peerCompat - version: 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + version: 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@nx/vite': specifier: catalog:peerCompat - version: 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) + version: 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) es-toolkit: specifier: 'catalog:' version: 1.45.1 @@ -1054,7 +1141,7 @@ importers: version: 1.2.1(marked@17.0.5)(shiki@4.0.2) nitro: specifier: 'catalog:' - version: 3.0.260311-beta(chokidar@5.0.0)(dotenv@17.3.1)(giget@2.0.0)(ioredis@5.10.0)(jiti@2.6.1)(lru-cache@11.2.7)(rollup@4.60.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 3.0.260311-beta(chokidar@5.0.0)(dotenv@16.4.7)(jiti@2.6.1)(lru-cache@11.2.7)(rollup@4.60.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) obug: specifier: 'catalog:' version: 2.1.1 @@ -1069,10 +1156,10 @@ importers: version: 0.2.15 vite: specifier: catalog:peerCompat - version: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) vitefu: specifier: 'catalog:' - version: 1.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 1.1.3(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) packages/router: dependencies: @@ -1093,7 +1180,7 @@ importers: version: 1.1.0 '@tanstack/angular-query-experimental': specifier: '>=5.95.0' - version: 5.95.2(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) + version: 5.96.2(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) es-toolkit: specifier: 'catalog:' version: 1.45.1 @@ -1112,28 +1199,28 @@ importers: dependencies: '@analogjs/vite-plugin-angular': specifier: catalog:peerVitestAngular - version: 2.4.0(@angular-devkit/build-angular@21.2.4(562e135550fb493df3034c3b70b31f89))(@angular/build@21.2.4(ce7d2ad427afc0ad407f7182efa58bb6)) + version: 2.4.0(@angular-devkit/build-angular@21.2.4(add8bde166a9c825117621996a363ef3))(@angular/build@21.2.4(d177fe19ad80c073ee03544d343f9ed0)) '@storybook/angular': specifier: catalog:peerStorybook10 - version: 10.3.3(e5e170d2e3e77bdca2d0d20e3095bd7d) + version: 10.3.3(975f11fc86a5e94c9ef15edca002f86b) '@storybook/builder-vite': specifier: catalog:peerStorybook10 - version: 10.3.3(esbuild@0.27.4)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + version: 10.3.4(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) storybook: specifier: catalog:peerStorybook10 - version: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) vite: specifier: catalog:peerCompat - version: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) packages/vite-plugin-angular: dependencies: '@angular-devkit/build-angular': specifier: catalog:peerAngularBuilders - version: 21.2.4(562e135550fb493df3034c3b70b31f89) + version: 21.2.4(b8427e3316f5f1e4538d50a5e8d618ff) '@angular/build': specifier: catalog:peerAngularBuilders - version: 21.2.4(f1c48cde826f2133f9c7e32cd03964bb) + version: 21.2.4(33aa2f808a50cac312b6b6a28e7f9322) es-toolkit: specifier: 'catalog:' version: 1.45.1 @@ -1142,10 +1229,10 @@ importers: version: 2.1.1 oxc-parser: specifier: 'catalog:' - version: 0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + version: 0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxc-resolver: specifier: 'catalog:' - version: 11.19.1 + version: 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) rolldown: specifier: 'catalog:' version: 1.0.0-rc.13 @@ -1159,10 +1246,10 @@ importers: dependencies: defu: specifier: 'catalog:' - version: 6.1.4 + version: 6.1.6 nitro: specifier: 'catalog:' - version: 3.0.260311-beta(chokidar@5.0.0)(dotenv@17.3.1)(giget@2.0.0)(ioredis@5.10.0)(jiti@2.6.1)(lru-cache@11.2.7)(rollup@4.60.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 3.0.260311-beta(chokidar@5.0.0)(dotenv@16.4.7)(jiti@2.6.1)(lru-cache@11.2.7)(rollup@4.60.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) obug: specifier: 'catalog:' version: 2.1.1 @@ -1171,7 +1258,7 @@ importers: version: 2.0.0-alpha.3 oxc-parser: specifier: 'catalog:' - version: 0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + version: 0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) radix3: specifier: 'catalog:' version: 1.1.2 @@ -1186,19 +1273,19 @@ importers: dependencies: '@analogjs/vite-plugin-angular': specifier: catalog:peerVitestAngular - version: 2.4.0(@angular-devkit/build-angular@21.2.4(562e135550fb493df3034c3b70b31f89))(@angular/build@21.2.4(ce7d2ad427afc0ad407f7182efa58bb6)) + version: 2.4.0(@angular-devkit/build-angular@21.2.4(add8bde166a9c825117621996a363ef3))(@angular/build@21.2.4(d177fe19ad80c073ee03544d343f9ed0)) '@angular-devkit/architect': specifier: catalog:peerVitestAngular - version: 0.2102.4(chokidar@5.0.0) + version: 0.2102.6(chokidar@5.0.0) '@angular-devkit/schematics': specifier: catalog:peerVitestAngular version: 21.2.4(chokidar@5.0.0) oxc-transform: specifier: 'catalog:' - version: 0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + version: 0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) vitest: specifier: catalog:peerVitestAngular - version: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + version: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) zone.js: specifier: catalog:peerVitestAngular version: 0.16.1 @@ -1216,10 +1303,6 @@ importers: packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - '@actions/core@3.0.0': resolution: {integrity: sha512-zYt6cz+ivnTmiT/ksRVriMBOiuoUpDCJJlZ5KPl2/FRdvwU3f7MPh9qftvbkXJThragzUZieit2nyHUyw53Seg==} @@ -1232,11 +1315,8 @@ packages: '@actions/io@3.0.2': resolution: {integrity: sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==} - '@adobe/css-tools@4.3.3': - resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} - - '@adobe/css-tools@4.4.3': - resolution: {integrity: sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==} + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} '@aduh95/viz.js@3.4.0': resolution: {integrity: sha512-KI2nVf9JdwWCXqK6RVf+9/096G7VWN4Z84mnynlyZKao2xQENW8WNEjLmvdlxS5X8PNWXFC1zqwm7tveOXw/4A==} @@ -1245,6 +1325,10 @@ packages: resolution: {integrity: sha512-Dkj0BgPiLAaim9sbQ97UKDFHJE/880wgStAM18U++NaJ/2Cws34J5731ovJifr6E3Pv4T2CqvMXf8qLCC417Ew==} engines: {node: '>= 14.0.0'} + '@algolia/abtesting@1.16.1': + resolution: {integrity: sha512-Xxk4l00pYI+jE0PNw8y0MvsQWh5278WRtZQav8/BMMi3HKi2xmeuqe11WJ3y8/6nuBHdv39w76OpJb09TMfAVQ==} + engines: {node: '>= 14.0.0'} + '@algolia/autocomplete-core@1.19.2': resolution: {integrity: sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==} @@ -1263,30 +1347,58 @@ packages: resolution: {integrity: sha512-LV5qCJdj+/m9I+Aj91o+glYszrzd7CX6NgKaYdTOj4+tUYfbS62pwYgUfZprYNayhkQpVFcrW8x8ZlIHpS23Vw==} engines: {node: '>= 14.0.0'} + '@algolia/client-abtesting@5.50.1': + resolution: {integrity: sha512-4peZlPXMwTOey9q1rQKMdCnwZb/E95/1e+7KujXpLLSh0FawJzg//U2NM+r4AiJy4+naT2MTBhj0K30yshnVTA==} + engines: {node: '>= 14.0.0'} + '@algolia/client-analytics@5.48.1': resolution: {integrity: sha512-/AVoMqHhPm14CcHq7mwB+bUJbfCv+jrxlNvRjXAuO+TQa+V37N8k1b0ijaRBPdmSjULMd8KtJbQyUyabXOu6Kg==} engines: {node: '>= 14.0.0'} + '@algolia/client-analytics@5.50.1': + resolution: {integrity: sha512-i+aWHHG8NZvGFHtPeMZkxL2Loc6Fm7iaRo15lYSMx8gFL+at9vgdWxhka7mD1fqxkrxXsQstUBCIsSY8FvkEOw==} + engines: {node: '>= 14.0.0'} + '@algolia/client-common@5.48.1': resolution: {integrity: sha512-VXO+qu2Ep6ota28ktvBm3sG53wUHS2n7bgLWmce5jTskdlCD0/JrV4tnBm1l7qpla1CeoQb8D7ShFhad+UoSOw==} engines: {node: '>= 14.0.0'} + '@algolia/client-common@5.50.1': + resolution: {integrity: sha512-Hw52Fwapyk/7hMSV/fI4+s3H9MGZEUcRh4VphyXLAk2oLYdndVUkc6KBi0zwHSzwPAr+ZBwFPe2x6naUt9mZGw==} + engines: {node: '>= 14.0.0'} + '@algolia/client-insights@5.48.1': resolution: {integrity: sha512-zl+Qyb0nLg+Y5YvKp1Ij+u9OaPaKg2/EPzTwKNiVyOHnQJlFxmXyUZL1EInczAZsEY8hVpPCLtNfhMhfxluXKQ==} engines: {node: '>= 14.0.0'} + '@algolia/client-insights@5.50.1': + resolution: {integrity: sha512-Bn/wtwhJ7p1OD/6pY+Zzn+zlu2N/SJnH46md/PAbvqIzmjVuwjNwD4y0vV5Ov8naeukXdd7UU9v550+v8+mtlg==} + engines: {node: '>= 14.0.0'} + '@algolia/client-personalization@5.48.1': resolution: {integrity: sha512-r89Qf9Oo9mKWQXumRu/1LtvVJAmEDpn8mHZMc485pRfQUMAwSSrsnaw1tQ3sszqzEgAr1c7rw6fjBI+zrAXTOw==} engines: {node: '>= 14.0.0'} + '@algolia/client-personalization@5.50.1': + resolution: {integrity: sha512-0V4Tu0RWR8YxkgI9EPVOZHGE4K5pEIhkLNN0CTkP/rnPsqaaSQpNMYW3/mGWdiKOWbX0iVmwLB9QESk3H0jS5g==} + engines: {node: '>= 14.0.0'} + '@algolia/client-query-suggestions@5.48.1': resolution: {integrity: sha512-TPKNPKfghKG/bMSc7mQYD9HxHRUkBZA4q1PEmHgICaSeHQscGqL4wBrKkhfPlDV1uYBKW02pbFMUhsOt7p4ZpA==} engines: {node: '>= 14.0.0'} + '@algolia/client-query-suggestions@5.50.1': + resolution: {integrity: sha512-jofcWNYMXJDDr87Z2eivlWY6o71Zn7F7aOvQCXSDAo9QTlyf7BhXEsZymLUvF0O1yU9Q9wvrjAWn8uVHYnAvgw==} + engines: {node: '>= 14.0.0'} + '@algolia/client-search@5.48.1': resolution: {integrity: sha512-4Fu7dnzQyQmMFknYwTiN/HxPbH4DyxvQ1m+IxpPp5oslOgz8m6PG5qhiGbqJzH4HiT1I58ecDiCAC716UyVA8Q==} engines: {node: '>= 14.0.0'} + '@algolia/client-search@5.50.1': + resolution: {integrity: sha512-OteRb8WubcmEvU0YlMJwCXs3Q6xrdkb0v50/qZBJP1TF0CvujFZQM++9BjEkTER/Jr9wbPHvjSFKnbMta0b4dQ==} + engines: {node: '>= 14.0.0'} + '@algolia/events@4.0.1': resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} @@ -1294,26 +1406,54 @@ packages: resolution: {integrity: sha512-/RFq3TqtXDUUawwic/A9xylA2P3LDMO8dNhphHAUOU51b1ZLHrmZ6YYJm3df1APz7xLY1aht6okCQf+/vmrV9w==} engines: {node: '>= 14.0.0'} + '@algolia/ingestion@1.50.1': + resolution: {integrity: sha512-0GmfSgDQK6oiIVXnJvGxtNFOfosBspRTR7csCOYCTL1P8QtxX2vDCIKwTM7xdSAEbJaZ43QlWg25q0Qdsndz8Q==} + engines: {node: '>= 14.0.0'} + '@algolia/monitoring@1.48.1': resolution: {integrity: sha512-Of0jTeAZRyRhC7XzDSjJef0aBkgRcvRAaw0ooYRlOw57APii7lZdq+layuNdeL72BRq1snaJhoMMwkmLIpJScw==} engines: {node: '>= 14.0.0'} + '@algolia/monitoring@1.50.1': + resolution: {integrity: sha512-ySuigKEe4YjYV3si8NVk9BHQpFj/1B+ON7DhhvTvbrZJseHQQloxzq0yHwKmznSdlO6C956fx4pcfOKkZClsyg==} + engines: {node: '>= 14.0.0'} + '@algolia/recommend@5.48.1': resolution: {integrity: sha512-bE7JcpFXzxF5zHwj/vkl2eiCBvyR1zQ7aoUdO+GDXxGp0DGw7nI0p8Xj6u8VmRQ+RDuPcICFQcCwRIJT5tDJFw==} engines: {node: '>= 14.0.0'} + '@algolia/recommend@5.50.1': + resolution: {integrity: sha512-Cp8T/B0gVmjFlzzp6eP47hwKh5FGyeqQp1N48/ANDdvdiQkPqLyFHQVDwLBH0LddfIPQE+yqmZIgmKc82haF4A==} + engines: {node: '>= 14.0.0'} + '@algolia/requester-browser-xhr@5.48.1': resolution: {integrity: sha512-MK3wZ2koLDnvH/AmqIF1EKbJlhRS5j74OZGkLpxI4rYvNi9Jn/C7vb5DytBnQ4KUWts7QsmbdwHkxY5txQHXVw==} engines: {node: '>= 14.0.0'} + '@algolia/requester-browser-xhr@5.50.1': + resolution: {integrity: sha512-XKdGGLikfrlK66ZSXh/vWcXZZ8Vg3byDFbJD8pwEvN1FoBRGxhxya476IY2ohoTymLa4qB5LBRlIa+2TLHx3Uw==} + engines: {node: '>= 14.0.0'} + '@algolia/requester-fetch@5.48.1': resolution: {integrity: sha512-2oDT43Y5HWRSIQMPQI4tA/W+TN/N2tjggZCUsqQV440kxzzoPGsvv9QP1GhQ4CoDa+yn6ygUsGp6Dr+a9sPPSg==} engines: {node: '>= 14.0.0'} + '@algolia/requester-fetch@5.50.1': + resolution: {integrity: sha512-mBAU6WyVsDwhHyGM+nodt1/oebHxgvuLlOAoMGbj/1i6LygDHZWDgL1t5JEs37x9Aywv7ZGhqbM1GsfZ54sU6g==} + engines: {node: '>= 14.0.0'} + '@algolia/requester-node-http@5.48.1': resolution: {integrity: sha512-xcaCqbhupVWhuBP1nwbk1XNvwrGljozutEiLx06mvqDf3o8cHyEgQSHS4fKJM+UAggaWVnnFW+Nne5aQ8SUJXg==} engines: {node: '>= 14.0.0'} + '@algolia/requester-node-http@5.50.1': + resolution: {integrity: sha512-qmo1LXrNKLHvJE6mdQbLnsZAoZvj7VyF2ft4xmbSGWI2WWm87fx/CjUX4kEExt4y0a6T6nEts6ofpUfH5TEE1A==} + engines: {node: '>= 14.0.0'} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -1431,6 +1571,13 @@ packages: resolution: {integrity: sha512-LkmpNrjcbGmm61YzDzli3m7VYv2h/8mLmXPZBtAmjXjpJWgbsls7KOTF3cjln7Pd4eYmF/dXMR0oThENwga5iA==} 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-eslint/builder@21.3.1': + resolution: {integrity: sha512-1f1Lyp5e7OH6txiV224HaY3G1uRCj91OSKq7hT2Vw9NRw6zWFc1anBpDeLVjpL9ptUxzUGIQR5jEV54hOPayoQ==} + peerDependencies: + '@angular/cli': '>= 21.0.0 < 22.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '*' + '@angular-eslint/bundled-angular-compiler@21.3.1': resolution: {integrity: sha512-jjbnJPUXQeQBJ8RM+ahlbt4GH2emVN8JvG3AhFbPci1FrqXi9cOOfkbwLmvpoyTli4LF8gy7g4ctFqnlRgqryw==} @@ -1450,6 +1597,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '*' + '@angular-eslint/schematics@21.3.1': + resolution: {integrity: sha512-1U2u4ZsZvwT30aXRLsIJf6tULIiioo9BtASNsldpYecU3/m/1+F61lCYG79qt7YWbif9KABPYZlFTJUFGN8HWA==} + peerDependencies: + '@angular/cli': '>= 21.0.0 < 22.0.0' + '@angular-eslint/template-parser@21.3.1': resolution: {integrity: sha512-moERVCTekQKOvR8RMuEOtWSO3VS1qrzA3keI1dPto/JVB8Nqp9w3R5ZpEoXHzh4zgEryosxmPgdi6UczJe2ouQ==} peerDependencies: @@ -1643,12 +1795,12 @@ packages: resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==} engines: {node: '>=4'} - '@asamuzakjp/css-color@5.0.1': - resolution: {integrity: sha512-2SZFvqMyvboVV1d15lMf7XiI3m7SDqXUuKaTymJYLN6dSGadqp+fVojqJlVoMlbZnlTmu3S0TLwLTJpvBMO1Aw==} + '@asamuzakjp/css-color@5.1.5': + resolution: {integrity: sha512-8cMAA1bE66Mb/tfmkhcfJLjEPgyT7SSy6lW6id5XL113ai1ky76d/1L27sGnXCMsLfq66DInAU3OzuahB4lu9Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@asamuzakjp/dom-selector@7.0.4': - resolution: {integrity: sha512-jXR6x4AcT3eIrS2fSNAwJpwirOkGcd+E7F7CP3zjdTqz9B/2huHOL8YJZBgekKwLML+u7qB/6P1LXQuMScsx0w==} + '@asamuzakjp/dom-selector@7.0.6': + resolution: {integrity: sha512-Tgmk6EQM0nc9xvp7sEHRVavbknhb/vGKht+04yAT3t5KQwZ02CSobCtcFgaHH04ZrjD1BhEKNA8tRhzFV20gkA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} '@asamuzakjp/nwsapi@2.3.9': @@ -1804,16 +1956,16 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.27.1': - resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} + '@babel/helper-wrap-function@7.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true @@ -1852,8 +2004,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-proposal-decorators@7.22.10': - resolution: {integrity: sha512-KxN6TqZzcFi4uD3UifqXElBTBNLAEH1l3vzMQj6JwJZbL2sZlThxSViOKCYY+4Ah4V4JhQ95IVB7s/Y6SJSlMQ==} + '@babel/plugin-proposal-decorators@7.29.0': + resolution: {integrity: sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1885,8 +2037,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-decorators@7.22.10': - resolution: {integrity: sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==} + '@babel/plugin-syntax-decorators@7.28.6': + resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1918,8 +2070,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.27.1': - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2212,8 +2364,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-constant-elements@7.24.6': - resolution: {integrity: sha512-vQfyXRtG/kNIcTYRd/49uJnwvMig9X3R4XsTVXRml2RFupZFY+2RDuK+/ymb+MfX2WuIHAgUZc2xEvQrnI7QCg==} + '@babel/plugin-transform-react-constant-elements@7.27.1': + resolution: {integrity: sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2242,8 +2394,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.27.1': - resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} + '@babel/plugin-transform-react-jsx@7.28.6': + resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2350,6 +2502,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/preset-env@7.29.2': + resolution: {integrity: sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-modules@0.1.6-no-external-plugins': resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: @@ -2367,8 +2525,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime-corejs3@7.29.0': - resolution: {integrity: sha512-TgUkdp71C9pIbBcHudc+gXZnihEDOjUAmXO1VO4HHGES7QLZcShR0stfKIxLSNIYx2fqhmJChOjm/wkF8wv4gA==} + '@babel/runtime-corejs3@7.29.2': + resolution: {integrity: sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw==} engines: {node: '>=6.9.0'} '@babel/runtime@7.28.6': @@ -2434,11 +2592,14 @@ packages: '@chevrotain/utils@11.1.2': resolution: {integrity: sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==} - '@clack/core@1.1.0': - resolution: {integrity: sha512-SVcm4Dqm2ukn64/8Gub2wnlA5nS2iWJyCkdNHcvNHPIeBTGojpdJ+9cZKwLfmqy7irD4N5qLteSilJlE0WLAtA==} + '@clack/core@1.2.0': + resolution: {integrity: sha512-qfxof/3T3t9DPU/Rj3OmcFyZInceqj/NVtO9rwIuJqCUgh32gwPjpFQQp/ben07qKlhpwq7GzfWpST4qdJ5Drg==} + + '@clack/prompts@1.2.0': + resolution: {integrity: sha512-4jmztR9fMqPMjz6H/UZXj0zEmE43ha1euENwkckKKel4XpSfokExPo5AiVStdHSAlHekz4d0CA/r45Ok1E4D3w==} - '@clack/prompts@1.1.0': - resolution: {integrity: sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g==} + '@colordx/core@5.0.3': + resolution: {integrity: sha512-xBQ0MYRTNNxW3mS2sJtlQTT7C3Sasqgh1/PsHva7fyDb5uqYY+gv9V0utDdX8X80mqzbGz3u/IDJdn2d/uW09g==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -2543,10 +2704,6 @@ packages: conventional-commits-parser: optional: true - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - '@csstools/cascade-layer-name-parser@2.0.5': resolution: {integrity: sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==} engines: {node: '>=18'} @@ -2554,8 +2711,8 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 - '@csstools/color-helpers@5.0.2': - resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} '@csstools/color-helpers@6.0.2': @@ -2576,8 +2733,8 @@ packages: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@3.0.10': - resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} peerDependencies: '@csstools/css-parser-algorithms': ^3.0.5 @@ -2625,32 +2782,50 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 + '@csstools/postcss-alpha-function@1.0.1': + resolution: {integrity: sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + '@csstools/postcss-cascade-layers@5.0.2': resolution: {integrity: sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-function@4.0.10': - resolution: {integrity: sha512-4dY0NBu7NVIpzxZRgh/Q/0GPSz/jLSw0i/u3LTUor0BkQcz/fNhN10mSWBDsL0p9nDb0Ky1PD6/dcGbhACuFTQ==} + '@csstools/postcss-color-function-display-p3-linear@1.0.1': + resolution: {integrity: sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-mix-function@3.0.10': - resolution: {integrity: sha512-P0lIbQW9I4ShE7uBgZRib/lMTf9XMjJkFl/d6w4EMNHu2qvQ6zljJGEcBkw/NsBtq/6q3WrmgxSS8kHtPMkK4Q==} + '@csstools/postcss-color-function@4.0.12': + resolution: {integrity: sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-mix-variadic-function-arguments@1.0.0': - resolution: {integrity: sha512-Z5WhouTyD74dPFPrVE7KydgNS9VvnjB8qcdes9ARpCOItb4jTnm7cHp4FhxCRUoyhabD0WVv43wbkJ4p8hLAlQ==} + '@csstools/postcss-color-mix-function@3.0.12': + resolution: {integrity: sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-content-alt-text@2.0.6': - resolution: {integrity: sha512-eRjLbOjblXq+byyaedQRSrAejKGNAFued+LcbzT+LCL78fabxHkxYjBbxkroONxHHYu2qxhFK2dBStTLPG3jpQ==} + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.2': + resolution: {integrity: sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-content-alt-text@2.0.8': + resolution: {integrity: sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-contrast-color-function@2.0.12': + resolution: {integrity: sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -2667,26 +2842,26 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-gamut-mapping@2.0.10': - resolution: {integrity: sha512-QDGqhJlvFnDlaPAfCYPsnwVA6ze+8hhrwevYWlnUeSjkkZfBpcCO42SaUD8jiLlq7niouyLgvup5lh+f1qessg==} + '@csstools/postcss-gamut-mapping@2.0.11': + resolution: {integrity: sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-gradients-interpolation-method@5.0.10': - resolution: {integrity: sha512-HHPauB2k7Oits02tKFUeVFEU2ox/H3OQVrP3fSOKDxvloOikSal+3dzlyTZmYsb9FlY9p5EUpBtz0//XBmy+aw==} + '@csstools/postcss-gradients-interpolation-method@5.0.12': + resolution: {integrity: sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-hwb-function@4.0.10': - resolution: {integrity: sha512-nOKKfp14SWcdEQ++S9/4TgRKchooLZL0TUFdun3nI4KPwCjETmhjta1QT4ICQcGVWQTvrsgMM/aLB5We+kMHhQ==} + '@csstools/postcss-hwb-function@4.0.12': + resolution: {integrity: sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-ic-unit@4.0.2': - resolution: {integrity: sha512-lrK2jjyZwh7DbxaNnIUjkeDmU8Y6KyzRBk91ZkI5h8nb1ykEfZrtIVArdIjX4DHMIBGpdHrgP0n4qXDr7OHaKA==} + '@csstools/postcss-ic-unit@4.0.4': + resolution: {integrity: sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -2703,8 +2878,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-light-dark-function@2.0.9': - resolution: {integrity: sha512-1tCZH5bla0EAkFAI2r0H33CDnIBeLUaJh1p+hvvsylJ4svsv2wOmJjJn+OXwUZLXef37GYbRIVKX+X+g6m+3CQ==} + '@csstools/postcss-light-dark-function@2.0.11': + resolution: {integrity: sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -2757,20 +2932,32 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-normalize-display-values@4.0.0': - resolution: {integrity: sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==} + '@csstools/postcss-normalize-display-values@4.0.1': + resolution: {integrity: sha512-TQUGBuRvxdc7TgNSTevYqrL8oItxiwPDixk20qCB5me/W8uF7BPbhRrAvFuhEoywQp/woRsUZ6SJ+sU5idZAIA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-oklab-function@4.0.12': + resolution: {integrity: sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-position-area-property@1.0.0': + resolution: {integrity: sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-oklab-function@4.0.10': - resolution: {integrity: sha512-ZzZUTDd0fgNdhv8UUjGCtObPD8LYxMH+MJsW9xlZaWTV8Ppr4PtxlHYNMmF4vVWGl0T6f8tyWAKjoI6vePSgAg==} + '@csstools/postcss-progressive-custom-properties@4.2.1': + resolution: {integrity: sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-progressive-custom-properties@4.1.0': - resolution: {integrity: sha512-YrkI9dx8U4R8Sz2EJaoeD9fI7s7kmeEBfmO+UURNeL6lQI7VxF6sBE+rSqdCBn4onwqmxFdBU3lTwyYb/lCmxA==} + '@csstools/postcss-property-rule-prelude-list@1.0.0': + resolution: {integrity: sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -2781,8 +2968,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-relative-color-syntax@3.0.10': - resolution: {integrity: sha512-8+0kQbQGg9yYG8hv0dtEpOMLwB9M+P7PhacgIzVzJpixxV4Eq9AUQtQw8adMmAJU1RBBmIlpmtmm3XTRd/T00g==} + '@csstools/postcss-relative-color-syntax@3.0.12': + resolution: {integrity: sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -2805,8 +2992,20 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-text-decoration-shorthand@4.0.2': - resolution: {integrity: sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==} + '@csstools/postcss-syntax-descriptor-syntax-production@1.0.1': + resolution: {integrity: sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-system-ui-font-family@1.0.0': + resolution: {integrity: sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-text-decoration-shorthand@4.0.3': + resolution: {integrity: sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -2841,13 +3040,6 @@ packages: peerDependencies: postcss: ^8.4 - '@cypress/request@3.0.10': - resolution: {integrity: sha512-hauBrOdvu08vOsagkZ/Aju5XuiZx6ldsLfByg1htFeldhex+PeMrYauANzFsMJeAA0+dyPLbDoX2OYuvVoLDkQ==} - engines: {node: '>= 6'} - - '@cypress/xvfb@1.2.4': - resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} - '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -2856,8 +3048,8 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@docsearch/core@4.6.0': - resolution: {integrity: sha512-IqG3oSd529jVRQ4dWZQKwZwQLVd//bWJTz2HiL0LkiHrI4U/vLrBasKB7lwQB/69nBAcCgs3TmudxTZSLH/ZQg==} + '@docsearch/core@4.6.2': + resolution: {integrity: sha512-/S0e6Dj7Zcm8m9Rru49YEX49dhU11be68c+S/BCyN8zQsTTgkKzXlhRbVL5mV6lOLC2+ZRRryaTdcm070Ug2oA==} peerDependencies: '@types/react': '>= 16.8.0 < 20.0.0' react: '>= 16.8.0 < 20.0.0' @@ -2870,11 +3062,11 @@ packages: react-dom: optional: true - '@docsearch/css@4.6.0': - resolution: {integrity: sha512-YlcAimkXclvqta47g47efzCM5CFxDwv2ClkDfEs/fC/Ak0OxPH2b3czwa4o8O1TRBf+ujFF2RiUwszz2fPVNJQ==} + '@docsearch/css@4.6.2': + resolution: {integrity: sha512-fH/cn8BjEEdM2nJdjNMHIvOVYupG6AIDtFVDgIZrNzdCSj4KXr9kd+hsehqsNGYjpUjObeKYKvgy/IwCb1jZYQ==} - '@docsearch/react@4.6.0': - resolution: {integrity: sha512-j8H5B4ArGxBPBWvw3X0J0Rm/Pjv2JDa2rV5OE0DLTp5oiBCptIJ/YlNOhZxuzbO2nwge+o3Z52nJRi3hryK9cA==} + '@docsearch/react@4.6.2': + resolution: {integrity: sha512-/BbtGFtqVOGwZx0dw/UfhN/0/DmMQYnulY4iv0tPRhC2JCXv0ka/+izwt3Jzo1ZxXS/2eMvv9zHsBJOK1I9f/w==} peerDependencies: '@types/react': '>= 16.8.0 < 20.0.0' react: '>= 16.8.0 < 20.0.0' @@ -3064,32 +3256,32 @@ packages: resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==} engines: {node: '>=0.8.0'} - '@emnapi/core@1.7.1': - resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} - '@emnapi/core@1.9.1': resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} - '@emnapi/runtime@1.7.1': - resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} '@emnapi/runtime@1.9.1': resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} - '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} '@emnapi/wasi-threads@1.2.0': resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@esbuild/aix-ppc64@0.27.3': resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.4': - resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -3100,8 +3292,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.4': - resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -3112,8 +3304,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.4': - resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -3124,8 +3316,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.4': - resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -3136,8 +3328,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.4': - resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -3148,8 +3340,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.4': - resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -3160,8 +3352,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.4': - resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -3172,8 +3364,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.4': - resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -3184,8 +3376,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.4': - resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -3196,8 +3388,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.4': - resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -3208,8 +3400,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.4': - resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -3220,8 +3412,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.4': - resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -3232,8 +3424,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.4': - resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -3244,8 +3436,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.4': - resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -3256,8 +3448,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.4': - resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -3268,8 +3460,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.4': - resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -3280,8 +3472,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.4': - resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -3292,8 +3484,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.4': - resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -3304,8 +3496,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.4': - resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -3316,8 +3508,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.4': - resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -3328,8 +3520,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.4': - resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -3340,8 +3532,8 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.4': - resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -3352,8 +3544,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.4': - resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -3364,8 +3556,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.4': - resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -3376,8 +3568,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.4': - resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -3388,8 +3580,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.4': - resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -3404,16 +3596,16 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.23.3': - resolution: {integrity: sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==} + '@eslint/config-array@0.23.4': + resolution: {integrity: sha512-lf19F24LSMfF8weXvW5QEtnLqW70u7kgit5e9PSx0MsHAFclGd1T9ynvWEMDT1w5J4Qt54tomGeAhdoAku1Xow==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.3': - resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} + '@eslint/config-helpers@0.5.4': + resolution: {integrity: sha512-jJhqiY3wPMlWWO3370M86CPJ7pt8GmEwSLglMfQhjXal07RCvhmU0as4IuUEW5SJeunfItiEetHmSxCCe9lDBg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@1.1.1': - resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} + '@eslint/core@1.2.0': + resolution: {integrity: sha512-8FTGbNzTvmSlc4cZBaShkC6YvFMG0riksYWRFKXztqVdXaQbcZLXlFbSpC05s70sGEsXAw0qwhx69JiW7hQS7A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/eslintrc@3.3.5': @@ -3429,12 +3621,12 @@ packages: eslint: optional: true - '@eslint/object-schema@3.0.3': - resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} + '@eslint/object-schema@3.0.4': + resolution: {integrity: sha512-55lO/7+Yp0ISKRP0PsPtNTeNGapXaO085aELZmWCVc5SH3jfrqpuU6YgOdIxMS99ZHkQN1cXKE+cdIqwww9ptw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.6.1': - resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} + '@eslint/plugin-kit@0.7.0': + resolution: {integrity: sha512-ejvBr8MQCbVsWNZnCwDXjUKq40MDmHalq7cJ6e9s/qzTUFIIo/afzt1Vui9T97FM/V/pN4YsFVoed5NIa96RDg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@exodus/bytes@1.15.0': @@ -3446,6 +3638,10 @@ packages: '@noble/hashes': optional: true + '@gar/promise-retry@1.0.3': + resolution: {integrity: sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==} + engines: {node: ^20.17.0 || >=22.9.0} + '@hapi/address@5.1.1': resolution: {integrity: sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==} engines: {node: '>=14.0.0'} @@ -3475,8 +3671,8 @@ packages: '@harperfast/extended-iterable@1.0.3': resolution: {integrity: sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==} - '@hono/node-server@1.19.9': - resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} + '@hono/node-server@1.19.12': + resolution: {integrity: sha512-txsUW4SQ1iilgE0l9/e9VQWmELXifEFvmdA1j6WFh/aFPj99hIntrSsq/if0UWyGVkmrRPKA1wCeP+UCr1B9Uw==} engines: {node: '>=18.14.1'} peerDependencies: hono: ^4 @@ -3790,9 +3986,6 @@ packages: '@types/node': optional: true - '@ioredis/commands@1.5.1': - resolution: {integrity: sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -3809,44 +4002,44 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/console@30.0.5': - resolution: {integrity: sha512-xY6b0XiL0Nav3ReresUarwl2oIz1gTnxGbGpho9/rbUWsLH0f1OD/VT84xs8c7VmH7MChnLb0pag6PhZhAdDiA==} + '@jest/console@30.3.0': + resolution: {integrity: sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/diff-sequences@30.0.1': - resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} + '@jest/diff-sequences@30.3.0': + resolution: {integrity: sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/environment@30.0.5': - resolution: {integrity: sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA==} + '@jest/environment@30.3.0': + resolution: {integrity: sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/expect-utils@30.0.5': - resolution: {integrity: sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew==} + '@jest/expect-utils@30.3.0': + resolution: {integrity: sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/expect@30.0.5': - resolution: {integrity: sha512-6udac8KKrtTtC+AXZ2iUN/R7dp7Ydry+Fo6FPFnDG54wjVMnb6vW/XNlf7Xj8UDjAE3aAVAsR4KFyKk3TCXmTA==} + '@jest/expect@30.3.0': + resolution: {integrity: sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/fake-timers@30.0.5': - resolution: {integrity: sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw==} + '@jest/fake-timers@30.3.0': + resolution: {integrity: sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/get-type@30.0.1': - resolution: {integrity: sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==} + '@jest/get-type@30.1.0': + resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/globals@30.0.5': - resolution: {integrity: sha512-7oEJT19WW4oe6HR7oLRvHxwlJk2gev0U9px3ufs8sX9PoD1Eza68KF0/tlN7X0dq/WVsBScXQGgCldA1V9Y/jA==} + '@jest/globals@30.3.0': + resolution: {integrity: sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/pattern@30.0.1': resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/reporters@30.0.5': - resolution: {integrity: sha512-mafft7VBX4jzED1FwGC1o/9QUM2xebzavImZMeqnsklgcyxBto8mV4HzNSzUrryJ+8R9MFOM3HgYuDradWR+4g==} + '@jest/reporters@30.3.0': + resolution: {integrity: sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3862,36 +4055,36 @@ packages: resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/snapshot-utils@30.0.5': - resolution: {integrity: sha512-XcCQ5qWHLvi29UUrowgDFvV4t7ETxX91CbDczMnoqXPOIcZOxyNdSjm6kV5XMc8+HkxfRegU/MUmnTbJRzGrUQ==} + '@jest/snapshot-utils@30.3.0': + resolution: {integrity: sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/source-map@30.0.1': resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/test-result@30.0.5': - resolution: {integrity: sha512-wPyztnK0gbDMQAJZ43tdMro+qblDHH1Ru/ylzUo21TBKqt88ZqnKKK2m30LKmLLoKtR2lxdpCC/P3g1vfKcawQ==} + '@jest/test-result@30.3.0': + resolution: {integrity: sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/test-sequencer@30.0.5': - resolution: {integrity: sha512-Aea/G1egWoIIozmDD7PBXUOxkekXl7ueGzrsGGi1SbeKgQqCYCIf+wfbflEbf2LiPxL8j2JZGLyrzZagjvW4YQ==} + '@jest/test-sequencer@30.3.0': + resolution: {integrity: sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/transform@30.0.5': - resolution: {integrity: sha512-Vk8amLQCmuZyy6GbBht1Jfo9RSdBtg7Lks+B0PecnjI8J+PCLQPGh7uI8Q/2wwpW2gLdiAfiHNsmekKlywULqg==} + '@jest/transform@30.3.0': + resolution: {integrity: sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/types@30.0.5': - resolution: {integrity: sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==} + '@jest/types@30.3.0': + resolution: {integrity: sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} '@jridgewell/remapping@2.3.5': resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} @@ -3900,8 +4093,8 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.5': - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -3909,47 +4102,128 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@jsonjoy.com/base64@1.1.2': resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' + '@jsonjoy.com/base64@17.67.0': + resolution: {integrity: sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jsonjoy.com/buffers@1.2.1': resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' + '@jsonjoy.com/buffers@17.67.0': + resolution: {integrity: sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jsonjoy.com/codegen@1.0.0': resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' + '@jsonjoy.com/codegen@17.67.0': + resolution: {integrity: sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-core@4.57.1': + resolution: {integrity: sha512-YrEi/ZPmgc+GfdO0esBF04qv8boK9Dg9WpRQw/+vM8Qt3nnVIJWIa8HwZ/LXVZ0DB11XUROM8El/7yYTJX+WtA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-fsa@4.57.1': + resolution: {integrity: sha512-ooEPvSW/HQDivPDPZMibHGKZf/QS4WRir1czGZmXmp3MsQqLECZEpN0JobrD8iV9BzsuwdIv+PxtWX9WpPLsIA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-builtins@4.57.1': + resolution: {integrity: sha512-XHkFKQ5GSH3uxm8c3ZYXVrexGdscpWKIcMWKFQpMpMJc8gA3AwOMBJXJlgpdJqmrhPyQXxaY9nbkNeYpacC0Og==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-to-fsa@4.57.1': + resolution: {integrity: sha512-pqGHyWWzNck4jRfaGV39hkqpY5QjRUQ/nRbNT7FYbBa0xf4bDG+TE1Gt2KWZrSkrkZZDE3qZUjYMbjwSliX6pg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-utils@4.57.1': + resolution: {integrity: sha512-vp+7ZzIB8v43G+GLXTS4oDUSQmhAsRz532QmmWBbdYA20s465JvwhkSFvX9cVTqRRAQg+vZ7zWDaIEh0lFe2gw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node@4.57.1': + resolution: {integrity: sha512-3YaKhP8gXEKN+2O49GLNfNb5l2gbnCFHyAaybbA2JkkbQP3dpdef7WcUaHAulg/c5Dg4VncHsA3NWAUSZMR5KQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-print@4.57.1': + resolution: {integrity: sha512-Ynct7ZJmfk6qoXDOKfpovNA36ITUx8rChLmRQtW08J73VOiuNsU8PB6d/Xs7fxJC2ohWR3a5AqyjmLojfrw5yw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-snapshot@4.57.1': + resolution: {integrity: sha512-/oG8xBNFMbDXTq9J7vepSA1kerS5vpgd3p5QZSPd+nX59uwodGJftI51gDYyHRpP57P3WCQf7LHtBYPqwUg2Bg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jsonjoy.com/json-pack@1.21.0': resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' + '@jsonjoy.com/json-pack@17.67.0': + resolution: {integrity: sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jsonjoy.com/json-pointer@1.0.2': resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' + '@jsonjoy.com/json-pointer@17.67.0': + resolution: {integrity: sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jsonjoy.com/util@1.9.0': resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@leichtgewicht/ip-codec@2.0.4': - resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + '@jsonjoy.com/util@17.67.0': + resolution: {integrity: sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} '@listr2/prompt-adapter-inquirer@3.0.5': resolution: {integrity: sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==} @@ -4005,8 +4279,8 @@ packages: '@types/react': '>=16' react: '>=16' - '@mermaid-js/parser@1.0.1': - resolution: {integrity: sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==} + '@mermaid-js/parser@1.1.0': + resolution: {integrity: sha512-gxK9ZX2+Fex5zu8LhRQoMeMPEHbc73UKZ0FQ54YrQtUxE1VVhMwzeNtKRPAu5aXks4FasbMe4xB4bWrmq6Jlxw==} '@modelcontextprotocol/sdk@1.26.0': resolution: {integrity: sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==} @@ -4018,30 +4292,16 @@ packages: '@cfworker/json-schema': optional: true - '@module-federation/bridge-react-webpack-plugin@0.23.0': - resolution: {integrity: sha512-miZmMCl7OS1CH2tQbqijWK85qThg4TBDkI25Vx4G2du4ehg47mPKfeuft6/KWV/eJ7ZS4C534Oq/6lom1ncTOQ==} - - '@module-federation/bridge-react-webpack-plugin@2.1.0': - resolution: {integrity: sha512-c/iiwLwxHDG5i227v2GQ84JRPWHU+d2uhxhZhbxIAQ5uRe6kbtj8O4uPUfEq+iabiqqtUwTLbcpUFFy1bLllYA==} - - '@module-federation/cli@0.23.0': - resolution: {integrity: sha512-5OfdKUslS/kb6pycJPOtutMzIXSdmYcLoTSjhrWD7/68qFt2SGV7JD1l0RAhq3+fTuXryxctusTl4or2vCgBJw==} - engines: {node: '>=16.0.0'} - hasBin: true + '@module-federation/bridge-react-webpack-plugin@2.3.1': + resolution: {integrity: sha512-rixIHit2xeusr052t/IOfgQa9OyKc21GiJC8uE/5szmgJlJOHmiXa7QrudKb4KVDCcbd5Ad2b4+XrSYxxRUzJA==} - '@module-federation/cli@2.1.0': - resolution: {integrity: sha512-VbMJMEfP1vp/693HbQTMYqMu73Qbv23aJEW9/NhmVkRXkfjBtNfP+mROSFjJVQsWhYyU5vy8kBX7DQS/mvZGBg==} + '@module-federation/cli@2.3.1': + resolution: {integrity: sha512-9oUqFuXaZgUc1ptBPKLIUmKrzu0kog1kE05BLMEUm55JkiDtODpuzQhT/QL8h0qHBeZ70Rn12ARQQBmoZT61Aw==} engines: {node: '>=16.0.0'} hasBin: true - '@module-federation/data-prefetch@0.23.0': - resolution: {integrity: sha512-oTzdHo8xe0t1pA6KvTeEZAMcnvMRgE2rUwUrgFuGUqbQoTdndEt/A1X9eayJ5s/8ARDT5hoam4LcZYXpXPYbjg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@module-federation/data-prefetch@2.1.0': - resolution: {integrity: sha512-/rHwtZEknzujpCoXChZcy29vD7zNY2b/XfAcOpCkMVfWyQiNhppKxeyjA6FnPEp64NAOLzj2XxaadceXa1eFeA==} + '@module-federation/data-prefetch@2.3.1': + resolution: {integrity: sha512-p/G5Nlu7buiE7TdrznHanxFS1Zik8nmzNUDLmgwfdHRIaH7Rj4+gLIgLg5Zrjtkdvae/L2UJpcC8QopJMQjv4A==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -4051,41 +4311,17 @@ packages: react-dom: optional: true - '@module-federation/dts-plugin@0.23.0': - resolution: {integrity: sha512-DIA2ht2SkGgdRWSVnxBGBS4XqeSiWIFPwyULZVZ0TTYr/47betlSVSRU6CTPokalrlryzMhEiqcvYJPCkOVP5w==} - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - vue-tsc: - optional: true - - '@module-federation/dts-plugin@2.1.0': - resolution: {integrity: sha512-2ubWFjF72i3Z5TM2G8hg6SOS6dB0v7PRLXPUMNoVMBxHGxiFG/F0xryZ2UYFwLA2hcNmf60LNP30F1tJhsH4wg==} - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - vue-tsc: - optional: true - - '@module-federation/enhanced@0.23.0': - resolution: {integrity: sha512-GPfipQc0/rgwYp48hkru0cqvjtRKPVC/ZlUFptrbr2LTLM5mxW3ig1rggUAH2QSQoNvDuhY/kqG8u71MZROi3w==} - hasBin: true + '@module-federation/dts-plugin@2.3.1': + resolution: {integrity: sha512-6BJvu+dLDtW/ngpyuOLgpKOgtOnMUTZY51JUyargVckerKRbe7Ul+414YaHj32mu2FpsiHVMl4ig1XnxgnRg2Q==} peerDependencies: typescript: ^4.9.0 || ^5.0.0 vue-tsc: '>=1.0.24' - webpack: ^5.0.0 peerDependenciesMeta: - typescript: - optional: true vue-tsc: optional: true - webpack: - optional: true - '@module-federation/enhanced@2.1.0': - resolution: {integrity: sha512-nWCe31vzYLGsT3DYf2cKtxSjUDLWVgErZeDEB8cddtuA3c4npSdKeG8P/bI9GtRph5ybIUFbyAMtuKPPhMahOw==} + '@module-federation/enhanced@2.3.1': + resolution: {integrity: sha512-zvzymtzsYVlSPt/HKjm42OGiDxUDPLce7mr6VZw4d6//AFFK3kKUEpUqwlf/bIlbg7FbwJC/7hVCmUhlF+dxgw==} hasBin: true peerDependencies: typescript: ^4.9.0 || ^5.0.0 @@ -4102,63 +4338,30 @@ packages: '@module-federation/error-codes@0.21.6': resolution: {integrity: sha512-MLJUCQ05KnoVl8xd6xs9a5g2/8U+eWmVxg7xiBMeR0+7OjdWUbHwcwgVFatRIwSZvFgKHfWEiI7wsU1q1XbTRQ==} - '@module-federation/error-codes@0.23.0': - resolution: {integrity: sha512-CzcKOPKh/qB1wPkVBC0iEK/Cg4jRAS1DnZsTx7b3JUCIXDcIaRq/XkTdo+EQ0cAsF5Os9lQ0f50O9DC/uFC8eA==} - - '@module-federation/error-codes@2.1.0': - resolution: {integrity: sha512-W+uCmPsFuV+15E1S7JUB1AeUDBFqKjJ2hImXdBNYx7T1CGM6awS/veooXqNoP7iM/kwKjtpTQPIeccWLrq76Mg==} - - '@module-federation/inject-external-runtime-core-plugin@0.23.0': - resolution: {integrity: sha512-xxQrqtjbAUHY826ZtpvqgzANXhEibbloaiAOLZXhfIJd9wbYzK9m9zcHmIKOc5PQ5p1bBI5OJ+9XxXQmSBAtuw==} - peerDependencies: - '@module-federation/runtime-tools': 0.23.0 + '@module-federation/error-codes@2.3.1': + resolution: {integrity: sha512-s3IjT2OYrSBNNmxdTmmrWBpsFfeNszdL6BSqjXLHb1CgXWUYLNXpb05IopnzMhRLcur6MTGuKR0ZSjJbmvQBbg==} - '@module-federation/inject-external-runtime-core-plugin@2.1.0': - resolution: {integrity: sha512-okAVRH/9rROh1fBSKF7Li/Ia8bQhgz38AfVvUSzVu32/HCvdjpfddQtPFFxvmi2oayPgUDY4Qy8RXT1pUlBqpA==} + '@module-federation/inject-external-runtime-core-plugin@2.3.1': + resolution: {integrity: sha512-Q/zd3dImx4vyXLQ/UEQ0udL95yPlfbSyKcoW86tIralxA5NgnR3rEp3ccGt9MHSBbCywFrbzX5OwfKW/Jgfexw==} peerDependencies: - '@module-federation/runtime-tools': 2.1.0 + '@module-federation/runtime-tools': 2.3.1 - '@module-federation/managers@0.23.0': - resolution: {integrity: sha512-Stqu04QUiYBhWLW+0+EoZ4e5pFrrTxcEI4StJ7jOPtn2Ll6ImvGWk2KVNfbTjz0TRhIx5rl2wc+YPnYJ9tdVag==} + '@module-federation/managers@2.3.1': + resolution: {integrity: sha512-kK/4FkoaIxbJbN+R6+cq+igv095hPox8oheZOKkrYA9P6Xv5FiHza+gHlCntiWTMrU8bzqJHH4VYm6gq1RB+dQ==} - '@module-federation/managers@2.1.0': - resolution: {integrity: sha512-8HX721e3uuDSURtnOpj6Zy/+Qc4IM5no9hMPODYdGjrYe2YUmXY4/5JScSVnFeYm+zBPw6y9QoufeG9g2jrWBg==} + '@module-federation/manifest@2.3.1': + resolution: {integrity: sha512-BXckns3ux6Z9XiB2Bpirj/Q3FcQnxiyKt0rx0HmF0/7V6Zy2mwR/011eoeRGHN9N2HZcIxgQcWgMtxl5FAqxyg==} - '@module-federation/manifest@0.23.0': - resolution: {integrity: sha512-tzeq67oeTXM+ukzaC2qcaft5Gvu8T/hYiFGE/jopOOTVH8glTebKDg+xOABcN+EeP6UDmf6vDVq7dYmXTC6e/w==} - - '@module-federation/manifest@2.1.0': - resolution: {integrity: sha512-icIUhMG4FwaFZyBmVjadkdqscNb98iXrITTVeMeAxJcrnZltSBBSEHepfpfeW+tHW+wMmr+lWFnAbSCepV73+A==} - - '@module-federation/node@2.7.28': - resolution: {integrity: sha512-AoYSak1bgUUs1COcbf330ONRqmNJ5pSSMLjeOVLyRjROCsoXwSnIiWVxSTi0MENHd3B6k+T0oFPQWi9nRKK3lQ==} + '@module-federation/node@2.7.39': + resolution: {integrity: sha512-BsfpXVIuNO5KBwvOKaTuSK4jU+vrWcDvrue2K+3YGY8lUL7mwx11W4TP4Dvrslazub93zz5NBM44qqogo+VGXA==} peerDependencies: - next: '*' - react: ^16||^17||^18||^19 - react-dom: ^16||^17||^18||^19 webpack: ^5.40.0 peerDependenciesMeta: - next: - optional: true - react: - optional: true - react-dom: - optional: true - - '@module-federation/rspack@0.23.0': - resolution: {integrity: sha512-Le1ep9NTgEGpbYhFsko/HkHS3To/jpEQ0Wvkugxix7pxA8ynhJCpflD2y+iN8CCfGq+Y49dACAmqLvifPc5OfA==} - peerDependencies: - '@rspack/core': '>=0.7' - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: + webpack: optional: true - '@module-federation/rspack@2.1.0': - resolution: {integrity: sha512-bojG6yIoWsta7CDdKZ3nrTn1IKT98algUGG5/uyR6nhyOxsu7CJpf17kcLUqTKdBwN9S8qZOjycXGDeEX//N3w==} + '@module-federation/rspack@2.3.1': + resolution: {integrity: sha512-pZmLSDkD7nDsCc377Q8sB1Yu2iMYFj72VS/Fb8B7uTmhYwU1wqDK9zPwaxauim5Y4TqQBdy/hPzNES3f4lG33Q==} peerDependencies: '@rspack/core': ^0.7.0 || ^1.0.0 || ^2.0.0-0 typescript: ^4.9.0 || ^5.0.0 @@ -4172,81 +4375,68 @@ packages: '@module-federation/runtime-core@0.21.6': resolution: {integrity: sha512-5Hd1Y5qp5lU/aTiK66lidMlM/4ji2gr3EXAtJdreJzkY+bKcI5+21GRcliZ4RAkICmvdxQU5PHPL71XmNc7Lsw==} - '@module-federation/runtime-core@0.23.0': - resolution: {integrity: sha512-+Orumtyg6Q2v19Gz15P3kDmRf4Q6KEpv8DggKWHdM8AX4xyVT8dMRJxdIxaVddbIYTd7aL7o2U3LLK6EjUe4UA==} - - '@module-federation/runtime-core@2.1.0': - resolution: {integrity: sha512-9W+wV5s7PTMnSFCmyNvItnOf3VRYSxAPMZQ91bOT4GdwHTO23dfmC57o0SiqXw+ri/XOQVA8gd/p8TDwDDYx6A==} + '@module-federation/runtime-core@2.3.1': + resolution: {integrity: sha512-E0WgaCn32AWzD0n6SCH7VQ+kxk46XyX432PQWARgyQzCX/wyLkaT+We3A18RVNUevRT85YHLrrVIhMKJJVHgjA==} '@module-federation/runtime-tools@0.21.6': resolution: {integrity: sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q==} - '@module-federation/runtime-tools@0.23.0': - resolution: {integrity: sha512-TzUaU/X+mVHHilz8WApivSLjMZaBhydQrrMtrWCK4yUNfIjC/SmnGrdhmZE3qFxXezk4iit60KKS+xxZ+2udPg==} - - '@module-federation/runtime-tools@2.1.0': - resolution: {integrity: sha512-2pOyGOiWIGG0+fE0jBY6pRYVH4+G/gFiP9KnyVDp6zj3leFRdePtlIZDa4O0X1dQcMOMmOORrx+TLRZeygbCnw==} + '@module-federation/runtime-tools@2.3.1': + resolution: {integrity: sha512-JrTKnNxIglnwrycPHUz9vARHLWqdecgFJxhmu8991z5CjktHc5JIelCbQS5Ur2lABjuwBdlyw8pH2xI3EJpbOg==} '@module-federation/runtime@0.21.6': resolution: {integrity: sha512-+caXwaQqwTNh+CQqyb4mZmXq7iEemRDrTZQGD+zyeH454JAYnJ3s/3oDFizdH6245pk+NiqDyOOkHzzFQorKhQ==} - '@module-federation/runtime@0.23.0': - resolution: {integrity: sha512-ZHJcfM1O8RqYVrlIbhyeQ3S6gJW3mqHso3/QY7cKs1za+UvOgB8aTsDwq7Fv+aJZWSmtGzWa4zbSuxthyucw3g==} - - '@module-federation/runtime@2.1.0': - resolution: {integrity: sha512-Cs6H6vAQrLeD7tWW3nI7Z9EdvhcFcbqQdYWJ2SaN1X/eX2YvgHJe8sRxa7K7zlVRV5QZEPKgQCbrUfef+d5xqQ==} + '@module-federation/runtime@2.3.1': + resolution: {integrity: sha512-NiKelHKzOf1Vz8oqcxC/XRUAW224O6lKj9xD0cfp5Bp343iu6s58RlLvX1ypF+UpCl3jA4JM8npGax/3jjyifw==} '@module-federation/sdk@0.21.6': resolution: {integrity: sha512-x6hARETb8iqHVhEsQBysuWpznNZViUh84qV2yE7AD+g7uIzHKiYdoWqj10posbo5XKf/147qgWDzKZoKoEP2dw==} - '@module-federation/sdk@0.23.0': - resolution: {integrity: sha512-1+DICHIF1z6yggtsZypmcn1gL35iitiSDXcsaqWynK4v5aw9MBRUS4zP3kG7eQDFTMmIo+rGbPN37AUsOq/RRQ==} - - '@module-federation/sdk@2.1.0': - resolution: {integrity: sha512-HhiSo1X+t2+r5lxU+JBVsJdE2IJZOaD1e0linw+4bLlEy8uIgXhGttF9+9rAnRKWlhn6R8E23ionwBCuSLVeXQ==} - - '@module-federation/third-party-dts-extractor@0.23.0': - resolution: {integrity: sha512-/oiLf6QQblhQKuHf89Wd475nUva+PWz5G01wxldy4lXaSTvz5XayCCBDek2SX8Gs4XnqATCm6IriAQ+ORzsgmQ==} + '@module-federation/sdk@2.3.1': + resolution: {integrity: sha512-lgWxFZyLRKDXWRGlV6ROjFJ6MRaJTxs0bBnS6hS9ONfr/0TkeW4JzDbsfzrB8g4p6IgSKB+wQ9XfibJCGBI5OQ==} + peerDependencies: + node-fetch: ^3.3.2 + peerDependenciesMeta: + node-fetch: + optional: true - '@module-federation/third-party-dts-extractor@2.1.0': - resolution: {integrity: sha512-w/hn0J+gw+lEfsXTR3DsbtcxpAndMZJ2PHnQTFn2s5BujNL18FcStaoz0tDpcJAVxi2iQZATJ3bGrlO2t2aDjQ==} + '@module-federation/third-party-dts-extractor@2.3.1': + resolution: {integrity: sha512-YpTLzM7H9damh31JX7eFBiCCR1mbibzS4i4JEa4fZ5ICT4hfNIuaAx1OeICGDOzSdl35TYegegCjk91oX6xCJQ==} '@module-federation/webpack-bundler-runtime@0.21.6': resolution: {integrity: sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ==} - '@module-federation/webpack-bundler-runtime@0.23.0': - resolution: {integrity: sha512-HnYVRiCg5nKpJ5LnUxT4iNzvay7fd/ZdubO/AWp4AqW7Y/cVaRFNNhg8cytuIZAha3R73BLYqia/a518K5dSwg==} + '@module-federation/webpack-bundler-runtime@2.3.1': + resolution: {integrity: sha512-fnsMncVdBYv7a1gN5ElNK1uA9dmGUgaNqcoNiv9xRtpxFYswchl1kbgxPTliCb8U7quihdWZos7P2lvpYeVRwg==} - '@module-federation/webpack-bundler-runtime@2.1.0': - resolution: {integrity: sha512-yThI7cPanvH5eobaeFUsQ51sjllA3nyN/8OxfSdlbeTogLF4K8tkCr6H7QW+alE9lXxOzI2BTCxMV6NJBKWmTQ==} - - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2': - resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} cpu: [arm64] os: [darwin] - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2': - resolution: {integrity: sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==} + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} cpu: [x64] os: [darwin] - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2': - resolution: {integrity: sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==} + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} cpu: [arm64] os: [linux] - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2': - resolution: {integrity: sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==} + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} cpu: [arm] os: [linux] - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2': - resolution: {integrity: sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==} + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} cpu: [x64] os: [linux] - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2': - resolution: {integrity: sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==} + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} cpu: [x64] os: [win32] @@ -4372,9 +4562,6 @@ packages: '@napi-rs/wasm-runtime@1.0.7': resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} - '@napi-rs/wasm-runtime@1.1.1': - resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} - '@napi-rs/wasm-runtime@1.1.2': resolution: {integrity: sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==} peerDependencies: @@ -4417,12 +4604,12 @@ packages: resolution: {integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/fs@4.0.0': - resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/fs@5.0.0': + resolution: {integrity: sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==} + engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/git@7.0.1': - resolution: {integrity: sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==} + '@npmcli/git@7.0.2': + resolution: {integrity: sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==} engines: {node: ^20.17.0 || >=22.9.0} '@npmcli/installed-package-contents@4.0.0': @@ -4434,8 +4621,8 @@ packages: resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/package-json@7.0.2': - resolution: {integrity: sha512-0ylN3U5htO1SJTmy2YI78PZZjLkKUGg7EKgukb2CRi0kzyoDr0cfjHAzi7kozVhj2V3SxN1oyKqZ2NSo40z00g==} + '@npmcli/package-json@7.0.5': + resolution: {integrity: sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==} engines: {node: ^20.17.0 || >=22.9.0} '@npmcli/promise-spawn@9.0.1': @@ -4446,8 +4633,8 @@ packages: resolution: {integrity: sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/run-script@10.0.3': - resolution: {integrity: sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==} + '@npmcli/run-script@10.0.4': + resolution: {integrity: sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==} engines: {node: ^20.17.0 || >=22.9.0} '@nx/angular@22.6.2': @@ -4468,21 +4655,44 @@ packages: ng-packagr: optional: true - '@nx/cypress@22.6.2': - resolution: {integrity: sha512-wzikLJqc7r23vfmpJLq91wmQatbM7I+h8Cs+d4Fpy86FLikJq8C7fC4n5rHr3l5zNSNXo9eQ0IBhcIxztDngdQ==} + '@nx/angular@22.7.0-beta.10': + resolution: {integrity: sha512-ALp2lhfeeOLfcfxaUVoB0wFOZEXo2uxqTf1P/EdEhw5+aTh6Rfp32HVfAXjYlrqNoMgCG+WQYjHT24ViNQf+8w==} peerDependencies: - cypress: '>= 13 < 16' + '@angular-devkit/build-angular': '>= 19.0.0 < 22.0.0' + '@angular-devkit/core': '>= 19.0.0 < 22.0.0' + '@angular-devkit/schematics': '>= 19.0.0 < 22.0.0' + '@angular/build': '>= 19.0.0 < 22.0.0' + '@schematics/angular': '>= 19.0.0 < 22.0.0' + ng-packagr: '>= 19.0.0 < 22.0.0' + rxjs: ^6.5.3 || ^7.5.0 peerDependenciesMeta: - cypress: + '@angular-devkit/build-angular': optional: true - - '@nx/devkit@22.6.2': + '@angular/build': + optional: true + ng-packagr: + optional: true + + '@nx/cypress@22.7.0-beta.10': + resolution: {integrity: sha512-1qtvolDX6PJUkfbD1XV7Xr7Y8h3sI7PXCgB2U6za8itjkLqekZBlwv5u4YmTRV/h1lGu4PMv9u+F2CuW/q36BQ==} + peerDependencies: + cypress: '>= 13 < 16' + peerDependenciesMeta: + cypress: + optional: true + + '@nx/devkit@22.6.2': resolution: {integrity: sha512-XDSaapU6y75MLxvD68itwY0jzkzPhM8k5ZRngEl9eEQeBxDmwj9lDK85R58KuBl9F6j2FWULK27eAnH6nc9W6Q==} peerDependencies: nx: '>= 21 <= 23 || ^22.0.0-0' - '@nx/eslint-plugin@22.6.2': - resolution: {integrity: sha512-wrq+MwZ2QErQdm7XiI1jLSsJ658Yg7sR12gZLTyRfKvTFZIqBMQrOBd8v1IaRc+ZLUUiv9hqhzteLm/+EGAYuA==} + '@nx/devkit@22.7.0-beta.10': + resolution: {integrity: sha512-8GJjzCeYKIpl0AAOWnoIa2xcMjgqZpWu7z7RVizXaHQP+FKYiDB/dHVA5U3U4sDa7jgfQ0DNcmlF1+igUzk23w==} + peerDependencies: + nx: '>= 21 <= 23 || ^22.0.0-0' + + '@nx/eslint-plugin@22.7.0-beta.10': + resolution: {integrity: sha512-OgK45XRlRjgxCqyEnc1vm17M1WHtxCbMzDaZFmZIQ2Atcxjvo2jI8VdhQFozooNhR5A/jbWbMaXRUuGN81KhIA==} peerDependencies: '@typescript-eslint/parser': ^6.13.2 || ^7.0.0 || ^8.0.0 eslint-config-prettier: ^10.0.0 @@ -4499,8 +4709,17 @@ packages: '@zkochan/js-yaml': optional: true - '@nx/jest@22.6.2': - resolution: {integrity: sha512-MxXyNRSw19vFWppgK+WlH+XNScUbBdkpw6tI0gip8DENOaZTQ+SC+oY+OcReR51kn/ttjxMYurQXvFUaOUxiDg==} + '@nx/eslint@22.7.0-beta.10': + resolution: {integrity: sha512-DH6K1wRQBjvQMs0RhFS8k0mwmcTBeiZ+MND6/KDmXEd3D8Dx8EV7A1WhSlD9g8muPhTBYBfKUV6TnQ25JhevGg==} + peerDependencies: + '@zkochan/js-yaml': 0.0.7 + eslint: ^8.0.0 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + '@zkochan/js-yaml': + optional: true + + '@nx/jest@22.7.0-beta.10': + resolution: {integrity: sha512-slwGuWBs89S4+scehYIN1/MzjFdSa209orsMLIiPbJNRIc413GsWeay2HuIPrDby3aWI729UzK4iPTFSZ02IrQ==} '@nx/js@22.6.2': resolution: {integrity: sha512-KYw/B9WektFxEig0gcybyv87eXBuOZFR89ITj6TxoH21iYS1jPsvU+p459IcIaraOsyQjTv7OU8NCoM4fL2foQ==} @@ -4510,73 +4729,138 @@ packages: verdaccio: optional: true + '@nx/js@22.7.0-beta.10': + resolution: {integrity: sha512-GqP4vMVFie4Dh0sbP3R9o/hcpJwdCqFZ0JO755pF7B3a3cgskejFQCVbXweHlNQ9pPha7l4LPoBgshtx1scxmQ==} + peerDependencies: + verdaccio: ^6.0.5 + peerDependenciesMeta: + verdaccio: + optional: true + '@nx/module-federation@22.6.2': resolution: {integrity: sha512-vZCJK6igyR+4qNnpnbg/t14YmBirPSerr+sXjl1S63HnYFo5b7x5FSJJdchUYlqYYYw+mhqFato/0T7Q2TFRsg==} + '@nx/module-federation@22.7.0-beta.10': + resolution: {integrity: sha512-Zkvf+FweqLwgvRPMPcR6SY4/jGgfwnQs/CvMUOFdIB7REEPAxleRSy7b4TGhtIyZPHkswly+ylr/DNv1ZGoGmA==} + '@nx/nx-darwin-arm64@22.6.2': resolution: {integrity: sha512-pq21tJO3ykatm4P8P8owMThOor/Kg/kDs/y4xsmz+N68NUYKvFPgc3p90SCyJnFKbNohlMSPFJYHY3zxrDUYhQ==} cpu: [arm64] os: [darwin] + '@nx/nx-darwin-arm64@22.7.0-beta.10': + resolution: {integrity: sha512-/DmO2FX9Usplb0AHnz8AOeQIYfOszcSxa7sSYgON0gvntJZhOJIHGbBUHL8jNvUSLcbgCb7qr8TOFk4bahusmA==} + cpu: [arm64] + os: [darwin] + '@nx/nx-darwin-x64@22.6.2': resolution: {integrity: sha512-CllU9XhOM64dYJPcedQsfdJKmJNTIfDj+UYWInUJkkpf2Y/sl08qmZmUwHjWuOkH0L//ZrDSw8XE0SzyWCm7VA==} cpu: [x64] os: [darwin] + '@nx/nx-darwin-x64@22.7.0-beta.10': + resolution: {integrity: sha512-hexThbnm09aUyOSs53LMK17FgYaym0SN6OSLwba3U7rXAeJXc0P4jpD2GeqpFJIkvRjnKWV+d0zqdLnDzEyrRw==} + cpu: [x64] + os: [darwin] + '@nx/nx-freebsd-x64@22.6.2': resolution: {integrity: sha512-CUkXPLm9R5Wihv/WgrYNF2l169BEk6NwQbYhl7x4D6A2jpISf0JHKup42PetFoq62TT2KGMjuLRP3xOoVB/Yrg==} cpu: [x64] os: [freebsd] + '@nx/nx-freebsd-x64@22.7.0-beta.10': + resolution: {integrity: sha512-K1LkW2wHRWr2tGXqN3SXqmI1A1NCBW1FaH4vTlILBJ43RLV7EgImzFpbXvSJS8r/geBBxgIe2jXCvWJovp04QQ==} + cpu: [x64] + os: [freebsd] + '@nx/nx-linux-arm-gnueabihf@22.6.2': resolution: {integrity: sha512-qV34eeQIZlagodInOXK6mUBfytxA39wK01es5CSHGmdRdYyQlwfaBkPY+GfWSA/sOem33lxYV2eu5H+rxkeRIA==} cpu: [arm] os: [linux] + '@nx/nx-linux-arm-gnueabihf@22.7.0-beta.10': + resolution: {integrity: sha512-99p5fx/PhFGtKHEip+uZP4X2clqHFueVaUGIlvsBd4YOPaq62x8Ex0cId6/4wYt/DE8lmsFielf3c0H362FOCQ==} + cpu: [arm] + os: [linux] + '@nx/nx-linux-arm64-gnu@22.6.2': resolution: {integrity: sha512-P7EGH74jsFGY/gd881EeHdz6MXSrjkLHDrwes4cs3ETpaa3ZnCSQrG84imFnOeRQucqB3P2QZc1eL44ATc6nVw==} cpu: [arm64] os: [linux] libc: [glibc] + '@nx/nx-linux-arm64-gnu@22.7.0-beta.10': + resolution: {integrity: sha512-OmFxvtKE3dbOafv+ymPtV0F4goH+tP3E5BkYzbsYDn48RjW259jAyo2uuHWCDv4VBLHvUvxIOHI83mkg2ufhtQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@nx/nx-linux-arm64-musl@22.6.2': resolution: {integrity: sha512-qwq2hFBsoR2tJSlflA3mKyrgzo5eNK2CTxcN3gPmBfxVA4jEIa+30pjpbQrK1C+lshhQrItZiPGlvcpL7rOESQ==} cpu: [arm64] os: [linux] libc: [musl] + '@nx/nx-linux-arm64-musl@22.7.0-beta.10': + resolution: {integrity: sha512-xrzF8npFZzbDrIqw1FSKKQ4GWk/VwENHTYklpafEqAQ+rSWbkNsvhS8ooEV20f1N2hlookh5ieHMDTuBNQ60Aw==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@nx/nx-linux-x64-gnu@22.6.2': resolution: {integrity: sha512-Ru92V5qOivrvhJqIXbJUaHTv2zS19OGf30+FFdD+gnyCz6EzWtVcozYHAsjVfIQRWtwM0kEql77SpdV7dEnIVQ==} cpu: [x64] os: [linux] libc: [glibc] + '@nx/nx-linux-x64-gnu@22.7.0-beta.10': + resolution: {integrity: sha512-E06UIqc06lN/BEGVWtHLqQWPzRLp+SWDUTvV8e+lJZ1oBPPTnIr7e6gwWujjmldb9FUb3ckCCvGF++JvMF668g==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@nx/nx-linux-x64-musl@22.6.2': resolution: {integrity: sha512-/AIa8MNZZZh6EnPjWEq6EXsYl9B8JwD2QFcPGFRavXfpiYtK8Uk0q3NVSVcmg5L8WEW9ve5sxAY27lswym8cJw==} cpu: [x64] os: [linux] libc: [musl] + '@nx/nx-linux-x64-musl@22.7.0-beta.10': + resolution: {integrity: sha512-iccmouwR3i6kaWb0/tFOsb75jZr8FjkxhMo04d3xtFg1D4bmyz0TnQ1NwpbTpeaJdrlEyI8F1MbmuoEfBCd2mg==} + cpu: [x64] + os: [linux] + libc: [musl] + '@nx/nx-win32-arm64-msvc@22.6.2': resolution: {integrity: sha512-0y9FHSbUj1bhD7obbQXFgnCYHNGuqajMks+oVhqsd0p48U8kjqLPG0aZchztDNzqPk52UHqIBBSiLeMofIcIzw==} cpu: [arm64] os: [win32] + '@nx/nx-win32-arm64-msvc@22.7.0-beta.10': + resolution: {integrity: sha512-QkejT027bun0NTHi/kr0MNJ5d/iMIG2oR0EXxFhF6IOfl/PVi/Op2eaW3X+9FAHTC4a2qqwWy2mDhn+mfO+Gvg==} + cpu: [arm64] + os: [win32] + '@nx/nx-win32-x64-msvc@22.6.2': resolution: {integrity: sha512-6rcB7ioI47GP+ocKO7m1NETW9yV6nW88kiEI8kkQv4kU5fPD3t9EcI7Gu5eF0Ms9cCx/EUspFgh1ZDwDDw4Uzg==} cpu: [x64] os: [win32] - '@nx/playwright@22.6.2': - resolution: {integrity: sha512-t8L8fVRAXDCGfr7h/2iH0H7zOay6XfMXVyVwwol6+8cHAhMrXlZDrcxHQWMm3hCxrreU6tIxVyve/2jyHNf8Vw==} + '@nx/nx-win32-x64-msvc@22.7.0-beta.10': + resolution: {integrity: sha512-tVVsEeQ7Gd8D7BexViYrKsL6m4cFz+mYtX3vUWyYVVUwjq4jhe/SGJce8mkW0fxJfCqliaDkqS48ZluWAFg4IQ==} + cpu: [x64] + os: [win32] + + '@nx/playwright@22.7.0-beta.10': + resolution: {integrity: sha512-6jTz7VnT2CGpipXHETuaeXEqvc/AtERmmagSKdAfOrHk08VTzfRdJtYZqF3Ps1bTOBaxA3CLYmC4/EifxEvqHQ==} peerDependencies: '@playwright/test': ^1.36.0 peerDependenciesMeta: '@playwright/test': optional: true - '@nx/plugin@22.6.2': - resolution: {integrity: sha512-MlW/y9r1Hytq2nUAugylgFvcV0Jb41iALj+lrZzUYOOzP6eenQCkTzcHajVcxOYQrQVMZ3Y1k9euFS7pijucLw==} + '@nx/plugin@22.7.0-beta.10': + resolution: {integrity: sha512-UpFLNrEpa0vKXOdb3m0ON2PhJKNmujXNHkenE7b4l/fL75jyXLKaud2CzqoEou9PkRWSpXqsUYMIUsVE1aoRGQ==} '@nx/rspack@22.6.2': resolution: {integrity: sha512-x34CrO8ikSd/QQXZr0HNqSVTmC1RcviVCOhEuU+pDh2GOxsiq/D0Qxbc25SfK+p7aICcD8PjTpf5mEcvMtbkHA==} @@ -4584,8 +4868,14 @@ packages: '@module-federation/enhanced': ^2.1.0 '@module-federation/node': ^2.7.21 - '@nx/storybook@22.6.2': - resolution: {integrity: sha512-uSEm0DhFlc85uGzpti6zTu6dgFRRbEmifbSw1mLSEgEFvy1Hor49ZmY+lwcZO2ZeTwUFht2za1nUJALWnk3pzA==} + '@nx/rspack@22.7.0-beta.10': + resolution: {integrity: sha512-JmkgR3tRq7/e8wMXEKWsEsqDzeEzKXgsTX6jBVAO7N9a9T57OXOG/7ZsPiupz0aI3tNxo5hBooXA4xOIYLemgQ==} + peerDependencies: + '@module-federation/enhanced': ^2.1.0 + '@module-federation/node': ^2.7.21 + + '@nx/storybook@22.7.0-beta.10': + resolution: {integrity: sha512-nHuyNnAOkgZ/Gtrjt92LynUWqf9Nk2K/a9yGNHde5KPqKWn0d8YXx7twnW4ETgdBJsiB9HK6kg4k5IQLaPG2jg==} peerDependencies: storybook: '>=7.0.0 <11.0.0' @@ -4595,6 +4885,12 @@ packages: 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/vite@22.7.0-beta.10': + resolution: {integrity: sha512-/ZJ4W2tkuQ3o9Xr7lYC+v/NhFv7KVO93liqIkjXzKrU9A0UJRehlgW0MuMNhfUL/1YgfJC9W9yAZlR8n/kNxZw==} + peerDependencies: + 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.6.2': resolution: {integrity: sha512-kGu423BnpTbAVxevBWBdtEvaVMiY0btaQFizbdbKhIRN6kN6zQX9CEXeZlmfgcoSdwEROMNNhv+m484fueOyhw==} peerDependencies: @@ -4606,15 +4902,35 @@ packages: vitest: optional: true + '@nx/vitest@22.7.0-beta.10': + resolution: {integrity: sha512-DNkEqAaEKOxeLGhdAzYnbWh8k5+Z7PTXmF2Nv4yZRX6HuPvuaI8kSi1kt4gprsVsiMqTXHnfP4R5VNJpRqwGEw==} + peerDependencies: + 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: + vite: + optional: true + vitest: + optional: true + '@nx/web@22.6.2': resolution: {integrity: sha512-WLNTi8oPZF+5u9azYiteSRS+OCN4Z28vLNtOcJawNrviiMzI68cnIk6mZZS6tbsmH/zzJXAFHuLDXojxQkXXog==} + '@nx/web@22.7.0-beta.10': + resolution: {integrity: sha512-8LpTZ77XlbUuZREwXf/27RVF986kEpFdkY3ql3iJG5ZJi/t47MgVg8Ehi4xQDEYvdydWwYQe6B8qJdmNr0NvJQ==} + '@nx/webpack@22.6.2': resolution: {integrity: sha512-wCpNcxlrtrKP7CE2asbVc+umULkscjpGRksACdCKC+XRQTP0YYDGgC3d3zjBf6SgqlFrjU3QXIC3XOaBlOE4bg==} + '@nx/webpack@22.7.0-beta.10': + resolution: {integrity: sha512-3O1jEDPLzPRowxc5TczDrAwUZxvjbj2awqrFBDrfj9I2YVyoQpxWkOyzS33BdqJMLOHu1IQY+9QT051ZAmYTOg==} + '@nx/workspace@22.6.2': resolution: {integrity: sha512-G5Ft3eb7ZrvNN0D3j1tyIyT6BuRwMNbjgvNWfEnZ1fKHRTIwqsXvx5S5fK4aJhCgpxTlPzQZpIr0XUTS0t6sjQ==} + '@nx/workspace@22.7.0-beta.10': + resolution: {integrity: sha512-BPiBAV8wtsi4o5Y/XEb54nmKy/sR5PxaUVConrEXQ3rb6BDiJQtUeKlLl4RQscPWLeFUlT0tbrfNORHcVxjkTQ==} + '@octokit/auth-token@6.0.0': resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} engines: {node: '>= 20'} @@ -5136,207 +5452,214 @@ packages: cpu: [x64] os: [win32] - '@oxlint/binding-android-arm-eabi@1.57.0': - resolution: {integrity: sha512-C7EiyfAJG4B70496eV543nKiq5cH0o/xIh/ufbjQz3SIvHhlDDsyn+mRFh+aW8KskTyUpyH2LGWL8p2oN6bl1A==} + '@oxlint/binding-android-arm-eabi@1.58.0': + resolution: {integrity: sha512-1T7UN3SsWWxpWyWGn1cT3ASNJOo+pI3eUkmEl7HgtowapcV8kslYpFQcYn431VuxghXakPNlbjRwhqmR37PFOg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.57.0': - resolution: {integrity: sha512-9i80AresjZ/FZf5xK8tKFbhQnijD4s1eOZw6/FHUwD59HEZbVLRc2C88ADYJfLZrF5XofWDiRX/Ja9KefCLy7w==} + '@oxlint/binding-android-arm64@1.58.0': + resolution: {integrity: sha512-GryzujxuiRv2YFF7bRy8mKcxlbuAN+euVUtGJt9KKbLT8JBUIosamVhcthLh+VEr6KE6cjeVMAQxKAzJcoN7dg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.57.0': - resolution: {integrity: sha512-0eUfhRz5L2yKa9I8k3qpyl37XK3oBS5BvrgdVIx599WZK63P8sMbg+0s4IuxmIiZuBK68Ek+Z+gcKgeYf0otsg==} + '@oxlint/binding-darwin-arm64@1.58.0': + resolution: {integrity: sha512-7/bRSJIwl4GxeZL9rPZ11anNTyUO9epZrfEJH/ZMla3+/gbQ6xZixh9nOhsZ0QwsTW7/5J2A/fHbD1udC5DQQA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.57.0': - resolution: {integrity: sha512-UvrSuzBaYOue+QMAcuDITe0k/Vhj6KZGjfnI6x+NkxBTke/VoM7ZisaxgNY0LWuBkTnd1OmeQfEQdQ48fRjkQg==} + '@oxlint/binding-darwin-x64@1.58.0': + resolution: {integrity: sha512-EqdtJSiHweS2vfILNrpyJ6HUwpEq2g7+4Zx1FPi4hu3Hu7tC3znF6ufbXO8Ub2LD4mGgznjI7kSdku9NDD1Mkg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.57.0': - resolution: {integrity: sha512-wtQq0dCoiw4bUwlsNVDJJ3pxJA218fOezpgtLKrbQqUtQJcM9yP8z+I9fu14aHg0uyAxIY+99toL6uBa2r7nxA==} + '@oxlint/binding-freebsd-x64@1.58.0': + resolution: {integrity: sha512-VQt5TH4M42mY20F545G637RKxV/yjwVtKk2vfXuazfReSIiuvWBnv+FVSvIV5fKVTJNjt3GSJibh6JecbhGdBw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.57.0': - resolution: {integrity: sha512-qxFWl2BBBFcT4djKa+OtMdnLgoHEJXpqjyGwz8OhW35ImoCwR5qtAGqApNYce5260FQqoAHW8S8eZTjiX67Tsg==} + '@oxlint/binding-linux-arm-gnueabihf@1.58.0': + resolution: {integrity: sha512-fBYcj4ucwpAtjJT3oeBdFBYKvNyjRSK+cyuvBOTQjh0jvKp4yeA4S/D0IsCHus/VPaNG5L48qQkh+Vjy3HL2/Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.57.0': - resolution: {integrity: sha512-SQoIsBU7J0bDW15/f0/RvxHfY3Y0+eB/caKBQtNFbuerTiA6JCYx9P1MrrFTwY2dTm/lMgTSgskvCEYk2AtG/Q==} + '@oxlint/binding-linux-arm-musleabihf@1.58.0': + resolution: {integrity: sha512-0BeuFfwlUHlJ1xpEdSD1YO3vByEFGPg36uLjK1JgFaxFb4W6w17F8ET8sz5cheZ4+x5f2xzdnRrrWv83E3Yd8g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.57.0': - resolution: {integrity: sha512-jqxYd1W6WMeozsCmqe9Rzbu3SRrGTyGDAipRlRggetyYbUksJqJKvUNTQtZR/KFoJPb+grnSm5SHhdWrywv3RQ==} + '@oxlint/binding-linux-arm64-gnu@1.58.0': + resolution: {integrity: sha512-TXlZgnPTlxrQzxG9ZXU7BNwx1Ilrr17P3GwZY0If2EzrinqRH3zXPc3HrRcBJgcsoZNMuNL5YivtkJYgp467UQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-arm64-musl@1.57.0': - resolution: {integrity: sha512-i66WyEPVEvq9bxRUCJ/MP5EBfnTDN3nhwEdFZFTO5MmLLvzngfWEG3NSdXQzTT3vk5B9i6C2XSIYBh+aG6uqyg==} + '@oxlint/binding-linux-arm64-musl@1.58.0': + resolution: {integrity: sha512-zSoYRo5dxHLcUx93Stl2hW3hSNjPt99O70eRVWt5A1zwJ+FPjeCCANCD2a9R4JbHsdcl11TIQOjyigcRVOH2mw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxlint/binding-linux-ppc64-gnu@1.57.0': - resolution: {integrity: sha512-oMZDCwz4NobclZU3pH+V1/upVlJZiZvne4jQP+zhJwt+lmio4XXr4qG47CehvrW1Lx2YZiIHuxM2D4YpkG3KVA==} + '@oxlint/binding-linux-ppc64-gnu@1.58.0': + resolution: {integrity: sha512-NQ0U/lqxH2/VxBYeAIvMNUK1y0a1bJ3ZicqkF2c6wfakbEciP9jvIE4yNzCFpZaqeIeRYaV7AVGqEO1yrfVPjA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.57.0': - resolution: {integrity: sha512-uoBnjJ3MMEBbfnWC1jSFr7/nSCkcQYa72NYoNtLl1imshDnWSolYCjzb8LVCwYCCfLJXD+0gBLD7fyC14c0+0g==} + '@oxlint/binding-linux-riscv64-gnu@1.58.0': + resolution: {integrity: sha512-X9J+kr3gIC9FT8GuZt0ekzpNUtkBVzMVU4KiKDSlocyQuEgi3gBbXYN8UkQiV77FTusLDPsovjo95YedHr+3yg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-musl@1.57.0': - resolution: {integrity: sha512-BdrwD7haPZ8a9KrZhKJRSj6jwCor+Z8tHFZ3PT89Y3Jq5v3LfMfEePeAmD0LOTWpiTmzSzdmyw9ijneapiVHKQ==} + '@oxlint/binding-linux-riscv64-musl@1.58.0': + resolution: {integrity: sha512-CDze3pi1OO3Wvb/QsXjmLEY4XPKGM6kIo82ssNOgmcl1IdndF9VSGAE38YLhADWmOac7fjqhBw82LozuUVxD0Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxlint/binding-linux-s390x-gnu@1.57.0': - resolution: {integrity: sha512-BNs+7ZNsRstVg2tpNxAXfMX/Iv5oZh204dVyb8Z37+/gCh+yZqNTlg6YwCLIMPSk5wLWIGOaQjT0GUOahKYImw==} + '@oxlint/binding-linux-s390x-gnu@1.58.0': + resolution: {integrity: sha512-b/89glbxFaEAcA6Uf1FvCNecBJEgcUTsV1quzrqXM/o4R1M4u+2KCVuyGCayN2UpsRWtGGLb+Ver0tBBpxaPog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.57.0': - resolution: {integrity: sha512-AghS18w+XcENcAX0+BQGLiqjpqpaxKJa4cWWP0OWNLacs27vHBxu7TYkv9LUSGe5w8lOJHeMxcYfZNOAPqw2bg==} + '@oxlint/binding-linux-x64-gnu@1.58.0': + resolution: {integrity: sha512-0/yYpkq9VJFCEcuRlrViGj8pJUFFvNS4EkEREaN7CB1EcLXJIaVSSa5eCihwBGXtOZxhnblWgxks9juRdNQI7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-musl@1.57.0': - resolution: {integrity: sha512-E/FV3GB8phu/Rpkhz5T96hAiJlGzn91qX5yj5gU754P5cmVGXY1Jw/VSjDSlZBCY3VHjsVLdzgdkJaomEmcNOg==} + '@oxlint/binding-linux-x64-musl@1.58.0': + resolution: {integrity: sha512-hr6FNvmcAXiH+JxSvaJ4SJ1HofkdqEElXICW9sm3/Rd5eC3t7kzvmLyRAB3NngKO2wzXRCAm4Z/mGWfrsS4X8w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxlint/binding-openharmony-arm64@1.57.0': - resolution: {integrity: sha512-xvZ2yZt0nUVfU14iuGv3V25jpr9pov5N0Wr28RXnHFxHCRxNDMtYPHV61gGLhN9IlXM96gI4pyYpLSJC5ClLCQ==} + '@oxlint/binding-openharmony-arm64@1.58.0': + resolution: {integrity: sha512-R+O368VXgRql1K6Xar+FEo7NEwfo13EibPMoTv3sesYQedRXd6m30Dh/7lZMxnrQVFfeo4EOfYIP4FpcgWQNHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.57.0': - resolution: {integrity: sha512-Z4D8Pd0AyHBKeazhdIXeUUy5sIS3Mo0veOlzlDECg6PhRRKgEsBJCCV1n+keUZtQ04OP+i7+itS3kOykUyNhDg==} + '@oxlint/binding-win32-arm64-msvc@1.58.0': + resolution: {integrity: sha512-Q0FZiAY/3c4YRj4z3h9K1PgaByrifrfbBoODSeX7gy97UtB7pySPUQfC2B/GbxWU6k7CzQrRy5gME10PltLAFQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.57.0': - resolution: {integrity: sha512-StOZ9nFMVKvevicbQfql6Pouu9pgbeQnu60Fvhz2S6yfMaii+wnueLnqQ5I1JPgNF0Syew4voBlAaHD13wH6tw==} + '@oxlint/binding-win32-ia32-msvc@1.58.0': + resolution: {integrity: sha512-Y8FKBABrSPp9H0QkRLHDHOSUgM/309a3IvOVgPcVxYcX70wxJrk608CuTg7w+C6vEd724X5wJoNkBcGYfH7nNQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.57.0': - resolution: {integrity: sha512-6PuxhYgth8TuW0+ABPOIkGdBYw+qYGxgIdXPHSVpiCDm+hqTTWCmC739St1Xni0DJBt8HnSHTG67i1y6gr8qrA==} + '@oxlint/binding-win32-x64-msvc@1.58.0': + resolution: {integrity: sha512-bCn5rbiz5My+Bj7M09sDcnqW0QJyINRVxdZ65x1/Y2tGrMwherwK/lpk+HRQCKvXa8pcaQdF5KY5j54VGZLwNg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@parcel/watcher-android-arm64@2.4.1': - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.4.1': - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.4.1': - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.4.1': - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.4.1': - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] libc: [glibc] - '@parcel/watcher-linux-arm64-glibc@2.4.1': - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + '@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.4.1': - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + '@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.4.1': - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + '@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.4.1': - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + '@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-win32-arm64@2.4.1': - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.4.1': - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.4.1': - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.4.1': - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} '@peculiar/asn1-cms@2.6.1': @@ -5386,8 +5709,8 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.58.2': - resolution: {integrity: sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==} + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} engines: {node: '>=18'} hasBin: true @@ -5399,8 +5722,8 @@ packages: resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} - '@pnpm/npm-conf@2.2.2': - resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + '@pnpm/npm-conf@3.0.2': + resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==} engines: {node: '>=12'} '@polka/send-type@0.5.2': @@ -5409,8 +5732,8 @@ packages: '@polka/url@0.5.0': resolution: {integrity: sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==} - '@polka/url@1.0.0-next.25': - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} @@ -5858,8 +6181,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/wasm-node@4.24.4': - resolution: {integrity: sha512-WKJUdPcM8YAYujafY95+2EapqU3F/nwfBkXh9AfkBvWBwFhsvNJABA86Br6graRH2vRE4FBsiqjFvFWOtEO6wg==} + '@rollup/wasm-node@4.60.1': + resolution: {integrity: sha512-FAfGj5Ferzyna11iUwGdkYus/Y9d/H75PEpsseP5DZOsEsyPvP/Q7mJiSXhUYSEmyfHPaZyC8EsJCjqzDbtcfg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -5928,8 +6251,8 @@ packages: '@swc/helpers': optional: true - '@rspack/dev-server@1.1.4': - resolution: {integrity: sha512-kGHYX2jYf3ZiHwVl0aUEPBOBEIG1aWleCDCAi+Jg32KUu3qr/zDUpCEd0wPuHfLEgk0X0xAEYCS6JMO7nBStNQ==} + '@rspack/dev-server@1.2.1': + resolution: {integrity: sha512-e/ARvskYn2Qdd02qLvc0i6H9BnOmzP0xGHS2XCr7GZ3t2k5uC5ZlLkeN1iEebU0FkAW+6ot89NahFo3nupKuww==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': '*' @@ -5937,12 +6260,13 @@ packages: '@rspack/lite-tapable@1.1.0': resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==} - '@rspack/plugin-react-refresh@1.0.1': - resolution: {integrity: sha512-KSBc3bsr3mrAPViv7w9MpE9KEWm6q87EyRXyHlRfJ9PpQ56NbX9KZ7AXo7jPeECb0q5sfpM2PSEf+syBiMgLSw==} + '@rspack/plugin-react-refresh@1.6.1': + resolution: {integrity: sha512-eqqW5645VG3CzGzFgNg5HqNdHVXY+567PGjtDhhrM8t67caxmsSzRmT5qfoEIfBcGgFkH9vEg7kzXwmCYQdQDw==} peerDependencies: react-refresh: '>=0.10.0 <1.0.0' + webpack-hot-middleware: 2.x peerDependenciesMeta: - react-refresh: + webpack-hot-middleware: optional: true '@schematics/angular@21.2.4': @@ -6051,24 +6375,24 @@ packages: resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==} engines: {node: ^20.17.0 || >=22.9.0} - '@sigstore/core@3.0.0': - resolution: {integrity: sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg==} + '@sigstore/core@3.2.0': + resolution: {integrity: sha512-kxHrDQ9YgfrWUSXU0cjsQGv8JykOFZQ9ErNKbFPWzk3Hgpwu8x2hHrQ9IdA8yl+j9RTLTC3sAF3Tdq1IQCP4oA==} engines: {node: ^20.17.0 || >=22.9.0} '@sigstore/protobuf-specs@0.5.0': resolution: {integrity: sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==} engines: {node: ^18.17.0 || >=20.5.0} - '@sigstore/sign@4.0.1': - resolution: {integrity: sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==} + '@sigstore/sign@4.1.1': + resolution: {integrity: sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==} engines: {node: ^20.17.0 || >=22.9.0} - '@sigstore/tuf@4.0.0': - resolution: {integrity: sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==} + '@sigstore/tuf@4.0.2': + resolution: {integrity: sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==} engines: {node: ^20.17.0 || >=22.9.0} - '@sigstore/verify@3.0.0': - resolution: {integrity: sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==} + '@sigstore/verify@3.1.0': + resolution: {integrity: sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==} engines: {node: ^20.17.0 || >=22.9.0} '@simple-libs/child-process-utils@1.0.2': @@ -6083,11 +6407,11 @@ packages: resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} engines: {node: '>=18'} - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sinclair/typebox@0.27.10': + resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} - '@sinclair/typebox@0.34.38': - resolution: {integrity: sha512-HpkxMmc2XmZKhvaKIZZThlHmx1L0I/V1hWK1NubtlFnr6ZqdiOpV72TKudZUNQjZNsyDBay72qFEhEvb+bcwcA==} + '@sinclair/typebox@0.34.49': + resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==} '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} @@ -6104,8 +6428,8 @@ packages: '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - '@sinonjs/fake-timers@13.0.5': - resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + '@sinonjs/fake-timers@15.3.0': + resolution: {integrity: sha512-m2xozxSfCIxjDdvbhIWazlP2i2aha/iUmbl94alpsIbd3iLTfeXgfBVbwyWogB6l++istyGZqamgA/EcqYf+Bg==} '@slorber/react-helmet-async@1.3.0': resolution: {integrity: sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==} @@ -6119,27 +6443,27 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@storybook/addon-docs@10.3.3': - resolution: {integrity: sha512-trJQTpOtuOEuNv1Rn8X2Sopp5hSPpb0u0soEJ71BZAbxe4d2Y1d/1MYcxBdRKwncum6sCTsnxTpqQ/qvSJKlTQ==} + '@storybook/addon-docs@10.3.4': + resolution: {integrity: sha512-ohS8fX8UIP3LN6+mDZJLCDS4Qd2rsmGwes6V6fD0sbLOmIyCVY5y68r6NHMMGJKFRwadDQOmtOt8Vc6snExrIQ==} peerDependencies: - storybook: ^10.3.3 + storybook: ^10.3.4 - '@storybook/addon-links@10.3.3': - resolution: {integrity: sha512-tazBHlB+YbU62bde5DWsq0lnxZjcAsPB3YRUpN2hSMfAySsudRingyWrgu5KeOxXhJvKJj0ohjQvGcMx/wgQUA==} + '@storybook/addon-links@10.3.4': + resolution: {integrity: sha512-4Kcdv0U5WEyteN08Mv4oAUXTigF8OHMLA7Bpf1VEQrtJfQsxoUjXzItOHhCyBvphufkZzbU0n6wCC8upEb7X7w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.3.3 + storybook: ^10.3.4 peerDependenciesMeta: react: optional: true - '@storybook/addon-vitest@10.3.3': - resolution: {integrity: sha512-9bbUAgraZhHh35WuWJn/83B0KvkcsP8dNpzbhssMeWQTfu92TR3DqRNeGTNSlyZvhbGfwiwT3TfBzzM4dX1feg==} + '@storybook/addon-vitest@10.3.4': + resolution: {integrity: sha512-lSn8opaHVzDxLtMy28FnSkyx6uP1oQVnGzodNunTjrbJ8Ue8JVK+fjWtC/JfErIio0avlq79mgC5tfHSWlPr9w==} peerDependencies: '@vitest/browser': ^3.0.0 || ^4.0.0 '@vitest/browser-playwright': ^4.0.0 '@vitest/runner': ^3.0.0 || ^4.0.0 - storybook: ^10.3.3 + storybook: ^10.3.4 vitest: ^3.0.0 || ^4.0.0 peerDependenciesMeta: '@vitest/browser': @@ -6177,10 +6501,10 @@ packages: zone.js: optional: true - '@storybook/builder-vite@10.3.3': - resolution: {integrity: sha512-awspKCTZvXyeV3KabL0id62mFbxR5u/5yyGQultwCiSb2/yVgBfip2MAqLyS850pvTiB6QFVM9deOyd2/G/bEA==} + '@storybook/builder-vite@10.3.4': + resolution: {integrity: sha512-dNQyBZpBKvwmhSTpjrsuxxY8FqFCh0hgu5+46h2WbgQ2Te3pO458heWkGb+QO7mC6FmkXO6j6zgYzXticD6F2A==} peerDependencies: - storybook: ^10.3.3 + storybook: ^10.3.4 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 '@storybook/builder-webpack5@10.3.3': @@ -6197,12 +6521,12 @@ packages: peerDependencies: storybook: ^10.3.3 - '@storybook/csf-plugin@10.3.3': - resolution: {integrity: sha512-Utlh7zubm+4iOzBBfzLW4F4vD99UBtl2Do4edlzK2F7krQIcFvR2ontjAE8S1FQVLZAC3WHalCOS+Ch8zf3knA==} + '@storybook/csf-plugin@10.3.4': + resolution: {integrity: sha512-WPP0Z39o82WiohPkhPOs6z+9yJ+bVvqPz4d+QUPfE6FMvOOBLojlwOcGx6Xmclyn5H/CKwywFrjuz4mBO/nHhA==} peerDependencies: esbuild: '*' rollup: '*' - storybook: ^10.3.3 + storybook: ^10.3.4 vite: '*' webpack: '*' peerDependenciesMeta: @@ -6224,12 +6548,12 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@storybook/react-dom-shim@10.3.3': - resolution: {integrity: sha512-lkhuh4G3UTreU9M3Iz5Dt32c6U+l/4XuvqLtbe1sDHENZH6aPj7y0b5FwnfHyvuTvYRhtbo29xZrF5Bp9kCC0w==} + '@storybook/react-dom-shim@10.3.4': + resolution: {integrity: sha512-VIm9YzreGubnOtQOZ6iqEfj6KncHvAkrCR/IilqnJq7DidPWuykrFszyajTASRMiY+p+TElOW+O1PGpv55qNGw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.3.3 + storybook: ^10.3.4 '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} @@ -6325,72 +6649,86 @@ packages: '@swc-node/sourcemap-support@0.6.1': resolution: {integrity: sha512-ovltDVH5QpdHXZkW138vG4+dgcNsxfwxHVoV6BtmTbz2KKl1A8ZSlbdtxzzfNjCjbpayda8Us9eMtcHobm38dA==} - '@swc/core-darwin-arm64@1.15.18': - resolution: {integrity: sha512-+mIv7uBuSaywN3C9LNuWaX1jJJ3SKfiJuE6Lr3bd+/1Iv8oMU7oLBjYMluX1UrEPzwN2qCdY6Io0yVicABoCwQ==} + '@swc/core-darwin-arm64@1.15.24': + resolution: {integrity: sha512-uM5ZGfFXjtvtJ+fe448PVBEbn/CSxS3UAyLj3O9xOqKIWy3S6hPTXSPbszxkSsGDYKi+YFhzAsR4r/eXLxEQ0g==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.15.18': - resolution: {integrity: sha512-wZle0eaQhnzxWX5V/2kEOI6Z9vl/lTFEC6V4EWcn+5pDjhemCpQv9e/TDJ0GIoiClX8EDWRvuZwh+Z3dhL1NAg==} + '@swc/core-darwin-x64@1.15.24': + resolution: {integrity: sha512-fMIb/Zfn929pw25VMBhV7Ji2Dl+lCWtUPNdYJQYOke+00E5fcQ9ynxtP8+qhUo/HZc+mYQb1gJxwHM9vty+lXg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.15.18': - resolution: {integrity: sha512-ao61HGXVqrJFHAcPtF4/DegmwEkVCo4HApnotLU8ognfmU8x589z7+tcf3hU+qBiU1WOXV5fQX6W9Nzs6hjxDw==} + '@swc/core-linux-arm-gnueabihf@1.15.24': + resolution: {integrity: sha512-vOkjsyjjxnoYx3hMEWcGxQrMgnNrRm6WAegBXrN8foHtDAR+zpdhpGF5a4lj1bNPgXAvmysjui8cM1ov/Clkaw==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.15.18': - resolution: {integrity: sha512-3xnctOBLIq3kj8PxOCgPrGjBLP/kNOddr6f5gukYt/1IZxsITQaU9TDyjeX6jG+FiCIHjCuWuffsyQDL5Ew1bg==} + '@swc/core-linux-arm64-gnu@1.15.24': + resolution: {integrity: sha512-h/oNu+upkXJ6Cicnq7YGVj9PkdfarLCdQa8l/FlHYvfv8CEiMaeeTnpLU7gSBH/rGxosM6Qkfa/J9mThGF9CLA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] libc: [glibc] - '@swc/core-linux-arm64-musl@1.15.18': - resolution: {integrity: sha512-0a+Lix+FSSHBSBOA0XznCcHo5/1nA6oLLjcnocvzXeqtdjnPb+SvchItHI+lfeiuj1sClYPDvPMLSLyXFaiIKw==} + '@swc/core-linux-arm64-musl@1.15.24': + resolution: {integrity: sha512-ZpF/pRe1guk6sKzQI9D1jAORtjTdNlyeXn9GDz8ophof/w2WhojRblvSDJaGe7rJjcPN8AaOkhwdRUh7q8oYIg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] libc: [musl] - '@swc/core-linux-x64-gnu@1.15.18': - resolution: {integrity: sha512-wG9J8vReUlpaHz4KOD/5UE1AUgirimU4UFT9oZmupUDEofxJKYb1mTA/DrMj0s78bkBiNI+7Fo2EgPuvOJfuAA==} + '@swc/core-linux-ppc64-gnu@1.15.24': + resolution: {integrity: sha512-QZEsZfisHTSJlmyChgDFNmKPb3W6Lhbfo/O76HhIngfEdnQNmukS38/VSe1feho+xkV5A5hETyCbx3sALBZKAQ==} + engines: {node: '>=10'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-s390x-gnu@1.15.24': + resolution: {integrity: sha512-DLdJKVsJgglqQrJBuoUYNmzm3leI7kUZhLbZGHv42onfKsGf6JDS3+bzCUQfte/XOqDjh/tmmn1DR/CF/tCJFw==} + engines: {node: '>=10'} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-gnu@1.15.24': + resolution: {integrity: sha512-IpLYfposPA/XLxYOKpRfeccl1p5dDa3+okZDHHTchBkXEaVCnq5MADPmIWwIYj1tudt7hORsEHccG5no6IUQRw==} engines: {node: '>=10'} cpu: [x64] os: [linux] libc: [glibc] - '@swc/core-linux-x64-musl@1.15.18': - resolution: {integrity: sha512-4nwbVvCphKzicwNWRmvD5iBaZj8JYsRGa4xOxJmOyHlMDpsvvJ2OR2cODlvWyGFH6BYL1MfIAK3qph3hp0Az6g==} + '@swc/core-linux-x64-musl@1.15.24': + resolution: {integrity: sha512-JHy3fMSc0t/EPWgo74+OK5TGr51aElnzqfUPaiRf2qJ/BfX5CUCfMiWVBuhI7qmVMBnk1jTRnL/xZnOSHDPLYg==} engines: {node: '>=10'} cpu: [x64] os: [linux] libc: [musl] - '@swc/core-win32-arm64-msvc@1.15.18': - resolution: {integrity: sha512-zk0RYO+LjiBCat2RTMHzAWaMky0cra9loH4oRrLKLLNuL+jarxKLFDA8xTZWEkCPLjUTwlRN7d28eDLLMgtUcQ==} + '@swc/core-win32-arm64-msvc@1.15.24': + resolution: {integrity: sha512-Txj+qUH1z2bUd1P3JvwByfjKFti3cptlAxhWgmunBUUxy/IW3CXLZ6l6Gk4liANadKkU71nIU1X30Z5vpMT3BA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.15.18': - resolution: {integrity: sha512-yVuTrZ0RccD5+PEkpcLOBAuPbYBXS6rslENvIXfvJGXSdX5QGi1ehC4BjAMl5FkKLiam4kJECUI0l7Hq7T1vwg==} + '@swc/core-win32-ia32-msvc@1.15.24': + resolution: {integrity: sha512-15D/nl3XwrhFpMv+MADFOiVwv3FvH9j8c6Rf8EXBT3Q5LoMh8YnDnSgPYqw1JzPnksvsBX6QPXLiPqmcR/Z4qQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.15.18': - resolution: {integrity: sha512-7NRmE4hmUQNCbYU3Hn9Tz57mK9Qq4c97ZS+YlamlK6qG9Fb5g/BB3gPDe0iLlJkns/sYv2VWSkm8c3NmbEGjbg==} + '@swc/core-win32-x64-msvc@1.15.24': + resolution: {integrity: sha512-PR0PlTlPra2JbaDphrOAzm6s0v9rA0F17YzB+XbWD95B4g2cWcZY9LAeTa4xll70VLw9Jr7xBrlohqlQmelMFQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.15.18': - resolution: {integrity: sha512-z87aF9GphWp//fnkRsqvtY+inMVPgYW3zSlXH1kJFvRT5H/wiAn+G32qW5l3oEk63KSF1x3Ov0BfHCObAmT8RA==} + '@swc/core@1.15.24': + resolution: {integrity: sha512-5Hj8aNasue7yusUt8LGCUe/AjM7RMAce8ZoyDyiFwx7Al+GbYKL+yE7g4sJk8vEr1dKIkTRARkNIJENc4CjkBQ==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -6401,8 +6739,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.19': - resolution: {integrity: sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==} + '@swc/helpers@0.5.21': + resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==} '@swc/types@0.1.26': resolution: {integrity: sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==} @@ -6500,25 +6838,28 @@ packages: resolution: {integrity: sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==} engines: {node: '>= 20'} + '@tailwindcss/postcss@4.2.2': + resolution: {integrity: sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==} + '@tailwindcss/vite@4.2.2': resolution: {integrity: sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==} peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 - '@tanstack/angular-query-experimental@5.95.2': - resolution: {integrity: sha512-kn7FmgD/LMi2+QLbPH1q1DyupjrZQx9FB8N/0FLWt/2kGdmujEm9mJ7hlOqWAitjp/tYrWS4CJzU842E0/zKfQ==} + '@tanstack/angular-query-experimental@5.96.2': + resolution: {integrity: sha512-i57ouHWPonIQI0sU0rCf9hDRaGY8pBleemJa5XDiDdfuLp3Lul6JEC7+RuqE+WJlNk0n7//zuf72/7+1N1SpRA==} peerDependencies: '@angular/common': '>=16.0.0' '@angular/core': '>=16.0.0' - '@tanstack/query-core@5.95.2': - resolution: {integrity: sha512-o4T8vZHZET4Bib3jZ/tCW9/7080urD4c+0/AUaYVpIqOsr7y0reBc1oX3ttNaSW5mYyvZHctiQ/UOP2PfdmFEQ==} + '@tanstack/query-core@5.96.2': + resolution: {integrity: sha512-hzI6cTVh4KNRk8UtoIBS7Lv9g6BnJPXvBKsvYH1aGWvv0347jT3BnSvztOE+kD76XGvZnRC/t6qdW1CaIfwCeA==} - '@tanstack/query-devtools@5.95.2': - resolution: {integrity: sha512-QfaoqBn9uAZ+ICkA8brd1EHj+qBF6glCFgt94U8XP5BT6ppSsDBI8IJ00BU+cAGjQzp6wcKJL2EmRYvxy0TWIg==} + '@tanstack/query-devtools@5.96.2': + resolution: {integrity: sha512-vBTB1Qhbm3nHSbEUtQwks/EdcAtFfEapr1WyBW4w2ExYKuXVi3jIxUIHf5MlSltiHuL7zNyUuanqT/7sI2sb6g==} - '@testing-library/dom@10.4.0': - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} engines: {node: '>=18'} '@testing-library/jest-dom@6.9.1': @@ -6531,46 +6872,30 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@thednp/event-listener@2.0.10': - resolution: {integrity: sha512-TH7YVKmoKg6GBLqZB+ETXObofcqJ/Tp5ycheolvYZMjLbMpzYf6MmOWTcBtx8+zrhWy8deV0hYkPvDFioDXdVQ==} + '@thednp/event-listener@2.0.15': + resolution: {integrity: sha512-X1B+Yuvb30a/0rGdXnTLMfqvzCQ4D/1Kns7B78ON3BoFNFazJyFQ4ypuErY1jQLZSFDN4c3zTAIrdrtuIa/fFg==} engines: {node: '>=16', pnpm: '>=8.6.0'} - '@thednp/position-observer@1.1.0': - resolution: {integrity: sha512-WgldP6Dltp2hJkSwp3+IVu05ClK/2IF33iftiQLb7UHcuO6eydjXiIUeOCClgCy3FDCGau2l/LRVg3oOO3Ytcg==} + '@thednp/position-observer@1.1.3': + resolution: {integrity: sha512-5I3rdcZGTd6xJrDG0uRgME6O4jeYHlt2bedXz2yTkkCttYHhDuhtkTh3a2+NzMv2yNPXpXz0HykkeEm3RgQDDw==} engines: {node: '>=16', pnpm: '>=8.6.0'} - '@thednp/shorty@2.0.11': - resolution: {integrity: sha512-D+rLHt1l7c608yCuzXYJ75aDNWeMVbor+m1HO/XibhiWRbCpD8r6TUv3ayJI+feVfCnBNfrH+p6LSDn9l99uBA==} + '@thednp/shorty@2.0.14': + resolution: {integrity: sha512-jCxbkyQryQjovIzK5ko683RNq1pZRAKiscJfhtF71yGxneEzFR9IQgzayw/WRjQ5KDD/5UVqTwgtfQ7pJpmIYA==} engines: {node: '>=16', pnpm: '>=8.6.0'} - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - '@ts-morph/common@0.22.0': resolution: {integrity: sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==} '@ts-morph/common@0.28.1': resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==} - '@tsconfig/node10@1.0.12': - resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@tufjs/canonical-json@2.0.0': resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} engines: {node: ^16.14.0 || >=18.0.0} - '@tufjs/models@4.0.0': - resolution: {integrity: sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ==} + '@tufjs/models@4.1.0': + resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==} engines: {node: ^20.17.0 || >=22.9.0} '@tybys/wasm-util@0.10.1': @@ -6579,38 +6904,35 @@ packages: '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - '@types/acorn@4.0.6': - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.4': - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - '@types/babel__template@7.4.1': - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.18.2': - resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - '@types/body-parser@1.19.2': - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} '@types/bonjour@3.5.13': resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/connect-history-api-fallback@1.5.4': resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - '@types/connect@3.4.35': - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -6705,8 +7027,8 @@ packages: '@types/d3@7.4.3': resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} - '@types/debug@4.1.7': - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -6714,8 +7036,11 @@ packages: '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - '@types/eslint@8.37.0': - resolution: {integrity: sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==} + '@types/eslint@8.56.12': + resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} '@types/esquery@1.5.4': resolution: {integrity: sha512-yYO4Q8H+KJHKW1rEeSzHxcZi90durqYgWVfnh5K6ZADVBjBv2e1NEveYX5yT2bffgN7RqzH3k9930m+i2yBoMA==} @@ -6723,17 +7048,14 @@ packages: '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - '@types/estree-jsx@1.0.1': - resolution: {integrity: sha512-sHyakZlAezNFxmYRo0fopDZW+XvK6ipeZkkp5EAOLjdPfZp8VjZBJ67vSRI99RSCAoqXVmXOHS4fnWoxpuGQtQ==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/express-serve-static-core@4.19.0': - resolution: {integrity: sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==} + '@types/express-serve-static-core@4.19.8': + resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} '@types/express@4.17.25': resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} @@ -6756,20 +7078,20 @@ packages: '@types/html-minifier-terser@6.1.0': resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - '@types/http-cache-semantics@4.0.4': - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + '@types/http-cache-semantics@4.2.0': + resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/http-proxy@1.17.15': - resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} + '@types/http-proxy@1.17.17': + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - '@types/istanbul-lib-report@3.0.0': - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} @@ -6780,47 +7102,47 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/mdast@4.0.3': - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/mdx@2.0.8': - resolution: {integrity: sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA==} + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/ms@0.7.31': - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + '@types/node-forge@1.3.14': + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@25.5.0': - resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} + '@types/node@25.5.2': + resolution: {integrity: sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/parse-json@4.0.0': - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} '@types/prismjs@1.26.6': resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} - '@types/prop-types@15.7.5': - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - '@types/qs@6.9.7': - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + '@types/qs@6.15.0': + resolution: {integrity: sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==} - '@types/range-parser@1.2.4': - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} '@types/react-dom@18.3.7': resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} @@ -6859,20 +7181,17 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} '@types/serve-index@1.9.4': resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - - '@types/sinonjs__fake-timers@8.1.1': - resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} - - '@types/sizzle@2.3.10': - resolution: {integrity: sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==} + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} @@ -6880,17 +7199,14 @@ packages: '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/tmp@0.2.6': - resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} - '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - '@types/unist@2.0.6': - resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - '@types/unist@3.0.0': - resolution: {integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} '@types/whatwg-mimetype@3.0.2': resolution: {integrity: sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==} @@ -6898,22 +7214,11 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@types/yargs-parser@21.0.0': - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@typescript-eslint/eslint-plugin@8.57.2': - resolution: {integrity: sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.57.2 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} '@typescript-eslint/eslint-plugin@8.58.0': resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==} @@ -6923,13 +7228,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.57.2': - resolution: {integrity: sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.58.0': resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -7134,13 +7432,13 @@ packages: '@upsetjs/venn.js@2.0.0': resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} - '@vitejs/devtools-kit@0.1.11': - resolution: {integrity: sha512-ZmBr54Nk8IwdbNCBNtOkQ3WcskWcL55ndfiB0UM8eTZ0ZoNwzPTCHiHgk/RnbhviXiB0kTowyTTYp4RfqGEWUQ==} + '@vitejs/devtools-kit@0.1.13': + resolution: {integrity: sha512-8TqyrrPTB8KNGb2ukVHNo4aMhGYJgUypVNMnqOvxaWYln3QAXK6CFxifK3lZGOHWKAUqWAiTmZUsYzV4S0Kn7g==} peerDependencies: vite: '*' - '@vitejs/devtools-rpc@0.1.11': - resolution: {integrity: sha512-APo34qbV05bNJB//Jmn4QLDrCU1CQuFvYbQdqvvyCKjxwWuoHhGobqzgoRS5V23tn8Sbliz7/Fyhfh+7C0LtKA==} + '@vitejs/devtools-rpc@0.1.13': + resolution: {integrity: sha512-IbYRlvVJMdlQiRPU5fDnIAwgTu43O7v5/a1cUFp8t77zXLvg+3g2hbqrYzoqxIgAyLTr2KMY7HoYm6j/kIMB6Q==} peerDependencies: ws: '*' peerDependenciesMeta: @@ -7319,20 +7617,20 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - address@1.2.1: - resolution: {integrity: sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==} + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} adjust-sourcemap-loader@4.0.0: resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} engines: {node: '>=8.9'} - adm-zip@0.5.16: - resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + adm-zip@0.5.17: + resolution: {integrity: sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ==} engines: {node: '>=12.0'} - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} aggregate-error@3.1.0: @@ -7378,8 +7676,8 @@ packages: ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - algoliasearch-helper@3.28.0: - resolution: {integrity: sha512-GBN0xsxGggaCPElZq24QzMdfphrjIiV2xA+hRXE4/UMpN3nsF2WrM8q+x80OGvGpJWtB7F+4Hq5eSfWwuejXrg==} + algoliasearch-helper@3.28.1: + resolution: {integrity: sha512-6iXpbkkrAI5HFpCWXlNmIDSBuoN/U1XnEvb2yJAoWfqrZ+DrybI7MQ5P5mthFaprmocq+zbi6HxnR28xnZAYBw==} peerDependencies: algoliasearch: '>= 3.1 < 6' @@ -7387,11 +7685,23 @@ packages: resolution: {integrity: sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==} engines: {node: '>= 14.0.0'} + algoliasearch@5.50.1: + resolution: {integrity: sha512-/bwdue1/8LWELn/DBalGRfuLsXBLXULJo/yOeavJtDu8rBwxIzC6/Rz9Jg19S21VkJvRuZO1k8CZXBMS73mYbA==} + engines: {node: '>= 14.0.0'} + all-contributors-cli@6.26.1: resolution: {integrity: sha512-Ymgo3FJACRBEd1eE653FD1J/+uD0kqpUNYfr9zNC1Qby0LgbhDBzB3EF6uvkAbYpycStkk41J+0oo37Lc02yEw==} engines: {node: '>=4'} hasBin: true + angular-eslint@21.3.1: + resolution: {integrity: sha512-VGQWTyuPAEO/AnZuqHxGBJMYSiZ0tbrHx/OgPCRTKHfbrFU4x+zivS84h9UWoDpDtius1RyD+ZReFjTAEWptiA==} + peerDependencies: + '@angular/cli': '>= 21.0.0 < 22.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '*' + typescript-eslint: ^8.0.0 + ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -7403,8 +7713,8 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} engines: {node: '>=18'} ansi-html-community@0.0.8: @@ -7432,8 +7742,8 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} ansis@4.2.0: @@ -7455,12 +7765,6 @@ packages: resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} engines: {node: '>=8'} - arch@2.2.0: - resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -7493,17 +7797,10 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - asn1js@3.0.7: resolution: {integrity: sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==} engines: {node: '>=12.0.0'} - assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -7519,12 +7816,8 @@ packages: ast-v8-to-istanbul@1.0.0: resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - - astring@1.8.6: - resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true astro@6.1.1: @@ -7532,11 +7825,8 @@ packages: engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true - async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - - async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -7552,24 +7842,21 @@ packages: peerDependencies: postcss: ^8.1.0 - aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - - aws4@1.13.2: - resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + axios@1.13.5: + resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} - axios@1.13.6: - resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + axios@1.14.0: + resolution: {integrity: sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - babel-jest@30.0.5: - resolution: {integrity: sha512-mRijnKimhGDMsizTvBTWotwNpzrkHr+VvZUQBof2AufXKB8NXrL1W69TG20EvOz7aevx6FTJIaBuBkYxS8zolg==} + babel-jest@30.3.0: + resolution: {integrity: sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - '@babel/core': ^7.11.0 + '@babel/core': ^7.11.0 || ^8.0.0-0 babel-loader@10.0.0: resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} @@ -7593,12 +7880,12 @@ packages: babel-plugin-dynamic-import-node@2.3.3: resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} - babel-plugin-istanbul@7.0.0: - resolution: {integrity: sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==} + babel-plugin-istanbul@7.0.1: + resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==} engines: {node: '>=12'} - babel-plugin-jest-hoist@30.0.1: - resolution: {integrity: sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==} + babel-plugin-jest-hoist@30.3.0: + resolution: {integrity: sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} babel-plugin-macros@3.1.0: @@ -7639,11 +7926,11 @@ packages: peerDependencies: '@babel/core': ^7.0.0 || ^8.0.0-0 - babel-preset-jest@30.0.1: - resolution: {integrity: sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw==} + babel-preset-jest@30.3.0: + resolution: {integrity: sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - '@babel/core': ^7.11.0 + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -7662,8 +7949,9 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.9.17: - resolution: {integrity: sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==} + baseline-browser-mapping@2.10.14: + resolution: {integrity: sha512-fOVLPAsFTsQfuCkvahZkzq6nf8KvGWanlYoTh0SVA0A/PIUxQGU2AOZAoD95n2gFLVDW/jP6sbGLny95nmEuHA==} + engines: {node: '>=6.0.0'} hasBin: true basic-auth@2.0.1: @@ -7673,9 +7961,6 @@ packages: batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - bcryptjs@2.4.3: resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} @@ -7692,8 +7977,8 @@ packages: big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} birpc@4.0.0: @@ -7702,28 +7987,25 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - blob-util@2.0.2: - resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} - bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} body-parser@2.2.2: resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} - bonjour-service@1.2.1: - resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} + bonjour-service@1.3.0: + resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - bootstrap.native@5.1.6: - resolution: {integrity: sha512-bLveDBWhNLoFLsPctVo6yxSRQ1ysmKHBa+1FFMTQuruzTb3y7/InGSoe5lZdOiqZ4L0UOzpdbXMsI+bA5DoRew==} + bootstrap.native@5.1.10: + resolution: {integrity: sha512-JwJnMWx/zJirvwEPuvmKve4JoSh6upA5qNWdWj78nJmBCmVhBGXdYHxQIldkIRIReZjCiXntZBLFd3TYoGfgxw==} engines: {node: '>=16', pnpm: '>=8.6.0'} bottleneck@2.19.5: @@ -7737,36 +8019,28 @@ packages: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.13: + resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} brace-expansion@2.0.3: resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} - brace-expansion@5.0.4: - resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - btoa@1.2.1: - resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} - engines: {node: '>= 0.4.0'} - hasBin: true - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -7793,8 +8067,8 @@ packages: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} - cacache@20.0.1: - resolution: {integrity: sha512-+7LYcYGBYoNqTp1Rv7Ny1YjUo5E0/ftkQtraH3vkfAGgVHc+ouWdC8okAwQgQR7EVIdW6JTzTmhKFwzb+4okAQ==} + cacache@20.0.4: + resolution: {integrity: sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==} engines: {node: ^20.17.0 || >=22.9.0} cacheable-lookup@7.0.0: @@ -7805,16 +8079,12 @@ packages: resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} engines: {node: '>=14.16'} - cachedir@2.4.0: - resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} - engines: {node: '>=6'} - call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} call-bound@1.0.4: @@ -7849,22 +8119,19 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001777: - resolution: {integrity: sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==} + caniuse-lite@1.0.30001785: + resolution: {integrity: sha512-blhOL/WNR+Km1RI/LCVAvA73xplXA7ZbjzI4YkMK9pa6T/P3F2GxjNpEkyw5repTw9IvkyrjyHpwjnhZ5FOvYQ==} case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} engines: {node: '>=4'} - caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} @@ -7908,8 +8175,8 @@ packages: chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + check-error@2.1.3: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} check-more-types@2.24.0: @@ -7951,29 +8218,23 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} ci-info@4.4.0: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - - citty@0.2.1: - resolution: {integrity: sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg==} - cjs-module-lexer@1.4.3: resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - cjs-module-lexer@2.1.0: - resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} + cjs-module-lexer@2.2.0: + resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==} clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} @@ -7983,8 +8244,8 @@ packages: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} - clean-stack@5.2.0: - resolution: {integrity: sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==} + clean-stack@5.3.0: + resolution: {integrity: sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==} engines: {node: '>=14.16'} cli-boxes@3.0.0: @@ -8008,28 +8269,16 @@ packages: resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} engines: {node: '>=6'} - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-spinners@3.3.0: - resolution: {integrity: sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==} + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} engines: {node: '>=18.20'} - cli-table3@0.6.1: - resolution: {integrity: sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==} - engines: {node: 10.* || >= 12.*} - cli-table3@0.6.5: resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} - cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} - - cli-truncate@5.1.1: - resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} engines: {node: '>=20'} cli-width@3.0.0: @@ -8066,10 +8315,6 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - cluster-key-slot@1.1.2: - resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} - engines: {node: '>=0.10.0'} - co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -8083,8 +8328,8 @@ packages: collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + collect-v8-coverage@1.0.3: + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -8128,8 +8373,8 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - comma-separated-tokens@2.0.2: - resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} @@ -8150,10 +8395,6 @@ packages: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} - commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -8169,10 +8410,6 @@ packages: common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - common-tags@1.8.2: - resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} - engines: {node: '>=4.0.0'} - compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -8224,20 +8461,20 @@ packages: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} - content-disposition@1.0.0: - resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} - engines: {node: '>= 0.6'} + content-disposition@1.0.1: + resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} + engines: {node: '>=18'} content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} - conventional-changelog-angular@8.3.0: - resolution: {integrity: sha512-DOuBwYSqWzfwuRByY9O4oOIvDlkUCTDzfbOgcSbkY+imXXj+4tmrEFao3K+FxemClYfYnZzsvudbwrhje9VHDA==} + conventional-changelog-angular@8.3.1: + resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==} engines: {node: '>=18'} - conventional-changelog-conventionalcommits@9.3.0: - resolution: {integrity: sha512-kYFx6gAyjSIMwNtASkI3ZE99U1fuVDJr0yTYgVy+I2QG46zNZfl2her+0+eoviG82c5WQvW1jMt1eOQTeJLodA==} + conventional-changelog-conventionalcommits@9.3.1: + resolution: {integrity: sha512-dTYtpIacRpcZgrvBYvBfArMmK2xvIpv2TaxM0/ZI5CBtNUzvF2x0t15HsbRABWprS6UPmvj+PzHVjSx4qAVKyw==} engines: {node: '>=18'} conventional-changelog-preset-loader@5.0.0: @@ -8258,8 +8495,8 @@ packages: resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} engines: {node: '>=18'} - conventional-commits-parser@6.3.0: - resolution: {integrity: sha512-RfOq/Cqy9xV9bOA8N+ZH6DlrDR+5S3Mi0B5kACEjESpE+AviIpAptx9a9cFpWCCvgRtWT+0BbUw+e1BZfts9jg==} + conventional-commits-parser@6.4.0: + resolution: {integrity: sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==} engines: {node: '>=18'} hasBin: true @@ -8273,11 +8510,11 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-es@1.2.2: - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} cookie-signature@1.2.2: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} @@ -8291,10 +8528,6 @@ packages: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} - cookies@0.9.1: - resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} - engines: {node: '>= 0.8'} - copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} @@ -8321,14 +8554,11 @@ packages: core-js-compat@3.49.0: resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} - core-js-pure@3.48.0: - resolution: {integrity: sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==} + core-js-pure@3.49.0: + resolution: {integrity: sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==} - core-js@3.37.1: - resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} - - core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + core-js@3.49.0: + resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -8355,8 +8585,8 @@ packages: cosmiconfig: '>=9' typescript: '>=5' - cosmiconfig@7.0.1: - resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} cosmiconfig@8.3.6: @@ -8386,9 +8616,6 @@ packages: resolution: {integrity: sha512-/H2B3WW9gccZJKjKoDZsIrDU3MkkHlxgheT82hUbInC5fEdi4+54zyYpFueZT9pLfr5ObrtgN4MsYYrmTmHzeg==} engines: {node: '>=20'} - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cron-parser@4.9.0: resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} engines: {node: '>=12.0.0'} @@ -8428,8 +8655,8 @@ packages: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} - css-declaration-sorter@7.2.0: - resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} + css-declaration-sorter@7.3.1: + resolution: {integrity: sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.0.9 @@ -8438,8 +8665,8 @@ packages: resolution: {integrity: sha512-w2Xy9UMMwlKtou0vlRnXvWglPAceXCTtcmVSo8ZBUvqCV5aXEFP/PC6d+I464810I9FT++UACwTD5511bmGPUg==} engines: {node: '>=16'} - css-has-pseudo@7.0.2: - resolution: {integrity: sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==} + css-has-pseudo@7.0.3: + resolution: {integrity: sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -8468,6 +8695,18 @@ packages: webpack: optional: true + css-loader@7.1.4: + resolution: {integrity: sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 + webpack: ^5.27.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + css-minimizer-webpack-plugin@5.0.1: resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} engines: {node: '>= 14.15.0'} @@ -8527,8 +8766,8 @@ packages: css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} css-select@6.0.0: resolution: {integrity: sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==} @@ -8548,8 +8787,8 @@ packages: resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} css-what@7.0.0: @@ -8559,8 +8798,8 @@ packages: css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - cssdb@8.3.1: - resolution: {integrity: sha512-XnDRQMXucLueX92yDe0LPKupXetWoFOgawr4O4X41l5TltgK2NVbJJVDnnOywDYfW1sTJ28AcXGKOqdRKwCcmQ==} + cssdb@8.8.0: + resolution: {integrity: sha512-QbLeyz2Bgso1iRlh7IpWk6OKa3lLNGXsujVjDMPl9rOZpxKeiG69icLpbLCFxeURwmcdIfZqQyhlooKJYM4f8Q==} cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -8579,8 +8818,8 @@ packages: peerDependencies: postcss: ^8.4.31 - cssnano-preset-default@7.0.11: - resolution: {integrity: sha512-waWlAMuCakP7//UCY+JPrQS1z0OSLeOXk2sKWJximKWGupVxre50bzPlvpbUwZIDylhf/ptf0Pk+Yf7C+hoa3g==} + cssnano-preset-default@7.0.12: + resolution: {integrity: sha512-B3Eoouzw/sl2zANI0AL9KbacummJTCww+fkHaDBMZad/xuVx8bUduPLly6hKVQAlrmvYkS1jB1CVQEKm3gn0AA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -8603,8 +8842,8 @@ packages: peerDependencies: postcss: ^8.4.31 - cssnano@7.1.3: - resolution: {integrity: sha512-mLFHQAzyapMVFLiJIn7Ef4C2UCEvtlTlbyILR6B5ZsUAV3D/Pa761R5uC1YPhyBkRd3eqaDm2ncaNrD7R4mTRg==} + cssnano@7.1.4: + resolution: {integrity: sha512-T9PNS7y+5Nc9Qmu9mRONqfxG1RVY7Vuvky0XN6MZ+9hqplesTEwnj9r0ROtVuSwUVfaDhVlavuzWIVLUgm4hkQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -8616,11 +8855,6 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - cypress@15.11.0: - resolution: {integrity: sha512-NXDE6/fqZuzh1Zr53nyhCCa4lcANNTYWQNP9fJO+tzD3qVTDaTUni5xXMuigYjMujQ7CRiT9RkJJONmPQSsDFw==} - engines: {node: ^20.1.0 || ^22.0.0 || >=24.0.0} - hasBin: true - cytoscape-cose-bilkent@4.1.0: resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} peerDependencies: @@ -8691,12 +8925,12 @@ packages: resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} engines: {node: '>=12'} - d3-format@3.1.0: - resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} engines: {node: '>=12'} - d3-geo@3.1.0: - resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} engines: {node: '>=12'} d3-hierarchy@3.1.2: @@ -8729,8 +8963,8 @@ packages: d3-sankey@0.12.3: resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} - d3-scale-chromatic@3.0.0: - resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} engines: {node: '>=12'} d3-scale@4.0.2: @@ -8780,18 +9014,10 @@ packages: daisyui@5.5.19: resolution: {integrity: sha512-pbFAkl1VCEh/MPCeclKL61I/MqRIFFhNU7yiXoDDRapXN4/qNCoMxeCCswyxEEhqL5eiTTfwHvucFtOE71C9sA==} - dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - data-urls@7.0.0: resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - date-format@4.0.14: - resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} - engines: {node: '>=4.0'} - dayjs@1.11.20: resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} @@ -8829,14 +9055,6 @@ packages: supports-color: optional: true - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -8856,15 +9074,15 @@ packages: decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + dedent@1.7.2: + resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -8875,9 +9093,6 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} - deep-equal@1.0.1: - resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} - deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -8889,12 +9104,12 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} - default-browser@5.4.0: - resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} engines: {node: '>=18'} defaults@1.0.4: @@ -8920,23 +9135,16 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.6: + resolution: {integrity: sha512-f8mefEW4WIVg4LckePx3mALjQSPQgFlg9U8yaPdlsbdYcHQyj9n2zL2LJEA52smeYxOvmd/nB7TpMtHGMTHcug==} - delaunator@5.0.0: - resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} + delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - denque@2.1.0: - resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} - engines: {node: '>=0.10'} - depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -8960,11 +9168,6 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -8976,8 +9179,9 @@ packages: detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - detect-port@1.5.1: - resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} hasBin: true devalue@5.6.4: @@ -8993,10 +9197,6 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@4.0.4: - resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} - engines: {node: '>=0.3.1'} - diff@8.0.4: resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} @@ -9008,8 +9208,8 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dns-packet@5.4.0: - resolution: {integrity: sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==} + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} dom-accessibility-api@0.5.16: @@ -9038,9 +9238,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - dompurify@3.3.2: - resolution: {integrity: sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==} - engines: {node: '>=20'} + dompurify@3.3.3: + resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==} domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -9062,18 +9261,14 @@ packages: dot@2.0.0-beta.1: resolution: {integrity: sha512-kxM7fSnNQTXOmaeGuBSXM8O3fEsBb7XSDBllkGbRwa0lJSJTxxDE/4eSNGLKZUmlFw0f1vJ5qSV2BljrgQtgIA==} - dotenv-expand@11.0.6: - resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==} + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} engines: {node: '>=12'} dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} - dotenv@17.3.1: - resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} - engines: {node: '>=12'} - dset@3.1.4: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} @@ -9100,9 +9295,6 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -9114,8 +9306,13 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.278: - resolution: {integrity: sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==} + ejs@5.0.1: + resolution: {integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==} + engines: {node: '>=0.12.18'} + hasBin: true + + electron-to-chromium@1.5.331: + resolution: {integrity: sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -9125,8 +9322,8 @@ packages: resolution: {integrity: sha512-1QFuh8l7LqUcKe24LsPUNzjrzJQ7pgRwp1QMcZ5MX6mFplk2zQ08NVCM84++1cveaUUYtcCYHmeFEuNg16sU4g==} engines: {node: '>=10.0.0'} - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -9141,8 +9338,8 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - emoticon@4.0.1: - resolution: {integrity: sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==} + emoticon@4.1.0: + resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} empathic@2.0.0: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} @@ -9162,8 +9359,8 @@ packages: encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} enhanced-resolve@5.20.1: resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} @@ -9173,10 +9370,6 @@ packages: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -9184,8 +9377,8 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - entities@6.0.0: - resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} entities@7.0.1: @@ -9223,8 +9416,8 @@ packages: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} error-stack-parser-es@1.0.5: resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} @@ -9266,11 +9459,6 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild-register@3.6.0: - resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} - peerDependencies: - esbuild: '>=0.12 <1' - esbuild-wasm@0.27.3: resolution: {integrity: sha512-AUXuOxZ145/5Az+lIqk6TdJbxKTyDGkXMJpTExmBdbnHR6n6qAFx+F4oG9ORpVYJ9dQYeQAqzv51TO4DFKsbXw==} engines: {node: '>=18'} @@ -9281,8 +9469,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.27.4: - resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} hasBin: true @@ -9319,10 +9507,10 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-plugin-oxlint@1.57.0: - resolution: {integrity: sha512-+c1ZqIKq6pJ/BzZkpFxkuk+40EFXSb57t8AytjEnCqeCW6WecHzeBOIukfq6nHOxIrzX+uJ0ulN70Fj8YaR50g==} + eslint-plugin-oxlint@1.58.0: + resolution: {integrity: sha512-L3aZSg0x2fL0dXyOgoK8A1QUbnfGzXt6bX4AFD7Scauw6zVUBOZrES5eRTzLLGgeVg0el5lvqHGl1WFAGo14DA==} peerDependencies: - oxlint: ~1.57.0 + oxlint: ~1.58.0 eslint-plugin-playwright@2.10.1: resolution: {integrity: sha512-qea3UxBOb8fTwJ77FMApZKvRye5DOluDHcev0LDJwID3RELeun0JlqzrNIXAB/SXCyB/AesCW/6sZfcT9q3Edg==} @@ -9356,8 +9544,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.1.0: - resolution: {integrity: sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==} + eslint@10.2.0: + resolution: {integrity: sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -9414,8 +9602,8 @@ packages: estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - estree-util-value-to-estree@3.1.1: - resolution: {integrity: sha512-5mvUrF2suuv5f5cGDnDphIy4/gW86z82kl5qG6mM9z04SEQI4FB5Apmaw/TGEf3l55nLtMs5s51dmhUzvAHQCA==} + estree-util-value-to-estree@3.5.0: + resolution: {integrity: sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==} estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} @@ -9445,22 +9633,19 @@ packages: event-stream@4.0.1: resolution: {integrity: sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==} - eventemitter2@6.4.7: - resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} - eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - eventsource-parser@3.0.3: - resolution: {integrity: sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA==} - engines: {node: '>=20.0.0'} + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} eventsource@3.0.7: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} @@ -9482,10 +9667,6 @@ packages: resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} engines: {node: ^18.19.0 || >=20.5.0} - executable@4.1.1: - resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} - engines: {node: '>=4'} - exit-x@0.2.2: resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} engines: {node: '>= 0.8.0'} @@ -9498,15 +9679,15 @@ packages: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - expect@30.0.5: - resolution: {integrity: sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ==} + expect@30.3.0: + resolution: {integrity: sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - express-rate-limit@8.3.1: - resolution: {integrity: sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==} + express-rate-limit@8.3.2: + resolution: {integrity: sha512-77VmFeJkO0/rvimEDuUC5H30oqUC4EyOhyGccfqoLebB0oiEYfM7nwPrsDsBL1gsTpwfzX8SFy2MT3TDyRq+bg==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' @@ -9533,15 +9714,6 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true - - extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - fancy-log@2.0.0: resolution: {integrity: sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==} engines: {node: '>=10.13.0'} @@ -9566,11 +9738,20 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.1: - resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + fast-string-truncated-width@1.2.1: + resolution: {integrity: sha512-Q9acT/+Uu3GwGj+5w/zsGuQjh9O1TyywhIwAxHudtWrgF09nHOPrvTLhQevPbttcxjr/SNN7mJmfOw/B1bXgow==} + + fast-string-width@1.1.0: + resolution: {integrity: sha512-O3fwIVIH5gKB38QNbdg+3760ZmGz0SZMgvwJbA1b2TGXceKE6A2cOlfogh1iw8lr049zPyd7YADHy+B7U4W9bQ==} + + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fastq@1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + fast-wrap-ansi@0.1.6: + resolution: {integrity: sha512-HlUwET7a5gqjURj70D5jl7aC3Zmy4weA1SHUfM0JFI0Ptq987NH2TwbBFLoERhfwk+E+eaq4EK3jXoT+R3yp3w==} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -9585,9 +9766,6 @@ packages: fd-package-json@2.0.0: resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -9629,8 +9807,8 @@ packages: peerDependencies: webpack: ^4.0.0 || ^5.0.0 - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + filelist@1.0.6: + resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} @@ -9640,13 +9818,13 @@ packages: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} engines: {node: '>= 0.8'} - finalhandler@2.1.0: - resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} - engines: {node: '>= 0.8'} + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} find-cache-dir@4.0.0: resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} @@ -9730,9 +9908,6 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - fork-ts-checker-webpack-plugin@9.1.0: resolution: {integrity: sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==} engines: {node: '>=14.21.3'} @@ -9787,20 +9962,16 @@ packages: resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} engines: {node: '>=14.14'} - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} - fs-minipass@3.0.0: - resolution: {integrity: sha512-EUojgQaSPy6sxcqcZgQv6TVF6jiKvurji3AxhAivs/Ep4O1UpS8TusaxpybfFHZ2skRhLqzk6WR8nqNYIMMDeA==} + fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - fs-monkey@1.0.3: - resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} + fs-monkey@1.1.0: + resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -9830,8 +10001,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.4.0: - resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -9872,15 +10043,8 @@ packages: get-tsconfig@4.13.7: resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} - getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - - giget@2.0.0: - resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} - hasBin: true - - git-log-parser@1.2.0: - resolution: {integrity: sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==} + git-log-parser@1.2.1: + resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} git-raw-commits@5.0.1: resolution: {integrity: sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==} @@ -9915,12 +10079,6 @@ packages: deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true - glob@11.1.0: - resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} - engines: {node: 20 || >=22} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} @@ -9938,8 +10096,8 @@ packages: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} - global-dirs@3.0.0: - resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==} + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} global-modules@1.0.0: @@ -9954,8 +10112,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.12.0: - resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} globals@17.4.0: @@ -9970,8 +10128,8 @@ packages: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - globby@16.1.1: - resolution: {integrity: sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==} + globby@16.2.0: + resolution: {integrity: sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==} engines: {node: '>=20'} gopd@1.2.0: @@ -9996,8 +10154,8 @@ packages: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} - h3@1.15.6: - resolution: {integrity: sha512-oi15ESLW5LRthZ+qPCi5GNasY/gvynSKUQxgiovrY63bPAtG59wtM+LSrlcwvOHAXzGrXVLnI97brbkdPF9WoQ==} + h3@1.15.11: + resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} h3@2.0.1-rc.20: resolution: {integrity: sha512-28ljodXuUp0fZovdiSRq4G9OgrxCztrJe5VdYzXAB7ueRvI7pIUqLU14Xi3XqdYJ/khXjfpUOOD2EQa6CmBgsg==} @@ -10015,8 +10173,8 @@ packages: handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + handlebars@4.7.9: + resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==} engines: {node: '>=0.4.7'} hasBin: true @@ -10050,10 +10208,6 @@ packages: resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasha@5.2.2: - resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} - engines: {node: '>=8'} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -10061,8 +10215,8 @@ packages: hast-util-from-html@2.0.3: resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} - hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} hast-util-is-element@3.0.0: resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} @@ -10070,20 +10224,20 @@ packages: hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - hast-util-raw@9.0.1: - resolution: {integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==} + hast-util-raw@9.1.0: + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} - hast-util-to-estree@3.1.0: - resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} - hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-to-parse5@8.0.1: + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} hast-util-to-text@4.0.2: resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} @@ -10091,8 +10245,8 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -10115,8 +10269,8 @@ packages: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} - hono@4.11.5: - resolution: {integrity: sha512-WemPi9/WfyMwZs+ZUXdiwcCh9Y+m7L+8vki9MzDw3jJ+W9Lc+12HGsd368Qc1vZi1xwW8BWMMsnK5efYKPdt4g==} + hono@4.12.10: + resolution: {integrity: sha512-mx/p18PLy5og9ufies2GOSUqep98Td9q4i/EF6X7yJgAiIopxqdfIO3jbqsi3jRgTgw88jMDEzVKi+V2EF+27w==} engines: {node: '>=16.9.0'} hook-std@4.0.0: @@ -10126,16 +10280,16 @@ packages: hookable@6.1.0: resolution: {integrity: sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==} - hosted-git-info@7.0.1: - resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} hosted-git-info@8.1.0: resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} engines: {node: ^18.17.0 || >=20.5.0} - hosted-git-info@9.0.0: - resolution: {integrity: sha512-gEf705MZLrDPkbbhi8PnoO4ZwYgKoNL+ISZ3AjZMht2r3N5tuTwncyDi6Fv2/qDnMmZxgs0yI8WDOyR8q3G+SQ==} + hosted-git-info@9.0.2: + resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} engines: {node: ^20.17.0 || >=22.9.0} hpack.js@2.1.6: @@ -10175,8 +10329,8 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - html-webpack-plugin@5.6.0: - resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} + html-webpack-plugin@5.6.6: + resolution: {integrity: sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==} engines: {node: '>=10.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -10187,8 +10341,8 @@ packages: webpack: optional: true - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + htmlparser2@10.1.0: + resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} @@ -10196,10 +10350,6 @@ packages: htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - http-assert@1.5.0: - resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} - engines: {node: '>= 0.8'} - http-auth-connect@1.0.6: resolution: {integrity: sha512-yaO0QSCPqGCjPrl3qEEHjJP+lwZ6gMpXLuCBE06eWwcXomkI5TARtu0kxf9teFuBj6iaV3Ybr15jaWUvbzNzHw==} engines: {node: '>=8'} @@ -10214,24 +10364,16 @@ packages: http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - http-errors@1.8.1: resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} engines: {node: '>= 0.6'} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - http-errors@2.0.1: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} - http-parser-js@0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} @@ -10259,10 +10401,6 @@ packages: engines: {node: '>=12'} hasBin: true - http-signature@1.4.0: - resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} - engines: {node: '>=0.10'} - http2-wrapper@2.2.1: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} @@ -10310,8 +10448,8 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.0: - resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} icss-utils@5.1.0: @@ -10352,8 +10490,8 @@ packages: immutable@5.1.5: resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} import-from-esm@2.0.0: @@ -10395,9 +10533,6 @@ packages: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -10416,14 +10551,11 @@ packages: resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} engines: {node: ^20.17.0 || >=22.9.0} - injection-js@2.4.0: - resolution: {integrity: sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA==} - - inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + injection-js@2.6.1: + resolution: {integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==} - inline-style-parser@0.2.2: - resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} inquirer@7.3.3: resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} @@ -10443,24 +10575,16 @@ packages: invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - ioredis@5.10.0: - resolution: {integrity: sha512-HVBe9OFuqs+Z6n64q09PQvP1/R4Bm+30PAyyD4wIEqssh3v9L21QjCVk4kRLucMBcDokJTcLjsGeVRlq/nH6DA==} - engines: {node: '>=12.22.0'} - ip-address@10.1.0: resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + ipaddr.js@2.3.0: + resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} engines: {node: '>= 10'} iron-webcrypto@1.2.1: @@ -10512,8 +10636,8 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} is-generator-fn@2.1.0: @@ -10548,12 +10672,12 @@ packages: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} - is-network-error@1.1.0: - resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} + is-network-error@1.3.1: + resolution: {integrity: sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==} engines: {node: '>=16'} - is-npm@6.0.0: - resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + is-npm@6.1.0: + resolution: {integrity: sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} is-number@7.0.0: @@ -10640,8 +10764,8 @@ packages: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} is-yarn-global@0.4.1: @@ -10657,9 +10781,9 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} + isexe@4.0.0: + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} + engines: {node: '>=20'} isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} @@ -10670,9 +10794,6 @@ packages: peerDependencies: ws: '*' - isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - issue-parser@7.0.1: resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} engines: {node: ^18.17 || >=20.6.1} @@ -10700,12 +10821,8 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.1.1: - resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} - engines: {node: 20 || >=22} - - jake@10.8.7: - resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} engines: {node: '>=10'} hasBin: true @@ -10713,12 +10830,12 @@ packages: resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} engines: {node: '>= 0.6.0'} - jest-circus@30.0.5: - resolution: {integrity: sha512-h/sjXEs4GS+NFFfqBDYT7y5Msfxh04EwWLhQi0F8kuWpe+J/7tICSlswU8qvBqumR3kFgHbfu7vU6qruWWBPug==} + jest-circus@30.3.0: + resolution: {integrity: sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-config@30.0.5: - resolution: {integrity: sha512-aIVh+JNOOpzUgzUnPn5FLtyVnqc3TQHVMupYtyeURSb//iLColiMIR8TxCIDKyx9ZgjKnXGucuW68hCxgbrwmA==} + jest-config@30.3.0: + resolution: {integrity: sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: '@types/node': '*' @@ -10736,44 +10853,44 @@ packages: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-diff@30.0.5: - resolution: {integrity: sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A==} + jest-diff@30.3.0: + resolution: {integrity: sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-docblock@30.0.1: - resolution: {integrity: sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==} + jest-docblock@30.2.0: + resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-each@30.0.5: - resolution: {integrity: sha512-dKjRsx1uZ96TVyejD3/aAWcNKy6ajMaN531CwWIsrazIqIoXI9TnnpPlkrEYku/8rkS3dh2rbH+kMOyiEIv0xQ==} + jest-each@30.3.0: + resolution: {integrity: sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-environment-node@30.0.5: - resolution: {integrity: sha512-ppYizXdLMSvciGsRsMEnv/5EFpvOdXBaXRBzFUDPWrsfmog4kYrOGWXarLllz6AXan6ZAA/kYokgDWuos1IKDA==} + jest-environment-node@30.3.0: + resolution: {integrity: sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@30.0.5: - resolution: {integrity: sha512-dkmlWNlsTSR0nH3nRfW5BKbqHefLZv0/6LCccG0xFCTWcJu8TuEwG+5Cm75iBfjVoockmO6J35o5gxtFSn5xeg==} + jest-haste-map@30.3.0: + resolution: {integrity: sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-leak-detector@30.0.5: - resolution: {integrity: sha512-3Uxr5uP8jmHMcsOtYMRB/zf1gXN3yUIc+iPorhNETG54gErFIiUhLvyY/OggYpSMOEYqsmRxmuU4ZOoX5jpRFg==} + jest-leak-detector@30.3.0: + resolution: {integrity: sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-matcher-utils@30.0.5: - resolution: {integrity: sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ==} + jest-matcher-utils@30.3.0: + resolution: {integrity: sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-message-util@30.0.5: - resolution: {integrity: sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==} + jest-message-util@30.3.0: + resolution: {integrity: sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-mock@30.0.5: - resolution: {integrity: sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==} + jest-mock@30.3.0: + resolution: {integrity: sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-pnp-resolver@1.2.3: @@ -10789,48 +10906,48 @@ packages: resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-resolve@30.0.5: - resolution: {integrity: sha512-d+DjBQ1tIhdz91B79mywH5yYu76bZuE96sSbxj8MkjWVx5WNdt1deEFRONVL4UkKLSrAbMkdhb24XN691yDRHg==} + jest-resolve@30.3.0: + resolution: {integrity: sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-runner@30.0.5: - resolution: {integrity: sha512-JcCOucZmgp+YuGgLAXHNy7ualBx4wYSgJVWrYMRBnb79j9PD0Jxh0EHvR5Cx/r0Ce+ZBC4hCdz2AzFFLl9hCiw==} + jest-runner@30.3.0: + resolution: {integrity: sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-runtime@30.0.5: - resolution: {integrity: sha512-7oySNDkqpe4xpX5PPiJTe5vEa+Ak/NnNz2bGYZrA1ftG3RL3EFlHaUkA1Cjx+R8IhK0Vg43RML5mJedGTPNz3A==} + jest-runtime@30.3.0: + resolution: {integrity: sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-snapshot@30.0.5: - resolution: {integrity: sha512-T00dWU/Ek3LqTp4+DcW6PraVxjk28WY5Ua/s+3zUKSERZSNyxTqhDXCWKG5p2HAJ+crVQ3WJ2P9YVHpj1tkW+g==} + jest-snapshot@30.3.0: + resolution: {integrity: sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-util@30.0.5: - resolution: {integrity: sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==} + jest-util@30.3.0: + resolution: {integrity: sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-validate@30.0.5: - resolution: {integrity: sha512-ouTm6VFHaS2boyl+k4u+Qip4TSH7Uld5tyD8psQ8abGgt2uYYB8VwVfAHWHjHc0NWmGGbwO5h0sCPOGHHevefw==} + jest-validate@30.3.0: + resolution: {integrity: sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-watcher@30.0.5: - resolution: {integrity: sha512-z9slj/0vOwBDBjN3L4z4ZYaA+pG56d6p3kTUhFRYGvXbXMWhXmb/FIxREZCD06DYUwDKKnj2T80+Pb71CQ0KEg==} + jest-watcher@30.3.0: + resolution: {integrity: sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-worker@30.0.5: - resolution: {integrity: sha512-ojRXsWzEP16NdUuBw/4H/zkZdHOa7MMYCk4E430l+8fELeLg/mqmMlRhjL7UNZvQrDmnovWZV4DxX03fZF48fQ==} + jest-worker@30.3.0: + resolution: {integrity: sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jiti@1.21.7: @@ -10845,15 +10962,15 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - joi@17.13.1: - resolution: {integrity: sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==} + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - joi@18.0.2: - resolution: {integrity: sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==} + joi@18.1.2: + resolution: {integrity: sha512-rF5MAmps5esSlhCA+N1b6IYHDw9j/btzGaqfgie522jS02Ju/HXBxamlXVlKEHAxoMKQL77HWI8jlqWsFuekZA==} engines: {node: '>= 20'} - jose@6.1.3: - resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + jose@6.2.2: + resolution: {integrity: sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==} js-tokens@10.0.0: resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} @@ -10861,20 +10978,14 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@29.0.1: resolution: {integrity: sha512-z6JOK5gRO7aMybVq/y/MlIpKh8JIi68FBKMUtKkK2KH/wMSRlCxQ682d08LB9fYXplyY/UXG8P4XXTScmdjApg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} @@ -10915,25 +11026,19 @@ packages: json-schema-typed@8.0.2: resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} - json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json-with-bigint@3.5.7: - resolution: {integrity: sha512-7ei3MdAI5+fJPVnKlW77TKNKwQ5ppSzWvhPuSuINT/GYW9ZOC1eRKOuhV9yHG5aEsUPj9BBx5JIekkmoLHxZOw==} + json-with-bigint@3.5.8: + resolution: {integrity: sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==} json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - jsonc-eslint-parser@2.4.0: - resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + jsonc-eslint-parser@2.4.2: + resolution: {integrity: sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} jsonc-eslint-parser@3.1.0: @@ -10946,20 +11051,13 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} - jsprim@2.0.2: - resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} - engines: {'0': node >=0.6.0} - junk@4.0.1: resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} engines: {node: '>=12.20'} @@ -10971,12 +11069,8 @@ packages: resolution: {integrity: sha512-EkxoDTk8ufHqHlf9QxGwcxeLkWRR3iOuYfRpfORgYfqc8s13bgb+YtRY59NK5ZpRaCwq1kqA6a5lpX8C/eLphQ==} hasBin: true - keycharm@0.2.0: - resolution: {integrity: sha512-i/XBRTiLqRConPKioy2oq45vbv04e8x59b0mnsIRQM+7Ec/8BC7UcL5pnC4FMeGb8KwG7q4wOMw7CtNZf5tiIg==} - - keygrip@1.1.0: - resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} - engines: {node: '>= 0.6'} + keycharm@0.4.0: + resolution: {integrity: sha512-TyQTtsabOVv3MeOpR92sIKk/br9wxS+zGj4BG7CR8YbK4jM3tyIBaF0zhzeBUMx36/Q/iQLOKKOT+3jOQtemRQ==} keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -10996,13 +11090,6 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} - koa-compose@4.1.0: - resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} - - koa@3.0.3: - resolution: {integrity: sha512-MeuwbCoN1daWS32/Ni5qkzmrOtQO2qrnfdxDHjrm6s4b59yG4nexAJ0pTEFyzjLp0pBVO80CZp0vW8Ze30Ebow==} - engines: {node: '>= 18'} - kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -11017,8 +11104,8 @@ packages: resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} engines: {node: '>=14.16'} - launch-editor@2.6.1: - resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} + launch-editor@2.13.2: + resolution: {integrity: sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==} layout-base@1.0.2: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} @@ -11043,11 +11130,29 @@ packages: webpack: optional: true + less-loader@12.3.2: + resolution: {integrity: sha512-uLV5c702ff2jBvO7qewpkLRzkh/I9QW07ur2NKkv8TVTrtX2lrKjEbEU/LLXAn7cgpCIBbkfyUm4qYXCQs5/+w==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + less@4.4.2: resolution: {integrity: sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==} engines: {node: '>=14'} hasBin: true + less@4.5.1: + resolution: {integrity: sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw==} + engines: {node: '>=14'} + hasBin: true + less@4.6.4: resolution: {integrity: sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==} engines: {node: '>=18'} @@ -11162,15 +11267,6 @@ packages: engines: {node: '>=20.17'} hasBin: true - listr2@3.14.0: - resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} - engines: {node: '>=10.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true - listr2@9.0.5: resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} @@ -11218,27 +11314,21 @@ packages: lodash-es@4.17.23: resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} lodash.capitalize@4.2.1: resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} - lodash.clonedeepwith@4.5.0: - resolution: {integrity: sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==} - lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - lodash.escaperegexp@4.1.2: resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} - lodash.isarguments@3.1.0: - resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} @@ -11254,9 +11344,6 @@ packages: lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} @@ -11272,11 +11359,8 @@ packages: lodash.upperfirst@4.3.1: resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -11286,18 +11370,10 @@ packages: resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} engines: {node: '>=18'} - log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} - log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} - log4js@6.9.1: - resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} - engines: {node: '>=8.0'} - loglevel-plugin-prefix@0.8.4: resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} @@ -11308,15 +11384,15 @@ packages: long-timeout@0.1.1: resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} - longest-streak@3.0.1: - resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.2.0: - resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -11338,8 +11414,8 @@ packages: lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - luxon@3.5.0: - resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} + luxon@3.7.2: + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} engines: {node: '>=12'} lz-string@1.5.0: @@ -11368,11 +11444,8 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - make-fetch-happen@15.0.3: - resolution: {integrity: sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==} + make-fetch-happen@15.0.5: + resolution: {integrity: sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==} engines: {node: ^20.17.0 || >=22.9.0} makeerror@1.0.12: @@ -11388,8 +11461,8 @@ packages: markdown-table@2.0.0: resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==} - markdown-table@3.0.2: - resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} marked-gfm-heading-id@4.1.3: resolution: {integrity: sha512-aR0i63LmFbuxU/gAgrgz1Ir+8HK6zAIFXMlckeKHpV+qKbYaOP95L4Ux5Gi+sKmCZU5qnN2rdKpvpb7PnUBIWg==} @@ -11453,23 +11526,23 @@ packages: mdast-util-definitions@6.0.0: resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} - mdast-util-directive@3.0.0: - resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} + mdast-util-directive@3.1.0: + resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} - mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} mdast-util-frontmatter@2.0.1: resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} - mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} mdast-util-gfm-strikethrough@2.0.0: resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} @@ -11480,14 +11553,14 @@ packages: mdast-util-gfm-task-list-item@2.0.0: resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - mdast-util-mdx-jsx@3.0.0: - resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} mdast-util-mdx@3.0.0: resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} @@ -11495,14 +11568,14 @@ packages: mdast-util-mdxjs-esm@2.0.1: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - mdast-util-phrasing@4.0.0: - resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.1.0: - resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} - mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} @@ -11524,12 +11597,14 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@3.4.13: - resolution: {integrity: sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==} + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - memfs@4.51.0: - resolution: {integrity: sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==} + memfs@4.57.1: + resolution: {integrity: sha512-WvzrWPwMQT+PtbX2Et64R4qXKK0fj/8pO85MrUCzymX3twwCiJCdvntW3HdhG1teLJcHDDLIKx5+c3HckWYZtQ==} + peerDependencies: + tslib: '2' meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -11553,48 +11628,48 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - mermaid@11.13.0: - resolution: {integrity: sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==} + mermaid@11.14.0: + resolution: {integrity: sha512-GSGloRsBs+JINmmhl0JDwjpuezCsHB4WGI4NASHxL3fHo3o/BRXTxhDLKnln8/Q0lRFRyDdEjmk1/d5Sn1Xz8g==} methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - micromark-extension-directive@3.0.0: - resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} + micromark-extension-directive@3.0.2: + resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} micromark-extension-frontmatter@2.0.0: resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} - micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} micromark-extension-gfm-tagfilter@2.0.0: resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - micromark-extension-mdx-expression@3.0.0: - resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - micromark-extension-mdx-jsx@3.0.0: - resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} micromark-extension-mdx-md@2.0.0: resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} @@ -11605,83 +11680,83 @@ packages: micromark-extension-mdxjs@3.0.0: resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - micromark-factory-mdx-expression@2.0.1: - resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} - micromark-factory-space@1.0.0: - resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} + micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - micromark-util-character@1.1.0: - resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} + micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - micromark-util-character@2.0.1: - resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - micromark-util-events-to-acorn@2.0.2: - resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} - micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - micromark-util-subtokenize@2.0.0: - resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - micromark-util-symbol@1.0.1: - resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} + micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - micromark-util-types@1.0.2: - resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} + micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} @@ -11751,6 +11826,12 @@ packages: peerDependencies: webpack: ^5.0.0 + mini-css-extract-plugin@2.10.2: + resolution: {integrity: sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + mini-css-extract-plugin@2.4.7: resolution: {integrity: sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==} engines: {node: '>= 12.13.0'} @@ -11764,11 +11845,15 @@ packages: 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} + minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimatch@5.1.0: - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} engines: {node: '>=10'} minimatch@9.0.9: @@ -11782,28 +11867,24 @@ packages: resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} engines: {node: '>=16 || 14 >=14.17'} - minipass-fetch@5.0.0: - resolution: {integrity: sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A==} + minipass-fetch@5.0.2: + resolution: {integrity: sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==} engines: {node: ^20.17.0 || >=22.9.0} - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + minipass-flush@1.0.7: + resolution: {integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==} engines: {node: '>= 8'} minipass-pipeline@1.2.4: resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} engines: {node: '>=8'} - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - - minipass@3.3.4: - resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} + minipass-sized@2.0.0: + resolution: {integrity: sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==} engines: {node: '>=8'} - minipass@4.0.0: - resolution: {integrity: sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==} + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} minipass@7.1.3: @@ -11814,17 +11895,13 @@ packages: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - mkdirp@3.0.1: resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} hasBin: true - mlly@1.8.1: - resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} morgan@1.10.1: resolution: {integrity: sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==} @@ -11840,8 +11917,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msgpackr-extract@3.0.2: - resolution: {integrity: sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==} + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true msgpackr@1.11.9: @@ -11869,16 +11946,16 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-postinstall@0.3.2: - resolution: {integrity: sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==} + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - needle@3.2.0: - resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==} + needle@3.5.0: + resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==} engines: {node: '>= 4.4.x'} hasBin: true @@ -11904,8 +11981,8 @@ packages: nerf-dart@1.0.0: resolution: {integrity: sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==} - nf3@0.3.14: - resolution: {integrity: sha512-MjG9u/IlvSq5txxY0oug1sjrGZ2l37IuhExI1iPuwV4S3RcyRNGoy6xLwznH3ATK6PUAM4fbQVb4Rzy1L1nlzw==} + nf3@0.3.16: + resolution: {integrity: sha512-Gs0xRPpUm2nDkqbi40NJ9g7qDIcjcJzgExiydnq6LAyqhI2jfno8wG3NKTL+IiJsx799UHOb1CnSd4Wg4SG4Pw==} ng-packagr@21.2.1: resolution: {integrity: sha512-rk0aL0wWkC+FTA4wyzJIfjcUgAKMAEB19ULvP0QkAoAkzjS+3SBEf0n3MS6z7gcOW8SRU9rw1BmsouEAXD+SCw==} @@ -11954,14 +12031,14 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abort-controller@3.0.1: - resolution: {integrity: sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==} + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - node-addon-api@7.0.0: - resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} node-emoji@2.2.0: resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} @@ -11979,20 +12056,16 @@ packages: encoding: optional: true - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + node-forge@1.4.0: + resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} engines: {node: '>= 6.13.0'} - node-gyp-build-optional-packages@5.0.7: - resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} - hasBin: true - node-gyp-build-optional-packages@5.2.2: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true - node-gyp@12.1.0: - resolution: {integrity: sha512-W+RYA8jBnhSr2vrTtlPYPc1K+CSjGpVDRZxcqJcERZ8ND3A1ThWPHRwctTx3qC3oW99jt726jhdz3Y6ky87J4g==} + node-gyp@12.2.0: + resolution: {integrity: sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true @@ -12002,8 +12075,8 @@ packages: node-mock-http@1.0.4: resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + node-releases@2.0.37: + resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} node-schedule@2.1.1: resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} @@ -12014,8 +12087,8 @@ packages: engines: {node: ^20.17.0 || >=22.9.0} hasBin: true - normalize-package-data@6.0.0: - resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} normalize-package-data@7.0.1: @@ -12030,8 +12103,8 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-url@8.0.0: - resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} + normalize-url@8.1.1: + resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} engines: {node: '>=14.16'} normalize-url@9.0.0: @@ -12054,8 +12127,8 @@ packages: resolution: {integrity: sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==} engines: {node: ^20.17.0 || >=22.9.0} - npm-packlist@10.0.3: - resolution: {integrity: sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==} + npm-packlist@10.0.4: + resolution: {integrity: sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==} engines: {node: ^20.17.0 || >=22.9.0} npm-pick-manifest@11.0.3: @@ -12070,16 +12143,16 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} npm-run-path@6.0.0: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} - npm@11.11.0: - resolution: {integrity: sha512-82gRxKrh/eY5UnNorkTFcdBQAGpgjWehkfGVqAGlJjejEtJZGGJUqjo3mbBTNbc5BTnPKGVtGPBZGhElujX5cw==} + npm@11.12.1: + resolution: {integrity: sha512-zcoUuF1kezGSAo0CqtvoLXX3mkRqzuqYdL6Y5tdo8g69NVV3CkjQ6ZBhBgB4d7vGkPcV6TcvLi3GRKPDFX+xTA==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true bundledDependencies: @@ -12173,10 +12246,17 @@ packages: '@swc/core': optional: true - nypm@0.6.5: - resolution: {integrity: sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==} - engines: {node: '>=18'} + nx@22.7.0-beta.10: + resolution: {integrity: sha512-x1USEFNPQ+K7CC5RbDOVc2RIojE5OjvkxBFkGfwAeXxT33ji9xlga6qvC8PzvlIvLubyeDzgLD9troHJOGKfow==} hasBin: true + peerDependencies: + '@swc-node/register': ^1.11.1 + '@swc/core': ^1.15.8 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -12190,8 +12270,8 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} obuf@1.1.2: @@ -12242,8 +12322,8 @@ packages: oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} - oniguruma-to-es@4.3.4: - resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + oniguruma-to-es@4.3.5: + resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} open@10.2.0: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} @@ -12269,8 +12349,8 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} ora@5.3.0: @@ -12285,8 +12365,8 @@ packages: resolution: {integrity: sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==} engines: {node: '>=20'} - ordered-binary@1.5.3: - resolution: {integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==} + ordered-binary@1.6.1: + resolution: {integrity: sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==} os-name@4.0.1: resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==} @@ -12296,9 +12376,6 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - ospath@1.2.2: - resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} - oxc-parser@0.123.0: resolution: {integrity: sha512-F6ak0tFc01ZGbl5KxvLDQ2K005Z086mp3ByCQBDhUjqXLkapGUkMuJSsYixncdEpkLlcRDcruHR71LD339ADUA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -12314,12 +12391,12 @@ packages: resolution: {integrity: sha512-pSzUmDjMyjC8iUUZ7fCLo0D1iUaYIfodd/WIQ6Zra11YkjkUQk3BOFoW4I5ec6uZ/0s2FEmxtiZ7hiTXFRp1cg==} hasBin: true - oxlint@1.57.0: - resolution: {integrity: sha512-DGFsuBX5MFZX9yiDdtKjTrYPq45CZ8Fft6qCltJITYZxfwYjVdGf/6wycGYTACloauwIPxUnYhBVeZbHvleGhw==} + oxlint@1.58.0: + resolution: {integrity: sha512-t4s9leczDMqlvOSjnbCQe7gtoLkWgBGZ7sBdCJ9EOj5IXFSG/X7OAzK4yuH4iW+4cAYe8kLFbC8tuYMwWZm+Cg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - oxlint-tsgolint: '>=0.15.0' + oxlint-tsgolint: '>=0.18.0' peerDependenciesMeta: oxlint-tsgolint: optional: true @@ -12396,8 +12473,8 @@ packages: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} - p-queue@9.1.0: - resolution: {integrity: sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==} + p-queue@9.1.1: + resolution: {integrity: sha512-yQS1vV2V7Q14MQrgD8jMNY5owPuGgVHVdSK8NqmKpOVajnjbaeMa6uLOzTALPtvJ7Vo4bw0BGsw7qfUT8z24Ig==} engines: {node: '>=20'} p-reduce@2.1.0: @@ -12408,16 +12485,16 @@ packages: resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} engines: {node: '>=12'} - p-retry@6.2.0: - resolution: {integrity: sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==} + p-retry@6.2.1: + resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} engines: {node: '>=16.17'} p-timeout@3.2.0: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} - p-timeout@6.1.2: - resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} engines: {node: '>=14.16'} p-timeout@7.0.1: @@ -12460,8 +12537,8 @@ packages: parse-css-color@0.2.1: resolution: {integrity: sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==} - parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} @@ -12574,18 +12651,17 @@ packages: resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} - path-to-regexp@1.8.0: - resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + path-to-regexp@1.9.0: + resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} path-to-regexp@3.3.0: resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} - path-to-regexp@8.2.0: - resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} - engines: {node: '>=16'} + path-to-regexp@8.4.2: + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -12594,8 +12670,8 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} pause-stream@0.0.11: @@ -12606,23 +12682,17 @@ packages: engines: {node: '>=0.10'} hasBin: true - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - perfect-debounce@2.1.0: resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} - performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - piccolore@0.1.3: resolution: {integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} picomatch@4.0.2: @@ -12661,8 +12731,8 @@ packages: resolution: {integrity: sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==} engines: {node: '>=20.x'} - pkce-challenge@5.0.0: - resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + pkce-challenge@5.0.1: + resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} engines: {node: '>=16.20.0'} pkg-conf@2.1.0: @@ -12684,13 +12754,13 @@ packages: resolution: {integrity: sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==} engines: {node: '>=16.0.0'} - playwright-core@1.58.2: - resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==} + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} engines: {node: '>=18'} hasBin: true - playwright@1.58.2: - resolution: {integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==} + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} engines: {node: '>=18'} hasBin: true @@ -12707,9 +12777,9 @@ packages: polka@0.5.2: resolution: {integrity: sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==} - portfinder@1.0.32: - resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} - engines: {node: '>= 0.12.0'} + portfinder@1.0.38: + resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==} + engines: {node: '>= 10.12'} postcss-attribute-case-insensitive@7.0.1: resolution: {integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==} @@ -12735,8 +12805,8 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.10: - resolution: {integrity: sha512-k9qX+aXHBiLTRrWoCJuUFI6F1iF6QJQUXNVWJVSbqZgj57jDhBlOvD8gNUGl35tgqDivbGLhZeW3Ongz4feuKA==} + postcss-color-functional-notation@7.0.12: + resolution: {integrity: sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -12759,8 +12829,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-colormin@7.0.6: - resolution: {integrity: sha512-oXM2mdx6IBTRm39797QguYzVEWzbdlFiMNfq88fCCN1Wepw3CYmJ/1/Ifa/KjWo+j5ZURDl2NTldLJIw51IeNQ==} + postcss-colormin@7.0.7: + resolution: {integrity: sha512-sBQ628lSj3VQpDquQel8Pen5mmjFPsO4pH9lDLaHB1AVkMRHtkl0pRB5DCWznc9upWsxint/kV+AveSj7W1tew==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -12855,8 +12925,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-double-position-gradients@6.0.2: - resolution: {integrity: sha512-7qTqnL7nfLRyJK/AHSVrrXOuvDDzettC+wGoienURV8v2svNbu6zJC52ruZtHaO6mfcagFmuTGFdzRsJKB3k5Q==} + postcss-double-position-gradients@6.0.4: + resolution: {integrity: sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -12896,8 +12966,8 @@ packages: peerDependencies: postcss: ^8.0.0 - postcss-lab-function@7.0.10: - resolution: {integrity: sha512-tqs6TCEv9tC1Riq6fOzHuHcZyhg4k3gIAMB8GGY/zA1ssGdm6puHMVE7t75aOSoFg7UD2wyrFFhbldiCMyyFTQ==} + postcss-lab-function@7.0.12: + resolution: {integrity: sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -12929,6 +12999,19 @@ packages: 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.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + postcss-logical@8.1.0: resolution: {integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==} engines: {node: '>=18'} @@ -12986,8 +13069,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-minify-gradients@7.0.1: - resolution: {integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==} + postcss-minify-gradients@7.0.2: + resolution: {integrity: sha512-fVY3AB8Um7SJR5usHqTY2Ngf9qh8IRN+FFzrBP0ONJy6yYXsP7xyjK2BvSAIrpgs1cST+H91V0TXi3diHLYJtw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -13022,14 +13105,14 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-modules-local-by-default@4.0.5: - resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - postcss-modules-scope@3.2.0: - resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -13189,8 +13272,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.2.4: - resolution: {integrity: sha512-q+lXgqmTMdB0Ty+EQ31SuodhdfZetUlwCA/F0zRcd/XdxjzI+Rl2JhZNz5US2n/7t9ePsvuhCnEN4Bmu86zXlA==} + postcss-preset-env@10.6.1: + resolution: {integrity: sha512-yrk74d9EvY+W7+lO9Aj1QmjWY9q5NsKjK2V9drkOPZB/X6KZ0B3igKsHUYakb7oYVhnioWypQX3xGuePf89f3g==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -13248,8 +13331,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-selector-parser@6.1.1: - resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} postcss-selector-parser@7.1.1: @@ -13321,10 +13404,6 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-bytes@5.6.0: - resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} - engines: {node: '>=6'} - pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} @@ -13336,12 +13415,12 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-format@30.0.5: - resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==} + pretty-format@30.3.0: + resolution: {integrity: sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - pretty-ms@9.2.0: - resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} pretty-time@1.1.0: @@ -13357,21 +13436,13 @@ packages: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} - proc-log@5.0.0: - resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - proc-log@6.0.0: - resolution: {integrity: sha512-KG/XsTDN901PNfPfAMmj6N/Ywg9tM+bHK8pAz+27fS4N4Pcr+4zoYBOcGSBu6ceXYNPxkLpa4ohtfxV1XcLAfA==} + proc-log@6.1.0: + resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} engines: {node: ^20.17.0 || >=22.9.0} process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} @@ -13383,9 +13454,6 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - property-information@6.1.1: - resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==} - property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -13396,12 +13464,13 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - proxy-from-env@1.0.0: - resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} - proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + proxy-middleware@0.15.0: resolution: {integrity: sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==} engines: {node: '>=0.8.0'} @@ -13409,15 +13478,15 @@ packages: prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pupa@3.1.0: - resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} + pupa@3.3.0: + resolution: {integrity: sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==} engines: {node: '>=12.20'} pure-rand@7.0.1: @@ -13433,14 +13502,14 @@ packages: resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} engines: {node: '>=16.0.0'} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - qs@6.14.2: resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} engines: {node: '>=0.6'} + qs@6.15.0: + resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==} + engines: {node: '>=0.6'} + quansync@1.0.0: resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} @@ -13454,9 +13523,6 @@ packages: radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - rambda@9.3.0: - resolution: {integrity: sha512-cl/7DCCKNxmsbc0dXZTJTY08rvDdzLhVfE6kPBson1fWzDapLzv0RKSzjpmAqP53fkQqAvq05gpUVHTrUNsuxg==} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -13468,8 +13534,8 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} raw-body@3.0.2: @@ -13503,8 +13569,8 @@ packages: peerDependencies: react: ^18.0.0 || ^19.0.0 - react-loadable-ssr-addon-v5-slorber@1.0.1: - resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} + react-loadable-ssr-addon-v5-slorber@1.0.3: + resolution: {integrity: sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ==} engines: {node: '>=10.13.0'} peerDependencies: react-loadable: '*' @@ -13553,20 +13619,20 @@ packages: resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} - readable-stream@2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - readable-stream@3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - readdirp@4.0.2: - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} - engines: {node: '>= 14.16.0'} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} readdirp@5.0.0: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} @@ -13594,14 +13660,6 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - redis-errors@1.2.0: - resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} - engines: {node: '>=4'} - - redis-parser@3.0.0: - resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} - engines: {node: '>=4'} - reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} @@ -13612,8 +13670,8 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regex-parser@2.2.11: - resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==} + regex-parser@2.3.1: + resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} @@ -13628,8 +13686,8 @@ packages: resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} - registry-auth-token@5.0.2: - resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + registry-auth-token@5.1.1: + resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} engines: {node: '>=14'} registry-url@6.0.1: @@ -13643,8 +13701,8 @@ packages: resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true - rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} + rehype-parse@9.0.1: + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} @@ -13662,8 +13720,8 @@ packages: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} - remark-directive@3.0.0: - resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} + remark-directive@3.0.1: + resolution: {integrity: sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==} remark-emoji@4.0.1: resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==} @@ -13675,8 +13733,8 @@ packages: remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - remark-mdx@3.0.0: - resolution: {integrity: sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==} + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -13698,14 +13756,11 @@ packages: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} - replace-in-file@7.1.0: - resolution: {integrity: sha512-1uZmJ78WtqNYCSuPC9IWbweXkGxPOtk2rKuar8diTw7naVIQZiE3Tm8ACx2PCMXDtVH6N+XxwaRY2qZ2xHPqXw==} + replace-in-file@7.2.0: + resolution: {integrity: sha512-CiLXVop3o8/h2Kd1PwKPPimmS9wUV0Ki6Fl8+1ITD35nB3Gl/PrW5IONpTE0AXk0z4v8WYcpEpdeZqMXvSnWpg==} engines: {node: '>=10'} hasBin: true - request-progress@3.0.0: - resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -13793,15 +13848,15 @@ packages: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - robust-predicates@3.0.2: - resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} rolldown-plugin-dts@0.23.2: resolution: {integrity: sha512-PbSqLawLgZBGcOGT3yqWBGn4cX+wh2nt5FuBGdcMHyOhoukmjbhYAl8NT9sE4U38Cm9tqLOIQeOrvzeayM0DLQ==} @@ -13857,8 +13912,8 @@ packages: rollup: optional: true - rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + rollup@2.80.0: + resolution: {integrity: sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==} engines: {node: '>=10.0.0'} hasBin: true @@ -13877,13 +13932,13 @@ packages: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} - rtlcss@4.1.1: - resolution: {integrity: sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==} + rtlcss@4.3.0: + resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} engines: {node: '>=12.0.0'} hasBin: true - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} run-async@2.4.1: @@ -13912,120 +13967,120 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass-embedded-all-unknown@1.98.0: - resolution: {integrity: sha512-6n4RyK7/1mhdfYvpP3CClS3fGoYqDvRmLClCESS6I7+SAzqjxvGG6u5Fo+cb1nrPNbbilgbM4QKdgcgWHO9NCA==} + sass-embedded-all-unknown@1.99.0: + resolution: {integrity: sha512-qPIRG8Uhjo6/OKyAKixTnwMliTz+t9K6Duk0mx5z+K7n0Ts38NSJz2sjDnc7cA/8V9Lb3q09H38dZ1CLwD+ssw==} cpu: ['!arm', '!arm64', '!riscv64', '!x64'] - sass-embedded-android-arm64@1.98.0: - resolution: {integrity: sha512-M9Ra98A6vYJHpwhoC/5EuH1eOshQ9ZyNwC8XifUDSbRl/cGeQceT1NReR9wFj3L7s1pIbmes1vMmaY2np0uAKQ==} + sass-embedded-android-arm64@1.99.0: + resolution: {integrity: sha512-fNHhdnP23yqqieCbAdym4N47AleSwjbNt6OYIYx4DdACGdtERjQB4iOX/TaKsW034MupfF7SjnAAK8w7Ptldtg==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [android] - sass-embedded-android-arm@1.98.0: - resolution: {integrity: sha512-LjGiMhHgu7VL1n7EJxTCre1x14bUsWd9d3dnkS2rku003IWOI/fxc7OXgaKagoVzok1kv09rzO3vFXJR5ZeONQ==} + sass-embedded-android-arm@1.99.0: + resolution: {integrity: sha512-EHvJ0C7/VuP78Qr6f8gIUVUmCqIorEQpw2yp3cs3SMg02ZuumlhjXvkTcFBxHmFdFR23vTNk1WnhY6QSeV1nFQ==} engines: {node: '>=14.0.0'} cpu: [arm] os: [android] - sass-embedded-android-riscv64@1.98.0: - resolution: {integrity: sha512-WPe+0NbaJIZE1fq/RfCZANMeIgmy83x4f+SvFOG7LhUthHpZWcOcrPTsCKKmN3xMT3iw+4DXvqTYOCYGRL3hcQ==} + sass-embedded-android-riscv64@1.99.0: + resolution: {integrity: sha512-4zqDFRvgGDTL5vTHuIhRxUpXFoh0Cy7Gm5Ywk19ASd8Settmd14YdPRZPmMxfgS1GH292PofV1fq1ifiSEJWBw==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [android] - sass-embedded-android-x64@1.98.0: - resolution: {integrity: sha512-zrD25dT7OHPEgLWuPEByybnIfx4rnCtfge4clBgjZdZ3lF6E7qNLRBtSBmoFflh6Vg0RlEjJo5VlpnTMBM5MQQ==} + sass-embedded-android-x64@1.99.0: + resolution: {integrity: sha512-Uk53k/dGYt04RjOL4gFjZ0Z9DH9DKh8IA8WsXUkNqsxerAygoy3zqRBS2zngfE9K2jiOM87q+1R1p87ory9oQQ==} engines: {node: '>=14.0.0'} cpu: [x64] os: [android] - sass-embedded-darwin-arm64@1.98.0: - resolution: {integrity: sha512-cgr1z9rBnCdMf8K+JabIaYd9Rag2OJi5mjq08XJfbJGMZV/TA6hFJCLGkr5/+ZOn4/geTM5/3aSfQ8z5EIJAOg==} + sass-embedded-darwin-arm64@1.99.0: + resolution: {integrity: sha512-u61/7U3IGLqoO6gL+AHeiAtlTPFwJK1+964U8gp45ZN0hzh1yrARf5O1mivXv8NnNgJvbG2wWJbiNZP0lG/lTg==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [darwin] - sass-embedded-darwin-x64@1.98.0: - resolution: {integrity: sha512-OLBOCs/NPeiMqTdOrMFbVHBQFj19GS3bSVSxIhcCq16ZyhouUkYJEZjxQgzv9SWA2q6Ki8GCqp4k6jMeUY9dcA==} + sass-embedded-darwin-x64@1.99.0: + resolution: {integrity: sha512-j/kkk/NcXdIameLezSfXjgCiBkVcA+G60AXrX768/3g0miK1g7M9dj7xOhCb1i7/wQeiEI3rw2LLuO63xRIn4A==} engines: {node: '>=14.0.0'} cpu: [x64] os: [darwin] - sass-embedded-linux-arm64@1.98.0: - resolution: {integrity: sha512-axOE3t2MTBwCtkUCbrdM++Gj0gC0fdHJPrgzQ+q1WUmY9NoNMGqflBtk5mBZaWUeha2qYO3FawxCB8lctFwCtw==} + sass-embedded-linux-arm64@1.99.0: + resolution: {integrity: sha512-btNcFpItcB56L40n8hDeL7sRSMLDXQ56nB5h2deddJx1n60rpKSElJmkaDGHtpkrY+CTtDRV0FZDjHeTJddYew==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] libc: glibc - sass-embedded-linux-arm@1.98.0: - resolution: {integrity: sha512-03baQZCxVyEp8v1NWBRlzGYrmVT/LK7ZrHlF1piscGiGxwfdxoLXVuxsylx3qn/dD/4i/rh7Bzk7reK1br9jvQ==} + sass-embedded-linux-arm@1.99.0: + resolution: {integrity: sha512-d4IjJZrX2+AwB2YCy1JySwdptJECNP/WfAQLUl8txI3ka8/d3TUI155GtelnoZUkio211PwIeFvvAeZ9RXPQnw==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] libc: glibc - sass-embedded-linux-musl-arm64@1.98.0: - resolution: {integrity: sha512-LeqNxQA8y4opjhe68CcFvMzCSrBuJqYVFbwElEj9bagHXQHTp9xVPJRn6VcrC+0VLEDq13HVXMv7RslIuU0zmA==} + sass-embedded-linux-musl-arm64@1.99.0: + resolution: {integrity: sha512-Hi2bt/IrM5P4FBKz6EcHAlniwfpoz9mnTdvSd58y+avA3SANM76upIkAdSayA8ZGwyL3gZokru1AKDPF9lJDNw==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] libc: musl - sass-embedded-linux-musl-arm@1.98.0: - resolution: {integrity: sha512-OBkjTDPYR4hSaueOGIM6FDpl9nt/VZwbSRpbNu9/eEJcxE8G/vynRugW8KRZmCFjPy8j/jkGBvvS+k9iOqKV3g==} + sass-embedded-linux-musl-arm@1.99.0: + resolution: {integrity: sha512-2gvHOupgIw3ytatXT4nFUow71LFbuOZPEwG+HUzcNQDH8ue4Ez8cr03vsv5MDv3lIjOKcXwDvWD980t18MwkoQ==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] libc: musl - sass-embedded-linux-musl-riscv64@1.98.0: - resolution: {integrity: sha512-7w6hSuOHKt8FZsmjRb3iGSxEzM87fO9+M8nt5JIQYMhHTj5C+JY/vcske0v715HCVj5e1xyTnbGXf8FcASeAIw==} + sass-embedded-linux-musl-riscv64@1.99.0: + resolution: {integrity: sha512-mKqGvVaJ9rHMqyZsF0kikQe4NO0f4osb67+X6nLhBiVDKvyazQHJ3zJQreNefIE36yL2sjHIclSB//MprzaQDg==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] libc: musl - sass-embedded-linux-musl-x64@1.98.0: - resolution: {integrity: sha512-QikNyDEJOVqPmxyCFkci8ZdCwEssdItfjQFJB+D+Uy5HFqcS5Lv3d3GxWNX/h1dSb23RPyQdQc267ok5SbEyJw==} + sass-embedded-linux-musl-x64@1.99.0: + resolution: {integrity: sha512-huhgOMmOc30r7CH7qbRbT9LerSEGSnWuS4CYNOskr9BvNeQp4dIneFufNRGZ7hkOAxUM8DglxIZJN/cyAT95Ew==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] libc: musl - sass-embedded-linux-riscv64@1.98.0: - resolution: {integrity: sha512-E7fNytc/v4xFBQKzgzBddV/jretA4ULAPO6XmtBiQu4zZBdBozuSxsQLe2+XXeb0X4S2GIl72V7IPABdqke/vA==} + sass-embedded-linux-riscv64@1.99.0: + resolution: {integrity: sha512-mevFPIFAVhrH90THifxLfOntFmHtcEKOcdWnep2gJ0X4DVva4AiVIRlQe/7w9JFx5+gnDRE1oaJJkzuFUuYZsA==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] libc: glibc - sass-embedded-linux-x64@1.98.0: - resolution: {integrity: sha512-VsvP0t/uw00mMNPv3vwyYKUrFbqzxQHnRMO+bHdAMjvLw4NFf6mscpym9Bzf+NXwi1ZNKnB6DtXjmcpcvqFqYg==} + sass-embedded-linux-x64@1.99.0: + resolution: {integrity: sha512-9k7IkULqIZdCIVt4Mboryt6vN8Mjmm3EhI1P3mClU5y5i3wLK5ExC3cbVWk047KsID/fvB1RLslqghXJx5BoxA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] libc: glibc - sass-embedded-unknown-all@1.98.0: - resolution: {integrity: sha512-C4MMzcAo3oEDQnW7L8SBgB9F2Fq5qHPnaYTZRMOH3Mp/7kM4OooBInXpCiiFjLnjY95hzP4KyctVx0uYR6MYlQ==} + sass-embedded-unknown-all@1.99.0: + resolution: {integrity: sha512-P7MxiUtL/XzGo3PX0CaB8lNNEFLQWKikPA8pbKytx9ZCLZSDkt2NJcdAbblB/sqMs4AV3EK2NadV8rI/diq3xg==} os: ['!android', '!darwin', '!linux', '!win32'] - sass-embedded-win32-arm64@1.98.0: - resolution: {integrity: sha512-nP/10xbAiPbhQkMr3zQfXE4TuOxPzWRQe1Hgbi90jv2R4TbzbqQTuZVOaJf7KOAN4L2Bo6XCTRjK5XkVnwZuwQ==} + sass-embedded-win32-arm64@1.99.0: + resolution: {integrity: sha512-8whpsW7S+uO8QApKfQuc36m3P9EISzbVZOgC79goob4qGy09u8Gz/rYvw8h1prJDSjltpHGhOzBE6LDz7WvzVw==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [win32] - sass-embedded-win32-x64@1.98.0: - resolution: {integrity: sha512-/lbrVsfbcbdZQ5SJCWcV0NVPd6YRs+FtAnfedp4WbCkO/ZO7Zt/58MvI4X2BVpRY/Nt5ZBo1/7v2gYcQ+J4svQ==} + sass-embedded-win32-x64@1.99.0: + resolution: {integrity: sha512-ipuOv1R2K4MHeuCEAZGpuUbAgma4gb0sdacyrTjJtMOy/OY9UvWfVlwErdB09KIkp4fPDpQJDJfvYN6bC8jeNg==} engines: {node: '>=14.0.0'} cpu: [x64] os: [win32] - sass-embedded@1.98.0: - resolution: {integrity: sha512-Do7u6iRb6K+lrllcTkB1BXcHwOxcKe3rEfOF/GcCLE2w3WpddakRAosJOHFUR37DpsvimQXEt5abs3NzUjEIqg==} + sass-embedded@1.99.0: + resolution: {integrity: sha512-gF/juR1aX02lZHkvwxdF80SapkQeg2fetoDF6gIQkNbSw5YEUFspMkyGTjPjgZSgIHuZpy+Wz4PlebKnLXMjdg==} engines: {node: '>=16.0.0'} hasBin: true @@ -14055,8 +14110,8 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - sass@1.98.0: - resolution: {integrity: sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==} + sass@1.99.0: + resolution: {integrity: sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==} engines: {node: '>=14.0.0'} hasBin: true @@ -14071,12 +14126,8 @@ packages: resolution: {integrity: sha512-tkMFrfIs3l2mQ2JEcyW0ADTy3zGggFRFzi6Ef8YozQSFsFKEqaSO1Y8F9wJg4//PJGQauMalHGTUEkPrFwhVPA==} engines: {node: '>=16'} - sax@1.4.4: - resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} - engines: {node: '>=11.0.0'} - - sax@1.5.0: - resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} saxes@6.0.0: @@ -14106,8 +14157,8 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - search-insights@2.14.0: - resolution: {integrity: sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==} + search-insights@2.17.3: + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} @@ -14146,8 +14197,8 @@ packages: resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} engines: {node: '>=12'} - semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true semver@6.3.1: @@ -14164,8 +14215,8 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} send@1.2.1: @@ -14175,19 +14226,19 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serialize-javascript@7.0.4: - resolution: {integrity: sha512-DuGdB+Po43Q5Jxwpzt1lhyFSYKryqoNjQSA9M92tyw0lyHIOur+XCalOUe0KTJpyqzT8+fQ5A0Jf7vCx/NKmIg==} + serialize-javascript@7.0.5: + resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==} engines: {node: '>=20.0.0'} serve-handler@6.1.7: resolution: {integrity: sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==} - serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + serve-index@1.9.2: + resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} engines: {node: '>= 0.8.0'} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} engines: {node: '>= 0.8.0'} serve-static@2.2.1: @@ -14197,13 +14248,10 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -14226,8 +14274,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} shiki@4.0.2: resolution: {integrity: sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==} @@ -14263,8 +14312,8 @@ packages: resolution: {integrity: sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==} engines: {node: '>=6'} - sigstore@4.0.0: - resolution: {integrity: sha512-Gw/FgHtrLM9WP8P5lLcSGh9OQcrTruWCELAiS48ik1QbL0cH+dfjomiRTUE9zzz+D1N6rOLkwXUvVmXZAsNE0Q==} + sigstore@4.1.0: + resolution: {integrity: sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==} engines: {node: ^20.17.0 || >=22.9.0} sirv@2.0.4: @@ -14278,8 +14327,8 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - sitemap@7.1.2: - resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} + sitemap@7.1.3: + resolution: {integrity: sha512-tAjEd+wt/YwnEbfNB2ht51ybBJxbEWwe5ki/Z//Wh0rpBFTCUSj46GnxUKEWzhfuJTsee8x3lybHxFgUMig2hw==} engines: {node: '>=12.0.0', npm: '>=5.6.0'} hasBin: true @@ -14299,24 +14348,20 @@ packages: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} - slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} - - slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - smol-toml@1.6.0: - resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} snake-case@3.0.4: @@ -14325,12 +14370,12 @@ packages: sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - socks-proxy-agent@8.0.4: - resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} - socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} sort-css-media-queries@2.2.0: @@ -14367,23 +14412,26 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} - space-separated-tokens@2.0.1: - resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} spawn-error-forwarder@1.0.0: resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} - spdx-correct@3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.12: - resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} @@ -14401,29 +14449,17 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - srcset@4.0.0: resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} engines: {node: '>=12'} - srvx@0.11.13: - resolution: {integrity: sha512-oknN6qduuMPafxKtHucUeG32Q963pjriA5g3/Bl05cwEsUe5VVbIU4qR9LrALHbipSCyBe+VmfDGGydqazDRkw==} + srvx@0.11.15: + resolution: {integrity: sha512-iXsux0UcOjdvs0LCMa2Ws3WwcDUozA3JN3BquNXkaFPP7TpRqgunKdEgoZ/uwb1J6xaYHfxtz9Twlh6yzwM6Tg==} engines: {node: '>=20.16.0'} hasBin: true - sshpk@1.18.0: - resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} - engines: {node: '>=0.10.0'} - hasBin: true - - ssri@12.0.0: - resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - ssri@13.0.0: - resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} + ssri@13.0.1: + resolution: {integrity: sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==} engines: {node: ^20.17.0 || >=22.9.0} stack-utils@2.0.6: @@ -14436,9 +14472,6 @@ packages: stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - standard-as-callback@2.1.0: - resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - start-server-and-test@3.0.0: resolution: {integrity: sha512-R//IdnWC+H+raB6zJIqw5QbIsMAjjYFwJC/OIJO6kgZljguYe4n4LlA7vkPTO7zoctFlVPfymsNShjcPOIH8nw==} engines: {node: ^22 || >=24} @@ -14448,10 +14481,6 @@ packages: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -14485,10 +14514,6 @@ packages: stream-combiner@0.2.2: resolution: {integrity: sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==} - streamroller@3.1.5: - resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} - engines: {node: '>=8.0'} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -14509,8 +14534,8 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string-width@8.1.0: - resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} + string-width@8.2.0: + resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} engines: {node: '>=20'} string.prototype.codepointat@0.2.1: @@ -14522,8 +14547,8 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} stringify-object@3.3.0: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} @@ -14533,8 +14558,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} strip-bom-string@1.0.0: @@ -14576,8 +14601,8 @@ packages: structured-clone-es@2.0.0: resolution: {integrity: sha512-5UuAHmBLXYPCl22xWJrFuGmIhBKQzxISPVz6E7nmTmTcAOpUzlbjKJsRrCE4vADmMQ0dzeCnlWn9XufnAGf76Q==} - style-loader@3.3.1: - resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==} + style-loader@3.3.4: + resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 @@ -14588,11 +14613,11 @@ packages: peerDependencies: webpack: ^5.27.0 - style-to-object@0.4.2: - resolution: {integrity: sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==} + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - style-to-object@1.0.5: - resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} stylehacks@6.1.1: resolution: {integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==} @@ -14609,11 +14634,6 @@ packages: stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} - stylus@0.64.0: - resolution: {integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==} - engines: {node: '>=16'} - hasBin: true - super-regex@1.1.0: resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==} engines: {node: '>=18'} @@ -14644,8 +14664,8 @@ packages: svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + svgo@3.3.3: + resolution: {integrity: sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==} engines: {node: '>=14.0.0'} hasBin: true @@ -14661,20 +14681,14 @@ packages: resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==} engines: {node: '>=16.0.0'} - sync-message-port@1.1.3: - resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} + sync-message-port@1.2.0: + resolution: {integrity: sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==} engines: {node: '>=16.0.0'} - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} - systeminformation@5.31.5: - resolution: {integrity: sha512-5SyLdip4/3alxD4Kh+63bUQTJmu7YMfYQTC+koZy7X73HgNqZSD2P4wOZQWtUncvPvcEmnfIjCoygN4MRoEejQ==} - engines: {node: '>=8.0.0'} - os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] - hasBin: true - tablesort@5.7.0: resolution: {integrity: sha512-irnN1HPD08466v6DHKR1+gqZ2be2+QZBDIGTM1DFGoWywY+d38bFtfsuUqBbMGkqaMyYE1uPxE7p0AM5cmbRSA==} engines: {node: '>= 22', npm: '>= 10'} @@ -14690,14 +14704,17 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} + tapable@2.3.2: + resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} + engines: {node: '>=6'} + tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - tar@7.5.2: - resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} + tar@7.5.13: + resolution: {integrity: sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==} engines: {node: '>=18'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me telejson@8.0.0: resolution: {integrity: sha512-8mCI1dHX80nchOkIEgvyWlGLgeh/SxO7JZPOud0DxvfFdI6MgwxRL8ff7rVdj6436uHhpWaxLQjU74Jb2I0u9g==} @@ -14706,12 +14723,12 @@ packages: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} - tempy@3.1.0: - resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + tempy@3.2.0: + resolution: {integrity: sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==} engines: {node: '>=14.16'} - terser-webpack-plugin@5.3.16: - resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} + terser-webpack-plugin@5.4.0: + resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -14731,6 +14748,11 @@ packages: engines: {node: '>=10'} hasBin: true + terser@5.46.1: + resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} + engines: {node: '>=10'} + hasBin: true + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -14742,15 +14764,12 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - thingies@2.5.0: - resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} + thingies@2.6.0: + resolution: {integrity: sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==} engines: {node: '>=10.18'} peerDependencies: tslib: ^2 - throttleit@1.0.1: - resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} - through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -14800,22 +14819,15 @@ packages: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} - tldts-core@6.1.86: - resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - - tldts-core@7.0.25: - resolution: {integrity: sha512-ZjCZK0rppSBu7rjHYDYsEaMOIbbT+nWF57hKkv4IUmZWBNrBWBOjIElc0mKRgLM8bm7x/BBlof6t2gi/Oq/Asw==} + tldts-core@7.0.27: + resolution: {integrity: sha512-YQ7uPjgWUibIK6DW5lrKujGwUKhLevU4hcGbP5O6TcIUb+oTjJYJVWPS4nZsIHrEEEG6myk/oqAJUEQmpZrHsg==} - tldts@6.1.86: - resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} - hasBin: true - - tldts@7.0.25: - resolution: {integrity: sha512-keinCnPbwXEUG3ilrWQZU+CqcTTzHq9m2HhoUP2l7Xmi8l1LuijAXLpAJ5zRW+ifKTNscs4NdCkfkDCBYm352w==} + tldts@7.0.27: + resolution: {integrity: sha512-I4FZcVFcqCRuT0ph6dCDpPuO4Xgzvh+spkcTr1gK7peIvxWauoloVO0vuy1FQnijT63ss6AsHB6+OIM4aXHbPg==} hasBin: true tmp@0.0.33: @@ -14844,10 +14856,6 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@5.1.2: - resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} - engines: {node: '>=16'} - tough-cookie@6.0.1: resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} engines: {node: '>=16'} @@ -14876,8 +14884,8 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} trouter@2.0.1: resolution: {integrity: sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ==} @@ -14889,11 +14897,10 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-checker-rspack-plugin@1.1.1: - resolution: {integrity: sha512-BlpPqnfAmV0TcDg58H+1qV8Zb57ilv0x+ajjnxrVQ6BWgC8HzAdc+TycqDOJ4sZZYIV+hywQGozZFGklzbCR6A==} - engines: {node: '>=16.0.0'} + ts-checker-rspack-plugin@1.3.0: + resolution: {integrity: sha512-89oK/BtApjdid1j9CGjPGiYry+EZBhsnTAM481/8ipgr/y2IOgCbW1HPnan+fs5FnzlpUgf9dWGNZ4Ayw3Bd8A==} peerDependencies: - '@rspack/core': ^1.0.0 + '@rspack/core': ^1.0.0 || ^2.0.0-0 typescript: '>=3.8.0' peerDependenciesMeta: '@rspack/core': @@ -14903,8 +14910,8 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - ts-loader@9.4.1: - resolution: {integrity: sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==} + ts-loader@9.5.7: + resolution: {integrity: sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==} engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' @@ -14916,20 +14923,6 @@ packages: ts-morph@27.0.2: resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==} - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - tsconfck@3.1.6: resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} @@ -14982,28 +14975,18 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsscmp@1.0.6: - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} - engines: {node: '>=0.6.x'} - tsyringe@4.10.0: resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} engines: {node: '>= 6.0.0'} - tuf-js@4.0.0: - resolution: {integrity: sha512-Lq7ieeGvXDXwpoSmOSgLWVdsGGV9J4a77oDTAPe/Ltrqnnm/ETaRlBAQTH5JatEh8KXuE6sddf9qAv1Q2282Hg==} + tuf-js@4.1.0: + resolution: {integrity: sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==} engines: {node: ^20.17.0 || >=22.9.0} - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - tunnel@0.0.6: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -15016,10 +14999,6 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -15032,8 +15011,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.4.4: - resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==} + type-fest@5.5.0: + resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==} engines: {node: '>=20'} type-is@1.6.18: @@ -15070,8 +15049,8 @@ packages: ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} - uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} hasBin: true @@ -15087,23 +15066,23 @@ packages: undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} - undici@6.23.0: - resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} + undici@6.24.1: + resolution: {integrity: sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==} engines: {node: '>=18.17'} undici@7.24.4: resolution: {integrity: sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==} engines: {node: '>=20.18.1'} - undici@7.24.6: - resolution: {integrity: sha512-Xi4agocCbRzt0yYMZGMA6ApD7gvtUFaxm4ZmeacWI4cZxaF6C+8I8QfofC20NAePiB/IcvZmzkJ7XPa471AEtA==} + undici@7.24.7: + resolution: {integrity: sha512-H/nlJ/h0ggGC+uRL3ovD+G0i4bqhvsDOpbDv7At5eFLlj2b41L8QliGbnl2H7SnDiYhENphh1tQFJZf+MyfLsQ==} engines: {node: '>=20.18.1'} unenv@2.0.0-rc.24: resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} unicode-emoji-modifier-base@1.0.0: @@ -15118,8 +15097,8 @@ packages: resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} engines: {node: '>=4'} - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} unicode-trie@2.0.0: @@ -15147,14 +15126,6 @@ packages: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} engines: {node: '>= 0.8.0'} - unique-filename@4.0.0: - resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - unique-slug@5.0.0: - resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} - engines: {node: ^18.17.0 || >=20.5.0} - unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -15162,8 +15133,8 @@ packages: unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} unist-util-modify-children@4.0.0: resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} @@ -15192,12 +15163,8 @@ packages: universal-user-agent@7.0.3: resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} unix-crypt-td-js@1.1.4: @@ -15228,8 +15195,8 @@ packages: synckit: optional: true - unstorage@1.17.4: - resolution: {integrity: sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==} + unstorage@1.17.5: + resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==} peerDependencies: '@azure/app-configuration': ^1.8.0 '@azure/cosmos': ^4.2.0 @@ -15364,10 +15331,6 @@ packages: uploadthing: optional: true - untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - upath@2.0.1: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} @@ -15433,11 +15396,8 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - v8-to-istanbul@9.0.1: - resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} valibot@1.3.1: @@ -15465,15 +15425,11 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verror@1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} - - vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} @@ -15606,10 +15562,10 @@ packages: yaml: optional: true - vitefu@1.1.2: - resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==} + 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-beta.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: vite: optional: true @@ -15734,19 +15690,6 @@ packages: 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.3: resolution: {integrity: sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==} engines: {node: '>= 18.12.0'} @@ -15775,8 +15718,8 @@ packages: resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} engines: {node: '>=6'} - webpack-sources@3.3.3: - resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + webpack-sources@3.3.4: + resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==} engines: {node: '>=10.13.0'} webpack-subresource-integrity@5.1.0: @@ -15802,6 +15745,16 @@ packages: webpack-cli: optional: true + webpack@5.105.4: + resolution: {integrity: sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpackbar@6.0.1: resolution: {integrity: sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==} engines: {node: '>=14.21.3'} @@ -15845,8 +15798,8 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-module@2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} which-pm-runs@1.1.0: resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} @@ -15861,8 +15814,8 @@ packages: engines: {node: '>= 8'} hasBin: true - which@6.0.0: - resolution: {integrity: sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==} + which@6.0.1: + resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true @@ -15882,6 +15835,10 @@ packages: resolution: {integrity: sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==} engines: {node: '>=10'} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} @@ -15897,8 +15854,8 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} wrappy@1.0.2: @@ -15911,8 +15868,8 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -15935,8 +15892,8 @@ packages: utf-8-validate: optional: true - ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -16002,12 +15959,12 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} engines: {node: '>= 6'} - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} engines: {node: '>= 14.6'} hasBin: true @@ -16043,27 +16000,20 @@ packages: resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.2.1: - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} yoctocolors-cjs@2.1.3: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} - yoctocolors@2.1.1: - resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} yoga-layout@3.2.1: @@ -16072,10 +16022,10 @@ packages: yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} - zod-to-json-schema@3.25.1: - resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} + zod-to-json-schema@3.25.2: + resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} peerDependencies: - zod: ^3.25 || ^4 + zod: ^3.25.28 || ^4 zod@4.3.6: resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} @@ -16088,8 +16038,6 @@ packages: snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} - '@actions/core@3.0.0': dependencies: '@actions/exec': 3.0.0 @@ -16102,14 +16050,11 @@ snapshots: '@actions/http-client@4.0.0': dependencies: tunnel: 0.0.6 - undici: 6.23.0 + undici: 6.24.1 '@actions/io@3.0.2': {} - '@adobe/css-tools@4.3.3': - optional: true - - '@adobe/css-tools@4.4.3': {} + '@adobe/css-tools@4.4.4': {} '@aduh95/viz.js@3.4.0': {} @@ -16120,27 +16065,34 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 - '@algolia/autocomplete-core@1.19.2(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)(search-insights@2.14.0)': + '@algolia/abtesting@1.16.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + + '@algolia/autocomplete-core@1.19.2(@algolia/client-search@5.50.1)(algoliasearch@5.50.1)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.19.2(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)(search-insights@2.14.0) - '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.48.1)(algoliasearch@5.48.1) + '@algolia/autocomplete-plugin-algolia-insights': 1.19.2(@algolia/client-search@5.50.1)(algoliasearch@5.50.1)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.50.1)(algoliasearch@5.50.1) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.19.2(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)(search-insights@2.14.0)': + '@algolia/autocomplete-plugin-algolia-insights@1.19.2(@algolia/client-search@5.50.1)(algoliasearch@5.50.1)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.48.1)(algoliasearch@5.48.1) - search-insights: 2.14.0 + '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.50.1)(algoliasearch@5.50.1) + search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-shared@1.19.2(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)': + '@algolia/autocomplete-shared@1.19.2(@algolia/client-search@5.50.1)(algoliasearch@5.50.1)': dependencies: - '@algolia/client-search': 5.48.1 - algoliasearch: 5.48.1 + '@algolia/client-search': 5.50.1 + algoliasearch: 5.50.1 '@algolia/client-abtesting@5.48.1': dependencies: @@ -16149,6 +16101,13 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + '@algolia/client-abtesting@5.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + '@algolia/client-analytics@5.48.1': dependencies: '@algolia/client-common': 5.48.1 @@ -16156,8 +16115,17 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + '@algolia/client-analytics@5.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + '@algolia/client-common@5.48.1': {} + '@algolia/client-common@5.50.1': {} + '@algolia/client-insights@5.48.1': dependencies: '@algolia/client-common': 5.48.1 @@ -16165,6 +16133,13 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + '@algolia/client-insights@5.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + '@algolia/client-personalization@5.48.1': dependencies: '@algolia/client-common': 5.48.1 @@ -16172,6 +16147,13 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + '@algolia/client-personalization@5.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + '@algolia/client-query-suggestions@5.48.1': dependencies: '@algolia/client-common': 5.48.1 @@ -16179,6 +16161,13 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + '@algolia/client-query-suggestions@5.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + '@algolia/client-search@5.48.1': dependencies: '@algolia/client-common': 5.48.1 @@ -16186,6 +16175,13 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + '@algolia/client-search@5.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + '@algolia/events@4.0.1': {} '@algolia/ingestion@1.48.1': @@ -16195,6 +16191,13 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + '@algolia/ingestion@1.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + '@algolia/monitoring@1.48.1': dependencies: '@algolia/client-common': 5.48.1 @@ -16202,6 +16205,13 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + '@algolia/monitoring@1.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + '@algolia/recommend@5.48.1': dependencies: '@algolia/client-common': 5.48.1 @@ -16209,30 +16219,51 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + '@algolia/recommend@5.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + '@algolia/requester-browser-xhr@5.48.1': dependencies: '@algolia/client-common': 5.48.1 + '@algolia/requester-browser-xhr@5.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-fetch@5.48.1': dependencies: '@algolia/client-common': 5.48.1 + '@algolia/requester-fetch@5.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + '@algolia/requester-node-http@5.48.1': dependencies: '@algolia/client-common': 5.48.1 + '@algolia/requester-node-http@5.50.1': + dependencies: + '@algolia/client-common': 5.50.1 + + '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@analogjs/vite-plugin-angular@2.4.0(@angular-devkit/build-angular@21.2.4(562e135550fb493df3034c3b70b31f89))(@angular/build@21.2.4(ce7d2ad427afc0ad407f7182efa58bb6))': + '@analogjs/vite-plugin-angular@2.4.0(@angular-devkit/build-angular@21.2.4(add8bde166a9c825117621996a363ef3))(@angular/build@21.2.4(d177fe19ad80c073ee03544d343f9ed0))': dependencies: tinyglobby: 0.2.15 ts-morph: 21.0.1 optionalDependencies: - '@angular-devkit/build-angular': 21.2.4(562e135550fb493df3034c3b70b31f89) - '@angular/build': 21.2.4(ce7d2ad427afc0ad407f7182efa58bb6) + '@angular-devkit/build-angular': 21.2.4(add8bde166a9c825117621996a363ef3) + '@angular/build': 21.2.4(d177fe19ad80c073ee03544d343f9ed0) '@angular-devkit/architect@0.2102.4(chokidar@5.0.0)': dependencies: @@ -16248,13 +16279,13 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@21.2.4(562e135550fb493df3034c3b70b31f89)': + '@angular-devkit/build-angular@21.2.4(add8bde166a9c825117621996a363ef3)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2102.4(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2102.4(chokidar@5.0.0)(webpack-dev-server@5.2.3(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + '@angular-devkit/build-webpack': 0.2102.4(chokidar@5.0.0)(webpack-dev-server@5.2.3(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) '@angular-devkit/core': 21.2.4(chokidar@5.0.0) - '@angular/build': 21.2.4(f1c48cde826f2133f9c7e32cd03964bb) + '@angular/build': 21.2.4(9289f41bd077dfa7b0ffee53c58b3ae6) '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2) '@babel/core': 7.29.0 '@babel/generator': 7.29.1 @@ -16266,46 +16297,46 @@ snapshots: '@babel/preset-env': 7.29.0(@babel/core@7.29.0) '@babel/runtime': 7.28.6 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 21.2.4(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + '@ngtools/webpack': 21.2.4(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) ansi-colors: 4.1.3 autoprefixer: 10.4.27(postcss@8.5.6) - babel-loader: 10.0.0(@babel/core@7.29.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - browserslist: 4.28.1 - copy-webpack-plugin: 14.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - css-loader: 7.1.3(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + babel-loader: 10.0.0(@babel/core@7.29.0)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + browserslist: 4.28.2 + copy-webpack-plugin: 14.0.0(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + css-loader: 7.1.3(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) esbuild-wasm: 0.27.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.4.2 - less-loader: 12.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.19))(less@4.4.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - license-webpack-plugin: 4.0.2(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + less-loader: 12.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.4.2)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + license-webpack-plugin: 4.0.2(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) loader-utils: 3.3.1 - mini-css-extract-plugin: 2.10.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + mini-css-extract-plugin: 2.10.0(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) open: 11.0.0 ora: 9.3.0 picomatch: 4.0.3 piscina: 5.1.4 postcss: 8.5.6 - postcss-loader: 8.2.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(postcss@8.5.6)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + postcss-loader: 8.2.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.6)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) resolve-url-loader: 5.0.0 rxjs: 7.8.2 sass: 1.97.3 - sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.19))(sass-embedded@1.98.0)(sass@1.97.3)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.97.3)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) semver: 7.7.4 - source-map-loader: 5.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + source-map-loader: 5.0.0(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) source-map-support: 0.5.21 terser: 5.46.0 tinyglobby: 0.2.15 tree-kill: 1.2.2 tslib: 2.8.1 typescript: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.3) - webpack-dev-middleware: 7.4.5(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - webpack-dev-server: 5.2.3(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + webpack-dev-server: 5.2.3(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3)) optionalDependencies: '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) @@ -16316,6 +16347,8 @@ snapshots: tailwindcss: 4.2.2 transitivePeerDependencies: - '@angular/compiler' + - '@emnapi/core' + - '@emnapi/runtime' - '@rspack/core' - '@swc/core' - '@types/node' @@ -16337,23 +16370,114 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2102.4(chokidar@5.0.0)(webpack-dev-server@5.2.3(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4))': + '@angular-devkit/build-angular@21.2.4(b8427e3316f5f1e4538d50a5e8d618ff)': dependencies: + '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2102.4(chokidar@5.0.0) - rxjs: 7.8.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) - webpack-dev-server: 5.2.3(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - transitivePeerDependencies: - - chokidar - - '@angular-devkit/core@21.1.0(chokidar@5.0.0)': - dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) + '@angular-devkit/build-webpack': 0.2102.4(chokidar@5.0.0)(webpack-dev-server@5.2.3(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@angular-devkit/core': 21.2.4(chokidar@5.0.0) + '@angular/build': 21.2.4(9289f41bd077dfa7b0ffee53c58b3ae6) + '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2) + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) + '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/runtime': 7.28.6 + '@discoveryjs/json-ext': 0.6.3 + '@ngtools/webpack': 21.2.4(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + ansi-colors: 4.1.3 + autoprefixer: 10.4.27(postcss@8.5.6) + babel-loader: 10.0.0(@babel/core@7.29.0)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + browserslist: 4.28.2 + copy-webpack-plugin: 14.0.0(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + css-loader: 7.1.3(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + esbuild-wasm: 0.27.3 + http-proxy-middleware: 3.0.5 + istanbul-lib-instrument: 6.0.3 jsonc-parser: 3.3.1 - picomatch: 4.0.3 - rxjs: 7.8.2 - source-map: 0.7.6 + karma-source-map-support: 1.4.0 + less: 4.4.2 + less-loader: 12.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.4.2)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + license-webpack-plugin: 4.0.2(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + loader-utils: 3.3.1 + mini-css-extract-plugin: 2.10.0(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + open: 11.0.0 + ora: 9.3.0 + picomatch: 4.0.3 + piscina: 5.1.4 + postcss: 8.5.6 + postcss-loader: 8.2.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.6)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + resolve-url-loader: 5.0.0 + rxjs: 7.8.2 + sass: 1.97.3 + sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.97.3)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + semver: 7.7.4 + source-map-loader: 5.0.0(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + source-map-support: 0.5.21 + terser: 5.46.0 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + tslib: 2.8.1 + typescript: 6.0.2 + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + webpack-dev-server: 5.2.3(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + webpack-merge: 6.0.1 + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + optionalDependencies: + '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/platform-server': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + '@angular/ssr': 21.2.4(7413267c1883f3ede58570ed37d43fb5) + esbuild: 0.27.3 + ng-packagr: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) + tailwindcss: 4.2.2 + transitivePeerDependencies: + - '@angular/compiler' + - '@emnapi/core' + - '@emnapi/runtime' + - '@rspack/core' + - '@swc/core' + - '@types/node' + - bufferutil + - chokidar + - debug + - html-webpack-plugin + - jiti + - lightningcss + - node-sass + - sass-embedded + - stylus + - sugarss + - supports-color + - tsx + - uglify-js + - utf-8-validate + - vitest + - webpack-cli + - yaml + + '@angular-devkit/build-webpack@0.2102.4(chokidar@5.0.0)(webpack-dev-server@5.2.3(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7))': + dependencies: + '@angular-devkit/architect': 0.2102.4(chokidar@5.0.0) + rxjs: 7.8.2 + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) + webpack-dev-server: 5.2.3(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + transitivePeerDependencies: + - chokidar + + '@angular-devkit/core@21.1.0(chokidar@5.0.0)': + dependencies: + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + jsonc-parser: 3.3.1 + picomatch: 4.0.3 + rxjs: 7.8.2 + source-map: 0.7.6 optionalDependencies: chokidar: 5.0.0 @@ -16399,41 +16523,69 @@ snapshots: transitivePeerDependencies: - chokidar + '@angular-eslint/builder@21.3.1(@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': + dependencies: + '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) + '@angular-devkit/core': 21.2.4(chokidar@5.0.0) + '@angular/cli': 21.2.4(@types/node@25.5.2)(chokidar@5.0.0) + eslint: 10.2.0(jiti@2.6.1) + typescript: 6.0.2 + transitivePeerDependencies: + - chokidar + '@angular-eslint/bundled-angular-compiler@21.3.1': {} - '@angular-eslint/eslint-plugin-template@21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@angular-eslint/eslint-plugin-template@21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@angular-eslint/bundled-angular-compiler': 21.3.1 - '@angular-eslint/template-parser': 21.3.1(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - '@angular-eslint/utils': 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + '@angular-eslint/template-parser': 21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@angular-eslint/utils': 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@typescript-eslint/types': 8.58.0 - '@typescript-eslint/utils': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) aria-query: 5.3.2 axobject-query: 4.1.0 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) typescript: 6.0.2 - '@angular-eslint/eslint-plugin@21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@angular-eslint/eslint-plugin@21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@angular-eslint/bundled-angular-compiler': 21.3.1 - '@angular-eslint/utils': 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - eslint: 10.1.0(jiti@2.6.1) + '@angular-eslint/utils': 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + eslint: 10.2.0(jiti@2.6.1) ts-api-utils: 2.5.0(typescript@6.0.2) typescript: 6.0.2 - '@angular-eslint/template-parser@21.3.1(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@angular-eslint/schematics@21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(chokidar@5.0.0)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': + dependencies: + '@angular-devkit/core': 21.2.4(chokidar@5.0.0) + '@angular-devkit/schematics': 21.2.4(chokidar@5.0.0) + '@angular-eslint/eslint-plugin': 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@angular-eslint/eslint-plugin-template': 21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@angular/cli': 21.2.4(@types/node@25.5.2)(chokidar@5.0.0) + ignore: 7.0.5 + semver: 7.7.4 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - '@angular-eslint/template-parser' + - '@typescript-eslint/types' + - '@typescript-eslint/utils' + - chokidar + - eslint + - typescript + + '@angular-eslint/template-parser@21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@angular-eslint/bundled-angular-compiler': 21.3.1 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) eslint-scope: 9.1.2 typescript: 6.0.2 - '@angular-eslint/utils@21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@angular-eslint/utils@21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@angular-eslint/bundled-angular-compiler': 21.3.1 - '@typescript-eslint/utils': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - eslint: 10.1.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + eslint: 10.2.0(jiti@2.6.1) typescript: 6.0.2 '@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))': @@ -16441,7 +16593,7 @@ snapshots: '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) tslib: 2.8.1 - '@angular/build@21.2.4(ce7d2ad427afc0ad407f7182efa58bb6)': + '@angular/build@21.2.4(33aa2f808a50cac312b6b6a28e7f9322)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2102.4(chokidar@5.0.0) @@ -16450,10 +16602,10 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.21(@types/node@25.5.0) - '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + '@inquirer/confirm': 5.1.21(@types/node@25.5.2) + '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) beasties: 0.4.1 - browserslist: 4.28.1 + browserslist: 4.28.2 esbuild: 0.27.3 https-proxy-agent: 7.0.6 istanbul-lib-instrument: 6.0.3 @@ -16464,7 +16616,7 @@ snapshots: parse5-html-rewriting-stream: 8.0.0 picomatch: 4.0.3 piscina: 5.1.4 - rolldown: 1.0.0-rc.4 + rolldown: 1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) sass: 1.97.3 semver: 7.7.4 source-map-support: 0.5.21 @@ -16472,20 +16624,22 @@ snapshots: tslib: 2.8.1 typescript: 6.0.2 undici: 7.24.4 - vite: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) watchpack: 2.5.1 optionalDependencies: '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/platform-server': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/ssr': 21.2.4(7413267c1883f3ede58570ed37d43fb5) - less: 4.6.4 + less: 4.4.2 lmdb: 3.5.1 ng-packagr: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) - postcss: 8.5.8 + postcss: 8.5.6 tailwindcss: 4.2.2 - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - '@types/node' - chokidar - jiti @@ -16498,7 +16652,7 @@ snapshots: - tsx - yaml - '@angular/build@21.2.4(f1c48cde826f2133f9c7e32cd03964bb)': + '@angular/build@21.2.4(9289f41bd077dfa7b0ffee53c58b3ae6)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2102.4(chokidar@5.0.0) @@ -16507,10 +16661,10 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.21(@types/node@25.5.0) - '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + '@inquirer/confirm': 5.1.21(@types/node@25.5.2) + '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.3)) beasties: 0.4.1 - browserslist: 4.28.1 + browserslist: 4.28.2 esbuild: 0.27.3 https-proxy-agent: 7.0.6 istanbul-lib-instrument: 6.0.3 @@ -16521,7 +16675,7 @@ snapshots: parse5-html-rewriting-stream: 8.0.0 picomatch: 4.0.3 piscina: 5.1.4 - rolldown: 1.0.0-rc.4 + rolldown: 1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) sass: 1.97.3 semver: 7.7.4 source-map-support: 0.5.21 @@ -16529,7 +16683,7 @@ snapshots: tslib: 2.8.1 typescript: 6.0.2 undici: 7.24.4 - vite: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.3) watchpack: 2.5.1 optionalDependencies: '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) @@ -16541,8 +16695,69 @@ snapshots: ng-packagr: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) postcss: 8.5.6 tailwindcss: 4.2.2 - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + - '@types/node' + - chokidar + - jiti + - lightningcss + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@angular/build@21.2.4(d177fe19ad80c073ee03544d343f9ed0)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.2102.4(chokidar@5.0.0) + '@angular/compiler': 21.2.6 + '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2) + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-split-export-declaration': 7.24.7 + '@inquirer/confirm': 5.1.21(@types/node@25.5.2) + '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) + beasties: 0.4.1 + browserslist: 4.28.2 + esbuild: 0.27.3 + https-proxy-agent: 7.0.6 + istanbul-lib-instrument: 6.0.3 + jsonc-parser: 3.3.1 + listr2: 9.0.5 + magic-string: 0.30.21 + mrmime: 2.0.1 + parse5-html-rewriting-stream: 8.0.0 + picomatch: 4.0.3 + piscina: 5.1.4 + rolldown: 1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + sass: 1.97.3 + semver: 7.7.4 + source-map-support: 0.5.21 + tinyglobby: 0.2.15 + tslib: 2.8.1 + typescript: 6.0.2 + undici: 7.24.4 + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) + watchpack: 2.5.1 + optionalDependencies: + '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/platform-server': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + '@angular/ssr': 21.2.4(7413267c1883f3ede58570ed37d43fb5) + less: 4.6.4 + lmdb: 3.5.1 + ng-packagr: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) + postcss: 8.5.8 + tailwindcss: 4.2.2 + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - '@types/node' - chokidar - jiti @@ -16564,13 +16779,13 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@21.2.4(@types/node@25.5.0)(chokidar@5.0.0)': + '@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0)': dependencies: '@angular-devkit/architect': 0.2102.4(chokidar@5.0.0) '@angular-devkit/core': 21.2.4(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.4(chokidar@5.0.0) - '@inquirer/prompts': 7.10.1(@types/node@25.5.0) - '@listr2/prompt-adapter-inquirer': 3.0.5(@inquirer/prompts@7.10.1(@types/node@25.5.0))(@types/node@25.5.0)(listr2@9.0.5) + '@inquirer/prompts': 7.10.1(@types/node@25.5.2) + '@listr2/prompt-adapter-inquirer': 3.0.5(@inquirer/prompts@7.10.1(@types/node@25.5.2))(@types/node@25.5.2)(listr2@9.0.5) '@modelcontextprotocol/sdk': 1.26.0(zod@4.3.6) '@schematics/angular': 21.2.4(chokidar@5.0.0) '@yarnpkg/lockfile': 1.1.0 @@ -16695,7 +16910,7 @@ snapshots: '@arr/every@1.0.1': {} - '@asamuzakjp/css-color@5.0.1': + '@asamuzakjp/css-color@5.1.5': dependencies: '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-color-parser': 4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) @@ -16703,7 +16918,7 @@ snapshots: '@csstools/css-tokenizer': 4.0.0 lru-cache: 11.2.7 - '@asamuzakjp/dom-selector@7.0.4': + '@asamuzakjp/dom-selector@7.0.6': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 @@ -16738,7 +16953,7 @@ snapshots: remark-smartypants: 3.0.2 retext-smartypants: 6.2.0 shiki: 4.0.2 - smol-toml: 1.6.0 + smol-toml: 1.6.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.1.0 @@ -16747,12 +16962,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@5.0.3(astro@6.1.1(@types/node@25.5.0)(db0@0.3.4)(ioredis@5.10.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(typescript@5.9.3)(yaml@2.8.2))': + '@astrojs/mdx@5.0.3(astro@6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@5.9.3)(yaml@2.8.3))': dependencies: '@astrojs/markdown-remark': 7.1.0 '@mdx-js/mdx': 3.1.1 acorn: 8.16.0 - astro: 6.1.1(@types/node@25.5.0)(db0@0.3.4)(ioredis@5.10.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(typescript@5.9.3)(yaml@2.8.2) + astro: 6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@5.9.3)(yaml@2.8.3) es-module-lexer: 2.0.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -16766,12 +16981,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@5.0.3(astro@6.1.1(@types/node@25.5.0)(db0@0.3.4)(ioredis@5.10.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(typescript@6.0.2)(yaml@2.8.2))': + '@astrojs/mdx@5.0.3(astro@6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.2)(yaml@2.8.3))': dependencies: '@astrojs/markdown-remark': 7.1.0 '@mdx-js/mdx': 3.1.1 acorn: 8.16.0 - astro: 6.1.1(@types/node@25.5.0)(db0@0.3.4)(ioredis@5.10.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(typescript@6.0.2)(yaml@2.8.2) + astro: 6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.2)(yaml@2.8.3) es-module-lexer: 2.0.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -16789,17 +17004,17 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/react@5.0.2(@types/node@25.5.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)': + '@astrojs/react@5.0.2(@types/node@25.5.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)': dependencies: '@astrojs/internal-helpers': 0.8.0 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@vitejs/plugin-react': 5.2.0(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + '@vitejs/plugin-react': 5.2.0(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) devalue: 5.6.4 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) ultrahtml: 1.6.0 - vite: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) transitivePeerDependencies: - '@types/node' - jiti @@ -16817,11 +17032,11 @@ snapshots: '@astrojs/telemetry@3.3.0': dependencies: ci-info: 4.4.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 dlv: 1.1.3 dset: 3.1.4 is-docker: 3.0.0 - is-wsl: 3.1.0 + is-wsl: 3.1.1 which-pm-runs: 1.1.0 transitivePeerDependencies: - supports-color @@ -16840,14 +17055,14 @@ snapshots: '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -16860,14 +17075,14 @@ snapshots: '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -16876,9 +17091,9 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -16886,7 +17101,7 @@ snapshots: dependencies: '@babel/parser': 8.0.0-rc.3 '@babel/types': 8.0.0-rc.3 - '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 '@types/jsesc': 2.5.1 jsesc: 3.1.0 @@ -16899,7 +17114,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.1 + browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 @@ -16948,7 +17163,7 @@ snapshots: '@babel/core': 7.28.6 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 lodash.debounce: 4.0.8 resolve: 1.22.11 transitivePeerDependencies: @@ -16959,7 +17174,7 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 lodash.debounce: 4.0.8 resolve: 1.22.11 transitivePeerDependencies: @@ -17009,7 +17224,7 @@ snapshots: dependencies: '@babel/core': 7.28.6 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.27.1 + '@babel/helper-wrap-function': 7.28.6 '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color @@ -17018,7 +17233,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.27.1 + '@babel/helper-wrap-function': 7.28.6 '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color @@ -17062,7 +17277,7 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.27.1': + '@babel/helper-wrap-function@7.28.6': dependencies: '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 @@ -17070,12 +17285,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helpers@7.28.6': + '@babel/helpers@7.29.2': dependencies: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.29.0': + '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 @@ -17153,14 +17368,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-decorators@7.22.10(@babel/core@7.29.0)': + '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.29.0) + '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color @@ -17192,7 +17405,7 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-decorators@7.22.10(@babel/core@7.29.0)': + '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 @@ -17232,7 +17445,7 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 @@ -17826,7 +18039,7 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-constant-elements@7.24.6(@babel/core@7.29.0)': + '@babel/plugin-transform-react-constant-elements@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 @@ -17839,7 +18052,7 @@ snapshots: '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color @@ -17853,13 +18066,13 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -18179,6 +18392,82 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-env@7.29.2(@babel/core@7.29.0)': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/core': 7.29.0 + '@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.29.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.6)': dependencies: '@babel/core': 7.28.6 @@ -18199,7 +18488,7 @@ snapshots: '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0) transitivePeerDependencies: @@ -18210,15 +18499,15 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color - '@babel/runtime-corejs3@7.29.0': + '@babel/runtime-corejs3@7.29.2': dependencies: - core-js-pure: 3.48.0 + core-js-pure: 3.49.0 '@babel/runtime@7.28.6': {} @@ -18227,7 +18516,7 @@ snapshots: '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@babel/traverse@7.29.0': @@ -18235,10 +18524,10 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/types': 7.29.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -18287,24 +18576,29 @@ snapshots: '@chevrotain/utils@11.1.2': {} - '@clack/core@1.1.0': + '@clack/core@1.2.0': dependencies: + fast-wrap-ansi: 0.1.6 sisteransi: 1.0.5 - '@clack/prompts@1.1.0': + '@clack/prompts@1.2.0': dependencies: - '@clack/core': 1.1.0 + '@clack/core': 1.2.0 + fast-string-width: 1.1.0 + fast-wrap-ansi: 0.1.6 sisteransi: 1.0.5 + '@colordx/core@5.0.3': {} + '@colors/colors@1.5.0': optional: true - '@commitlint/cli@20.5.0(@types/node@25.5.0)(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.3.0)(typescript@6.0.2)': + '@commitlint/cli@20.5.0(@types/node@25.5.2)(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)(typescript@6.0.2)': dependencies: '@commitlint/format': 20.5.0 '@commitlint/lint': 20.5.0 - '@commitlint/load': 20.5.0(@types/node@25.5.0)(typescript@6.0.2) - '@commitlint/read': 20.5.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.3.0) + '@commitlint/load': 20.5.0(@types/node@25.5.2)(typescript@6.0.2) + '@commitlint/read': 20.5.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0) '@commitlint/types': 20.5.0 tinyexec: 1.0.4 yargs: 17.7.2 @@ -18317,7 +18611,7 @@ snapshots: '@commitlint/config-conventional@20.5.0': dependencies: '@commitlint/types': 20.5.0 - conventional-changelog-conventionalcommits: 9.3.0 + conventional-changelog-conventionalcommits: 9.3.1 '@commitlint/config-validator@20.5.0': dependencies: @@ -18352,14 +18646,14 @@ snapshots: '@commitlint/rules': 20.5.0 '@commitlint/types': 20.5.0 - '@commitlint/load@20.5.0(@types/node@25.5.0)(typescript@6.0.2)': + '@commitlint/load@20.5.0(@types/node@25.5.2)(typescript@6.0.2)': dependencies: '@commitlint/config-validator': 20.5.0 '@commitlint/execute-rule': 20.0.0 '@commitlint/resolve-extends': 20.5.0 '@commitlint/types': 20.5.0 cosmiconfig: 9.0.1(typescript@6.0.2) - cosmiconfig-typescript-loader: 6.2.0(@types/node@25.5.0)(cosmiconfig@9.0.1(typescript@6.0.2))(typescript@6.0.2) + cosmiconfig-typescript-loader: 6.2.0(@types/node@25.5.2)(cosmiconfig@9.0.1(typescript@6.0.2))(typescript@6.0.2) is-plain-obj: 4.1.0 lodash.mergewith: 4.6.2 picocolors: 1.1.1 @@ -18372,14 +18666,14 @@ snapshots: '@commitlint/parse@20.5.0': dependencies: '@commitlint/types': 20.5.0 - conventional-changelog-angular: 8.3.0 - conventional-commits-parser: 6.3.0 + conventional-changelog-angular: 8.3.1 + conventional-commits-parser: 6.4.0 - '@commitlint/read@20.5.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.3.0)': + '@commitlint/read@20.5.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)': dependencies: '@commitlint/top-level': 20.4.3 '@commitlint/types': 20.5.0 - git-raw-commits: 5.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.3.0) + git-raw-commits: 5.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0) minimist: 1.2.8 tinyexec: 1.0.4 transitivePeerDependencies: @@ -18410,10 +18704,10 @@ snapshots: '@commitlint/types@20.5.0': dependencies: - conventional-commits-parser: 6.3.0 + conventional-commits-parser: 6.4.0 picocolors: 1.1.1 - '@compodoc/compodoc@1.2.1(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)(keycharm@0.2.0)(typescript@6.0.2)(vis-data@8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)))(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0))': + '@compodoc/compodoc@1.2.1(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)(keycharm@0.4.0)(typescript@6.0.2)(vis-data@8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)))(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0))': dependencies: '@angular-devkit/schematics': 21.1.0(chokidar@5.0.0) '@babel/core': 7.28.6 @@ -18423,7 +18717,7 @@ snapshots: '@compodoc/ngd-transformer': 2.1.3 '@polka/send-type': 0.5.2 body-parser: 2.2.2 - bootstrap.native: 5.1.6 + bootstrap.native: 5.1.10 cheerio: 1.1.2 chokidar: 5.0.0 colors: 1.4.0 @@ -18435,11 +18729,11 @@ snapshots: fast-glob: 3.3.3 fs-extra: 11.3.4 glob: 13.0.6 - handlebars: 4.7.8 + handlebars: 4.7.9 html-entities: 2.6.0 i18next: 25.7.4(typescript@6.0.2) json5: 2.2.3 - lodash: 4.17.21 + lodash: 4.18.1 loglevel: 1.9.2 loglevel-plugin-prefix: 0.8.4 lunr: 2.3.9 @@ -18457,7 +18751,7 @@ snapshots: tablesort: 5.7.0 ts-morph: 27.0.2 uuid: 11.1.0 - vis-network: 10.0.2(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)(keycharm@0.2.0)(uuid@11.1.0)(vis-data@8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)))(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)) + vis-network: 10.0.2(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)(keycharm@0.4.0)(uuid@11.1.0)(vis-data@8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)))(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)) transitivePeerDependencies: - '@egjs/hammerjs' - component-emitter @@ -18482,7 +18776,7 @@ snapshots: open: 8.4.0 proxy-middleware: 0.15.0 send: 1.2.1 - serve-index: 1.9.1 + serve-index: 1.9.2 transitivePeerDependencies: - supports-color @@ -18499,26 +18793,21 @@ snapshots: dot: 2.0.0-beta.1 fs-extra: 11.3.4 - '@conventional-changelog/git-client@2.6.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.3.0)': + '@conventional-changelog/git-client@2.6.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)': dependencies: '@simple-libs/child-process-utils': 1.0.2 '@simple-libs/stream-utils': 1.2.0 semver: 7.7.4 optionalDependencies: conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.3.0 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - optional: true + conventional-commits-parser: 6.4.0 '@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/color-helpers@5.0.2': {} + '@csstools/color-helpers@5.1.0': {} '@csstools/color-helpers@6.0.2': {} @@ -18532,9 +18821,9 @@ snapshots: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/color-helpers': 5.0.2 + '@csstools/color-helpers': 5.1.0 '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 @@ -18567,44 +18856,71 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-alpha-function@1.0.1(postcss@8.5.8)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) + '@csstools/utilities': 2.0.0(postcss@8.5.8) + postcss: 8.5.8 + '@csstools/postcss-cascade-layers@5.0.2(postcss@8.5.8)': dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) postcss: 8.5.8 postcss-selector-parser: 7.1.1 - '@csstools/postcss-color-function@4.0.10(postcss@8.5.8)': + '@csstools/postcss-color-function-display-p3-linear@1.0.1(postcss@8.5.8)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) + '@csstools/utilities': 2.0.0(postcss@8.5.8) + postcss: 8.5.8 + + '@csstools/postcss-color-function@4.0.12(postcss@8.5.8)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) + '@csstools/utilities': 2.0.0(postcss@8.5.8) + postcss: 8.5.8 + + '@csstools/postcss-color-mix-function@3.0.12(postcss@8.5.8)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 - '@csstools/postcss-color-mix-function@3.0.10(postcss@8.5.8)': + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.2(postcss@8.5.8)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 - '@csstools/postcss-color-mix-variadic-function-arguments@1.0.0(postcss@8.5.8)': + '@csstools/postcss-content-alt-text@2.0.8(postcss@8.5.8)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 - '@csstools/postcss-content-alt-text@2.0.6(postcss@8.5.8)': + '@csstools/postcss-contrast-color-function@2.0.12(postcss@8.5.8)': dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 @@ -18621,34 +18937,34 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 - '@csstools/postcss-gamut-mapping@2.0.10(postcss@8.5.8)': + '@csstools/postcss-gamut-mapping@2.0.11(postcss@8.5.8)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.8 - '@csstools/postcss-gradients-interpolation-method@5.0.10(postcss@8.5.8)': + '@csstools/postcss-gradients-interpolation-method@5.0.12(postcss@8.5.8)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 - '@csstools/postcss-hwb-function@4.0.10(postcss@8.5.8)': + '@csstools/postcss-hwb-function@4.0.12(postcss@8.5.8)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 - '@csstools/postcss-ic-unit@4.0.2(postcss@8.5.8)': + '@csstools/postcss-ic-unit@4.0.4(postcss@8.5.8)': dependencies: - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 postcss-value-parser: 4.2.0 @@ -18663,11 +18979,11 @@ snapshots: postcss: 8.5.8 postcss-selector-parser: 7.1.1 - '@csstools/postcss-light-dark-function@2.0.9(postcss@8.5.8)': + '@csstools/postcss-light-dark-function@2.0.11(postcss@8.5.8)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 @@ -18715,25 +19031,35 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 - '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.8)': + '@csstools/postcss-normalize-display-values@4.0.1(postcss@8.5.8)': dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@4.0.10(postcss@8.5.8)': + '@csstools/postcss-oklab-function@4.0.12(postcss@8.5.8)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 - '@csstools/postcss-progressive-custom-properties@4.1.0(postcss@8.5.8)': + '@csstools/postcss-position-area-property@1.0.0(postcss@8.5.8)': + dependencies: + postcss: 8.5.8 + + '@csstools/postcss-progressive-custom-properties@4.2.1(postcss@8.5.8)': dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + '@csstools/postcss-property-rule-prelude-list@1.0.0(postcss@8.5.8)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.8 + '@csstools/postcss-random-function@2.0.1(postcss@8.5.8)': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -18741,12 +19067,12 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.8 - '@csstools/postcss-relative-color-syntax@3.0.10(postcss@8.5.8)': + '@csstools/postcss-relative-color-syntax@3.0.12(postcss@8.5.8)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 @@ -18769,20 +19095,31 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.8 - '@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.8)': + '@csstools/postcss-syntax-descriptor-syntax-production@1.0.1(postcss@8.5.8)': dependencies: - '@csstools/color-helpers': 5.0.2 + '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.8 - postcss-value-parser: 4.2.0 - '@csstools/postcss-trigonometric-functions@4.0.9(postcss@8.5.8)': + '@csstools/postcss-system-ui-font-family@1.0.0(postcss@8.5.8)': dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.8 - '@csstools/postcss-unset-value@4.0.0(postcss@8.5.8)': + '@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.8)': + dependencies: + '@csstools/color-helpers': 5.1.0 + postcss: 8.5.8 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-trigonometric-functions@4.0.9(postcss@8.5.8)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.8 + + '@csstools/postcss-unset-value@4.0.0(postcss@8.5.8)': dependencies: postcss: 8.5.8 @@ -18798,76 +19135,46 @@ snapshots: dependencies: postcss: 8.5.8 - '@cypress/request@3.0.10': - dependencies: - aws-sign2: 0.7.0 - aws4: 1.13.2 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 4.0.5 - http-signature: 1.4.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - performance-now: 2.1.0 - qs: 6.14.2 - safe-buffer: 5.2.1 - tough-cookie: 5.1.2 - tunnel-agent: 0.6.0 - uuid: 8.3.2 - optional: true - - '@cypress/xvfb@1.2.4(supports-color@8.1.1)': - dependencies: - debug: 3.2.7(supports-color@8.1.1) - lodash.once: 4.1.1 - transitivePeerDependencies: - - supports-color - optional: true - '@discoveryjs/json-ext@0.5.7': {} '@discoveryjs/json-ext@0.6.3': {} - '@docsearch/core@4.6.0(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docsearch/core@4.6.2(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': optionalDependencies: '@types/react': 18.3.28 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@docsearch/css@4.6.0': {} + '@docsearch/css@4.6.2': {} - '@docsearch/react@4.6.0(@algolia/client-search@5.48.1)(@types/react@18.3.28)(algoliasearch@5.48.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.14.0)': + '@docsearch/react@4.6.2(@algolia/client-search@5.50.1)(@types/react@18.3.28)(algoliasearch@5.50.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.19.2(@algolia/client-search@5.48.1)(algoliasearch@5.48.1)(search-insights@2.14.0) - '@docsearch/core': 4.6.0(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docsearch/css': 4.6.0 + '@algolia/autocomplete-core': 1.19.2(@algolia/client-search@5.50.1)(algoliasearch@5.50.1)(search-insights@2.17.3) + '@docsearch/core': 4.6.2(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docsearch/css': 4.6.2 optionalDependencies: '@types/react': 18.3.28 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - search-insights: 2.14.0 + search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@docusaurus/babel@3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/babel@3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/core': 7.29.0 '@babel/generator': 7.29.1 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.0) '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) - '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/preset-react': 7.28.5(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@babel/runtime': 7.29.2 - '@babel/runtime-corejs3': 7.29.0 + '@babel/runtime-corejs3': 7.29.2 '@babel/traverse': 7.29.0 '@docusaurus/logger': 3.9.2 - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.3.4 tslib: 2.8.1 @@ -18880,32 +19187,32 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.9.2(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/bundler@3.9.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: '@babel/core': 7.29.0 - '@docusaurus/babel': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/babel': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/cssnano-preset': 3.9.2 '@docusaurus/logger': 3.9.2 - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.27.4)(lightningcss@1.32.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + copy-webpack-plugin: 11.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.27.7)(lightningcss@1.32.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) cssnano: 6.1.2(postcss@8.5.8) - file-loader: 6.2.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + file-loader: 6.2.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.10.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - null-loader: 4.0.1(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + mini-css-extract-plugin: 2.10.2(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + null-loader: 4.0.1(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) postcss: 8.5.8 - postcss-loader: 7.3.4(postcss@8.5.8)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - postcss-preset-env: 10.2.4(postcss@8.5.8) - terser-webpack-plugin: 5.3.16(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + postcss-loader: 7.3.4(postcss@8.5.8)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + postcss-preset-env: 10.6.1(postcss@8.5.8) + terser-webpack-plugin: 5.4.0(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) - webpackbar: 6.0.1(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) + webpackbar: 6.0.1(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -18921,15 +19228,15 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/core@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/core@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/babel': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/bundler': 3.9.2(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/babel': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/bundler': 3.9.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mdx-js/react': 3.1.1(@types/react@18.3.28)(react@19.2.4) boxen: 6.2.1 chalk: 4.1.2 @@ -18937,17 +19244,17 @@ snapshots: cli-table3: 0.6.5 combine-promises: 1.2.0 commander: 5.1.0 - core-js: 3.37.1 - detect-port: 1.5.1 + core-js: 3.49.0 + detect-port: 1.6.1 escape-html: 1.0.3 eta: 2.2.0 eval: 0.1.8 execa: 5.1.1 fs-extra: 11.3.4 html-tags: 3.3.1 - html-webpack-plugin: 5.6.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + html-webpack-plugin: 5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) leven: 3.1.0 - lodash: 4.17.21 + lodash: 4.18.1 open: 8.4.2 p-map: 4.0.0 prompts: 2.4.2 @@ -18955,7 +19262,7 @@ snapshots: react-dom: 19.2.4(react@19.2.4) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.4)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) react-router: 5.3.4(react@19.2.4) react-router-config: 5.1.1(react-router@5.3.4(react@19.2.4))(react@19.2.4) react-router-dom: 5.3.4(react@19.2.4) @@ -18964,9 +19271,9 @@ snapshots: tinypool: 1.1.1 tslib: 2.8.1 update-notifier: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 5.2.3(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + webpack-dev-server: 5.2.3(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) webpack-merge: 6.0.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -18997,16 +19304,16 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/mdx-loader@3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/mdx-loader@3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@docusaurus/logger': 3.9.2 - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mdx-js/mdx': 3.1.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 - estree-util-value-to-estree: 3.1.1 - file-loader: 6.2.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + estree-util-value-to-estree: 3.5.0 + file-loader: 6.2.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) fs-extra: 11.3.4 image-size: 2.0.2 mdast-util-mdx: 3.0.0 @@ -19014,7 +19321,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) rehype-raw: 7.0.0 - remark-directive: 3.0.0 + remark-directive: 3.0.1 remark-emoji: 4.0.1 remark-frontmatter: 5.0.0 remark-gfm: 4.0.1 @@ -19022,9 +19329,9 @@ snapshots: tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.1.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) vfile: 6.0.3 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - '@swc/core' - esbuild @@ -19032,11 +19339,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/module-type-aliases@3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/history': 4.7.11 - '@types/react': 19.2.14 + '@types/react': 18.3.28 '@types/react-router-config': 5.0.11 '@types/react-router-dom': 5.3.3 react: 19.2.4 @@ -19050,21 +19357,21 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-content-blog@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.3.4 - lodash: 4.17.21 + lodash: 4.18.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) schema-dts: 1.1.5 @@ -19072,7 +19379,7 @@ snapshots: tslib: 2.8.1 unist-util-visit: 5.1.0 utility-types: 3.11.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -19091,28 +19398,28 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/module-type-aliases': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/module-type-aliases': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.3.4 js-yaml: 4.1.1 - lodash: 4.17.21 + lodash: 4.18.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) schema-dts: 1.1.5 tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -19131,18 +19438,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-pages@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-content-pages@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fs-extra: 11.3.4 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -19161,12 +19468,12 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-css-cascade-layers@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-css-cascade-layers@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -19188,11 +19495,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-debug@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-debug@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fs-extra: 11.3.4 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -19216,11 +19523,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-analytics@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-google-analytics@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 @@ -19242,11 +19549,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-gtag@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-google-gtag@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/gtag.js': 0.0.12 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -19269,11 +19576,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-google-tag-manager@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 @@ -19295,18 +19602,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-sitemap@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-sitemap@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fs-extra: 11.3.4 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - sitemap: 7.1.2 + sitemap: 7.1.3 tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -19326,18 +19633,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-svgr@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-svgr@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@svgr/core': 8.1.0(typescript@6.0.2) '@svgr/webpack': 8.1.0(typescript@6.0.2) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -19356,23 +19663,23 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/preset-classic@3.9.2(@algolia/client-search@5.48.1)(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/react@18.3.28)(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.14.0)(typescript@6.0.2)': - dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-css-cascade-layers': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-debug': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-google-analytics': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-google-gtag': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-google-tag-manager': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-sitemap': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-svgr': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/theme-classic': 3.9.2(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/react@18.3.28)(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/theme-search-algolia': 3.9.2(@algolia/client-search@5.48.1)(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/react@18.3.28)(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.14.0)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/preset-classic@3.9.2(@algolia/client-search@5.50.1)(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/react@18.3.28)(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2)': + dependencies: + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-css-cascade-layers': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-debug': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-google-analytics': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-google-gtag': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-google-tag-manager': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-sitemap': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-svgr': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/theme-classic': 3.9.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/react@18.3.28)(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/theme-search-algolia': 3.9.2(@algolia/client-search@5.50.1)(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/react@18.3.28)(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) transitivePeerDependencies: @@ -19401,25 +19708,25 @@ snapshots: '@types/react': 19.2.14 react: 19.2.4 - '@docusaurus/theme-classic@3.9.2(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/react@18.3.28)(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/theme-classic@3.9.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/react@18.3.28)(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/module-type-aliases': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/module-type-aliases': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-translations': 3.9.2 - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mdx-js/react': 3.1.1(@types/react@18.3.28)(react@19.2.4) clsx: 2.1.1 infima: 0.2.0-alpha.45 - lodash: 4.17.21 + lodash: 4.18.1 nprogress: 0.2.0 postcss: 8.5.8 prism-react-renderer: 2.4.1(react@19.2.4) @@ -19427,7 +19734,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) react-router-dom: 5.3.4(react@19.2.4) - rtlcss: 4.1.1 + rtlcss: 4.3.0 tslib: 2.8.1 utility-types: 3.11.0 transitivePeerDependencies: @@ -19448,15 +19755,15 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/module-type-aliases': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/module-type-aliases': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/history': 4.7.11 - '@types/react': 19.2.14 + '@types/react': 18.3.28 '@types/react-router-config': 5.0.11 clsx: 2.1.1 parse-numeric-range: 1.3.0 @@ -19472,22 +19779,22 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.9.2(@algolia/client-search@5.48.1)(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/react@18.3.28)(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.14.0)(typescript@6.0.2)': + '@docusaurus/theme-search-algolia@3.9.2(@algolia/client-search@5.50.1)(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/react@18.3.28)(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2)': dependencies: - '@docsearch/react': 4.6.0(@algolia/client-search@5.48.1)(@types/react@18.3.28)(algoliasearch@5.48.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.14.0) - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docsearch/react': 4.6.2(@algolia/client-search@5.50.1)(@types/react@18.3.28)(algoliasearch@5.50.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4))(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-translations': 3.9.2 - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - algoliasearch: 5.48.1 - algoliasearch-helper: 3.28.0(algoliasearch@5.48.1) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + algoliasearch: 5.50.1 + algoliasearch-helper: 3.28.1(algoliasearch@5.50.1) clsx: 2.1.1 eta: 2.2.0 fs-extra: 11.3.4 - lodash: 4.17.21 + lodash: 4.18.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 @@ -19520,19 +19827,19 @@ snapshots: '@docusaurus/tsconfig@3.9.2': {} - '@docusaurus/types@3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/types@3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@mdx-js/mdx': 3.1.1 '@types/history': 4.7.11 - '@types/mdast': 4.0.3 - '@types/react': 19.2.14 + '@types/mdast': 4.0.4 + '@types/react': 18.3.28 commander: 5.1.0 - joi: 17.13.1 + joi: 17.13.3 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)' utility-types: 3.11.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -19541,9 +19848,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/utils-common@3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' @@ -19554,15 +19861,15 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/utils-validation@3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@docusaurus/logger': 3.9.2 - '@docusaurus/utils': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fs-extra: 11.3.4 - joi: 17.13.1 + joi: 17.13.3 js-yaml: 4.1.1 - lodash: 4.17.21 + lodash: 4.18.1 tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' @@ -19573,29 +19880,29 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/utils@3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@docusaurus/logger': 3.9.2 - '@docusaurus/types': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) escape-string-regexp: 4.0.0 execa: 5.1.1 - file-loader: 6.2.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + file-loader: 6.2.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) fs-extra: 11.3.4 github-slugger: 1.5.0 globby: 11.1.0 gray-matter: 4.0.3 jiti: 1.21.7 js-yaml: 4.1.1 - lodash: 4.17.21 + lodash: 4.18.1 micromatch: 4.0.8 p-queue: 6.6.2 prompts: 2.4.2 resolve-pathname: 3.0.0 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) utility-types: 3.11.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - '@swc/core' - esbuild @@ -19609,19 +19916,15 @@ snapshots: dependencies: '@types/hammerjs': 2.0.46 - '@emnapi/core@1.7.1': - dependencies: - '@emnapi/wasi-threads': 1.1.0 - tslib: 2.8.1 - '@emnapi/core@1.9.1': dependencies: '@emnapi/wasi-threads': 1.2.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.7.1': + '@emnapi/core@1.9.2': dependencies: + '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 '@emnapi/runtime@1.9.1': @@ -19629,7 +19932,7 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.1.0': + '@emnapi/runtime@1.9.2': dependencies: tslib: 2.8.1 @@ -19638,212 +19941,218 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + '@esbuild/aix-ppc64@0.27.3': optional: true - '@esbuild/aix-ppc64@0.27.4': + '@esbuild/aix-ppc64@0.27.7': optional: true '@esbuild/android-arm64@0.27.3': optional: true - '@esbuild/android-arm64@0.27.4': + '@esbuild/android-arm64@0.27.7': optional: true '@esbuild/android-arm@0.27.3': optional: true - '@esbuild/android-arm@0.27.4': + '@esbuild/android-arm@0.27.7': optional: true '@esbuild/android-x64@0.27.3': optional: true - '@esbuild/android-x64@0.27.4': + '@esbuild/android-x64@0.27.7': optional: true '@esbuild/darwin-arm64@0.27.3': optional: true - '@esbuild/darwin-arm64@0.27.4': + '@esbuild/darwin-arm64@0.27.7': optional: true '@esbuild/darwin-x64@0.27.3': optional: true - '@esbuild/darwin-x64@0.27.4': + '@esbuild/darwin-x64@0.27.7': optional: true '@esbuild/freebsd-arm64@0.27.3': optional: true - '@esbuild/freebsd-arm64@0.27.4': + '@esbuild/freebsd-arm64@0.27.7': optional: true '@esbuild/freebsd-x64@0.27.3': optional: true - '@esbuild/freebsd-x64@0.27.4': + '@esbuild/freebsd-x64@0.27.7': optional: true '@esbuild/linux-arm64@0.27.3': optional: true - '@esbuild/linux-arm64@0.27.4': + '@esbuild/linux-arm64@0.27.7': optional: true '@esbuild/linux-arm@0.27.3': optional: true - '@esbuild/linux-arm@0.27.4': + '@esbuild/linux-arm@0.27.7': optional: true '@esbuild/linux-ia32@0.27.3': optional: true - '@esbuild/linux-ia32@0.27.4': + '@esbuild/linux-ia32@0.27.7': optional: true '@esbuild/linux-loong64@0.27.3': optional: true - '@esbuild/linux-loong64@0.27.4': + '@esbuild/linux-loong64@0.27.7': optional: true '@esbuild/linux-mips64el@0.27.3': optional: true - '@esbuild/linux-mips64el@0.27.4': + '@esbuild/linux-mips64el@0.27.7': optional: true '@esbuild/linux-ppc64@0.27.3': optional: true - '@esbuild/linux-ppc64@0.27.4': + '@esbuild/linux-ppc64@0.27.7': optional: true '@esbuild/linux-riscv64@0.27.3': optional: true - '@esbuild/linux-riscv64@0.27.4': + '@esbuild/linux-riscv64@0.27.7': optional: true '@esbuild/linux-s390x@0.27.3': optional: true - '@esbuild/linux-s390x@0.27.4': + '@esbuild/linux-s390x@0.27.7': optional: true '@esbuild/linux-x64@0.27.3': optional: true - '@esbuild/linux-x64@0.27.4': + '@esbuild/linux-x64@0.27.7': optional: true '@esbuild/netbsd-arm64@0.27.3': optional: true - '@esbuild/netbsd-arm64@0.27.4': + '@esbuild/netbsd-arm64@0.27.7': optional: true '@esbuild/netbsd-x64@0.27.3': optional: true - '@esbuild/netbsd-x64@0.27.4': + '@esbuild/netbsd-x64@0.27.7': optional: true '@esbuild/openbsd-arm64@0.27.3': optional: true - '@esbuild/openbsd-arm64@0.27.4': + '@esbuild/openbsd-arm64@0.27.7': optional: true '@esbuild/openbsd-x64@0.27.3': optional: true - '@esbuild/openbsd-x64@0.27.4': + '@esbuild/openbsd-x64@0.27.7': optional: true '@esbuild/openharmony-arm64@0.27.3': optional: true - '@esbuild/openharmony-arm64@0.27.4': + '@esbuild/openharmony-arm64@0.27.7': optional: true '@esbuild/sunos-x64@0.27.3': optional: true - '@esbuild/sunos-x64@0.27.4': + '@esbuild/sunos-x64@0.27.7': optional: true '@esbuild/win32-arm64@0.27.3': optional: true - '@esbuild/win32-arm64@0.27.4': + '@esbuild/win32-arm64@0.27.7': optional: true '@esbuild/win32-ia32@0.27.3': optional: true - '@esbuild/win32-ia32@0.27.4': + '@esbuild/win32-ia32@0.27.7': optional: true '@esbuild/win32-x64@0.27.3': optional: true - '@esbuild/win32-x64@0.27.4': + '@esbuild/win32-x64@0.27.7': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.1.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.2.0(jiti@2.6.1))': dependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.3': + '@eslint/config-array@0.23.4': dependencies: - '@eslint/object-schema': 3.0.3 - debug: 4.4.3(supports-color@8.1.1) - minimatch: 10.2.4 + '@eslint/object-schema': 3.0.4 + debug: 4.4.3 + minimatch: 10.2.5 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.3': + '@eslint/config-helpers@0.5.4': dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.0 - '@eslint/core@1.1.1': + '@eslint/core@1.2.0': dependencies: '@types/json-schema': 7.0.15 '@eslint/eslintrc@3.3.5': dependencies: ajv: 6.14.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.1 minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@10.0.1(eslint@10.1.0(jiti@2.6.1))': + '@eslint/js@10.0.1(eslint@10.2.0(jiti@2.6.1))': optionalDependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) - '@eslint/object-schema@3.0.3': {} + '@eslint/object-schema@3.0.4': {} - '@eslint/plugin-kit@0.6.1': + '@eslint/plugin-kit@0.7.0': dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.0 levn: 0.4.1 '@exodus/bytes@1.15.0': {} + '@gar/promise-retry@1.0.3': {} + '@hapi/address@5.1.1': dependencies: '@hapi/hoek': 11.0.7 @@ -19869,9 +20178,9 @@ snapshots: '@harperfast/extended-iterable@1.0.3': optional: true - '@hono/node-server@1.19.9(hono@4.11.5)': + '@hono/node-server@1.19.12(hono@4.12.10)': dependencies: - hono: 4.11.5 + hono: 4.12.10 '@humanfs/core@0.19.1': {} @@ -19890,7 +20199,7 @@ snapshots: dependencies: '@antfu/install-pkg': 1.1.0 '@iconify/types': 2.0.0 - mlly: 1.8.1 + mlly: 1.8.2 '@img/colour@1.1.0': {} @@ -19976,7 +20285,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.7.1 + '@emnapi/runtime': 1.9.2 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -19990,137 +20299,134 @@ snapshots: '@inquirer/ansi@1.0.2': {} - '@inquirer/checkbox@4.3.2(@types/node@25.5.0)': + '@inquirer/checkbox@4.3.2(@types/node@25.5.2)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.5.0) + '@inquirer/core': 10.3.2(@types/node@25.5.2) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/type': 3.0.10(@types/node@25.5.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/confirm@5.1.21(@types/node@25.5.0)': + '@inquirer/confirm@5.1.21(@types/node@25.5.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.0) - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/core@10.3.2(@types/node@25.5.0)': + '@inquirer/core@10.3.2(@types/node@25.5.2)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/type': 3.0.10(@types/node@25.5.2) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/editor@4.2.23(@types/node@25.5.0)': + '@inquirer/editor@4.2.23(@types/node@25.5.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.0) - '@inquirer/external-editor': 1.0.3(@types/node@25.5.0) - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/external-editor': 1.0.3(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/expand@4.0.23(@types/node@25.5.0)': + '@inquirer/expand@4.0.23(@types/node@25.5.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.0) - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/external-editor@1.0.3(@types/node@25.5.0)': + '@inquirer/external-editor@1.0.3(@types/node@25.5.2)': dependencies: chardet: 2.1.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 '@inquirer/figures@1.0.15': {} - '@inquirer/input@4.3.1(@types/node@25.5.0)': + '@inquirer/input@4.3.1(@types/node@25.5.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.0) - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/number@3.0.23(@types/node@25.5.0)': + '@inquirer/number@3.0.23(@types/node@25.5.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.0) - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/password@4.0.23(@types/node@25.5.0)': + '@inquirer/password@4.0.23(@types/node@25.5.2)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.5.0) - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) optionalDependencies: - '@types/node': 25.5.0 - - '@inquirer/prompts@7.10.1(@types/node@25.5.0)': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@25.5.0) - '@inquirer/confirm': 5.1.21(@types/node@25.5.0) - '@inquirer/editor': 4.2.23(@types/node@25.5.0) - '@inquirer/expand': 4.0.23(@types/node@25.5.0) - '@inquirer/input': 4.3.1(@types/node@25.5.0) - '@inquirer/number': 3.0.23(@types/node@25.5.0) - '@inquirer/password': 4.0.23(@types/node@25.5.0) - '@inquirer/rawlist': 4.1.11(@types/node@25.5.0) - '@inquirer/search': 3.2.2(@types/node@25.5.0) - '@inquirer/select': 4.4.2(@types/node@25.5.0) + '@types/node': 25.5.2 + + '@inquirer/prompts@7.10.1(@types/node@25.5.2)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@25.5.2) + '@inquirer/confirm': 5.1.21(@types/node@25.5.2) + '@inquirer/editor': 4.2.23(@types/node@25.5.2) + '@inquirer/expand': 4.0.23(@types/node@25.5.2) + '@inquirer/input': 4.3.1(@types/node@25.5.2) + '@inquirer/number': 3.0.23(@types/node@25.5.2) + '@inquirer/password': 4.0.23(@types/node@25.5.2) + '@inquirer/rawlist': 4.1.11(@types/node@25.5.2) + '@inquirer/search': 3.2.2(@types/node@25.5.2) + '@inquirer/select': 4.4.2(@types/node@25.5.2) optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/rawlist@4.1.11(@types/node@25.5.0)': + '@inquirer/rawlist@4.1.11(@types/node@25.5.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.0) - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/core': 10.3.2(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/search@3.2.2(@types/node@25.5.0)': + '@inquirer/search@3.2.2(@types/node@25.5.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.5.0) + '@inquirer/core': 10.3.2(@types/node@25.5.2) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/type': 3.0.10(@types/node@25.5.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/select@4.4.2(@types/node@25.5.0)': + '@inquirer/select@4.4.2(@types/node@25.5.2)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.5.0) + '@inquirer/core': 10.3.2(@types/node@25.5.2) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/type': 3.0.10(@types/node@25.5.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@inquirer/type@3.0.10(@types/node@25.5.0)': + '@inquirer/type@3.0.10(@types/node@25.5.2)': optionalDependencies: - '@types/node': 25.5.0 - - '@ioredis/commands@1.5.1': - optional: true + '@types/node': 25.5.2 '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -20134,76 +20440,76 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 3.14.2 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.3': {} - '@jest/console@30.0.5': + '@jest/console@30.3.0': dependencies: - '@jest/types': 30.0.5 - '@types/node': 25.5.0 + '@jest/types': 30.3.0 + '@types/node': 25.5.2 chalk: 4.1.2 - jest-message-util: 30.0.5 - jest-util: 30.0.5 + jest-message-util: 30.3.0 + jest-util: 30.3.0 slash: 3.0.0 - '@jest/diff-sequences@30.0.1': {} + '@jest/diff-sequences@30.3.0': {} - '@jest/environment@30.0.5': + '@jest/environment@30.3.0': dependencies: - '@jest/fake-timers': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 25.5.0 - jest-mock: 30.0.5 + '@jest/fake-timers': 30.3.0 + '@jest/types': 30.3.0 + '@types/node': 25.5.2 + jest-mock: 30.3.0 - '@jest/expect-utils@30.0.5': + '@jest/expect-utils@30.3.0': dependencies: - '@jest/get-type': 30.0.1 + '@jest/get-type': 30.1.0 - '@jest/expect@30.0.5': + '@jest/expect@30.3.0': dependencies: - expect: 30.0.5 - jest-snapshot: 30.0.5 + expect: 30.3.0 + jest-snapshot: 30.3.0 transitivePeerDependencies: - supports-color - '@jest/fake-timers@30.0.5': + '@jest/fake-timers@30.3.0': dependencies: - '@jest/types': 30.0.5 - '@sinonjs/fake-timers': 13.0.5 - '@types/node': 25.5.0 - jest-message-util: 30.0.5 - jest-mock: 30.0.5 - jest-util: 30.0.5 + '@jest/types': 30.3.0 + '@sinonjs/fake-timers': 15.3.0 + '@types/node': 25.5.2 + jest-message-util: 30.3.0 + jest-mock: 30.3.0 + jest-util: 30.3.0 - '@jest/get-type@30.0.1': {} + '@jest/get-type@30.1.0': {} - '@jest/globals@30.0.5': + '@jest/globals@30.3.0': dependencies: - '@jest/environment': 30.0.5 - '@jest/expect': 30.0.5 - '@jest/types': 30.0.5 - jest-mock: 30.0.5 + '@jest/environment': 30.3.0 + '@jest/expect': 30.3.0 + '@jest/types': 30.3.0 + jest-mock: 30.3.0 transitivePeerDependencies: - supports-color '@jest/pattern@30.0.1': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 jest-regex-util: 30.0.1 - '@jest/reporters@30.0.5': + '@jest/reporters@30.3.0': dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 30.0.5 - '@jest/test-result': 30.0.5 - '@jest/transform': 30.0.5 - '@jest/types': 30.0.5 + '@jest/console': 30.3.0 + '@jest/test-result': 30.3.0 + '@jest/transform': 30.3.0 + '@jest/types': 30.3.0 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 25.5.0 + '@types/node': 25.5.2 chalk: 4.1.2 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 exit-x: 0.2.2 glob: 10.5.0 graceful-fs: 4.2.11 @@ -20212,26 +20518,26 @@ snapshots: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - jest-message-util: 30.0.5 - jest-util: 30.0.5 - jest-worker: 30.0.5 + jest-message-util: 30.3.0 + jest-util: 30.3.0 + jest-worker: 30.3.0 slash: 3.0.0 string-length: 4.0.2 - v8-to-istanbul: 9.0.1 + v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color '@jest/schemas@29.6.3': dependencies: - '@sinclair/typebox': 0.27.8 + '@sinclair/typebox': 0.27.10 '@jest/schemas@30.0.5': dependencies: - '@sinclair/typebox': 0.34.38 + '@sinclair/typebox': 0.34.49 - '@jest/snapshot-utils@30.0.5': + '@jest/snapshot-utils@30.3.0': dependencies: - '@jest/types': 30.0.5 + '@jest/types': 30.3.0 chalk: 4.1.2 graceful-fs: 4.2.11 natural-compare: 1.4.0 @@ -20242,34 +20548,33 @@ snapshots: callsites: 3.1.0 graceful-fs: 4.2.11 - '@jest/test-result@30.0.5': + '@jest/test-result@30.3.0': dependencies: - '@jest/console': 30.0.5 - '@jest/types': 30.0.5 + '@jest/console': 30.3.0 + '@jest/types': 30.3.0 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 - '@jest/test-sequencer@30.0.5': + '@jest/test-sequencer@30.3.0': dependencies: - '@jest/test-result': 30.0.5 + '@jest/test-result': 30.3.0 graceful-fs: 4.2.11 - jest-haste-map: 30.0.5 + jest-haste-map: 30.3.0 slash: 3.0.0 - '@jest/transform@30.0.5': + '@jest/transform@30.3.0': dependencies: '@babel/core': 7.29.0 - '@jest/types': 30.0.5 + '@jest/types': 30.3.0 '@jridgewell/trace-mapping': 0.3.31 - babel-plugin-istanbul: 7.0.0 + babel-plugin-istanbul: 7.0.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-haste-map: 30.0.5 + jest-haste-map: 30.3.0 jest-regex-util: 30.0.1 - jest-util: 30.0.5 - micromatch: 4.0.8 + jest-util: 30.3.0 pirates: 4.0.7 slash: 3.0.0 write-file-atomic: 5.0.1 @@ -20281,35 +20586,35 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 25.5.0 - '@types/yargs': 17.0.33 + '@types/node': 25.5.2 + '@types/yargs': 17.0.35 chalk: 4.1.2 - '@jest/types@30.0.5': + '@jest/types@30.3.0': dependencies: '@jest/pattern': 30.0.1 '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 25.5.0 - '@types/yargs': 17.0.33 + '@types/node': 25.5.2 + '@types/yargs': 17.0.35 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.12': + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': dependencies: - '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/source-map@0.3.5': + '@jridgewell/source-map@0.3.11': dependencies: - '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.5': {} @@ -20319,13 +20624,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping@0.3.9': + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - optional: true + tslib: 2.8.1 - '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': + '@jsonjoy.com/base64@17.67.0(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -20333,10 +20636,74 @@ snapshots: dependencies: tslib: 2.8.1 + '@jsonjoy.com/buffers@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': dependencies: tslib: 2.8.1 + '@jsonjoy.com/codegen@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-core@4.57.1(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) + thingies: 2.6.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-fsa@4.57.1(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) + thingies: 2.6.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-builtins@4.57.1(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-to-fsa@4.57.1(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-fsa': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-utils@4.57.1(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node@4.57.1(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.57.1(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.6.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-print@4.57.1(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-snapshot@4.57.1(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/json-pack': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': dependencies: '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) @@ -20345,7 +20712,19 @@ snapshots: '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) hyperdyperid: 1.2.0 - thingies: 2.5.0(tslib@2.8.1) + thingies: 2.6.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.6.0(tslib@2.8.1) tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 @@ -20355,18 +20734,29 @@ snapshots: '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) tslib: 2.8.1 + '@jsonjoy.com/json-pointer@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': dependencies: '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) tslib: 2.8.1 - '@leichtgewicht/ip-codec@2.0.4': {} + '@jsonjoy.com/util@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@25.5.0))(@types/node@25.5.0)(listr2@9.0.5)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@25.5.2))(@types/node@25.5.2)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.10.1(@types/node@25.5.0) - '@inquirer/type': 3.0.10(@types/node@25.5.0) + '@inquirer/prompts': 7.10.1(@types/node@25.5.2) + '@inquirer/type': 3.0.10(@types/node@25.5.2) listr2: 9.0.5 transitivePeerDependencies: - '@types/node' @@ -20397,22 +20787,22 @@ snapshots: '@mdx-js/mdx@3.1.1': dependencies: '@types/estree': 1.0.8 - '@types/estree-jsx': 1.0.1 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdx': 2.0.8 + '@types/mdx': 2.0.13 acorn: 8.16.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-util-scope: 1.0.0 estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.0 + hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 recma-jsx: 1.0.1(acorn@8.16.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 - remark-mdx: 3.0.0 + remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 source-map: 0.7.6 @@ -20426,319 +20816,192 @@ snapshots: '@mdx-js/react@3.1.1(@types/react@18.3.28)(react@19.2.4)': dependencies: - '@types/mdx': 2.0.8 + '@types/mdx': 2.0.13 '@types/react': 18.3.28 react: 19.2.4 '@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@types/mdx': 2.0.8 + '@types/mdx': 2.0.13 '@types/react': 19.2.14 react: 19.2.4 - '@mermaid-js/parser@1.0.1': + '@mermaid-js/parser@1.1.0': dependencies: langium: 4.2.1 '@modelcontextprotocol/sdk@1.26.0(zod@4.3.6)': dependencies: - '@hono/node-server': 1.19.9(hono@4.11.5) + '@hono/node-server': 1.19.12(hono@4.12.10) ajv: 8.18.0 ajv-formats: 3.0.1(ajv@8.18.0) content-type: 1.0.5 cors: 2.8.6 cross-spawn: 7.0.6 eventsource: 3.0.7 - eventsource-parser: 3.0.3 + eventsource-parser: 3.0.6 express: 5.2.1 - express-rate-limit: 8.3.1(express@5.2.1) - hono: 4.11.5 - jose: 6.1.3 + express-rate-limit: 8.3.2(express@5.2.1) + hono: 4.12.10 + jose: 6.2.2 json-schema-typed: 8.0.2 - pkce-challenge: 5.0.0 + pkce-challenge: 5.0.1 raw-body: 3.0.2 zod: 4.3.6 - zod-to-json-schema: 3.25.1(zod@4.3.6) + zod-to-json-schema: 3.25.2(zod@4.3.6) transitivePeerDependencies: - supports-color - '@module-federation/bridge-react-webpack-plugin@0.23.0': + '@module-federation/bridge-react-webpack-plugin@2.3.1(node-fetch@2.7.0(encoding@0.1.13))': dependencies: - '@module-federation/sdk': 0.23.0 + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) '@types/semver': 7.5.8 semver: 7.6.3 - - '@module-federation/bridge-react-webpack-plugin@2.1.0': - dependencies: - '@module-federation/sdk': 2.1.0 - '@types/semver': 7.5.8 - semver: 7.6.3 - - '@module-federation/cli@0.23.0(typescript@6.0.2)': - dependencies: - '@module-federation/dts-plugin': 0.23.0(typescript@6.0.2) - '@module-federation/sdk': 0.23.0 - chalk: 3.0.0 - commander: 11.1.0 - jiti: 2.4.2 transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - typescript - - utf-8-validate - - vue-tsc + - node-fetch - '@module-federation/cli@2.1.0(typescript@6.0.2)': + '@module-federation/cli@2.3.1(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2)': dependencies: - '@module-federation/dts-plugin': 2.1.0(typescript@6.0.2) - '@module-federation/sdk': 2.1.0 + '@module-federation/dts-plugin': 2.3.1(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) chalk: 3.0.0 commander: 11.1.0 jiti: 2.4.2 transitivePeerDependencies: - bufferutil - debug - - supports-color + - node-fetch - typescript - utf-8-validate - vue-tsc - '@module-federation/data-prefetch@0.23.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@module-federation/data-prefetch@2.3.1(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@module-federation/runtime': 0.23.0 - '@module-federation/sdk': 0.23.0 - fs-extra: 9.1.0 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - - '@module-federation/data-prefetch@2.1.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@module-federation/runtime': 2.1.0 - '@module-federation/sdk': 2.1.0 + '@module-federation/runtime': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) fs-extra: 9.1.0 optionalDependencies: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - - '@module-federation/dts-plugin@0.23.0(typescript@6.0.2)': - dependencies: - '@module-federation/error-codes': 0.23.0 - '@module-federation/managers': 0.23.0 - '@module-federation/sdk': 0.23.0 - '@module-federation/third-party-dts-extractor': 0.23.0 - adm-zip: 0.5.16 - ansi-colors: 4.1.3 - axios: 1.13.6(debug@4.4.3) - chalk: 3.0.0 - fs-extra: 9.1.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.3.0 - typescript: 6.0.2 - ws: 8.18.0 transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate + - node-fetch - '@module-federation/dts-plugin@2.1.0(typescript@6.0.2)': + '@module-federation/dts-plugin@2.3.1(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2)': dependencies: - '@module-federation/error-codes': 2.1.0 - '@module-federation/managers': 2.1.0 - '@module-federation/sdk': 2.1.0 - '@module-federation/third-party-dts-extractor': 2.1.0 - adm-zip: 0.5.16 + '@module-federation/error-codes': 2.3.1 + '@module-federation/managers': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/third-party-dts-extractor': 2.3.1 + adm-zip: 0.5.17 ansi-colors: 4.1.3 - axios: 1.13.6(debug@4.4.3) - chalk: 3.0.0 + axios: 1.13.5 fs-extra: 9.1.0 isomorphic-ws: 5.0.0(ws@8.18.0) - lodash.clonedeepwith: 4.5.0 - log4js: 6.9.1 node-schedule: 2.1.1 - rambda: 9.3.0 typescript: 6.0.2 ws: 8.18.0 transitivePeerDependencies: - bufferutil - debug - - supports-color - - utf-8-validate - - '@module-federation/enhanced@0.23.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.23.0 - '@module-federation/cli': 0.23.0(typescript@6.0.2) - '@module-federation/data-prefetch': 0.23.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@module-federation/dts-plugin': 0.23.0(typescript@6.0.2) - '@module-federation/error-codes': 0.23.0 - '@module-federation/inject-external-runtime-core-plugin': 0.23.0(@module-federation/runtime-tools@0.23.0) - '@module-federation/managers': 0.23.0 - '@module-federation/manifest': 0.23.0(typescript@6.0.2) - '@module-federation/rspack': 0.23.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(typescript@6.0.2) - '@module-federation/runtime-tools': 0.23.0 - '@module-federation/sdk': 0.23.0 - btoa: 1.2.1 - schema-utils: 4.3.3 - upath: 2.0.1 - optionalDependencies: - typescript: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) - transitivePeerDependencies: - - '@rspack/core' - - bufferutil - - debug - - react - - react-dom - - supports-color + - node-fetch - utf-8-validate - '@module-federation/enhanced@2.1.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 2.1.0 - '@module-federation/cli': 2.1.0(typescript@6.0.2) - '@module-federation/data-prefetch': 2.1.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@module-federation/dts-plugin': 2.1.0(typescript@6.0.2) - '@module-federation/error-codes': 2.1.0 - '@module-federation/inject-external-runtime-core-plugin': 2.1.0(@module-federation/runtime-tools@2.1.0) - '@module-federation/managers': 2.1.0 - '@module-federation/manifest': 2.1.0(typescript@6.0.2) - '@module-federation/rspack': 2.1.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(typescript@6.0.2) - '@module-federation/runtime-tools': 2.1.0 - '@module-federation/sdk': 2.1.0 - btoa: 1.2.1 + '@module-federation/enhanced@2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/cli': 2.3.1(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2) + '@module-federation/data-prefetch': 2.3.1(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@module-federation/dts-plugin': 2.3.1(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2) + '@module-federation/error-codes': 2.3.1 + '@module-federation/inject-external-runtime-core-plugin': 2.3.1(@module-federation/runtime-tools@2.3.1) + '@module-federation/managers': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/manifest': 2.3.1(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2) + '@module-federation/rspack': 2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2) + '@module-federation/runtime-tools': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/webpack-bundler-runtime': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) schema-utils: 4.3.3 + tapable: 2.3.0 upath: 2.0.1 optionalDependencies: typescript: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - '@rspack/core' - bufferutil - debug + - node-fetch - react - react-dom - - supports-color - utf-8-validate '@module-federation/error-codes@0.21.6': {} - '@module-federation/error-codes@0.23.0': {} + '@module-federation/error-codes@2.3.1': {} - '@module-federation/error-codes@2.1.0': {} - - '@module-federation/inject-external-runtime-core-plugin@0.23.0(@module-federation/runtime-tools@0.23.0)': + '@module-federation/inject-external-runtime-core-plugin@2.3.1(@module-federation/runtime-tools@2.3.1)': dependencies: - '@module-federation/runtime-tools': 0.23.0 + '@module-federation/runtime-tools': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) - '@module-federation/inject-external-runtime-core-plugin@2.1.0(@module-federation/runtime-tools@2.1.0)': + '@module-federation/managers@2.3.1(node-fetch@2.7.0(encoding@0.1.13))': dependencies: - '@module-federation/runtime-tools': 2.1.0 - - '@module-federation/managers@0.23.0': - dependencies: - '@module-federation/sdk': 0.23.0 - find-pkg: 2.0.0 - fs-extra: 9.1.0 - - '@module-federation/managers@2.1.0': - dependencies: - '@module-federation/sdk': 2.1.0 + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) find-pkg: 2.0.0 fs-extra: 9.1.0 - - '@module-federation/manifest@0.23.0(typescript@6.0.2)': - dependencies: - '@module-federation/dts-plugin': 0.23.0(typescript@6.0.2) - '@module-federation/managers': 0.23.0 - '@module-federation/sdk': 0.23.0 - chalk: 3.0.0 - find-pkg: 2.0.0 transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - typescript - - utf-8-validate - - vue-tsc + - node-fetch - '@module-federation/manifest@2.1.0(typescript@6.0.2)': + '@module-federation/manifest@2.3.1(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2)': dependencies: - '@module-federation/dts-plugin': 2.1.0(typescript@6.0.2) - '@module-federation/managers': 2.1.0 - '@module-federation/sdk': 2.1.0 + '@module-federation/dts-plugin': 2.3.1(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2) + '@module-federation/managers': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) chalk: 3.0.0 find-pkg: 2.0.0 transitivePeerDependencies: - bufferutil - debug - - supports-color + - node-fetch - typescript - utf-8-validate - vue-tsc - '@module-federation/node@2.7.28(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4))': + '@module-federation/node@2.7.39(@rspack/core@1.6.8(@swc/helpers@0.5.21))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7))': dependencies: - '@module-federation/enhanced': 0.23.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - '@module-federation/runtime': 0.23.0 - '@module-federation/sdk': 0.23.0 - btoa: 1.2.1 + '@module-federation/enhanced': 2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@module-federation/runtime': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) encoding: 0.1.13 node-fetch: 2.7.0(encoding@0.1.13) - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + tapable: 2.3.0 optionalDependencies: - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - '@rspack/core' - bufferutil - debug - - supports-color + - react + - react-dom - typescript - utf-8-validate - vue-tsc - '@module-federation/rspack@0.23.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(typescript@6.0.2)': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.23.0 - '@module-federation/dts-plugin': 0.23.0(typescript@6.0.2) - '@module-federation/inject-external-runtime-core-plugin': 0.23.0(@module-federation/runtime-tools@0.23.0) - '@module-federation/managers': 0.23.0 - '@module-federation/manifest': 0.23.0(typescript@6.0.2) - '@module-federation/runtime-tools': 0.23.0 - '@module-federation/sdk': 0.23.0 - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - btoa: 1.2.1 - optionalDependencies: - typescript: 6.0.2 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - '@module-federation/rspack@2.1.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(typescript@6.0.2)': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 2.1.0 - '@module-federation/dts-plugin': 2.1.0(typescript@6.0.2) - '@module-federation/inject-external-runtime-core-plugin': 2.1.0(@module-federation/runtime-tools@2.1.0) - '@module-federation/managers': 2.1.0 - '@module-federation/manifest': 2.1.0(typescript@6.0.2) - '@module-federation/runtime-tools': 2.1.0 - '@module-federation/sdk': 2.1.0 - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - btoa: 1.2.1 + '@module-federation/rspack@2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2)': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/dts-plugin': 2.3.1(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2) + '@module-federation/inject-external-runtime-core-plugin': 2.3.1(@module-federation/runtime-tools@2.3.1) + '@module-federation/managers': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/manifest': 2.3.1(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2) + '@module-federation/runtime-tools': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) optionalDependencies: typescript: 6.0.2 transitivePeerDependencies: - bufferutil - debug - - supports-color + - node-fetch - utf-8-validate '@module-federation/runtime-core@0.21.6': @@ -20746,30 +21009,24 @@ snapshots: '@module-federation/error-codes': 0.21.6 '@module-federation/sdk': 0.21.6 - '@module-federation/runtime-core@0.23.0': + '@module-federation/runtime-core@2.3.1(node-fetch@2.7.0(encoding@0.1.13))': dependencies: - '@module-federation/error-codes': 0.23.0 - '@module-federation/sdk': 0.23.0 - - '@module-federation/runtime-core@2.1.0': - dependencies: - '@module-federation/error-codes': 2.1.0 - '@module-federation/sdk': 2.1.0 + '@module-federation/error-codes': 2.3.1 + '@module-federation/sdk': 2.3.1(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 '@module-federation/webpack-bundler-runtime': 0.21.6 - '@module-federation/runtime-tools@0.23.0': - dependencies: - '@module-federation/runtime': 0.23.0 - '@module-federation/webpack-bundler-runtime': 0.23.0 - - '@module-federation/runtime-tools@2.1.0': + '@module-federation/runtime-tools@2.3.1(node-fetch@2.7.0(encoding@0.1.13))': dependencies: - '@module-federation/runtime': 2.1.0 - '@module-federation/webpack-bundler-runtime': 2.1.0 + '@module-federation/runtime': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/webpack-bundler-runtime': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + transitivePeerDependencies: + - node-fetch '@module-federation/runtime@0.21.6': dependencies: @@ -20777,31 +21034,21 @@ snapshots: '@module-federation/runtime-core': 0.21.6 '@module-federation/sdk': 0.21.6 - '@module-federation/runtime@0.23.0': - dependencies: - '@module-federation/error-codes': 0.23.0 - '@module-federation/runtime-core': 0.23.0 - '@module-federation/sdk': 0.23.0 - - '@module-federation/runtime@2.1.0': + '@module-federation/runtime@2.3.1(node-fetch@2.7.0(encoding@0.1.13))': dependencies: - '@module-federation/error-codes': 2.1.0 - '@module-federation/runtime-core': 2.1.0 - '@module-federation/sdk': 2.1.0 + '@module-federation/error-codes': 2.3.1 + '@module-federation/runtime-core': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + transitivePeerDependencies: + - node-fetch '@module-federation/sdk@0.21.6': {} - '@module-federation/sdk@0.23.0': {} - - '@module-federation/sdk@2.1.0': {} - - '@module-federation/third-party-dts-extractor@0.23.0': - dependencies: - find-pkg: 2.0.0 - fs-extra: 9.1.0 - resolve: 1.22.8 + '@module-federation/sdk@2.3.1(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@2.1.0': + '@module-federation/third-party-dts-extractor@2.3.1': dependencies: find-pkg: 2.0.0 fs-extra: 9.1.0 @@ -20812,32 +21059,30 @@ snapshots: '@module-federation/runtime': 0.21.6 '@module-federation/sdk': 0.21.6 - '@module-federation/webpack-bundler-runtime@0.23.0': + '@module-federation/webpack-bundler-runtime@2.3.1(node-fetch@2.7.0(encoding@0.1.13))': dependencies: - '@module-federation/runtime': 0.23.0 - '@module-federation/sdk': 0.23.0 - - '@module-federation/webpack-bundler-runtime@2.1.0': - dependencies: - '@module-federation/runtime': 2.1.0 - '@module-federation/sdk': 2.1.0 + '@module-federation/error-codes': 2.3.1 + '@module-federation/runtime': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + transitivePeerDependencies: + - node-fetch - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2': + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': optional: true - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2': + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': optional: true - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2': + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': optional: true - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2': + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': optional: true - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2': + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': optional: true - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2': + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true '@napi-rs/nice-android-arm-eabi@1.1.1': @@ -20914,35 +21159,35 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.7.1 - '@emnapi/runtime': 1.7.1 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.10.1 optional: true '@napi-rs/wasm-runtime@0.2.4': dependencies: - '@emnapi/core': 1.7.1 - '@emnapi/runtime': 1.7.1 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.9.0 '@napi-rs/wasm-runtime@1.0.7': dependencies: - '@emnapi/core': 1.7.1 - '@emnapi/runtime': 1.7.1 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.10.1 optional: true - '@napi-rs/wasm-runtime@1.1.1': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': dependencies: - '@emnapi/core': 1.7.1 - '@emnapi/runtime': 1.7.1 + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 '@tybys/wasm-util': 0.10.1 optional: true - '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@emnapi/core': 1.9.1 - '@emnapi/runtime': 1.9.1 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.10.1 optional: true @@ -20952,11 +21197,11 @@ snapshots: '@netlify/types@2.6.0': {} - '@ngtools/webpack@21.2.4(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4))': + '@ngtools/webpack@21.2.4(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7))': dependencies: '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2) typescript: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) '@noble/hashes@1.4.0': {} @@ -20970,32 +21215,32 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 + fastq: 1.20.1 '@npmcli/agent@4.0.0': dependencies: - agent-base: 7.1.3 + agent-base: 7.1.4 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 11.2.7 - socks-proxy-agent: 8.0.4 + socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color - '@npmcli/fs@4.0.0': + '@npmcli/fs@5.0.0': dependencies: semver: 7.7.4 - '@npmcli/git@7.0.1': + '@npmcli/git@7.0.2': dependencies: + '@gar/promise-retry': 1.0.3 '@npmcli/promise-spawn': 9.0.1 ini: 6.0.0 lru-cache: 11.2.7 npm-pick-manifest: 11.0.3 - proc-log: 6.0.0 - promise-retry: 2.0.1 + proc-log: 6.1.0 semver: 7.7.4 - which: 6.0.0 + which: 6.0.1 '@npmcli/installed-package-contents@4.0.0': dependencies: @@ -21004,48 +21249,47 @@ snapshots: '@npmcli/node-gyp@5.0.0': {} - '@npmcli/package-json@7.0.2': + '@npmcli/package-json@7.0.5': dependencies: - '@npmcli/git': 7.0.1 - glob: 11.1.0 - hosted-git-info: 9.0.0 + '@npmcli/git': 7.0.2 + glob: 13.0.6 + hosted-git-info: 9.0.2 json-parse-even-better-errors: 5.0.0 - proc-log: 6.0.0 + proc-log: 6.1.0 semver: 7.7.4 - validate-npm-package-license: 3.0.4 + spdx-expression-parse: 4.0.0 '@npmcli/promise-spawn@9.0.1': dependencies: - which: 6.0.0 + which: 6.0.1 '@npmcli/redact@4.0.0': {} - '@npmcli/run-script@10.0.3': + '@npmcli/run-script@10.0.4': dependencies: '@npmcli/node-gyp': 5.0.0 - '@npmcli/package-json': 7.0.2 + '@npmcli/package-json': 7.0.5 '@npmcli/promise-spawn': 9.0.1 - node-gyp: 12.1.0 - proc-log: 6.0.0 - which: 6.0.0 + node-gyp: 12.2.0 + proc-log: 6.1.0 transitivePeerDependencies: - supports-color - '@nx/angular@22.6.2(a628988cf4934ddb1865ff37c54d348f)': + '@nx/angular@22.6.2(2a579566a2f9025e1fc42cc56ec7d2ef)': dependencies: - '@angular-devkit/core': 21.2.4(chokidar@5.0.0) + '@angular-devkit/core': 21.2.6(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.4(chokidar@5.0.0) - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/eslint': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/module-federation': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)(esbuild@0.27.4)(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@nx/rspack': 22.6.2(@babel/traverse@7.29.0)(@module-federation/enhanced@2.1.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(@module-federation/node@2.7.28(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)(@types/express@4.17.25)(esbuild@0.27.4)(less@4.6.4)(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(react-dom@19.2.4(react@19.2.4))(react-refresh@0.18.0)(react@19.2.4)(typescript@6.0.2) - '@nx/web': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/webpack': 22.6.2(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(html-webpack-plugin@5.6.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(lightningcss@1.32.0)(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2) - '@nx/workspace': 22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)) + '@nx/devkit': 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/eslint': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/module-federation': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(esbuild@0.27.7)(node-fetch@2.7.0(encoding@0.1.13))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@nx/rspack': 22.6.2(883ac9613c299b0ba66c6c8a5b7c229d) + '@nx/web': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/webpack': 22.6.2(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(lightningcss@1.32.0)(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2) + '@nx/workspace': 22.6.2(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) '@schematics/angular': 21.2.4(chokidar@5.0.0) - '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/type-utils': 8.57.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) enquirer: 2.3.6 magic-string: 0.30.21 picocolors: 1.1.1 @@ -21055,8 +21299,8 @@ snapshots: tslib: 2.8.1 webpack-merge: 5.10.0 optionalDependencies: - '@angular-devkit/build-angular': 21.2.4(562e135550fb493df3034c3b70b31f89) - '@angular/build': 21.2.4(ce7d2ad427afc0ad407f7182efa58bb6) + '@angular-devkit/build-angular': 21.2.4(add8bde166a9c825117621996a363ef3) + '@angular/build': 21.2.4(d177fe19ad80c073ee03544d343f9ed0) ng-packagr: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) transitivePeerDependencies: - '@babel/traverse' @@ -21068,7 +21312,6 @@ snapshots: - '@swc/core' - '@swc/css' - '@swc/helpers' - - '@types/express' - '@zkochan/js-yaml' - bufferutil - clean-css @@ -21079,7 +21322,7 @@ snapshots: - html-webpack-plugin - less - lightningcss - - next + - node-fetch - node-sass - nx - react @@ -21092,33 +21335,34 @@ snapshots: - verdaccio - vue-tsc - webpack-cli + - webpack-hot-middleware - '@nx/angular@22.6.2(f9c0e4d784851f77ce1f57a6551032f7)': + '@nx/angular@22.7.0-beta.10(4e99d45cd480f6afd2d570979ef69272)': dependencies: - '@angular-devkit/core': 21.2.6(chokidar@5.0.0) + '@angular-devkit/core': 21.2.4(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.4(chokidar@5.0.0) - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/eslint': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/module-federation': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)(esbuild@0.27.4)(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@nx/rspack': 22.6.2(@babel/traverse@7.29.0)(@module-federation/enhanced@2.1.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(@module-federation/node@2.7.28(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)(@types/express@4.17.25)(esbuild@0.27.4)(less@4.6.4)(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(react-dom@19.2.4(react@19.2.4))(react-refresh@0.18.0)(react@19.2.4)(typescript@6.0.2) - '@nx/web': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/webpack': 22.6.2(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(html-webpack-plugin@5.6.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(lightningcss@1.32.0)(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2) - '@nx/workspace': 22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)) + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/eslint': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/module-federation': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(esbuild@0.27.7)(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@nx/rspack': 22.7.0-beta.10(af94aeef390b8811b500278b0e4f7995) + '@nx/web': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/webpack': 22.7.0-beta.10(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(lightningcss@1.32.0)(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2) + '@nx/workspace': 22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) '@schematics/angular': 21.2.4(chokidar@5.0.0) - '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/type-utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) enquirer: 2.3.6 magic-string: 0.30.21 picocolors: 1.1.1 - picomatch: 4.0.2 + picomatch: 4.0.4 rxjs: 7.8.2 semver: 7.7.4 tslib: 2.8.1 webpack-merge: 5.10.0 optionalDependencies: - '@angular-devkit/build-angular': 21.2.4(562e135550fb493df3034c3b70b31f89) - '@angular/build': 21.2.4(ce7d2ad427afc0ad407f7182efa58bb6) + '@angular-devkit/build-angular': 21.2.4(add8bde166a9c825117621996a363ef3) + '@angular/build': 21.2.4(d177fe19ad80c073ee03544d343f9ed0) ng-packagr: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) transitivePeerDependencies: - '@babel/traverse' @@ -21130,7 +21374,6 @@ snapshots: - '@swc/core' - '@swc/css' - '@swc/helpers' - - '@types/express' - '@zkochan/js-yaml' - bufferutil - clean-css @@ -21141,7 +21384,7 @@ snapshots: - html-webpack-plugin - less - lightningcss - - next + - node-fetch - node-sass - nx - react @@ -21154,19 +21397,18 @@ snapshots: - verdaccio - vue-tsc - webpack-cli + - webpack-hot-middleware - '@nx/cypress@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(cypress@15.11.0)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2)': + '@nx/cypress@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)': dependencies: - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/eslint': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/eslint': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) - detect-port: 1.5.1 + detect-port: 1.6.1 semver: 7.7.4 tree-kill: 1.2.2 tslib: 2.8.1 - optionalDependencies: - cypress: 15.11.0 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -21179,33 +21421,55 @@ snapshots: - typescript - verdaccio - '@nx/devkit@22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))': + '@nx/devkit@22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))': + dependencies: + '@zkochan/js-yaml': 0.0.7 + ejs: 3.1.10 + enquirer: 2.3.6 + minimatch: 10.2.4 + nx: 22.6.2(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) + semver: 7.7.4 + tslib: 2.8.1 + yargs-parser: 21.1.1 + + '@nx/devkit@22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))': dependencies: '@zkochan/js-yaml': 0.0.7 ejs: 3.1.10 enquirer: 2.3.6 minimatch: 10.2.4 - nx: 22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)) + nx: 22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) semver: 7.7.4 tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/eslint-plugin@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint-config-prettier@10.1.8(eslint@10.1.0(jiti@2.6.1)))(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2)': + '@nx/devkit@22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))': dependencies: - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + '@zkochan/js-yaml': 0.0.7 + ejs: 5.0.1 + enquirer: 2.3.6 + minimatch: 10.2.4 + nx: 22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) + semver: 7.7.4 + tslib: 2.8.1 + yargs-parser: 21.1.1 + + '@nx/eslint-plugin@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-config-prettier@10.1.8(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)': + dependencies: + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) - '@typescript-eslint/parser': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/parser': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/type-utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) chalk: 4.1.2 confusing-browser-globals: 1.0.11 - globals: 15.12.0 - jsonc-eslint-parser: 2.4.0 + globals: 15.15.0 + jsonc-eslint-parser: 2.4.2 semver: 7.7.4 tslib: 2.8.1 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.1.0(jiti@2.6.1)) + eslint-config-prettier: 10.1.8(eslint@10.2.0(jiti@2.6.1)) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -21217,11 +21481,11 @@ snapshots: - typescript - verdaccio - '@nx/eslint@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))': + '@nx/eslint@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))': dependencies: - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - eslint: 10.1.0(jiti@2.6.1) + '@nx/devkit': 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + eslint: 10.2.0(jiti@2.6.1) semver: 7.7.4 tslib: 2.8.1 typescript: 5.9.3 @@ -21236,17 +21500,36 @@ snapshots: - supports-color - verdaccio - '@nx/jest@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(ts-node@10.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(typescript@6.0.2))(typescript@6.0.2)': + '@nx/eslint@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))': dependencies: - '@jest/reporters': 30.0.5 - '@jest/test-result': 30.0.5 - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + eslint: 10.2.0(jiti@2.6.1) + semver: 7.7.4 + tslib: 2.8.1 + typescript: 5.9.3 + optionalDependencies: + '@zkochan/js-yaml': 0.0.7 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - debug + - nx + - supports-color + - verdaccio + + '@nx/jest@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/node@25.5.2)(babel-plugin-macros@3.1.0)(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)': + dependencies: + '@jest/reporters': 30.3.0 + '@jest/test-result': 30.3.0 + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) identity-obj-proxy: 3.0.0 - jest-config: 30.0.5(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(ts-node@10.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(typescript@6.0.2)) - jest-resolve: 30.0.5 - jest-util: 30.0.5 + jest-config: 30.3.0(@types/node@25.5.2)(babel-plugin-macros@3.1.0) + jest-resolve: 30.3.0 + jest-util: 30.3.0 minimatch: 10.2.4 picocolors: 1.1.1 resolve.exports: 2.0.3 @@ -21268,24 +21551,24 @@ snapshots: - typescript - verdaccio - '@nx/js@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))': + '@nx/js@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))': dependencies: '@babel/core': 7.29.0 - '@babel/plugin-proposal-decorators': 7.22.10(@babel/core@7.29.0) + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) - '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@babel/runtime': 7.29.2 - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/workspace': 22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)) + '@nx/devkit': 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/workspace': 22.6.2(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) '@zkochan/js-yaml': 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.29.0) babel-plugin-macros: 3.1.0 babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.29.0)(@babel/traverse@7.29.0) chalk: 4.1.2 columnify: 1.6.0 - detect-port: 1.5.1 + detect-port: 1.6.1 ignore: 5.3.2 js-tokens: 4.0.0 jsonc-parser: 3.2.0 @@ -21304,20 +21587,90 @@ snapshots: - nx - supports-color - '@nx/module-federation@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)(esbuild@0.27.4)(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@nx/js@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) + '@babel/preset-env': 7.29.2(@babel/core@7.29.0) + '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) + '@babel/runtime': 7.29.2 + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/workspace': 22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) + '@zkochan/js-yaml': 0.0.7 + babel-plugin-const-enum: 1.2.0(@babel/core@7.29.0) + babel-plugin-macros: 3.1.0 + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.29.0)(@babel/traverse@7.29.0) + chalk: 4.1.2 + columnify: 1.6.0 + detect-port: 1.6.1 + ignore: 5.3.2 + js-tokens: 4.0.0 + jsonc-parser: 3.2.0 + npm-run-path: 4.0.1 + picocolors: 1.1.1 + picomatch: 4.0.4 + semver: 7.7.4 + source-map-support: 0.5.19 + tinyglobby: 0.2.15 + tslib: 2.8.1 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - debug + - nx + - supports-color + + '@nx/module-federation@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(esbuild@0.27.7)(node-fetch@2.7.0(encoding@0.1.13))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + dependencies: + '@module-federation/enhanced': 2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@module-federation/node': 2.7.39(@rspack/core@1.6.8(@swc/helpers@0.5.21))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@nx/devkit': 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/web': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + express: 4.22.1 + http-proxy-middleware: 3.0.5 + picocolors: 1.1.1 + tslib: 2.8.1 + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/helpers' + - bufferutil + - debug + - esbuild + - node-fetch + - nx + - react + - react-dom + - supports-color + - typescript + - uglify-js + - utf-8-validate + - verdaccio + - vue-tsc + - webpack-cli + + '@nx/module-federation@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(esbuild@0.27.7)(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@module-federation/enhanced': 2.1.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - '@module-federation/node': 2.7.28(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - '@module-federation/sdk': 2.1.0 - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/web': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) + '@module-federation/enhanced': 2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@module-federation/node': 2.7.39(@rspack/core@1.6.8(@swc/helpers@0.5.21))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/web': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) express: 4.22.1 http-proxy-middleware: 3.0.5 picocolors: 1.1.1 tslib: 2.8.1 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -21326,7 +21679,7 @@ snapshots: - bufferutil - debug - esbuild - - next + - node-fetch - nx - react - react-dom @@ -21341,42 +21694,72 @@ snapshots: '@nx/nx-darwin-arm64@22.6.2': optional: true + '@nx/nx-darwin-arm64@22.7.0-beta.10': + optional: true + '@nx/nx-darwin-x64@22.6.2': optional: true + '@nx/nx-darwin-x64@22.7.0-beta.10': + optional: true + '@nx/nx-freebsd-x64@22.6.2': optional: true + '@nx/nx-freebsd-x64@22.7.0-beta.10': + optional: true + '@nx/nx-linux-arm-gnueabihf@22.6.2': optional: true + '@nx/nx-linux-arm-gnueabihf@22.7.0-beta.10': + optional: true + '@nx/nx-linux-arm64-gnu@22.6.2': optional: true + '@nx/nx-linux-arm64-gnu@22.7.0-beta.10': + optional: true + '@nx/nx-linux-arm64-musl@22.6.2': optional: true + '@nx/nx-linux-arm64-musl@22.7.0-beta.10': + optional: true + '@nx/nx-linux-x64-gnu@22.6.2': optional: true + '@nx/nx-linux-x64-gnu@22.7.0-beta.10': + optional: true + '@nx/nx-linux-x64-musl@22.6.2': optional: true + '@nx/nx-linux-x64-musl@22.7.0-beta.10': + optional: true + '@nx/nx-win32-arm64-msvc@22.6.2': optional: true + '@nx/nx-win32-arm64-msvc@22.7.0-beta.10': + optional: true + '@nx/nx-win32-x64-msvc@22.6.2': optional: true - '@nx/playwright@22.6.2(@babel/traverse@7.29.0)(@playwright/test@1.58.2)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))': + '@nx/nx-win32-x64-msvc@22.7.0-beta.10': + optional: true + + '@nx/playwright@22.7.0-beta.10(@babel/traverse@7.29.0)(@playwright/test@1.59.1)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))': dependencies: - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/eslint': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/eslint': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) minimatch: 10.2.4 tslib: 2.8.1 optionalDependencies: - '@playwright/test': 1.58.2 + '@playwright/test': 1.59.1 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -21388,12 +21771,12 @@ snapshots: - supports-color - verdaccio - '@nx/plugin@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(ts-node@10.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(typescript@6.0.2))(typescript@6.0.2)': + '@nx/plugin@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/node@25.5.2)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)': dependencies: - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/eslint': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/jest': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(ts-node@10.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(typescript@6.0.2))(typescript@6.0.2) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/eslint': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/jest': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/node@25.5.2)(babel-plugin-macros@3.1.0)(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' @@ -21412,52 +21795,110 @@ snapshots: - typescript - verdaccio - '@nx/rspack@22.6.2(@babel/traverse@7.29.0)(@module-federation/enhanced@2.1.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(@module-federation/node@2.7.28(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)(@types/express@4.17.25)(esbuild@0.27.4)(less@4.6.4)(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(react-dom@19.2.4(react@19.2.4))(react-refresh@0.18.0)(react@19.2.4)(typescript@6.0.2)': + '@nx/rspack@22.6.2(883ac9613c299b0ba66c6c8a5b7c229d)': + dependencies: + '@module-federation/enhanced': 2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@module-federation/node': 2.7.39(@rspack/core@1.6.8(@swc/helpers@0.5.21))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@nx/devkit': 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/module-federation': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(esbuild@0.27.7)(node-fetch@2.7.0(encoding@0.1.13))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@nx/web': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + '@rspack/dev-server': 1.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@rspack/plugin-react-refresh': 1.6.1(react-refresh@0.18.0)(webpack-hot-middleware@2.26.1) + autoprefixer: 10.4.27(postcss@8.5.8) + browserslist: 4.28.2 + css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + enquirer: 2.3.6 + express: 4.22.1 + http-proxy-middleware: 3.0.5 + less-loader: 12.3.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.6.4)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + license-webpack-plugin: 4.0.2(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + loader-utils: 2.0.4 + parse5: 4.0.0 + picocolors: 1.1.1 + postcss: 8.5.8 + postcss-import: 14.1.0(postcss@8.5.8) + postcss-loader: 8.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.8)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + sass: 1.99.0 + sass-embedded: 1.99.0 + sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + source-map-loader: 5.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + style-loader: 3.3.4(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + ts-checker-rspack-plugin: 1.3.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(tslib@2.8.1)(typescript@6.0.2) + tslib: 2.8.1 + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) + webpack-node-externals: 3.0.0 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - '@swc/helpers' + - bufferutil + - debug + - esbuild + - less + - node-fetch + - node-sass + - nx + - react + - react-dom + - react-refresh + - supports-color + - typescript + - uglify-js + - utf-8-validate + - verdaccio + - vue-tsc + - webpack-cli + - webpack-hot-middleware + + '@nx/rspack@22.7.0-beta.10(af94aeef390b8811b500278b0e4f7995)': dependencies: - '@module-federation/enhanced': 2.1.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - '@module-federation/node': 2.7.28(@rspack/core@1.6.8(@swc/helpers@0.5.19))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/module-federation': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)(esbuild@0.27.4)(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@nx/web': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + '@module-federation/enhanced': 2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@module-federation/node': 2.7.39(@rspack/core@1.6.8(@swc/helpers@0.5.21))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/module-federation': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(esbuild@0.27.7)(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@nx/web': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - '@rspack/dev-server': 1.1.4(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@types/express@4.17.25)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - '@rspack/plugin-react-refresh': 1.0.1(react-refresh@0.18.0) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + '@rspack/dev-server': 1.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + '@rspack/plugin-react-refresh': 1.6.1(react-refresh@0.18.0)(webpack-hot-middleware@2.26.1) autoprefixer: 10.4.27(postcss@8.5.8) - browserslist: 4.28.1 - css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + browserslist: 4.28.2 + css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) enquirer: 2.3.6 express: 4.22.1 http-proxy-middleware: 3.0.5 - less-loader: 12.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.19))(less@4.6.4)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - license-webpack-plugin: 4.0.2(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + less-loader: 12.3.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.6.4)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + license-webpack-plugin: 4.0.2(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) loader-utils: 2.0.4 parse5: 4.0.0 picocolors: 1.1.1 postcss: 8.5.8 postcss-import: 14.1.0(postcss@8.5.8) - postcss-loader: 8.2.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(postcss@8.5.8)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - sass: 1.98.0 - sass-embedded: 1.98.0 - sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.19))(sass-embedded@1.98.0)(sass@1.98.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - source-map-loader: 5.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - style-loader: 3.3.1(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - ts-checker-rspack-plugin: 1.1.1(@rspack/core@1.6.8(@swc/helpers@0.5.19))(typescript@6.0.2) + postcss-loader: 8.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.8)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + sass: 1.99.0 + sass-embedded: 1.99.0 + sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + source-map-loader: 5.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + style-loader: 3.3.4(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + ts-checker-rspack-plugin: 1.3.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(tslib@2.8.1)(typescript@6.0.2) tslib: 2.8.1 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) webpack-node-externals: 3.0.0 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' - '@swc/core' - '@swc/helpers' - - '@types/express' - bufferutil - debug - esbuild - less - - next + - node-fetch - node-sass - nx - react @@ -21470,16 +21911,17 @@ snapshots: - verdaccio - vue-tsc - webpack-cli + - webpack-hot-middleware - '@nx/storybook@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(cypress@15.11.0)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2)': + '@nx/storybook@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2)': dependencies: - '@nx/cypress': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(cypress@15.11.0)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2) - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/eslint': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(@zkochan/js-yaml@0.0.7)(eslint@10.1.0(jiti@2.6.1))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + '@nx/cypress': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2) + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/eslint': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) semver: 7.7.4 - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' @@ -21494,11 +21936,11 @@ snapshots: - typescript - verdaccio - '@nx/vite@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2)': + '@nx/vite@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': dependencies: - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/vitest': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) + '@nx/devkit': 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/vitest': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) ajv: 8.18.0 enquirer: 2.3.6 @@ -21506,8 +21948,32 @@ snapshots: semver: 7.7.4 tsconfig-paths: 4.2.0 tslib: 2.8.1 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - debug + - nx + - supports-color + - typescript + - verdaccio + + '@nx/vite@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': + dependencies: + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/vitest': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) + '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) + ajv: 8.18.0 + enquirer: 2.3.6 + picomatch: 4.0.4 + semver: 7.7.4 + tsconfig-paths: 4.2.0 + tslib: 2.8.1 + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -21518,16 +21984,16 @@ snapshots: - typescript - verdaccio - '@nx/vitest@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2)': + '@nx/vitest@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': dependencies: - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + '@nx/devkit': 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) semver: 7.7.4 tslib: 2.8.1 optionalDependencies: - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -21538,11 +22004,48 @@ snapshots: - typescript - verdaccio - '@nx/web@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))': + '@nx/vitest@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': + dependencies: + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) + semver: 7.7.4 + tslib: 2.8.1 + optionalDependencies: + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - debug + - nx + - supports-color + - typescript + - verdaccio + + '@nx/web@22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))': + dependencies: + '@nx/devkit': 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + detect-port: 1.6.1 + http-server: 14.1.1 + picocolors: 1.1.1 + tslib: 2.8.1 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - debug + - nx + - supports-color + - verdaccio + + '@nx/web@22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))': dependencies: - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - detect-port: 1.5.1 + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + detect-port: 1.6.1 http-server: 14.1.1 picocolors: 1.1.1 tslib: 2.8.1 @@ -21555,44 +22058,105 @@ snapshots: - supports-color - verdaccio - '@nx/webpack@22.6.2(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(html-webpack-plugin@5.6.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(lightningcss@1.32.0)(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)))(typescript@6.0.2)': + '@nx/webpack@22.6.2(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(lightningcss@1.32.0)(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)': dependencies: '@babel/core': 7.29.0 - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) - '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + '@nx/devkit': 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) ajv: 8.18.0 autoprefixer: 10.4.27(postcss@8.5.8) - babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - browserslist: 4.28.1 - copy-webpack-plugin: 14.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - css-minimizer-webpack-plugin: 8.0.0(esbuild@0.27.4)(lightningcss@1.32.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - fork-ts-checker-webpack-plugin: 9.1.0(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - less: 4.4.2 - less-loader: 12.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.19))(less@4.4.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - license-webpack-plugin: 4.0.2(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + browserslist: 4.28.2 + copy-webpack-plugin: 14.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + css-minimizer-webpack-plugin: 8.0.0(esbuild@0.27.7)(lightningcss@1.32.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + fork-ts-checker-webpack-plugin: 9.1.0(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + less: 4.5.1 + less-loader: 12.3.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.5.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + license-webpack-plugin: 4.0.2(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + loader-utils: 2.0.4 + mini-css-extract-plugin: 2.4.7(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + parse5: 4.0.0 + picocolors: 1.1.1 + postcss: 8.5.8 + postcss-import: 14.1.0(postcss@8.5.8) + postcss-loader: 6.2.1(postcss@8.5.8)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + rxjs: 7.8.2 + sass: 1.99.0 + sass-embedded: 1.99.0 + sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + source-map-loader: 5.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + style-loader: 3.3.4(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + terser-webpack-plugin: 5.4.0(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + ts-loader: 9.5.7(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + tsconfig-paths-webpack-plugin: 4.2.0 + tslib: 2.8.1 + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) + webpack-dev-server: 5.2.3(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + webpack-node-externals: 3.0.0 + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + transitivePeerDependencies: + - '@babel/traverse' + - '@parcel/css' + - '@rspack/core' + - '@swc-node/register' + - '@swc/core' + - '@swc/css' + - bufferutil + - clean-css + - csso + - debug + - esbuild + - html-webpack-plugin + - lightningcss + - node-sass + - nx + - supports-color + - typescript + - uglify-js + - utf-8-validate + - verdaccio + - webpack-cli + + '@nx/webpack@22.7.0-beta.10(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(lightningcss@1.32.0)(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)))(typescript@6.0.2)': + dependencies: + '@babel/core': 7.29.0 + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@nx/js': 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) + ajv: 8.18.0 + autoprefixer: 10.4.27(postcss@8.5.8) + babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + browserslist: 4.28.2 + copy-webpack-plugin: 14.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + css-minimizer-webpack-plugin: 8.0.0(esbuild@0.27.7)(lightningcss@1.32.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + fork-ts-checker-webpack-plugin: 9.1.0(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + less: 4.5.1 + less-loader: 12.3.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.5.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + license-webpack-plugin: 4.0.2(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) loader-utils: 2.0.4 - mini-css-extract-plugin: 2.4.7(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + mini-css-extract-plugin: 2.4.7(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) parse5: 4.0.0 picocolors: 1.1.1 postcss: 8.5.8 postcss-import: 14.1.0(postcss@8.5.8) - postcss-loader: 6.2.1(postcss@8.5.8)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + postcss-loader: 8.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.8)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) rxjs: 7.8.2 - sass: 1.98.0 - sass-embedded: 1.98.0 - sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.19))(sass-embedded@1.98.0)(sass@1.98.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - source-map-loader: 5.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - style-loader: 3.3.1(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - terser-webpack-plugin: 5.3.16(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - ts-loader: 9.4.1(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + sass: 1.99.0 + sass-embedded: 1.99.0 + sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + source-map-loader: 5.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + style-loader: 3.3.4(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + terser-webpack-plugin: 5.4.0(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + ts-loader: 9.5.7(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) tsconfig-paths-webpack-plugin: 4.2.0 tslib: 2.8.1 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) - webpack-dev-server: 5.2.3(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) + webpack-dev-server: 5.2.3(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) webpack-node-externals: 3.0.0 - webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) transitivePeerDependencies: - '@babel/traverse' - '@parcel/css' @@ -21616,13 +22180,13 @@ snapshots: - verdaccio - webpack-cli - '@nx/workspace@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))': + '@nx/workspace@22.6.2(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))': dependencies: - '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19))) + '@nx/devkit': 22.6.2(nx@22.6.2(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@zkochan/js-yaml': 0.0.7 chalk: 4.1.2 enquirer: 2.3.6 - nx: 22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)) + nx: 22.6.2(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) picomatch: 4.0.2 semver: 7.7.4 tslib: 2.8.1 @@ -21632,6 +22196,22 @@ snapshots: - '@swc/core' - debug + '@nx/workspace@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))': + dependencies: + '@nx/devkit': 22.7.0-beta.10(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) + '@zkochan/js-yaml': 0.0.7 + chalk: 4.1.2 + enquirer: 2.3.6 + nx: 22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) + picomatch: 4.0.4 + semver: 7.7.4 + tslib: 2.8.1 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + '@octokit/auth-token@6.0.0': {} '@octokit/core@7.0.6': @@ -21685,7 +22265,7 @@ snapshots: '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 fast-content-type-parse: 3.0.0 - json-with-bigint: 3.5.7 + json-with-bigint: 3.5.8 universal-user-agent: 7.0.3 '@octokit/types@16.0.0': @@ -21735,10 +22315,10 @@ snapshots: '@oxc-angular/binding-win32-x64-msvc@0.0.22': optional: true - '@oxc-angular/vite@0.0.22(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))': + '@oxc-angular/vite@0.0.22(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))': dependencies: obug: 2.1.1 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) optionalDependencies: '@oxc-angular/binding-darwin-arm64': 0.0.22 '@oxc-angular/binding-darwin-x64': 0.0.22 @@ -21797,9 +22377,9 @@ snapshots: '@oxc-parser/binding-openharmony-arm64@0.123.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': + '@oxc-parser/binding-wasm32-wasi@0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -21870,9 +22450,12 @@ snapshots: '@oxc-resolver/binding-openharmony-arm64@11.19.1': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.19.1': + '@oxc-resolver/binding-wasm32-wasi@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@napi-rs/wasm-runtime': 1.1.1 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' optional: true '@oxc-resolver/binding-win32-arm64-msvc@11.19.1': @@ -21932,9 +22515,9 @@ snapshots: '@oxc-transform/binding-openharmony-arm64@0.123.0': optional: true - '@oxc-transform/binding-wasm32-wasi@0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': + '@oxc-transform/binding-wasm32-wasi@0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -21967,118 +22550,122 @@ snapshots: '@oxlint-tsgolint/win32-x64@0.19.0': optional: true - '@oxlint/binding-android-arm-eabi@1.57.0': + '@oxlint/binding-android-arm-eabi@1.58.0': + optional: true + + '@oxlint/binding-android-arm64@1.58.0': optional: true - '@oxlint/binding-android-arm64@1.57.0': + '@oxlint/binding-darwin-arm64@1.58.0': optional: true - '@oxlint/binding-darwin-arm64@1.57.0': + '@oxlint/binding-darwin-x64@1.58.0': optional: true - '@oxlint/binding-darwin-x64@1.57.0': + '@oxlint/binding-freebsd-x64@1.58.0': optional: true - '@oxlint/binding-freebsd-x64@1.57.0': + '@oxlint/binding-linux-arm-gnueabihf@1.58.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.57.0': + '@oxlint/binding-linux-arm-musleabihf@1.58.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.57.0': + '@oxlint/binding-linux-arm64-gnu@1.58.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.57.0': + '@oxlint/binding-linux-arm64-musl@1.58.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.57.0': + '@oxlint/binding-linux-ppc64-gnu@1.58.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.57.0': + '@oxlint/binding-linux-riscv64-gnu@1.58.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.57.0': + '@oxlint/binding-linux-riscv64-musl@1.58.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.57.0': + '@oxlint/binding-linux-s390x-gnu@1.58.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.57.0': + '@oxlint/binding-linux-x64-gnu@1.58.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.57.0': + '@oxlint/binding-linux-x64-musl@1.58.0': optional: true - '@oxlint/binding-linux-x64-musl@1.57.0': + '@oxlint/binding-openharmony-arm64@1.58.0': optional: true - '@oxlint/binding-openharmony-arm64@1.57.0': + '@oxlint/binding-win32-arm64-msvc@1.58.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.57.0': + '@oxlint/binding-win32-ia32-msvc@1.58.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.57.0': + '@oxlint/binding-win32-x64-msvc@1.58.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.57.0': + '@parcel/watcher-android-arm64@2.5.6': optional: true - '@parcel/watcher-android-arm64@2.4.1': + '@parcel/watcher-darwin-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-arm64@2.4.1': + '@parcel/watcher-darwin-x64@2.5.6': optional: true - '@parcel/watcher-darwin-x64@2.4.1': + '@parcel/watcher-freebsd-x64@2.5.6': optional: true - '@parcel/watcher-freebsd-x64@2.4.1': + '@parcel/watcher-linux-arm-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm-glibc@2.4.1': + '@parcel/watcher-linux-arm-musl@2.5.6': optional: true - '@parcel/watcher-linux-arm64-glibc@2.4.1': + '@parcel/watcher-linux-arm64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm64-musl@2.4.1': + '@parcel/watcher-linux-arm64-musl@2.5.6': optional: true - '@parcel/watcher-linux-x64-glibc@2.4.1': + '@parcel/watcher-linux-x64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-x64-musl@2.4.1': + '@parcel/watcher-linux-x64-musl@2.5.6': optional: true - '@parcel/watcher-win32-arm64@2.4.1': + '@parcel/watcher-win32-arm64@2.5.6': optional: true - '@parcel/watcher-win32-ia32@2.4.1': + '@parcel/watcher-win32-ia32@2.5.6': optional: true - '@parcel/watcher-win32-x64@2.4.1': + '@parcel/watcher-win32-x64@2.5.6': optional: true - '@parcel/watcher@2.4.1': + '@parcel/watcher@2.5.6': dependencies: - detect-libc: 1.0.3 + detect-libc: 2.1.2 is-glob: 4.0.3 - micromatch: 4.0.8 - node-addon-api: 7.0.0 + node-addon-api: 7.1.1 + picomatch: 4.0.4 optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.1 - '@parcel/watcher-darwin-arm64': 2.4.1 - '@parcel/watcher-darwin-x64': 2.4.1 - '@parcel/watcher-freebsd-x64': 2.4.1 - '@parcel/watcher-linux-arm-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-musl': 2.4.1 - '@parcel/watcher-linux-x64-glibc': 2.4.1 - '@parcel/watcher-linux-x64-musl': 2.4.1 - '@parcel/watcher-win32-arm64': 2.4.1 - '@parcel/watcher-win32-ia32': 2.4.1 - '@parcel/watcher-win32-x64': 2.4.1 + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 optional: true '@peculiar/asn1-cms@2.6.1': @@ -22182,9 +22769,9 @@ snapshots: '@pkgr/core@0.2.9': {} - '@playwright/test@1.58.2': + '@playwright/test@1.59.1': dependencies: - playwright: 1.58.2 + playwright: 1.59.1 '@pnpm/config.env-replace@1.1.0': {} @@ -22192,7 +22779,7 @@ snapshots: dependencies: graceful-fs: 4.2.10 - '@pnpm/npm-conf@2.2.2': + '@pnpm/npm-conf@3.0.2': dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 @@ -22202,7 +22789,7 @@ snapshots: '@polka/url@0.5.0': {} - '@polka/url@1.0.0-next.25': {} + '@polka/url@1.0.0-next.29': {} '@quansync/fs@1.0.0': dependencies: @@ -22310,9 +22897,12 @@ snapshots: '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@napi-rs/wasm-runtime': 1.1.1 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' optional: true '@rolldown/binding-wasm32-wasi@1.0.0-rc.13': @@ -22322,9 +22912,12 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.4': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@napi-rs/wasm-runtime': 1.1.1 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': @@ -22362,7 +22955,7 @@ snapshots: '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 - picomatch: 2.3.1 + picomatch: 2.3.2 '@rollup/pluginutils@5.3.0(rollup@4.60.1)': dependencies: @@ -22447,9 +23040,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.60.1': optional: true - '@rollup/wasm-node@4.24.4': + '@rollup/wasm-node@4.60.1': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 optionalDependencies: fsevents: 2.3.3 @@ -22498,39 +23091,62 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.6.8 '@rspack/binding-win32-x64-msvc': 1.6.8 - '@rspack/core@1.6.8(@swc/helpers@0.5.19)': + '@rspack/core@1.6.8(@swc/helpers@0.5.21)': dependencies: '@module-federation/runtime-tools': 0.21.6 '@rspack/binding': 1.6.8 '@rspack/lite-tapable': 1.1.0 optionalDependencies: - '@swc/helpers': 0.5.19 + '@swc/helpers': 0.5.21 - '@rspack/dev-server@1.1.4(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@types/express@4.17.25)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4))': + '@rspack/dev-server@1.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7))': dependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + '@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) - p-retry: 6.2.0 - webpack-dev-server: 5.2.2(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - ws: 8.19.0 + ipaddr.js: 2.3.0 + launch-editor: 2.13.2 + open: 10.2.0 + 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.5(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + ws: 8.20.0 transitivePeerDependencies: - - '@types/express' - bufferutil - debug - supports-color + - tslib - utf-8-validate - webpack - - webpack-cli '@rspack/lite-tapable@1.1.0': {} - '@rspack/plugin-react-refresh@1.0.1(react-refresh@0.18.0)': + '@rspack/plugin-react-refresh@1.6.1(react-refresh@0.18.0)(webpack-hot-middleware@2.26.1)': dependencies: error-stack-parser: 2.1.4 html-entities: 2.6.0 - optionalDependencies: react-refresh: 0.18.0 + optionalDependencies: + webpack-hot-middleware: 2.26.1 '@schematics/angular@21.2.4(chokidar@5.0.0)': dependencies: @@ -22547,18 +23163,18 @@ snapshots: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 fs-extra: 11.3.4 - lodash: 4.17.21 + lodash: 4.18.1 semantic-release: 25.0.3(typescript@6.0.2) '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.3(typescript@6.0.2))': dependencies: - conventional-changelog-angular: 8.3.0 + conventional-changelog-angular: 8.3.1 conventional-changelog-writer: 8.4.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.3.0 - debug: 4.4.3(supports-color@8.1.1) + conventional-commits-parser: 6.4.0 + debug: 4.4.3 import-from-esm: 2.0.0 - lodash-es: 4.17.23 + lodash-es: 4.18.1 micromatch: 4.0.8 semantic-release: 25.0.3(typescript@6.0.2) transitivePeerDependencies: @@ -22572,9 +23188,9 @@ snapshots: dependencies: '@semantic-release/error': 4.0.0 aggregate-error: 3.1.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 execa: 9.6.1 - lodash-es: 4.17.23 + lodash-es: 4.18.1 parse-json: 8.3.0 semantic-release: 25.0.3(typescript@6.0.2) transitivePeerDependencies: @@ -22584,10 +23200,10 @@ snapshots: dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 dir-glob: 3.0.1 execa: 5.1.1 - lodash: 4.17.21 + lodash: 4.18.1 micromatch: 4.0.8 p-reduce: 2.1.0 semantic-release: 25.0.3(typescript@6.0.2) @@ -22602,17 +23218,17 @@ snapshots: '@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6) '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 dir-glob: 3.0.1 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 issue-parser: 7.0.1 - lodash-es: 4.17.23 + lodash-es: 4.18.1 mime: 4.1.0 p-filter: 4.1.0 semantic-release: 25.0.3(typescript@6.0.2) tinyglobby: 0.2.15 - undici: 7.24.6 + undici: 7.24.7 url-join: 5.0.0 transitivePeerDependencies: - supports-color @@ -22625,28 +23241,28 @@ snapshots: env-ci: 11.2.0 execa: 9.6.1 fs-extra: 11.3.4 - lodash-es: 4.17.23 + lodash-es: 4.18.1 nerf-dart: 1.0.0 normalize-url: 9.0.0 - npm: 11.11.0 + npm: 11.12.1 rc: 1.2.8 read-pkg: 10.1.0 - registry-auth-token: 5.0.2 + registry-auth-token: 5.1.1 semantic-release: 25.0.3(typescript@6.0.2) semver: 7.7.4 - tempy: 3.1.0 + tempy: 3.2.0 '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.3(typescript@6.0.2))': dependencies: - conventional-changelog-angular: 8.3.0 + conventional-changelog-angular: 8.3.1 conventional-changelog-writer: 8.4.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.3.0 - debug: 4.4.3(supports-color@8.1.1) + conventional-commits-parser: 6.4.0 + debug: 4.4.3 get-stream: 7.0.1 import-from-esm: 2.0.0 into-stream: 7.0.0 - lodash-es: 4.17.23 + lodash-es: 4.18.1 read-package-up: 11.0.0 semantic-release: 25.0.3(typescript@6.0.2) transitivePeerDependencies: @@ -22664,7 +23280,7 @@ snapshots: dependencies: '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.4 + oniguruma-to-es: 4.3.5 '@shikijs/engine-oniguruma@4.0.2': dependencies: @@ -22709,32 +23325,32 @@ snapshots: dependencies: '@sigstore/protobuf-specs': 0.5.0 - '@sigstore/core@3.0.0': {} + '@sigstore/core@3.2.0': {} '@sigstore/protobuf-specs@0.5.0': {} - '@sigstore/sign@4.0.1': + '@sigstore/sign@4.1.1': dependencies: + '@gar/promise-retry': 1.0.3 '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.0.0 + '@sigstore/core': 3.2.0 '@sigstore/protobuf-specs': 0.5.0 - make-fetch-happen: 15.0.3 - proc-log: 5.0.0 - promise-retry: 2.0.1 + make-fetch-happen: 15.0.5 + proc-log: 6.1.0 transitivePeerDependencies: - supports-color - '@sigstore/tuf@4.0.0': + '@sigstore/tuf@4.0.2': dependencies: '@sigstore/protobuf-specs': 0.5.0 - tuf-js: 4.0.0 + tuf-js: 4.1.0 transitivePeerDependencies: - supports-color - '@sigstore/verify@3.0.0': + '@sigstore/verify@3.1.0': dependencies: '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.0.0 + '@sigstore/core': 3.2.0 '@sigstore/protobuf-specs': 0.5.0 '@simple-libs/child-process-utils@1.0.2': @@ -22745,9 +23361,9 @@ snapshots: '@simple-libs/stream-utils@1.2.0': {} - '@sinclair/typebox@0.27.8': {} + '@sinclair/typebox@0.27.10': {} - '@sinclair/typebox@0.34.38': {} + '@sinclair/typebox@0.34.49': {} '@sindresorhus/is@4.6.0': {} @@ -22759,7 +23375,7 @@ snapshots: dependencies: type-detect: 4.0.8 - '@sinonjs/fake-timers@13.0.5': + '@sinonjs/fake-timers@15.3.0': dependencies: '@sinonjs/commons': 3.0.1 @@ -22775,21 +23391,21 @@ snapshots: '@slorber/remark-comment@1.0.0': dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 '@standard-schema/spec@1.1.0': {} - '@storybook/addon-docs@10.3.3(@types/react@19.2.14)(esbuild@0.27.4)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4))': + '@storybook/addon-docs@10.3.4(@types/react@19.2.14)(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.4) - '@storybook/csf-plugin': 10.3.3(esbuild@0.27.4)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + '@storybook/csf-plugin': 10.3.4(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) '@storybook/icons': 2.0.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@storybook/react-dom-shim': 10.3.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + '@storybook/react-dom-shim': 10.3.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' @@ -22798,50 +23414,50 @@ snapshots: - vite - webpack - '@storybook/addon-links@10.3.3(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': + '@storybook/addon-links@10.3.4(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) optionalDependencies: react: 19.2.4 - '@storybook/addon-vitest@10.3.3(@vitest/browser-playwright@4.1.2)(@vitest/browser@4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2))(@vitest/runner@4.1.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vitest@4.1.2)': + '@storybook/addon-vitest@10.3.4(@vitest/browser-playwright@4.1.2)(@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2))(@vitest/runner@4.1.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vitest@4.1.2)': dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.0.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) optionalDependencies: - '@vitest/browser': 4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) - '@vitest/browser-playwright': 4.1.2(playwright@1.58.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) + '@vitest/browser': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) + '@vitest/browser-playwright': 4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) '@vitest/runner': 4.1.2 - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) transitivePeerDependencies: - react - react-dom - '@storybook/angular@10.3.3(03faf32c23c06f1c41ddb71d67300a79)': + '@storybook/angular@10.3.3(975f11fc86a5e94c9ef15edca002f86b)': dependencies: '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - '@angular-devkit/build-angular': 21.2.4(562e135550fb493df3034c3b70b31f89) - '@angular-devkit/core': 21.2.4(chokidar@5.0.0) + '@angular-devkit/build-angular': 21.2.4(add8bde166a9c825117621996a363ef3) + '@angular-devkit/core': 21.2.6(chokidar@5.0.0) '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/compiler': 21.2.6 '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2) '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/platform-browser-dynamic': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))) - '@storybook/builder-webpack5': 10.3.3(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2) + '@storybook/builder-webpack5': 10.3.3(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2) '@storybook/global': 5.0.0 rxjs: 7.8.2 - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) telejson: 8.0.0 ts-dedent: 2.2.0 tsconfig-paths-webpack-plugin: 4.2.0 typescript: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) optionalDependencies: '@angular/animations': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) - '@angular/cli': 21.2.4(@types/node@25.5.0)(chokidar@5.0.0) + '@angular/cli': 21.2.4(@types/node@25.5.2)(chokidar@5.0.0) zone.js: 0.16.1 transitivePeerDependencies: - '@rspack/core' @@ -22850,29 +23466,29 @@ snapshots: - uglify-js - webpack-cli - '@storybook/angular@10.3.3(e5e170d2e3e77bdca2d0d20e3095bd7d)': + '@storybook/angular@10.3.3(bc89a49b7ef7c3b0ebc444702278ad2d)': dependencies: '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - '@angular-devkit/build-angular': 21.2.4(562e135550fb493df3034c3b70b31f89) - '@angular-devkit/core': 21.2.6(chokidar@5.0.0) + '@angular-devkit/build-angular': 21.2.4(add8bde166a9c825117621996a363ef3) + '@angular-devkit/core': 21.2.4(chokidar@5.0.0) '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/compiler': 21.2.6 '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2) '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/platform-browser-dynamic': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))) - '@storybook/builder-webpack5': 10.3.3(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2) + '@storybook/builder-webpack5': 10.3.3(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2) '@storybook/global': 5.0.0 rxjs: 7.8.2 - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) telejson: 8.0.0 ts-dedent: 2.2.0 tsconfig-paths-webpack-plugin: 4.2.0 typescript: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) optionalDependencies: '@angular/animations': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) - '@angular/cli': 21.2.4(@types/node@25.5.0)(chokidar@5.0.0) + '@angular/cli': 21.2.4(@types/node@25.5.2)(chokidar@5.0.0) zone.js: 0.16.1 transitivePeerDependencies: - '@rspack/core' @@ -22881,33 +23497,33 @@ snapshots: - uglify-js - webpack-cli - '@storybook/builder-vite@10.3.3(esbuild@0.27.4)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4))': + '@storybook/builder-vite@10.3.4(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7))': dependencies: - '@storybook/csf-plugin': 10.3.3(esbuild@0.27.4)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@storybook/csf-plugin': 10.3.4(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ts-dedent: 2.2.0 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/builder-webpack5@10.3.3(@rspack/core@1.6.8(@swc/helpers@0.5.19))(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2)': + '@storybook/builder-webpack5@10.3.3(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2)': dependencies: - '@storybook/core-webpack': 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + '@storybook/core-webpack': 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.4.3 - css-loader: 7.1.3(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + css-loader: 7.1.4(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 9.1.0(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - html-webpack-plugin: 5.6.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + fork-ts-checker-webpack-plugin: 9.1.0(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + html-webpack-plugin: 5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) magic-string: 0.30.21 - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - style-loader: 4.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - terser-webpack-plugin: 5.3.16(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + style-loader: 4.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + terser-webpack-plugin: 5.4.0(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) ts-dedent: 2.2.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) - webpack-dev-middleware: 6.1.3(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) + webpack-dev-middleware: 6.1.3(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -22919,20 +23535,20 @@ snapshots: - uglify-js - webpack-cli - '@storybook/core-webpack@10.3.3(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': + '@storybook/core-webpack@10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': dependencies: - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ts-dedent: 2.2.0 - '@storybook/csf-plugin@10.3.3(esbuild@0.27.4)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4))': + '@storybook/csf-plugin@10.3.4(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7))': dependencies: - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) unplugin: 2.3.11 optionalDependencies: - esbuild: 0.27.4 + esbuild: 0.27.7 rollup: 4.60.1 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) '@storybook/global@5.0.0': {} @@ -22941,11 +23557,11 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@storybook/react-dom-shim@10.3.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': + '@storybook/react-dom-shim@10.3.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': dependencies: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.0)': dependencies: @@ -23022,15 +23638,15 @@ snapshots: '@svgr/core': 8.1.0(typescript@6.0.2) cosmiconfig: 8.3.6(typescript@6.0.2) deepmerge: 4.3.1 - svgo: 3.3.2 + svgo: 3.3.3 transitivePeerDependencies: - typescript '@svgr/webpack@8.1.0(typescript@6.0.2)': dependencies: '@babel/core': 7.29.0 - '@babel/plugin-transform-react-constant-elements': 7.24.6(@babel/core@7.29.0) - '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.29.0) + '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/preset-react': 7.28.5(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@svgr/core': 8.1.0(typescript@6.0.2) @@ -23040,94 +23656,97 @@ snapshots: - supports-color - typescript - '@swc-node/core@1.14.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)': + '@swc-node/core@1.14.1(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)': dependencies: - '@swc/core': 1.15.18(@swc/helpers@0.5.19) + '@swc/core': 1.15.24(@swc/helpers@0.5.21) '@swc/types': 0.1.26 - optional: true - '@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2)': + '@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2)': dependencies: - '@swc-node/core': 1.14.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26) + '@swc-node/core': 1.14.1(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26) '@swc-node/sourcemap-support': 0.6.1 - '@swc/core': 1.15.18(@swc/helpers@0.5.19) + '@swc/core': 1.15.24(@swc/helpers@0.5.21) colorette: 2.0.20 - debug: 4.4.3(supports-color@8.1.1) - oxc-resolver: 11.19.1 + debug: 4.4.3 + oxc-resolver: 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) pirates: 4.0.7 tslib: 2.8.1 typescript: 6.0.2 transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - '@swc/types' - supports-color - optional: true '@swc-node/sourcemap-support@0.6.1': dependencies: source-map-support: 0.5.21 tslib: 2.8.1 + + '@swc/core-darwin-arm64@1.15.24': + optional: true + + '@swc/core-darwin-x64@1.15.24': optional: true - '@swc/core-darwin-arm64@1.15.18': + '@swc/core-linux-arm-gnueabihf@1.15.24': optional: true - '@swc/core-darwin-x64@1.15.18': + '@swc/core-linux-arm64-gnu@1.15.24': optional: true - '@swc/core-linux-arm-gnueabihf@1.15.18': + '@swc/core-linux-arm64-musl@1.15.24': optional: true - '@swc/core-linux-arm64-gnu@1.15.18': + '@swc/core-linux-ppc64-gnu@1.15.24': optional: true - '@swc/core-linux-arm64-musl@1.15.18': + '@swc/core-linux-s390x-gnu@1.15.24': optional: true - '@swc/core-linux-x64-gnu@1.15.18': + '@swc/core-linux-x64-gnu@1.15.24': optional: true - '@swc/core-linux-x64-musl@1.15.18': + '@swc/core-linux-x64-musl@1.15.24': optional: true - '@swc/core-win32-arm64-msvc@1.15.18': + '@swc/core-win32-arm64-msvc@1.15.24': optional: true - '@swc/core-win32-ia32-msvc@1.15.18': + '@swc/core-win32-ia32-msvc@1.15.24': optional: true - '@swc/core-win32-x64-msvc@1.15.18': + '@swc/core-win32-x64-msvc@1.15.24': optional: true - '@swc/core@1.15.18(@swc/helpers@0.5.19)': + '@swc/core@1.15.24(@swc/helpers@0.5.21)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.26 optionalDependencies: - '@swc/core-darwin-arm64': 1.15.18 - '@swc/core-darwin-x64': 1.15.18 - '@swc/core-linux-arm-gnueabihf': 1.15.18 - '@swc/core-linux-arm64-gnu': 1.15.18 - '@swc/core-linux-arm64-musl': 1.15.18 - '@swc/core-linux-x64-gnu': 1.15.18 - '@swc/core-linux-x64-musl': 1.15.18 - '@swc/core-win32-arm64-msvc': 1.15.18 - '@swc/core-win32-ia32-msvc': 1.15.18 - '@swc/core-win32-x64-msvc': 1.15.18 - '@swc/helpers': 0.5.19 - optional: true - - '@swc/counter@0.1.3': - optional: true - - '@swc/helpers@0.5.19': + '@swc/core-darwin-arm64': 1.15.24 + '@swc/core-darwin-x64': 1.15.24 + '@swc/core-linux-arm-gnueabihf': 1.15.24 + '@swc/core-linux-arm64-gnu': 1.15.24 + '@swc/core-linux-arm64-musl': 1.15.24 + '@swc/core-linux-ppc64-gnu': 1.15.24 + '@swc/core-linux-s390x-gnu': 1.15.24 + '@swc/core-linux-x64-gnu': 1.15.24 + '@swc/core-linux-x64-musl': 1.15.24 + '@swc/core-win32-arm64-msvc': 1.15.24 + '@swc/core-win32-ia32-msvc': 1.15.24 + '@swc/core-win32-x64-msvc': 1.15.24 + '@swc/helpers': 0.5.21 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.21': dependencies: tslib: 2.8.1 - optional: true '@swc/types@0.1.26': dependencies: '@swc/counter': 0.1.3 - optional: true '@szmarczak/http-timer@5.0.1': dependencies: @@ -23194,59 +23813,65 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.2 '@tailwindcss/oxide-win32-x64-msvc': 4.2.2 - '@tailwindcss/vite@4.2.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))': + '@tailwindcss/postcss@4.2.2': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.2.2 + '@tailwindcss/oxide': 4.2.2 + postcss: 8.5.8 + tailwindcss: 4.2.2 + + '@tailwindcss/vite@4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 tailwindcss: 4.2.2 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) - '@tanstack/angular-query-experimental@5.95.2(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))': + '@tanstack/angular-query-experimental@5.96.2(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))': dependencies: '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) - '@tanstack/query-core': 5.95.2 + '@tanstack/query-core': 5.96.2 optionalDependencies: - '@tanstack/query-devtools': 5.95.2 + '@tanstack/query-devtools': 5.96.2 - '@tanstack/query-core@5.95.2': {} + '@tanstack/query-core@5.96.2': {} - '@tanstack/query-devtools@5.95.2': + '@tanstack/query-devtools@5.96.2': optional: true - '@testing-library/dom@10.4.0': + '@testing-library/dom@10.4.1': dependencies: '@babel/code-frame': 7.29.0 '@babel/runtime': 7.29.2 '@types/aria-query': 5.0.4 aria-query: 5.3.0 - chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 + picocolors: 1.1.1 pretty-format: 27.5.1 '@testing-library/jest-dom@6.9.1': dependencies: - '@adobe/css-tools': 4.4.3 + '@adobe/css-tools': 4.4.4 aria-query: 5.3.2 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: - '@testing-library/dom': 10.4.0 + '@testing-library/dom': 10.4.1 - '@thednp/event-listener@2.0.10': {} + '@thednp/event-listener@2.0.15': {} - '@thednp/position-observer@1.1.0': + '@thednp/position-observer@1.1.3': dependencies: - '@thednp/shorty': 2.0.11 + '@thednp/shorty': 2.0.14 - '@thednp/shorty@2.0.11': {} - - '@trysound/sax@0.2.0': {} + '@thednp/shorty@2.0.14': {} '@ts-morph/common@0.22.0': dependencies: @@ -23257,28 +23882,16 @@ snapshots: '@ts-morph/common@0.28.1': dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 path-browserify: 1.0.1 tinyglobby: 0.2.15 - '@tsconfig/node10@1.0.12': - optional: true - - '@tsconfig/node12@1.0.11': - optional: true - - '@tsconfig/node14@1.0.3': - optional: true - - '@tsconfig/node16@1.0.4': - optional: true - '@tufjs/canonical-json@2.0.0': {} - '@tufjs/models@4.0.0': + '@tufjs/models@4.1.0': dependencies: '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.9 + minimatch: 10.2.5 '@tybys/wasm-util@0.10.1': dependencies: @@ -23289,54 +23902,51 @@ snapshots: dependencies: tslib: 2.8.1 - '@types/acorn@4.0.6': - dependencies: - '@types/estree': 1.0.8 - '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.2 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 - '@types/babel__generator@7.6.4': + '@types/babel__generator@7.27.0': dependencies: '@babel/types': 7.29.0 - '@types/babel__template@7.4.1': + '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 - '@types/babel__traverse@7.18.2': + '@types/babel__traverse@7.28.0': dependencies: '@babel/types': 7.29.0 - '@types/body-parser@1.19.2': + '@types/body-parser@1.19.6': dependencies: - '@types/connect': 3.4.35 - '@types/node': 25.5.0 + '@types/connect': 3.4.38 + '@types/node': 25.5.2 '@types/bonjour@3.5.13': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.0 - '@types/node': 25.5.0 + '@types/express-serve-static-core': 4.19.8 + '@types/node': 25.5.2 - '@types/connect@3.4.35': + '@types/connect@3.4.38': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 '@types/d3-array@3.2.2': {} @@ -23455,18 +24065,23 @@ snapshots: '@types/d3-transition': 3.0.9 '@types/d3-zoom': 3.0.8 - '@types/debug@4.1.7': + '@types/debug@4.1.13': dependencies: - '@types/ms': 0.7.31 + '@types/ms': 2.1.0 '@types/deep-eql@4.0.2': {} '@types/eslint-scope@3.7.7': dependencies: - '@types/eslint': 8.37.0 + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 + + '@types/eslint@8.56.12': + dependencies: '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 - '@types/eslint@8.37.0': + '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 @@ -23477,27 +24092,25 @@ snapshots: '@types/esrecurse@4.3.1': {} - '@types/estree-jsx@1.0.1': + '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.8 - '@types/estree@1.0.6': {} - '@types/estree@1.0.8': {} - '@types/express-serve-static-core@4.19.0': + '@types/express-serve-static-core@4.19.8': dependencies: - '@types/node': 25.5.0 - '@types/qs': 6.9.7 - '@types/range-parser': 1.2.4 - '@types/send': 0.17.4 + '@types/node': 25.5.2 + '@types/qs': 6.15.0 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 '@types/express@4.17.25': dependencies: - '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.19.0 - '@types/qs': 6.9.7 - '@types/serve-static': 1.15.7 + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 4.19.8 + '@types/qs': 6.15.0 + '@types/serve-static': 1.15.10 '@types/geojson@7946.0.16': {} @@ -23507,69 +24120,69 @@ snapshots: '@types/hast@3.0.4': dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 '@types/history@4.7.11': {} '@types/html-minifier-terser@6.1.0': {} - '@types/http-cache-semantics@4.0.4': {} + '@types/http-cache-semantics@4.2.0': {} - '@types/http-errors@2.0.4': {} + '@types/http-errors@2.0.5': {} - '@types/http-proxy@1.17.15': + '@types/http-proxy@1.17.17': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 '@types/istanbul-lib-coverage@2.0.6': {} - '@types/istanbul-lib-report@3.0.0': + '@types/istanbul-lib-report@3.0.3': dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports@3.0.4': dependencies: - '@types/istanbul-lib-report': 3.0.0 + '@types/istanbul-lib-report': 3.0.3 '@types/jsesc@2.5.1': {} '@types/json-schema@7.0.15': {} - '@types/mdast@4.0.3': + '@types/mdast@4.0.4': dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 - '@types/mdx@2.0.8': {} + '@types/mdx@2.0.13': {} '@types/mime@1.3.5': {} - '@types/ms@0.7.31': {} + '@types/ms@2.1.0': {} '@types/nlcst@2.0.3': dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 - '@types/node-forge@1.3.11': + '@types/node-forge@1.3.14': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 '@types/node@17.0.45': {} - '@types/node@25.5.0': + '@types/node@25.5.2': dependencies: undici-types: 7.18.2 '@types/normalize-package-data@2.4.4': {} - '@types/parse-json@4.0.0': {} + '@types/parse-json@4.0.2': {} '@types/prismjs@1.26.6': {} - '@types/prop-types@15.7.5': {} + '@types/prop-types@15.7.15': {} - '@types/qs@6.9.7': {} + '@types/qs@6.15.0': {} - '@types/range-parser@1.2.4': {} + '@types/range-parser@1.2.7': {} '@types/react-dom@18.3.7(@types/react@18.3.28)': dependencies: @@ -23582,23 +24195,23 @@ snapshots: '@types/react-router-config@5.0.11': dependencies: '@types/history': 4.7.11 - '@types/react': 19.2.14 + '@types/react': 18.3.28 '@types/react-router': 5.1.20 '@types/react-router-dom@5.3.3': dependencies: '@types/history': 4.7.11 - '@types/react': 19.2.14 + '@types/react': 18.3.28 '@types/react-router': 5.1.20 '@types/react-router@5.1.20': dependencies: '@types/history': 4.7.11 - '@types/react': 19.2.14 + '@types/react': 18.3.28 '@types/react@18.3.28': dependencies: - '@types/prop-types': 15.7.5 + '@types/prop-types': 15.7.15 csstype: 3.2.3 '@types/react@19.2.14': @@ -23609,91 +24222,65 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 '@types/semver@7.5.8': {} '@types/semver@7.7.1': {} - '@types/send@0.17.4': + '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 25.5.0 + '@types/node': 25.5.2 + + '@types/send@1.2.1': + dependencies: + '@types/node': 25.5.2 '@types/serve-index@1.9.4': dependencies: '@types/express': 4.17.25 - '@types/serve-static@1.15.7': + '@types/serve-static@1.15.10': dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 25.5.0 - '@types/send': 0.17.4 - - '@types/sinonjs__fake-timers@8.1.1': - optional: true - - '@types/sizzle@2.3.10': - optional: true + '@types/http-errors': 2.0.5 + '@types/node': 25.5.2 + '@types/send': 0.17.6 '@types/sockjs@0.3.36': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 '@types/stack-utils@2.0.3': {} - '@types/tmp@0.2.6': - optional: true - '@types/trusted-types@2.0.7': optional: true - '@types/unist@2.0.6': {} + '@types/unist@2.0.11': {} - '@types/unist@3.0.0': {} + '@types/unist@3.0.3': {} '@types/whatwg-mimetype@3.0.2': {} '@types/ws@8.18.1': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 - '@types/yargs-parser@21.0.0': {} - - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.0 - - '@types/yauzl@2.10.3': - dependencies: - '@types/node': 25.5.0 - optional: true + '@types/yargs-parser@21.0.3': {} - '@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@types/yargs@17.0.35': dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/scope-manager': 8.57.2 - '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/visitor-keys': 8.57.2 - eslint: 10.1.0(jiti@2.6.1) - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@6.0.2) - typescript: 6.0.2 - transitivePeerDependencies: - - supports-color + '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/parser': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@typescript-eslint/scope-manager': 8.58.0 - '@typescript-eslint/type-utils': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/type-utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@typescript-eslint/visitor-keys': 8.58.0 - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.2) @@ -23701,35 +24288,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': - dependencies: - '@typescript-eslint/scope-manager': 8.57.2 - '@typescript-eslint/types': 8.57.2 - '@typescript-eslint/typescript-estree': 8.57.2(typescript@6.0.2) - '@typescript-eslint/visitor-keys': 8.57.2 - debug: 4.4.3(supports-color@8.1.1) - eslint: 10.1.0(jiti@2.6.1) - typescript: 6.0.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@typescript-eslint/scope-manager': 8.58.0 '@typescript-eslint/types': 8.58.0 '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) '@typescript-eslint/visitor-keys': 8.58.0 - debug: 4.4.3(supports-color@8.1.1) - eslint: 10.1.0(jiti@2.6.1) + debug: 4.4.3 + eslint: 10.2.0(jiti@2.6.1) typescript: 6.0.2 transitivePeerDependencies: - supports-color '@typescript-eslint/project-service@8.57.2(typescript@6.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) + '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@6.0.2) '@typescript-eslint/types': 8.58.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 typescript: 6.0.2 transitivePeerDependencies: - supports-color @@ -23738,7 +24313,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) '@typescript-eslint/types': 8.58.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 typescript: 6.0.2 transitivePeerDependencies: - supports-color @@ -23761,25 +24336,25 @@ snapshots: dependencies: typescript: 6.0.2 - '@typescript-eslint/type-utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@typescript-eslint/type-utils@8.57.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@typescript-eslint/types': 8.57.2 '@typescript-eslint/typescript-estree': 8.57.2(typescript@6.0.2) - '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - debug: 4.4.3(supports-color@8.1.1) - eslint: 10.1.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.57.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + debug: 4.4.3 + eslint: 10.2.0(jiti@2.6.1) ts-api-utils: 2.5.0(typescript@6.0.2) typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@typescript-eslint/type-utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@typescript-eslint/types': 8.58.0 '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - debug: 4.4.3(supports-color@8.1.1) - eslint: 10.1.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + debug: 4.4.3 + eslint: 10.2.0(jiti@2.6.1) ts-api-utils: 2.5.0(typescript@6.0.2) typescript: 6.0.2 transitivePeerDependencies: @@ -23795,8 +24370,8 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@6.0.2) '@typescript-eslint/types': 8.57.2 '@typescript-eslint/visitor-keys': 8.57.2 - debug: 4.4.3(supports-color@8.1.1) - minimatch: 10.2.4 + debug: 4.4.3 + minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.5.0(typescript@6.0.2) @@ -23810,8 +24385,8 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) '@typescript-eslint/types': 8.58.0 '@typescript-eslint/visitor-keys': 8.58.0 - debug: 4.4.3(supports-color@8.1.1) - minimatch: 10.2.4 + debug: 4.4.3 + minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.5.0(typescript@6.0.2) @@ -23819,24 +24394,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@typescript-eslint/utils@8.57.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.57.2 '@typescript-eslint/types': 8.57.2 '@typescript-eslint/typescript-estree': 8.57.2(typescript@6.0.2) - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2)': + '@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.58.0 '@typescript-eslint/types': 8.58.0 '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) typescript: 6.0.2 transitivePeerDependencies: - supports-color @@ -23917,17 +24492,17 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - '@vitejs/devtools-kit@0.1.11(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(ws@8.19.0)': + '@vitejs/devtools-kit@0.1.13(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(ws@8.20.0)': dependencies: - '@vitejs/devtools-rpc': 0.1.11(typescript@6.0.2)(ws@8.19.0) + '@vitejs/devtools-rpc': 0.1.13(typescript@6.0.2)(ws@8.20.0) birpc: 4.0.0 ohash: 2.0.11 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws - '@vitejs/devtools-rpc@0.1.11(typescript@6.0.2)(ws@8.19.0)': + '@vitejs/devtools-rpc@0.1.13(typescript@6.0.2)(ws@8.20.0)': dependencies: birpc: 4.0.0 ohash: 2.0.11 @@ -23935,19 +24510,23 @@ snapshots: structured-clone-es: 2.0.0 valibot: 1.3.1(typescript@6.0.2) optionalDependencies: - ws: 8.19.0 + ws: 8.20.0 transitivePeerDependencies: - typescript - '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.3))': + dependencies: + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.3) + + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))': dependencies: - vite: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) - '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))': dependencies: - vite: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) - '@vitejs/plugin-react@5.2.0(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-react@5.2.0(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -23955,17 +24534,31 @@ snapshots: '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) transitivePeerDependencies: - supports-color - '@vitest/browser-playwright@4.1.2(playwright@1.58.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2)': + '@vitest/browser-playwright@4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': + dependencies: + '@vitest/browser': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) + playwright: 1.59.1 + tinyrainbow: 3.1.0 + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + optional: true + + '@vitest/browser-playwright@4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': dependencies: - '@vitest/browser': 4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) - '@vitest/mocker': 4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) - playwright: 1.58.2 + '@vitest/browser': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) + playwright: 1.59.1 tinyrainbow: 3.1.0 - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) transitivePeerDependencies: - bufferutil - msw @@ -23973,30 +24566,48 @@ snapshots: - vite optional: true - '@vitest/browser-playwright@4.1.2(playwright@1.58.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2)': + '@vitest/browser-playwright@4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': + dependencies: + '@vitest/browser': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) + playwright: 1.59.1 + tinyrainbow: 3.1.0 + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': dependencies: - '@vitest/browser': 4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) - '@vitest/mocker': 4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) - playwright: 1.58.2 + '@blazediff/core': 1.9.1 + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) + '@vitest/utils': 4.1.2 + magic-string: 0.30.21 + pngjs: 7.0.0 + sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) + ws: 8.20.0 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite + optional: true - '@vitest/browser@4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2)': + '@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) '@vitest/utils': 4.1.2 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) - ws: 8.19.0 + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) + ws: 8.20.0 transitivePeerDependencies: - bufferutil - msw @@ -24004,24 +24615,24 @@ snapshots: - vite optional: true - '@vitest/browser@4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2)': + '@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) '@vitest/utils': 4.1.2 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) - ws: 8.19.0 + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) + ws: 8.20.0 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/coverage-v8@4.1.2(@vitest/browser@4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2))(vitest@4.1.2)': + '@vitest/coverage-v8@4.1.2(@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2))(vitest@4.1.2)': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.1.2 @@ -24033,42 +24644,51 @@ snapshots: obug: 2.1.1 std-env: 4.0.0 tinyrainbow: 3.1.0 - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) optionalDependencies: - '@vitest/browser': 4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) + '@vitest/browser': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) '@vitest/expect@3.2.4': dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.0 + chai: 5.3.3 tinyrainbow: 2.0.0 '@vitest/expect@4.1.2': dependencies: '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/spy': 4.1.2 '@vitest/utils': 4.1.2 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) + optional: true + + '@vitest/mocker@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))': + dependencies: + '@vitest/spy': 4.1.2 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) - '@vitest/mocker@4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) '@vitest/pretty-format@3.2.4': dependencies: @@ -24092,7 +24712,7 @@ snapshots: '@vitest/spy@3.2.4': dependencies: - tinyspy: 4.0.3 + tinyspy: 4.0.4 '@vitest/spy@4.1.2': {} @@ -24105,12 +24725,12 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vitest: 4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) '@vitest/utils@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - loupe: 3.2.0 + loupe: 3.2.1 tinyrainbow: 2.0.0 '@vitest/utils@4.1.2': @@ -24203,7 +24823,7 @@ snapshots: '@yarnpkg/parsers@3.0.2': dependencies: - js-yaml: 3.14.1 + js-yaml: 3.14.2 tslib: 2.8.1 '@zkochan/js-yaml@0.0.7': @@ -24236,16 +24856,16 @@ snapshots: acorn@8.16.0: {} - address@1.2.1: {} + address@1.2.2: {} adjust-sourcemap-loader@4.0.0: dependencies: loader-utils: 2.0.4 - regex-parser: 2.2.11 + regex-parser: 2.3.1 - adm-zip@0.5.16: {} + adm-zip@0.5.17: {} - agent-base@7.1.3: {} + agent-base@7.1.4: {} aggregate-error@3.1.0: dependencies: @@ -24254,7 +24874,7 @@ snapshots: aggregate-error@5.0.0: dependencies: - clean-stack: 5.2.0 + clean-stack: 5.3.0 indent-string: 5.0.0 ajv-formats@2.1.1(ajv@8.18.0): @@ -24288,21 +24908,21 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.1 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.1 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch-helper@3.28.0(algoliasearch@5.48.1): + algoliasearch-helper@3.28.1(algoliasearch@5.50.1): dependencies: '@algolia/events': 4.0.1 - algoliasearch: 5.48.1 + algoliasearch: 5.50.1 algoliasearch@5.48.1: dependencies: @@ -24321,15 +24941,32 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + algoliasearch@5.50.1: + dependencies: + '@algolia/abtesting': 1.16.1 + '@algolia/client-abtesting': 5.50.1 + '@algolia/client-analytics': 5.50.1 + '@algolia/client-common': 5.50.1 + '@algolia/client-insights': 5.50.1 + '@algolia/client-personalization': 5.50.1 + '@algolia/client-query-suggestions': 5.50.1 + '@algolia/client-search': 5.50.1 + '@algolia/ingestion': 1.50.1 + '@algolia/monitoring': 1.50.1 + '@algolia/recommend': 5.50.1 + '@algolia/requester-browser-xhr': 5.50.1 + '@algolia/requester-fetch': 5.50.1 + '@algolia/requester-node-http': 5.50.1 + all-contributors-cli@6.26.1(encoding@0.1.13): dependencies: '@babel/runtime': 7.29.2 - async: 3.2.4 + async: 3.2.6 chalk: 4.1.2 didyoumean: 1.2.2 inquirer: 7.3.3 json-fixer: 1.6.15 - lodash: 4.17.21 + lodash: 4.18.1 node-fetch: 2.7.0(encoding@0.1.13) pify: 5.0.0 yargs: 15.4.1 @@ -24338,6 +24975,25 @@ snapshots: transitivePeerDependencies: - encoding + angular-eslint@21.3.1(@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@10.2.0(jiti@2.6.1))(typescript-eslint@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(typescript@6.0.2): + dependencies: + '@angular-devkit/core': 21.2.4(chokidar@5.0.0) + '@angular-devkit/schematics': 21.2.4(chokidar@5.0.0) + '@angular-eslint/builder': 21.3.1(@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@angular-eslint/eslint-plugin': 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@angular-eslint/eslint-plugin-template': 21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@angular-eslint/schematics': 21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(chokidar@5.0.0)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@angular-eslint/template-parser': 21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@angular/cli': 21.2.4(@types/node@25.5.2)(chokidar@5.0.0) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + eslint: 10.2.0(jiti@2.6.1) + typescript: 6.0.2 + typescript-eslint: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + transitivePeerDependencies: + - chokidar + - supports-color + ansi-align@3.0.1: dependencies: string-width: 4.2.3 @@ -24348,7 +25004,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.0.0: + ansi-escapes@7.3.0: dependencies: environment: 1.1.0 @@ -24368,7 +25024,7 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} ansis@4.2.0: {} @@ -24377,7 +25033,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 apache-crypt@1.2.6: dependencies: @@ -24385,12 +25041,6 @@ snapshots: apache-md5@1.1.8: {} - arch@2.2.0: - optional: true - - arg@4.1.3: - optional: true - arg@5.0.2: {} argparse@1.0.10: @@ -24415,20 +25065,12 @@ snapshots: array-union@2.1.0: {} - asn1@0.2.6: - dependencies: - safer-buffer: 2.1.2 - optional: true - asn1js@3.0.7: dependencies: pvtsutils: 1.3.6 pvutils: 1.1.5 tslib: 2.8.1 - assert-plus@1.0.0: - optional: true - assertion-error@2.0.1: {} ast-kit@3.0.0-beta.1: @@ -24447,19 +25089,16 @@ snapshots: estree-walker: 3.0.3 js-tokens: 10.0.0 - astral-regex@2.0.0: - optional: true - - astring@1.8.6: {} + astring@1.9.0: {} - astro@6.1.1(@types/node@25.5.0)(db0@0.3.4)(ioredis@5.10.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(typescript@5.9.3)(yaml@2.8.2): + astro@6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@5.9.3)(yaml@2.8.3): dependencies: '@astrojs/compiler': 3.0.1 '@astrojs/internal-helpers': 0.8.0 '@astrojs/markdown-remark': 7.1.0 '@astrojs/telemetry': 3.3.0 '@capsizecss/unpack': 4.0.0 - '@clack/prompts': 1.1.0 + '@clack/prompts': 1.2.0 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.3.0(rollup@4.60.1) aria-query: 5.3.2 @@ -24473,7 +25112,7 @@ snapshots: dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 2.0.0 - esbuild: 0.27.4 + esbuild: 0.27.7 flattie: 1.1.1 fontace: 0.4.1 github-slugger: 2.0.0 @@ -24486,14 +25125,14 @@ snapshots: neotraverse: 0.6.18 obug: 2.1.1 p-limit: 7.3.0 - p-queue: 9.1.0 + p-queue: 9.1.1 package-manager-detector: 1.6.0 piccolore: 0.1.3 picomatch: 4.0.4 rehype: 13.0.2 semver: 7.7.4 shiki: 4.0.2 - smol-toml: 1.6.0 + smol-toml: 1.6.1 svgo: 4.0.1 tinyclip: 0.1.12 tinyexec: 1.0.4 @@ -24502,10 +25141,10 @@ snapshots: ultrahtml: 1.6.0 unifont: 0.7.4 unist-util-visit: 5.1.0 - unstorage: 1.17.4(db0@0.3.4)(ioredis@5.10.0) + unstorage: 1.17.5(db0@0.3.4) vfile: 6.0.3 - vite: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) - vitefu: 1.1.2(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) + vitefu: 1.1.3(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.3.6 @@ -24546,14 +25185,14 @@ snapshots: - uploadthing - yaml - astro@6.1.1(@types/node@25.5.0)(db0@0.3.4)(ioredis@5.10.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(typescript@6.0.2)(yaml@2.8.2): + astro@6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.2)(yaml@2.8.3): dependencies: '@astrojs/compiler': 3.0.1 '@astrojs/internal-helpers': 0.8.0 '@astrojs/markdown-remark': 7.1.0 '@astrojs/telemetry': 3.3.0 '@capsizecss/unpack': 4.0.0 - '@clack/prompts': 1.1.0 + '@clack/prompts': 1.2.0 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.3.0(rollup@4.60.1) aria-query: 5.3.2 @@ -24567,7 +25206,7 @@ snapshots: dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 2.0.0 - esbuild: 0.27.4 + esbuild: 0.27.7 flattie: 1.1.1 fontace: 0.4.1 github-slugger: 2.0.0 @@ -24580,14 +25219,14 @@ snapshots: neotraverse: 0.6.18 obug: 2.1.1 p-limit: 7.3.0 - p-queue: 9.1.0 + p-queue: 9.1.1 package-manager-detector: 1.6.0 piccolore: 0.1.3 picomatch: 4.0.4 rehype: 13.0.2 semver: 7.7.4 shiki: 4.0.2 - smol-toml: 1.6.0 + smol-toml: 1.6.1 svgo: 4.0.1 tinyclip: 0.1.12 tinyexec: 1.0.4 @@ -24596,10 +25235,10 @@ snapshots: ultrahtml: 1.6.0 unifont: 0.7.4 unist-util-visit: 5.1.0 - unstorage: 1.17.4(db0@0.3.4)(ioredis@5.10.0) + unstorage: 1.17.5(db0@0.3.4) vfile: 6.0.3 - vite: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) - vitefu: 1.1.2(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) + vitefu: 1.1.3(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.3.6 @@ -24640,11 +25279,7 @@ snapshots: - uploadthing - yaml - async@2.6.4: - dependencies: - lodash: 4.17.21 - - async@3.2.4: {} + async@3.2.6: {} asynckit@0.4.0: {} @@ -24652,8 +25287,8 @@ snapshots: autoprefixer@10.4.27(postcss@8.5.6): dependencies: - browserslist: 4.28.1 - caniuse-lite: 1.0.30001777 + browserslist: 4.28.2 + caniuse-lite: 1.0.30001785 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -24661,20 +25296,14 @@ snapshots: autoprefixer@10.4.27(postcss@8.5.8): dependencies: - browserslist: 4.28.1 - caniuse-lite: 1.0.30001777 + browserslist: 4.28.2 + caniuse-lite: 1.0.30001785 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.8 postcss-value-parser: 4.2.0 - aws-sign2@0.7.0: - optional: true - - aws4@1.13.2: - optional: true - - axios@1.13.6(debug@4.4.3): + axios@1.13.5: dependencies: follow-redirects: 1.15.11(debug@4.4.3) form-data: 4.0.5 @@ -24682,33 +25311,41 @@ snapshots: transitivePeerDependencies: - debug + axios@1.14.0(debug@4.4.3): + dependencies: + follow-redirects: 1.15.11(debug@4.4.3) + form-data: 4.0.5 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + axobject-query@4.1.0: {} - babel-jest@30.0.5(@babel/core@7.29.0): + babel-jest@30.3.0(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 - '@jest/transform': 30.0.5 + '@jest/transform': 30.3.0 '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 7.0.0 - babel-preset-jest: 30.0.1(@babel/core@7.29.0) + babel-plugin-istanbul: 7.0.1 + babel-preset-jest: 30.3.0(@babel/core@7.29.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-loader@10.0.0(@babel/core@7.29.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + babel-loader@10.0.0(@babel/core@7.29.0)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: '@babel/core': 7.29.0 find-up: 5.0.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) - babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: '@babel/core': 7.29.0 find-cache-dir: 4.0.0 schema-utils: 4.3.3 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) babel-plugin-const-enum@1.2.0(@babel/core@7.29.0): dependencies: @@ -24721,9 +25358,9 @@ snapshots: babel-plugin-dynamic-import-node@2.3.3: dependencies: - object.assign: 4.1.5 + object.assign: 4.1.7 - babel-plugin-istanbul@7.0.0: + babel-plugin-istanbul@7.0.1: dependencies: '@babel/helper-plugin-utils': 7.28.6 '@istanbuljs/load-nyc-config': 1.1.0 @@ -24733,16 +25370,14 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@30.0.1: + babel-plugin-jest-hoist@30.3.0: dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 '@types/babel__core': 7.20.5 babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.29.2 - cosmiconfig: 7.0.1 + cosmiconfig: 7.1.0 resolve: 1.22.11 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.28.6): @@ -24827,10 +25462,10 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) - babel-preset-jest@30.0.1(@babel/core@7.29.0): + babel-preset-jest@30.3.0(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 - babel-plugin-jest-hoist: 30.0.1 + babel-plugin-jest-hoist: 30.3.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) bail@2.0.2: {} @@ -24843,7 +25478,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.9.17: {} + baseline-browser-mapping@2.10.14: {} basic-auth@2.0.1: dependencies: @@ -24851,11 +25486,6 @@ snapshots: batch@0.6.1: {} - bcrypt-pbkdf@1.0.2: - dependencies: - tweetnacl: 0.14.5 - optional: true - bcryptjs@2.4.3: {} beasties@0.4.1: @@ -24864,7 +25494,7 @@ snapshots: css-what: 7.0.0 dom-serializer: 2.0.0 domhandler: 5.0.3 - htmlparser2: 10.0.0 + htmlparser2: 10.1.0 picocolors: 1.1.1 postcss: 8.5.8 postcss-media-query-parser: 0.2.3 @@ -24878,7 +25508,7 @@ snapshots: big.js@5.2.2: {} - binary-extensions@2.2.0: {} + binary-extensions@2.3.0: {} birpc@4.0.0: {} @@ -24886,25 +25516,22 @@ snapshots: dependencies: buffer: 5.7.1 inherits: 2.0.4 - readable-stream: 3.6.0 - - blob-util@2.0.2: - optional: true + readable-stream: 3.6.2 bluebird@3.7.2: {} - body-parser@1.20.3: + body-parser@1.20.4: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 + qs: 6.14.2 + raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: @@ -24914,28 +25541,28 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 http-errors: 2.0.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 on-finished: 2.4.1 - qs: 6.14.2 + qs: 6.15.0 raw-body: 3.0.2 type-is: 2.0.1 transitivePeerDependencies: - supports-color - bonjour-service@1.2.1: + bonjour-service@1.3.0: dependencies: fast-deep-equal: 3.1.3 multicast-dns: 7.2.5 boolbase@1.0.0: {} - bootstrap.native@5.1.6: + bootstrap.native@5.1.10: dependencies: - '@thednp/event-listener': 2.0.10 - '@thednp/position-observer': 1.1.0 - '@thednp/shorty': 2.0.11 + '@thednp/event-listener': 2.0.15 + '@thednp/position-observer': 1.1.3 + '@thednp/shorty': 2.0.14 bottleneck@2.19.5: {} @@ -24961,7 +25588,7 @@ snapshots: widest-line: 4.0.1 wrap-ansi: 8.1.0 - brace-expansion@1.1.11: + brace-expansion@1.1.13: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 @@ -24970,7 +25597,7 @@ snapshots: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.4: + brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 @@ -24978,23 +25605,18 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.28.1: + browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.9.17 - caniuse-lite: 1.0.30001777 - electron-to-chromium: 1.5.278 - node-releases: 2.0.27 - update-browserslist-db: 1.2.3(browserslist@4.28.1) + baseline-browser-mapping: 2.10.14 + caniuse-lite: 1.0.30001785 + electron-to-chromium: 1.5.331 + node-releases: 2.0.37 + update-browserslist-db: 1.2.3(browserslist@4.28.2) bser@2.1.1: dependencies: node-int64: 0.4.0 - btoa@1.2.1: {} - - buffer-crc32@0.2.13: - optional: true - buffer-from@1.1.2: {} buffer@5.7.1: @@ -25004,7 +25626,7 @@ snapshots: bundle-name@4.1.0: dependencies: - run-applescript: 7.0.0 + run-applescript: 7.1.0 bytes@3.0.0: {} @@ -25014,47 +25636,42 @@ snapshots: cac@7.0.0: {} - cacache@20.0.1: + cacache@20.0.4: dependencies: - '@npmcli/fs': 4.0.0 - fs-minipass: 3.0.0 - glob: 11.1.0 + '@npmcli/fs': 5.0.0 + fs-minipass: 3.0.3 + glob: 13.0.6 lru-cache: 11.2.7 minipass: 7.1.3 minipass-collect: 2.0.1 - minipass-flush: 1.0.5 + minipass-flush: 1.0.7 minipass-pipeline: 1.2.4 p-map: 7.0.4 - ssri: 12.0.0 - unique-filename: 4.0.0 + ssri: 13.0.1 cacheable-lookup@7.0.0: {} cacheable-request@10.2.14: dependencies: - '@types/http-cache-semantics': 4.0.4 + '@types/http-cache-semantics': 4.2.0 get-stream: 6.0.1 http-cache-semantics: 4.2.0 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.0 + normalize-url: 8.1.1 responselike: 3.0.0 - cachedir@2.4.0: - optional: true - call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.7: + call-bind@1.0.8: dependencies: + call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 - es-errors: 1.3.0 - function-bind: 1.1.2 get-intrinsic: 1.3.0 - set-function-length: 1.2.1 + set-function-length: 1.2.2 call-bound@1.0.4: dependencies: @@ -25080,27 +25697,24 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.28.1 - caniuse-lite: 1.0.30001777 + browserslist: 4.28.2 + caniuse-lite: 1.0.30001785 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001777: {} + caniuse-lite@1.0.30001785: {} case-sensitive-paths-webpack-plugin@2.4.0: {} - caseless@0.12.0: - optional: true - ccount@2.0.1: {} - chai@5.2.0: + chai@5.3.3: dependencies: assertion-error: 2.0.1 - check-error: 2.1.1 + check-error: 2.1.3 deep-eql: 5.0.2 - loupe: 3.2.0 - pathval: 2.0.0 + loupe: 3.2.1 + pathval: 2.0.1 chai@6.2.2: {} @@ -25136,15 +25750,15 @@ snapshots: chardet@2.1.1: {} - check-error@2.1.1: {} + check-error@2.1.3: {} check-more-types@2.24.0: {} cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 + css-select: 5.2.2 + css-what: 6.2.2 domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 @@ -25166,17 +25780,17 @@ snapshots: domhandler: 5.0.3 domutils: 3.2.2 encoding-sniffer: 0.2.1 - htmlparser2: 10.0.0 + htmlparser2: 10.1.0 parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.24.6 + undici: 7.24.7 whatwg-mimetype: 4.0.0 chevrotain-allstar@0.3.1(chevrotain@11.1.2): dependencies: chevrotain: 11.1.2 - lodash-es: 4.17.23 + lodash-es: 4.18.1 chevrotain@11.1.2: dependencies: @@ -25201,7 +25815,7 @@ snapshots: chokidar@4.0.3: dependencies: - readdirp: 4.0.2 + readdirp: 4.1.2 chokidar@5.0.0: dependencies: @@ -25209,23 +25823,15 @@ snapshots: chownr@3.0.0: {} - chrome-trace-event@1.0.3: {} + chrome-trace-event@1.0.4: {} - ci-info@3.8.0: {} + ci-info@3.9.0: {} ci-info@4.4.0: {} - citty@0.1.6: - dependencies: - consola: 3.4.2 - optional: true - - citty@0.2.1: - optional: true - cjs-module-lexer@1.4.3: {} - cjs-module-lexer@2.1.0: {} + cjs-module-lexer@2.2.0: {} clean-css@5.3.3: dependencies: @@ -25233,7 +25839,7 @@ snapshots: clean-stack@2.2.0: {} - clean-stack@5.2.0: + clean-stack@5.3.0: dependencies: escape-string-regexp: 5.0.0 @@ -25258,16 +25864,7 @@ snapshots: cli-spinners@2.6.1: {} - cli-spinners@2.9.2: {} - - cli-spinners@3.3.0: {} - - cli-table3@0.6.1: - dependencies: - string-width: 4.2.3 - optionalDependencies: - colors: 1.4.0 - optional: true + cli-spinners@3.4.0: {} cli-table3@0.6.5: dependencies: @@ -25275,16 +25872,10 @@ snapshots: optionalDependencies: '@colors/colors': 1.5.0 - cli-truncate@2.1.0: - dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 - optional: true - - cli-truncate@5.1.1: + cli-truncate@5.2.0: dependencies: - slice-ansi: 7.1.0 - string-width: 8.1.0 + slice-ansi: 8.0.0 + string-width: 8.2.0 cli-width@3.0.0: {} @@ -25311,8 +25902,8 @@ snapshots: cliui@9.0.1: dependencies: string-width: 7.2.0 - strip-ansi: 7.1.2 - wrap-ansi: 9.0.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 clone-deep@4.0.1: dependencies: @@ -25324,9 +25915,6 @@ snapshots: clsx@2.1.1: {} - cluster-key-slot@1.1.2: - optional: true - co@4.6.0: {} code-block-writer@12.0.0: {} @@ -25335,7 +25923,7 @@ snapshots: collapse-white-space@2.1.0: {} - collect-v8-coverage@1.0.2: {} + collect-v8-coverage@1.0.3: {} color-convert@1.9.3: dependencies: @@ -25370,7 +25958,7 @@ snapshots: dependencies: delayed-stream: 1.0.0 - comma-separated-tokens@2.0.2: {} + comma-separated-tokens@2.0.3: {} commander@10.0.1: {} @@ -25382,9 +25970,6 @@ snapshots: commander@5.1.0: {} - commander@6.2.1: - optional: true - commander@7.2.0: {} commander@8.3.0: {} @@ -25393,9 +25978,6 @@ snapshots: common-path-prefix@3.0.0: {} - common-tags@1.8.2: - optional: true - compare-func@2.0.0: dependencies: array-ify: 1.0.0 @@ -25457,17 +26039,15 @@ snapshots: dependencies: safe-buffer: 5.2.1 - content-disposition@1.0.0: - dependencies: - safe-buffer: 5.2.1 + content-disposition@1.0.1: {} content-type@1.0.5: {} - conventional-changelog-angular@8.3.0: + conventional-changelog-angular@8.3.1: dependencies: compare-func: 2.0.0 - conventional-changelog-conventionalcommits@9.3.0: + conventional-changelog-conventionalcommits@9.3.1: dependencies: compare-func: 2.0.0 @@ -25477,18 +26057,18 @@ snapshots: dependencies: '@simple-libs/stream-utils': 1.2.0 conventional-commits-filter: 5.0.0 - handlebars: 4.7.8 + handlebars: 4.7.9 meow: 13.2.0 semver: 7.7.4 conventional-changelog@7.2.0(conventional-commits-filter@5.0.0): dependencies: - '@conventional-changelog/git-client': 2.6.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.3.0) + '@conventional-changelog/git-client': 2.6.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0) '@simple-libs/hosted-git-info': 1.0.2 '@types/normalize-package-data': 2.4.4 conventional-changelog-preset-loader: 5.0.0 conventional-changelog-writer: 8.4.0 - conventional-commits-parser: 6.3.0 + conventional-commits-parser: 6.4.0 fd-package-json: 2.0.0 meow: 13.2.0 normalize-package-data: 7.0.1 @@ -25497,7 +26077,7 @@ snapshots: conventional-commits-filter@5.0.0: {} - conventional-commits-parser@6.3.0: + conventional-commits-parser@6.4.0: dependencies: '@simple-libs/stream-utils': 1.2.0 meow: 13.2.0 @@ -25508,9 +26088,9 @@ snapshots: convert-source-map@2.0.0: {} - cookie-es@1.2.2: {} + cookie-es@1.2.3: {} - cookie-signature@1.0.6: {} + cookie-signature@1.0.7: {} cookie-signature@1.2.2: {} @@ -25518,11 +26098,6 @@ snapshots: cookie@1.1.1: {} - cookies@0.9.1: - dependencies: - depd: 2.0.0 - keygrip: 1.1.0 - copy-anything@2.0.6: dependencies: is-what: 3.14.1 @@ -25536,7 +26111,7 @@ snapshots: graceful-fs: 4.2.11 p-event: 6.0.1 - copy-webpack-plugin@11.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + copy-webpack-plugin@11.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -25544,27 +26119,33 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - copy-webpack-plugin@14.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + copy-webpack-plugin@14.0.0(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 - serialize-javascript: 7.0.4 + serialize-javascript: 7.0.5 tinyglobby: 0.2.15 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) - core-js-compat@3.49.0: + copy-webpack-plugin@14.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: - browserslist: 4.28.1 + glob-parent: 6.0.2 + normalize-path: 3.0.0 + schema-utils: 4.3.3 + serialize-javascript: 7.0.5 + tinyglobby: 0.2.15 + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - core-js-pure@3.48.0: {} + core-js-compat@3.49.0: + dependencies: + browserslist: 4.28.2 - core-js@3.37.1: {} + core-js-pure@3.49.0: {} - core-util-is@1.0.2: - optional: true + core-js@3.49.0: {} core-util-is@1.0.3: {} @@ -25583,24 +26164,24 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig-typescript-loader@6.2.0(@types/node@25.5.0)(cosmiconfig@9.0.1(typescript@6.0.2))(typescript@6.0.2): + cosmiconfig-typescript-loader@6.2.0(@types/node@25.5.2)(cosmiconfig@9.0.1(typescript@6.0.2))(typescript@6.0.2): dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 cosmiconfig: 9.0.1(typescript@6.0.2) jiti: 2.6.1 typescript: 6.0.2 - cosmiconfig@7.0.1: + cosmiconfig@7.1.0: dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 + yaml: 1.10.3 cosmiconfig@8.3.6(typescript@6.0.2): dependencies: - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 @@ -25610,7 +26191,7 @@ snapshots: cosmiconfig@9.0.1(typescript@6.0.2): dependencies: env-paths: 2.2.1 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: @@ -25619,24 +26200,21 @@ snapshots: cpy-cli@7.0.0: dependencies: cpy: 13.2.1 - globby: 16.1.1 + globby: 16.2.0 meow: 14.1.0 cpy@13.2.1: dependencies: copy-file: 11.1.0 - globby: 16.1.1 + globby: 16.2.0 junk: 4.0.1 micromatch: 4.0.8 p-filter: 4.1.0 p-map: 7.0.4 - create-require@1.1.1: - optional: true - cron-parser@4.9.0: dependencies: - luxon: 3.5.0 + luxon: 3.7.2 cross-spawn@7.0.6: dependencies: @@ -25648,9 +26226,9 @@ snapshots: dependencies: uncrypto: 0.1.3 - crossws@0.4.4(srvx@0.11.13): + crossws@0.4.4(srvx@0.11.15): optionalDependencies: - srvx: 0.11.13 + srvx: 0.11.15 crypto-random-string@4.0.0: dependencies: @@ -25667,72 +26245,86 @@ snapshots: css-color-keywords@1.0.0: {} - css-declaration-sorter@7.2.0(postcss@8.5.8): + css-declaration-sorter@7.3.1(postcss@8.5.8): dependencies: postcss: 8.5.8 css-gradient-parser@0.0.17: {} - css-has-pseudo@7.0.2(postcss@8.5.8): + css-has-pseudo@7.0.3(postcss@8.5.8): dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) postcss: 8.5.8 postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - css-loader@6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + css-loader@6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): + dependencies: + icss-utils: 5.1.0(postcss@8.5.8) + postcss: 8.5.8 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.8) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.8) + postcss-modules-scope: 3.2.1(postcss@8.5.8) + postcss-modules-values: 4.0.0(postcss@8.5.8) + postcss-value-parser: 4.2.0 + semver: 7.7.4 + optionalDependencies: + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) + + css-loader@7.1.3(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: icss-utils: 5.1.0(postcss@8.5.8) postcss: 8.5.8 postcss-modules-extract-imports: 3.1.0(postcss@8.5.8) - postcss-modules-local-by-default: 4.0.5(postcss@8.5.8) - postcss-modules-scope: 3.2.0(postcss@8.5.8) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.8) + postcss-modules-scope: 3.2.1(postcss@8.5.8) postcss-modules-values: 4.0.0(postcss@8.5.8) postcss-value-parser: 4.2.0 semver: 7.7.4 optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) - css-loader@7.1.3(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + css-loader@7.1.4(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: icss-utils: 5.1.0(postcss@8.5.8) postcss: 8.5.8 postcss-modules-extract-imports: 3.1.0(postcss@8.5.8) - postcss-modules-local-by-default: 4.0.5(postcss@8.5.8) - postcss-modules-scope: 3.2.0(postcss@8.5.8) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.8) + postcss-modules-scope: 3.2.1(postcss@8.5.8) postcss-modules-values: 4.0.0(postcss@8.5.8) postcss-value-parser: 4.2.0 semver: 7.7.4 optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.27.4)(lightningcss@1.32.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.27.7)(lightningcss@1.32.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: '@jridgewell/trace-mapping': 0.3.31 cssnano: 6.1.2(postcss@8.5.8) - jest-worker: 29.5.0 + jest-worker: 29.7.0 postcss: 8.5.8 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) optionalDependencies: clean-css: 5.3.3 - esbuild: 0.27.4 + esbuild: 0.27.7 lightningcss: 1.32.0 - css-minimizer-webpack-plugin@8.0.0(esbuild@0.27.4)(lightningcss@1.32.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + css-minimizer-webpack-plugin@8.0.0(esbuild@0.27.7)(lightningcss@1.32.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: '@jridgewell/trace-mapping': 0.3.31 - cssnano: 7.1.3(postcss@8.5.8) - jest-worker: 30.0.5 + cssnano: 7.1.4(postcss@8.5.8) + jest-worker: 30.3.0 postcss: 8.5.8 schema-utils: 4.3.3 - serialize-javascript: 7.0.4 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + serialize-javascript: 7.0.5 + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) optionalDependencies: - esbuild: 0.27.4 + esbuild: 0.27.7 lightningcss: 1.32.0 css-prefers-color-scheme@10.0.0(postcss@8.5.8): @@ -25742,15 +26334,15 @@ snapshots: css-select@4.3.0: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 4.3.1 domutils: 2.8.0 nth-check: 2.1.1 - css-select@5.1.0: + css-select@5.2.2: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 5.0.3 domutils: 3.2.2 nth-check: 2.1.1 @@ -25784,20 +26376,20 @@ snapshots: mdn-data: 2.27.1 source-map-js: 1.2.1 - css-what@6.1.0: {} + css-what@6.2.2: {} css-what@7.0.0: {} css.escape@1.5.1: {} - cssdb@8.3.1: {} + cssdb@8.8.0: {} cssesc@3.0.0: {} cssnano-preset-advanced@6.1.2(postcss@8.5.8): dependencies: autoprefixer: 10.4.27(postcss@8.5.8) - browserslist: 4.28.1 + browserslist: 4.28.2 cssnano-preset-default: 6.1.2(postcss@8.5.8) postcss: 8.5.8 postcss-discard-unused: 6.0.5(postcss@8.5.8) @@ -25807,8 +26399,8 @@ snapshots: cssnano-preset-default@6.1.2(postcss@8.5.8): dependencies: - browserslist: 4.28.1 - css-declaration-sorter: 7.2.0(postcss@8.5.8) + browserslist: 4.28.2 + css-declaration-sorter: 7.3.1(postcss@8.5.8) cssnano-utils: 4.0.2(postcss@8.5.8) postcss: 8.5.8 postcss-calc: 9.0.1(postcss@8.5.8) @@ -25839,14 +26431,14 @@ snapshots: postcss-svgo: 6.0.3(postcss@8.5.8) postcss-unique-selectors: 6.0.4(postcss@8.5.8) - cssnano-preset-default@7.0.11(postcss@8.5.8): + cssnano-preset-default@7.0.12(postcss@8.5.8): dependencies: - browserslist: 4.28.1 - css-declaration-sorter: 7.2.0(postcss@8.5.8) + browserslist: 4.28.2 + css-declaration-sorter: 7.3.1(postcss@8.5.8) cssnano-utils: 5.0.1(postcss@8.5.8) postcss: 8.5.8 postcss-calc: 10.1.1(postcss@8.5.8) - postcss-colormin: 7.0.6(postcss@8.5.8) + postcss-colormin: 7.0.7(postcss@8.5.8) postcss-convert-values: 7.0.9(postcss@8.5.8) postcss-discard-comments: 7.0.6(postcss@8.5.8) postcss-discard-duplicates: 7.0.2(postcss@8.5.8) @@ -25855,7 +26447,7 @@ snapshots: postcss-merge-longhand: 7.0.5(postcss@8.5.8) postcss-merge-rules: 7.0.8(postcss@8.5.8) postcss-minify-font-values: 7.0.1(postcss@8.5.8) - postcss-minify-gradients: 7.0.1(postcss@8.5.8) + postcss-minify-gradients: 7.0.2(postcss@8.5.8) postcss-minify-params: 7.0.6(postcss@8.5.8) postcss-minify-selectors: 7.0.6(postcss@8.5.8) postcss-normalize-charset: 7.0.1(postcss@8.5.8) @@ -25887,9 +26479,9 @@ snapshots: lilconfig: 3.1.3 postcss: 8.5.8 - cssnano@7.1.3(postcss@8.5.8): + cssnano@7.1.4(postcss@8.5.8): dependencies: - cssnano-preset-default: 7.0.11(postcss@8.5.8) + cssnano-preset-default: 7.0.12(postcss@8.5.8) lilconfig: 3.1.3 postcss: 8.5.8 @@ -25899,53 +26491,6 @@ snapshots: csstype@3.2.3: {} - cypress@15.11.0: - dependencies: - '@cypress/request': 3.0.10 - '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/sinonjs__fake-timers': 8.1.1 - '@types/sizzle': 2.3.10 - '@types/tmp': 0.2.6 - arch: 2.2.0 - blob-util: 2.0.2 - bluebird: 3.7.2 - buffer: 5.7.1 - cachedir: 2.4.0 - chalk: 4.1.2 - ci-info: 4.4.0 - cli-cursor: 3.1.0 - cli-table3: 0.6.1 - commander: 6.2.1 - common-tags: 1.8.2 - dayjs: 1.11.20 - debug: 4.4.3(supports-color@8.1.1) - enquirer: 2.4.1 - eventemitter2: 6.4.7 - execa: 4.1.0 - executable: 4.1.1 - extract-zip: 2.0.1(supports-color@8.1.1) - figures: 3.2.0 - fs-extra: 9.1.0 - hasha: 5.2.2 - is-installed-globally: 0.4.0 - listr2: 3.14.0(enquirer@2.4.1) - lodash: 4.17.23 - log-symbols: 4.1.0 - minimist: 1.2.8 - ospath: 1.2.2 - pretty-bytes: 5.6.0 - process: 0.11.10 - proxy-from-env: 1.0.0 - request-progress: 3.0.0 - supports-color: 8.1.1 - systeminformation: 5.31.5 - tmp: 0.2.5 - tree-kill: 1.2.2 - tslib: 1.14.1 - untildify: 4.0.0 - yauzl: 2.10.0 - optional: true - cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): dependencies: cose-base: 1.0.3 @@ -25988,7 +26533,7 @@ snapshots: d3-delaunay@6.0.4: dependencies: - delaunator: 5.0.0 + delaunator: 5.1.0 d3-dispatch@3.0.1: {} @@ -26015,9 +26560,9 @@ snapshots: d3-quadtree: 3.0.1 d3-timer: 3.0.1 - d3-format@3.1.0: {} + d3-format@3.1.2: {} - d3-geo@3.1.0: + d3-geo@3.1.1: dependencies: d3-array: 3.2.4 @@ -26042,7 +26587,7 @@ snapshots: d3-array: 2.12.1 d3-shape: 1.3.7 - d3-scale-chromatic@3.0.0: + d3-scale-chromatic@3.1.0: dependencies: d3-color: 3.1.0 d3-interpolate: 3.0.1 @@ -26050,7 +26595,7 @@ snapshots: d3-scale@4.0.2: dependencies: d3-array: 3.2.4 - d3-format: 3.1.0 + d3-format: 3.1.2 d3-interpolate: 3.0.1 d3-time: 3.1.0 d3-time-format: 4.1.0 @@ -26107,8 +26652,8 @@ snapshots: d3-ease: 3.0.1 d3-fetch: 3.0.1 d3-force: 3.0.0 - d3-format: 3.1.0 - d3-geo: 3.1.0 + d3-format: 3.1.2 + d3-geo: 3.1.1 d3-hierarchy: 3.1.2 d3-interpolate: 3.0.1 d3-path: 3.1.0 @@ -26116,7 +26661,7 @@ snapshots: d3-quadtree: 3.0.1 d3-random: 3.0.1 d3-scale: 4.0.2 - d3-scale-chromatic: 3.0.0 + d3-scale-chromatic: 3.1.0 d3-selection: 3.0.0 d3-shape: 3.2.0 d3-time: 3.1.0 @@ -26128,15 +26673,10 @@ snapshots: dagre-d3-es@7.0.14: dependencies: d3: 7.9.0 - lodash-es: 4.17.23 + lodash-es: 4.18.1 daisyui@5.5.19: {} - dashdash@1.14.1: - dependencies: - assert-plus: 1.0.0 - optional: true - data-urls@7.0.0: dependencies: whatwg-mimetype: 5.0.0 @@ -26144,8 +26684,6 @@ snapshots: transitivePeerDependencies: - '@noble/hashes' - date-format@4.0.14: {} - dayjs@1.11.20: {} db0@0.3.4: {} @@ -26156,17 +26694,9 @@ snapshots: dependencies: ms: 2.0.0 - debug@3.2.7(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - debug@4.4.3(supports-color@8.1.1): + debug@4.4.3: dependencies: ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 decache@4.6.2: dependencies: @@ -26176,7 +26706,7 @@ snapshots: decimal.js@10.6.0: {} - decode-named-character-reference@1.0.2: + decode-named-character-reference@1.3.0: dependencies: character-entities: 2.0.2 @@ -26184,26 +26714,24 @@ snapshots: dependencies: mimic-response: 3.1.0 - dedent@1.6.0(babel-plugin-macros@3.1.0): + dedent@1.7.2(babel-plugin-macros@3.1.0): optionalDependencies: babel-plugin-macros: 3.1.0 deep-eql@5.0.2: {} - deep-equal@1.0.1: {} - deep-extend@0.6.0: {} deep-is@0.1.4: {} deepmerge@4.3.1: {} - default-browser-id@5.0.0: {} + default-browser-id@5.0.1: {} - default-browser@5.4.0: + default-browser@5.5.0: dependencies: bundle-name: 4.1.0 - default-browser-id: 5.0.0 + default-browser-id: 5.0.1 defaults@1.0.4: dependencies: @@ -26227,19 +26755,14 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.4: {} + defu@6.1.6: {} - delaunator@5.0.0: + delaunator@5.1.0: dependencies: - robust-predicates: 3.0.2 + robust-predicates: 3.0.3 delayed-stream@1.0.0: {} - delegates@1.0.0: {} - - denque@2.1.0: - optional: true - depd@1.1.2: {} depd@2.0.0: {} @@ -26252,19 +26775,16 @@ snapshots: destroy@1.2.0: {} - detect-libc@1.0.3: - optional: true - detect-libc@2.1.2: {} detect-newline@3.1.0: {} detect-node@2.1.0: {} - detect-port@1.5.1: + detect-port@1.6.1: dependencies: - address: 1.2.1 - debug: 4.4.3(supports-color@8.1.1) + address: 1.2.2 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -26278,9 +26798,6 @@ snapshots: diff-sequences@29.6.3: {} - diff@4.0.4: - optional: true - diff@8.0.4: {} dir-glob@3.0.1: @@ -26289,9 +26806,9 @@ snapshots: dlv@1.1.3: {} - dns-packet@5.4.0: + dns-packet@5.6.1: dependencies: - '@leichtgewicht/ip-codec': 2.0.4 + '@leichtgewicht/ip-codec': 2.0.5 dom-accessibility-api@0.5.16: {} @@ -26323,7 +26840,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - dompurify@3.3.2: + dompurify@3.3.3: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -26354,20 +26871,17 @@ snapshots: dot@2.0.0-beta.1: {} - dotenv-expand@11.0.6: + dotenv-expand@11.0.7: dependencies: dotenv: 16.4.7 dotenv@16.4.7: {} - dotenv@17.3.1: - optional: true - dset@3.1.4: {} - dts-resolver@2.1.3(oxc-resolver@11.19.1): + dts-resolver@2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)): optionalDependencies: - oxc-resolver: 11.19.1 + oxc-resolver: 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) dunder-proto@1.0.1: dependencies: @@ -26377,18 +26891,12 @@ snapshots: duplexer2@0.1.4: dependencies: - readable-stream: 2.3.7 + readable-stream: 2.3.8 duplexer@0.1.2: {} eastasianwidth@0.2.0: {} - ecc-jsbn@0.1.2: - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - optional: true - ee-first@1.1.1: {} effect@4.0.0-beta.36: @@ -26402,19 +26910,21 @@ snapshots: multipasta: 0.2.7 toml: 3.0.0 uuid: 13.0.0 - yaml: 2.8.2 + yaml: 2.8.3 ejs@3.1.10: dependencies: - jake: 10.8.7 + jake: 10.9.4 + + ejs@5.0.1: {} - electron-to-chromium@1.5.278: {} + electron-to-chromium@1.5.331: {} emittery@0.13.1: {} emoji-regex-xs@2.0.1: {} - emoji-regex@10.3.0: {} + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -26424,7 +26934,7 @@ snapshots: emojis-list@3.0.0: {} - emoticon@4.0.1: {} + emoticon@4.1.0: {} empathic@2.0.0: {} @@ -26441,30 +26951,24 @@ snapshots: dependencies: iconv-lite: 0.6.3 - end-of-stream@1.4.4: + end-of-stream@1.4.5: dependencies: once: 1.4.0 enhanced-resolve@5.20.1: dependencies: graceful-fs: 4.2.11 - tapable: 2.3.0 + tapable: 2.3.2 enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 - enquirer@2.4.1: - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - optional: true - entities@2.2.0: {} entities@4.5.0: {} - entities@6.0.0: {} + entities@6.0.1: {} entities@7.0.1: {} @@ -26477,10 +26981,10 @@ snapshots: env-runner@0.1.7: dependencies: - crossws: 0.4.4(srvx@0.11.13) + crossws: 0.4.4(srvx@0.11.15) exsolve: 1.0.8 httpxy: 0.5.0 - srvx: 0.11.13 + srvx: 0.11.15 environment@1.1.0: {} @@ -26491,7 +26995,7 @@ snapshots: prr: 1.0.1 optional: true - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -26526,25 +27030,17 @@ snapshots: esast-util-from-estree@2.0.0: dependencies: - '@types/estree-jsx': 1.0.1 + '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-visit: 2.0.0 unist-util-position-from-estree: 2.0.0 esast-util-from-js@2.0.1: dependencies: - '@types/estree-jsx': 1.0.1 + '@types/estree-jsx': 1.0.5 acorn: 8.16.0 esast-util-from-estree: 2.0.0 - vfile-message: 4.0.2 - - esbuild-register@3.6.0(esbuild@0.27.4): - dependencies: - debug: 4.4.3(supports-color@8.1.1) - esbuild: 0.27.4 - transitivePeerDependencies: - - supports-color - optional: true + vfile-message: 4.0.3 esbuild-wasm@0.27.3: {} @@ -26577,34 +27073,34 @@ snapshots: '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 - esbuild@0.27.4: + esbuild@0.27.7: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.4 - '@esbuild/android-arm': 0.27.4 - '@esbuild/android-arm64': 0.27.4 - '@esbuild/android-x64': 0.27.4 - '@esbuild/darwin-arm64': 0.27.4 - '@esbuild/darwin-x64': 0.27.4 - '@esbuild/freebsd-arm64': 0.27.4 - '@esbuild/freebsd-x64': 0.27.4 - '@esbuild/linux-arm': 0.27.4 - '@esbuild/linux-arm64': 0.27.4 - '@esbuild/linux-ia32': 0.27.4 - '@esbuild/linux-loong64': 0.27.4 - '@esbuild/linux-mips64el': 0.27.4 - '@esbuild/linux-ppc64': 0.27.4 - '@esbuild/linux-riscv64': 0.27.4 - '@esbuild/linux-s390x': 0.27.4 - '@esbuild/linux-x64': 0.27.4 - '@esbuild/netbsd-arm64': 0.27.4 - '@esbuild/netbsd-x64': 0.27.4 - '@esbuild/openbsd-arm64': 0.27.4 - '@esbuild/openbsd-x64': 0.27.4 - '@esbuild/openharmony-arm64': 0.27.4 - '@esbuild/sunos-x64': 0.27.4 - '@esbuild/win32-arm64': 0.27.4 - '@esbuild/win32-ia32': 0.27.4 - '@esbuild/win32-x64': 0.27.4 + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 escalade@3.2.0: {} @@ -26620,25 +27116,25 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.1.0(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@10.2.0(jiti@2.6.1)): dependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) - eslint-plugin-oxlint@1.57.0(oxlint@1.57.0(oxlint-tsgolint@0.19.0)): + eslint-plugin-oxlint@1.58.0(oxlint@1.58.0(oxlint-tsgolint@0.19.0)): dependencies: jsonc-parser: 3.3.1 - oxlint: 1.57.0(oxlint-tsgolint@0.19.0) + oxlint: 1.58.0(oxlint-tsgolint@0.19.0) - eslint-plugin-playwright@2.10.1(eslint@10.1.0(jiti@2.6.1)): + eslint-plugin-playwright@2.10.1(eslint@10.2.0(jiti@2.6.1)): dependencies: - eslint: 10.1.0(jiti@2.6.1) + eslint: 10.2.0(jiti@2.6.1) globals: 17.4.0 - eslint-plugin-storybook@10.3.3(eslint@10.1.0(jiti@2.6.1))(storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2): + eslint-plugin-storybook@10.3.3(eslint@10.2.0(jiti@2.6.1))(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2): dependencies: - '@typescript-eslint/utils': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - eslint: 10.1.0(jiti@2.6.1) - storybook: 10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + eslint: 10.2.0(jiti@2.6.1) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) transitivePeerDependencies: - supports-color - typescript @@ -26661,21 +27157,21 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.1.0(jiti@2.6.1): + eslint@10.2.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.3 - '@eslint/config-helpers': 0.5.3 - '@eslint/core': 1.1.1 - '@eslint/plugin-kit': 0.6.1 + '@eslint/config-array': 0.23.4 + '@eslint/config-helpers': 0.5.4 + '@eslint/core': 1.2.0 + '@eslint/plugin-kit': 0.7.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 ajv: 6.14.0 cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 escape-string-regexp: 4.0.0 eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 @@ -26690,9 +27186,9 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.4 + minimatch: 10.2.5 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 optionalDependencies: jiti: 2.6.1 transitivePeerDependencies: @@ -26736,7 +27232,7 @@ snapshots: estree-util-build-jsx@3.0.1: dependencies: - '@types/estree-jsx': 1.0.1 + '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 @@ -26750,19 +27246,18 @@ snapshots: estree-util-to-js@2.0.0: dependencies: - '@types/estree-jsx': 1.0.1 - astring: 1.8.6 + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 source-map: 0.7.6 - estree-util-value-to-estree@3.1.1: + estree-util-value-to-estree@3.5.0: dependencies: '@types/estree': 1.0.8 - is-plain-obj: 4.1.0 estree-util-visit@2.0.0: dependencies: - '@types/estree-jsx': 1.0.1 - '@types/unist': 3.0.0 + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 estree-walker@2.0.2: {} @@ -26778,7 +27273,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 require-like: 0.1.2 event-stream@4.0.1: @@ -26791,20 +27286,17 @@ snapshots: stream-combiner: 0.2.2 through: 2.3.8 - eventemitter2@6.4.7: - optional: true - eventemitter3@4.0.7: {} - eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} events@3.3.0: {} - eventsource-parser@3.0.3: {} + eventsource-parser@3.0.6: {} eventsource@3.0.7: dependencies: - eventsource-parser: 3.0.3 + eventsource-parser: 3.0.6 execa@4.1.0: dependencies: @@ -26837,7 +27329,7 @@ snapshots: human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.1.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 @@ -26852,15 +27344,10 @@ snapshots: is-plain-obj: 4.1.0 is-stream: 4.0.1 npm-run-path: 6.0.0 - pretty-ms: 9.2.0 + pretty-ms: 9.3.0 signal-exit: 4.1.0 strip-final-newline: 4.0.0 - yoctocolors: 2.1.1 - - executable@4.1.1: - dependencies: - pify: 2.3.0 - optional: true + yoctocolors: 2.1.2 exit-x@0.2.2: {} @@ -26870,18 +27357,18 @@ snapshots: expect-type@1.3.0: {} - expect@30.0.5: + expect@30.3.0: dependencies: - '@jest/expect-utils': 30.0.5 - '@jest/get-type': 30.0.1 - jest-matcher-utils: 30.0.5 - jest-message-util: 30.0.5 - jest-mock: 30.0.5 - jest-util: 30.0.5 + '@jest/expect-utils': 30.3.0 + '@jest/get-type': 30.1.0 + jest-matcher-utils: 30.3.0 + jest-message-util: 30.3.0 + jest-mock: 30.3.0 + jest-util: 30.3.0 - exponential-backoff@3.1.1: {} + exponential-backoff@3.1.3: {} - express-rate-limit@8.3.1(express@5.2.1): + express-rate-limit@8.3.2(express@5.2.1): dependencies: express: 5.2.1 ip-address: 10.1.0 @@ -26890,30 +27377,30 @@ snapshots: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.3 + body-parser: 1.20.4 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.7.2 - cookie-signature: 1.0.6 + cookie-signature: 1.0.7 debug: 2.6.9 depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.3.1 + finalhandler: 1.3.2 fresh: 0.5.2 http-errors: 2.0.1 merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.12 + path-to-regexp: 0.1.13 proxy-addr: 2.0.7 qs: 6.14.2 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 + send: 0.19.2 + serve-static: 1.16.3 setprototypeof: 1.2.0 statuses: 2.0.2 type-is: 1.6.18 @@ -26926,16 +27413,16 @@ snapshots: dependencies: accepts: 2.0.0 body-parser: 2.2.2 - content-disposition: 1.0.0 + content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 2.1.0 + finalhandler: 2.1.1 fresh: 2.0.0 http-errors: 2.0.1 merge-descriptors: 2.0.0 @@ -26944,7 +27431,7 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.14.2 + qs: 6.15.0 range-parser: 1.2.1 router: 2.2.0 send: 1.2.1 @@ -26969,20 +27456,6 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - extract-zip@2.0.1(supports-color@8.1.1): - dependencies: - debug: 4.4.3(supports-color@8.1.1) - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - optional: true - - extsprintf@1.3.0: - optional: true - fancy-log@2.0.0: dependencies: color-support: 1.1.3 @@ -27003,15 +27476,25 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-json-stable-stringify@2.1.0: {} + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-string-truncated-width@1.2.1: {} + + fast-string-width@1.1.0: + dependencies: + fast-string-truncated-width: 1.2.1 - fast-levenshtein@2.0.6: {} + fast-uri@3.1.0: {} - fast-uri@3.0.1: {} + fast-wrap-ansi@0.1.6: + dependencies: + fast-string-width: 1.1.0 - fastq@1.13.0: + fastq@1.20.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 fault@2.0.1: dependencies: @@ -27029,10 +27512,9 @@ snapshots: dependencies: walk-up-path: 4.0.0 - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - optional: true + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 fdir@6.5.0(picomatch@4.0.4): optionalDependencies: @@ -27062,15 +27544,15 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + file-loader@6.2.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - filelist@1.0.4: + filelist@1.0.6: dependencies: - minimatch: 5.1.0 + minimatch: 5.1.9 fill-range@7.1.1: dependencies: @@ -27088,21 +27570,21 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@1.3.1: + finalhandler@1.3.2: dependencies: debug: 2.6.9 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 - statuses: 2.0.1 + statuses: 2.0.2 unpipe: 1.0.0 transitivePeerDependencies: - supports-color - finalhandler@2.1.0: + finalhandler@2.1.1: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -27175,7 +27657,7 @@ snapshots: follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 fontace@0.4.1: dependencies: @@ -27190,10 +27672,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - forever-agent@0.6.1: - optional: true - - fork-ts-checker-webpack-plugin@9.1.0(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + fork-ts-checker-webpack-plugin@9.1.0(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: '@babel/code-frame': 7.29.0 chalk: 4.1.2 @@ -27201,14 +27680,14 @@ snapshots: cosmiconfig: 8.3.6(typescript@6.0.2) deepmerge: 4.3.1 fs-extra: 10.1.0 - memfs: 3.4.13 + memfs: 3.5.3 minimatch: 3.1.5 - node-abort-controller: 3.0.1 + node-abort-controller: 3.1.1 schema-utils: 3.3.0 semver: 7.7.4 - tapable: 2.3.0 + tapable: 2.3.2 typescript: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) form-data-encoder@2.1.4: {} @@ -27233,46 +27712,40 @@ snapshots: from2@2.3.0: dependencies: inherits: 2.0.4 - readable-stream: 2.3.7 + readable-stream: 2.3.8 from@0.1.7: {} front-matter@4.0.2: dependencies: - js-yaml: 3.14.1 + js-yaml: 3.14.2 fs-constants@1.0.0: {} fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 + jsonfile: 6.2.0 + universalify: 2.0.1 fs-extra@11.3.4: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 + jsonfile: 6.2.0 + universalify: 2.0.1 fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 + jsonfile: 6.2.0 + universalify: 2.0.1 - fs-minipass@3.0.0: + fs-minipass@3.0.3: dependencies: - minipass: 4.0.0 + minipass: 7.1.3 - fs-monkey@1.0.3: {} + fs-monkey@1.1.0: {} fs.realpath@1.0.0: {} @@ -27290,7 +27763,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.4.0: {} + get-east-asian-width@1.5.0: {} get-intrinsic@1.3.0: dependencies: @@ -27316,7 +27789,7 @@ snapshots: get-stream@5.2.0: dependencies: - pump: 3.0.0 + pump: 3.0.4 get-stream@6.0.1: {} @@ -27333,22 +27806,7 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - getpass@0.1.7: - dependencies: - assert-plus: 1.0.0 - optional: true - - giget@2.0.0: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - defu: 6.1.4 - node-fetch-native: 1.6.7 - nypm: 0.6.5 - pathe: 2.0.3 - optional: true - - git-log-parser@1.2.0: + git-log-parser@1.2.1: dependencies: argv-formatter: 1.0.0 spawn-error-forwarder: 1.0.0 @@ -27357,9 +27815,9 @@ snapshots: through2: 2.0.5 traverse: 0.6.8 - git-raw-commits@5.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.3.0): + git-raw-commits@5.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0): dependencies: - '@conventional-changelog/git-client': 2.6.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.3.0) + '@conventional-changelog/git-client': 2.6.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0) meow: 13.2.0 transitivePeerDependencies: - conventional-commits-filter @@ -27392,18 +27850,9 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.1.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 4.1.1 - minimatch: 10.2.4 - minipass: 7.1.3 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.2 - glob@13.0.6: dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 minipass: 7.1.3 path-scurry: 2.0.2 @@ -27421,14 +27870,14 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.1.0 + minimatch: 5.1.9 once: 1.4.0 global-directory@4.0.1: dependencies: ini: 4.1.1 - global-dirs@3.0.0: + global-dirs@3.0.1: dependencies: ini: 2.0.0 @@ -27448,7 +27897,7 @@ snapshots: globals@14.0.0: {} - globals@15.12.0: {} + globals@15.15.0: {} globals@17.4.0: {} @@ -27469,7 +27918,7 @@ snapshots: merge2: 1.4.1 slash: 4.0.0 - globby@16.1.1: + globby@16.2.0: dependencies: '@sindresorhus/merge-streams': 4.0.0 fast-glob: 3.3.3 @@ -27500,7 +27949,7 @@ snapshots: gray-matter@4.0.3: dependencies: - js-yaml: 3.14.1 + js-yaml: 3.14.2 kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 @@ -27509,11 +27958,11 @@ snapshots: dependencies: duplexer: 0.1.2 - h3@1.15.6: + h3@1.15.11: dependencies: - cookie-es: 1.2.2 + cookie-es: 1.2.3 crossws: 0.3.5 - defu: 6.1.4 + defu: 6.1.6 destr: 2.0.5 iron-webcrypto: 1.2.1 node-mock-http: 1.0.4 @@ -27521,34 +27970,34 @@ snapshots: ufo: 1.6.3 uncrypto: 0.1.3 - h3@2.0.1-rc.20(crossws@0.4.4(srvx@0.11.13)): + h3@2.0.1-rc.20(crossws@0.4.4(srvx@0.11.15)): dependencies: rou3: 0.8.1 - srvx: 0.11.13 + srvx: 0.11.15 optionalDependencies: - crossws: 0.4.4(srvx@0.11.13) + crossws: 0.4.4(srvx@0.11.15) hachure-fill@0.5.2: {} handle-thing@2.0.1: {} - handlebars@4.7.8: + handlebars@4.7.9: dependencies: minimist: 1.2.8 neo-async: 2.6.2 source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.17.4 + uglify-js: 3.19.3 happy-dom@20.8.9: dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 '@types/whatwg-mimetype': 3.0.2 '@types/ws': 8.18.1 entities: 7.0.1 whatwg-mimetype: 3.0.0 - ws: 8.19.0 + ws: 8.20.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -27571,12 +28020,6 @@ snapshots: has-yarn@3.0.0: {} - hasha@5.2.2: - dependencies: - is-stream: 2.0.1 - type-fest: 0.8.1 - optional: true - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -27585,20 +28028,20 @@ snapshots: dependencies: '@types/hast': 3.0.4 devlop: 1.1.0 - hast-util-from-parse5: 8.0.1 + hast-util-from-parse5: 8.0.3 parse5: 7.3.0 vfile: 6.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 - hast-util-from-parse5@8.0.1: + hast-util-from-parse5@8.0.3: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 devlop: 1.1.0 - hastscript: 8.0.0 - property-information: 6.1.1 + hastscript: 9.0.1 + property-information: 7.1.0 vfile: 6.0.3 - vfile-location: 5.0.2 + vfile-location: 5.0.3 web-namespaces: 2.0.1 hast-util-is-element@3.0.0: @@ -27609,15 +28052,15 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hast-util-raw@9.0.1: + hast-util-raw@9.1.0: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 '@ungap/structured-clone': 1.3.0 - hast-util-from-parse5: 8.0.1 - hast-util-to-parse5: 8.0.0 + hast-util-from-parse5: 8.0.3 + hast-util-to-parse5: 8.0.1 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.1 parse5: 7.3.0 unist-util-position: 5.0.0 unist-util-visit: 5.1.0 @@ -27625,22 +28068,22 @@ snapshots: web-namespaces: 2.0.1 zwitch: 2.0.4 - hast-util-to-estree@3.1.0: + hast-util-to-estree@3.1.3: dependencies: '@types/estree': 1.0.8 - '@types/estree-jsx': 1.0.1 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.2 + comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-attach-comments: 3.0.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.1.1 - space-separated-tokens: 2.0.1 - style-to-object: 0.4.2 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -27649,51 +28092,51 @@ snapshots: hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 ccount: 2.0.1 - comma-separated-tokens: 2.0.2 + comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.1 property-information: 7.1.0 - space-separated-tokens: 2.0.1 - stringify-entities: 4.0.3 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 zwitch: 2.0.4 - hast-util-to-jsx-runtime@2.3.0: + hast-util-to-jsx-runtime@2.3.6: dependencies: '@types/estree': 1.0.8 '@types/hast': 3.0.4 - '@types/unist': 3.0.0 - comma-separated-tokens: 2.0.2 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.1.1 - space-separated-tokens: 2.0.1 - style-to-object: 1.0.5 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 unist-util-position: 5.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color - hast-util-to-parse5@8.0.0: + hast-util-to-parse5@8.0.1: dependencies: '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.2 + comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.1.1 - space-separated-tokens: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 hast-util-to-text@4.0.2: dependencies: '@types/hast': 3.0.4 - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 @@ -27701,13 +28144,13 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hastscript@8.0.0: + hastscript@9.0.1: dependencies: '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.2 + comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 6.1.1 - space-separated-tokens: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 he@1.2.0: {} @@ -27732,13 +28175,13 @@ snapshots: dependencies: parse-passwd: 1.0.0 - hono@4.11.5: {} + hono@4.12.10: {} hook-std@4.0.0: {} hookable@6.1.0: {} - hosted-git-info@7.0.1: + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -27746,7 +28189,7 @@ snapshots: dependencies: lru-cache: 10.4.3 - hosted-git-info@9.0.0: + hosted-git-info@9.0.2: dependencies: lru-cache: 11.2.7 @@ -27754,7 +28197,7 @@ snapshots: dependencies: inherits: 2.0.4 obuf: 1.1.2 - readable-stream: 2.3.7 + readable-stream: 2.3.8 wbuf: 1.7.3 html-encoding-sniffer@3.0.0: @@ -27781,7 +28224,7 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.46.0 + terser: 5.46.1 html-minifier-terser@7.2.0: dependencies: @@ -27791,29 +28234,41 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.46.0 + terser: 5.46.1 html-tags@3.3.1: {} html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 - lodash: 4.17.21 + lodash: 4.18.1 pretty-error: 4.0.0 - tapable: 2.3.0 + tapable: 2.3.2 + optionalDependencies: + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) + optional: true + + html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.18.1 + pretty-error: 4.0.0 + tapable: 2.3.2 optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - htmlparser2@10.0.0: + htmlparser2@10.1.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - entities: 6.0.0 + entities: 7.0.1 htmlparser2@6.1.0: dependencies: @@ -27829,11 +28284,6 @@ snapshots: domutils: 3.2.2 entities: 4.5.0 - http-assert@1.5.0: - dependencies: - deep-equal: 1.0.1 - http-errors: 1.8.1 - http-auth-connect@1.0.6: {} http-auth@4.1.9: @@ -27847,13 +28297,6 @@ snapshots: http-deceiver@1.2.7: {} - http-errors@1.6.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - http-errors@1.8.1: dependencies: depd: 1.1.2 @@ -27862,14 +28305,6 @@ snapshots: statuses: 1.5.0 toidentifier: 1.0.1 - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - http-errors@2.0.1: dependencies: depd: 2.0.0 @@ -27878,18 +28313,18 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 - http-parser-js@0.5.8: {} + http-parser-js@0.5.10: {} http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.3 - debug: 4.4.3(supports-color@8.1.1) + agent-base: 7.1.4 + debug: 4.4.3 transitivePeerDependencies: - supports-color http-proxy-middleware@2.0.9(@types/express@4.17.25): dependencies: - '@types/http-proxy': 1.17.15 + '@types/http-proxy': 1.17.17 http-proxy: 1.18.1(debug@4.4.3) is-glob: 4.0.3 is-plain-obj: 3.0.0 @@ -27901,8 +28336,8 @@ snapshots: http-proxy-middleware@3.0.5: dependencies: - '@types/http-proxy': 1.17.15 - debug: 4.4.3(supports-color@8.1.1) + '@types/http-proxy': 1.17.17 + debug: 4.4.3 http-proxy: 1.18.1(debug@4.4.3) is-glob: 4.0.3 is-plain-object: 5.0.0 @@ -27929,7 +28364,7 @@ snapshots: mime: 1.6.0 minimist: 1.2.8 opener: 1.5.2 - portfinder: 1.0.32 + portfinder: 1.0.38 secure-compare: 3.0.1 union: 0.5.0 url-join: 4.0.1 @@ -27937,13 +28372,6 @@ snapshots: - debug - supports-color - http-signature@1.4.0: - dependencies: - assert-plus: 1.0.0 - jsprim: 2.0.2 - sshpk: 1.18.0 - optional: true - http2-wrapper@2.2.1: dependencies: quick-lru: 5.1.1 @@ -27951,8 +28379,8 @@ snapshots: https-proxy-agent@7.0.6: dependencies: - agent-base: 7.1.3 - debug: 4.4.3(supports-color@8.1.1) + agent-base: 7.1.4 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -27982,7 +28410,7 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.7.0: + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -27998,7 +28426,7 @@ snapshots: ignore-walk@8.0.0: dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 ignore@5.3.2: {} @@ -28011,14 +28439,14 @@ snapshots: immutable@5.1.5: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 import-from-esm@2.0.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 import-meta-resolve: 4.2.0 transitivePeerDependencies: - supports-color @@ -28044,8 +28472,6 @@ snapshots: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.3: {} - inherits@2.0.4: {} ini@1.3.8: {} @@ -28056,13 +28482,11 @@ snapshots: ini@6.0.0: {} - injection-js@2.4.0: + injection-js@2.6.1: dependencies: tslib: 2.8.1 - inline-style-parser@0.1.1: {} - - inline-style-parser@0.2.2: {} + inline-style-parser@0.2.7: {} inquirer@7.3.3: dependencies: @@ -28072,7 +28496,7 @@ snapshots: cli-width: 3.0.0 external-editor: 3.1.0 figures: 3.2.0 - lodash: 4.17.21 + lodash: 4.18.1 mute-stream: 0.0.8 run-async: 2.4.1 rxjs: 6.6.7 @@ -28093,31 +28517,11 @@ snapshots: dependencies: loose-envify: 1.4.0 - ioredis@5.10.0: - dependencies: - '@ioredis/commands': 1.5.1 - cluster-key-slot: 1.1.2 - debug: 4.4.3(supports-color@8.1.1) - denque: 2.1.0 - lodash.defaults: 4.2.0 - lodash.isarguments: 3.1.0 - redis-errors: 1.2.0 - redis-parser: 3.0.0 - standard-as-callback: 2.1.0 - transitivePeerDependencies: - - supports-color - optional: true - ip-address@10.1.0: {} - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - ipaddr.js@1.9.1: {} - ipaddr.js@2.2.0: {} + ipaddr.js@2.3.0: {} iron-webcrypto@1.2.1: {} @@ -28132,11 +28536,11 @@ snapshots: is-binary-path@2.1.0: dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 is-ci@3.0.1: dependencies: - ci-info: 3.8.0 + ci-info: 3.9.0 is-core-module@2.16.1: dependencies: @@ -28154,9 +28558,9 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@5.0.0: + is-fullwidth-code-point@5.1.0: dependencies: - get-east-asian-width: 1.4.0 + get-east-asian-width: 1.5.0 is-generator-fn@2.1.0: {} @@ -28174,16 +28578,16 @@ snapshots: is-installed-globally@0.4.0: dependencies: - global-dirs: 3.0.0 + global-dirs: 3.0.1 is-path-inside: 3.0.3 is-interactive@1.0.0: {} is-interactive@2.0.0: {} - is-network-error@1.1.0: {} + is-network-error@1.3.1: {} - is-npm@6.0.0: {} + is-npm@6.1.0: {} is-number@7.0.0: {} @@ -28233,7 +28637,7 @@ snapshots: dependencies: is-docker: 2.2.1 - is-wsl@3.1.0: + is-wsl@3.1.1: dependencies: is-inside-container: 1.0.0 @@ -28245,7 +28649,7 @@ snapshots: isexe@2.0.0: {} - isexe@3.1.1: {} + isexe@4.0.0: {} isobject@3.0.1: {} @@ -28253,9 +28657,6 @@ snapshots: dependencies: ws: 8.18.0 - isstream@0.1.2: - optional: true - issue-parser@7.0.1: dependencies: lodash.capitalize: 4.2.1 @@ -28269,7 +28670,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.4 @@ -28285,7 +28686,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -28301,38 +28702,33 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jackspeak@4.1.1: - dependencies: - '@isaacs/cliui': 8.0.2 - - jake@10.8.7: + jake@10.9.4: dependencies: - async: 3.2.4 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.5 + async: 3.2.6 + filelist: 1.0.6 + picocolors: 1.1.1 java-properties@1.0.2: {} - jest-circus@30.0.5(babel-plugin-macros@3.1.0): + jest-circus@30.3.0(babel-plugin-macros@3.1.0): dependencies: - '@jest/environment': 30.0.5 - '@jest/expect': 30.0.5 - '@jest/test-result': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 25.5.0 + '@jest/environment': 30.3.0 + '@jest/expect': 30.3.0 + '@jest/test-result': 30.3.0 + '@jest/types': 30.3.0 + '@types/node': 25.5.2 chalk: 4.1.2 co: 4.6.0 - dedent: 1.6.0(babel-plugin-macros@3.1.0) + dedent: 1.7.2(babel-plugin-macros@3.1.0) is-generator-fn: 2.1.0 - jest-each: 30.0.5 - jest-matcher-utils: 30.0.5 - jest-message-util: 30.0.5 - jest-runtime: 30.0.5 - jest-snapshot: 30.0.5 - jest-util: 30.0.5 + jest-each: 30.3.0 + jest-matcher-utils: 30.3.0 + jest-message-util: 30.3.0 + jest-runtime: 30.3.0 + jest-snapshot: 30.3.0 + jest-util: 30.3.0 p-limit: 3.1.0 - pretty-format: 30.0.5 + pretty-format: 30.3.0 pure-rand: 7.0.1 slash: 3.0.0 stack-utils: 2.0.6 @@ -28340,36 +28736,33 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@30.0.5(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.27.4))(ts-node@10.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(typescript@6.0.2)): + jest-config@30.3.0(@types/node@25.5.2)(babel-plugin-macros@3.1.0): dependencies: '@babel/core': 7.29.0 - '@jest/get-type': 30.0.1 + '@jest/get-type': 30.1.0 '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.0.5 - '@jest/types': 30.0.5 - babel-jest: 30.0.5(@babel/core@7.29.0) + '@jest/test-sequencer': 30.3.0 + '@jest/types': 30.3.0 + babel-jest: 30.3.0(@babel/core@7.29.0) chalk: 4.1.2 ci-info: 4.4.0 deepmerge: 4.3.1 glob: 10.5.0 graceful-fs: 4.2.11 - jest-circus: 30.0.5(babel-plugin-macros@3.1.0) - jest-docblock: 30.0.1 - jest-environment-node: 30.0.5 + jest-circus: 30.3.0(babel-plugin-macros@3.1.0) + jest-docblock: 30.2.0 + jest-environment-node: 30.3.0 jest-regex-util: 30.0.1 - jest-resolve: 30.0.5 - jest-runner: 30.0.5 - jest-util: 30.0.5 - jest-validate: 30.0.5 - micromatch: 4.0.8 + jest-resolve: 30.3.0 + jest-runner: 30.3.0 + jest-util: 30.3.0 + jest-validate: 30.3.0 parse-json: 5.2.0 - pretty-format: 30.0.5 + pretty-format: 30.3.0 slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 25.5.0 - esbuild-register: 3.6.0(esbuild@0.27.4) - ts-node: 10.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(typescript@6.0.2) + '@types/node': 25.5.2 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -28381,235 +28774,235 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-diff@30.0.5: + jest-diff@30.3.0: dependencies: - '@jest/diff-sequences': 30.0.1 - '@jest/get-type': 30.0.1 + '@jest/diff-sequences': 30.3.0 + '@jest/get-type': 30.1.0 chalk: 4.1.2 - pretty-format: 30.0.5 + pretty-format: 30.3.0 - jest-docblock@30.0.1: + jest-docblock@30.2.0: dependencies: detect-newline: 3.1.0 - jest-each@30.0.5: + jest-each@30.3.0: dependencies: - '@jest/get-type': 30.0.1 - '@jest/types': 30.0.5 + '@jest/get-type': 30.1.0 + '@jest/types': 30.3.0 chalk: 4.1.2 - jest-util: 30.0.5 - pretty-format: 30.0.5 + jest-util: 30.3.0 + pretty-format: 30.3.0 - jest-environment-node@30.0.5: + jest-environment-node@30.3.0: dependencies: - '@jest/environment': 30.0.5 - '@jest/fake-timers': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 25.5.0 - jest-mock: 30.0.5 - jest-util: 30.0.5 - jest-validate: 30.0.5 + '@jest/environment': 30.3.0 + '@jest/fake-timers': 30.3.0 + '@jest/types': 30.3.0 + '@types/node': 25.5.2 + jest-mock: 30.3.0 + jest-util: 30.3.0 + jest-validate: 30.3.0 jest-get-type@29.6.3: {} - jest-haste-map@30.0.5: + jest-haste-map@30.3.0: dependencies: - '@jest/types': 30.0.5 - '@types/node': 25.5.0 + '@jest/types': 30.3.0 + '@types/node': 25.5.2 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 jest-regex-util: 30.0.1 - jest-util: 30.0.5 - jest-worker: 30.0.5 - micromatch: 4.0.8 + jest-util: 30.3.0 + jest-worker: 30.3.0 + picomatch: 4.0.4 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 - jest-leak-detector@30.0.5: + jest-leak-detector@30.3.0: dependencies: - '@jest/get-type': 30.0.1 - pretty-format: 30.0.5 + '@jest/get-type': 30.1.0 + pretty-format: 30.3.0 - jest-matcher-utils@30.0.5: + jest-matcher-utils@30.3.0: dependencies: - '@jest/get-type': 30.0.1 + '@jest/get-type': 30.1.0 chalk: 4.1.2 - jest-diff: 30.0.5 - pretty-format: 30.0.5 + jest-diff: 30.3.0 + pretty-format: 30.3.0 - jest-message-util@30.0.5: + jest-message-util@30.3.0: dependencies: '@babel/code-frame': 7.29.0 - '@jest/types': 30.0.5 + '@jest/types': 30.3.0 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 30.0.5 + picomatch: 4.0.4 + pretty-format: 30.3.0 slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@30.0.5: + jest-mock@30.3.0: dependencies: - '@jest/types': 30.0.5 - '@types/node': 25.5.0 - jest-util: 30.0.5 + '@jest/types': 30.3.0 + '@types/node': 25.5.2 + jest-util: 30.3.0 - jest-pnp-resolver@1.2.3(jest-resolve@30.0.5): + jest-pnp-resolver@1.2.3(jest-resolve@30.3.0): optionalDependencies: - jest-resolve: 30.0.5 + jest-resolve: 30.3.0 jest-regex-util@30.0.1: {} - jest-resolve@30.0.5: + jest-resolve@30.3.0: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 30.0.5 - jest-pnp-resolver: 1.2.3(jest-resolve@30.0.5) - jest-util: 30.0.5 - jest-validate: 30.0.5 + jest-haste-map: 30.3.0 + jest-pnp-resolver: 1.2.3(jest-resolve@30.3.0) + jest-util: 30.3.0 + jest-validate: 30.3.0 slash: 3.0.0 unrs-resolver: 1.11.1 - jest-runner@30.0.5: + jest-runner@30.3.0: dependencies: - '@jest/console': 30.0.5 - '@jest/environment': 30.0.5 - '@jest/test-result': 30.0.5 - '@jest/transform': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 25.5.0 + '@jest/console': 30.3.0 + '@jest/environment': 30.3.0 + '@jest/test-result': 30.3.0 + '@jest/transform': 30.3.0 + '@jest/types': 30.3.0 + '@types/node': 25.5.2 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 graceful-fs: 4.2.11 - jest-docblock: 30.0.1 - jest-environment-node: 30.0.5 - jest-haste-map: 30.0.5 - jest-leak-detector: 30.0.5 - jest-message-util: 30.0.5 - jest-resolve: 30.0.5 - jest-runtime: 30.0.5 - jest-util: 30.0.5 - jest-watcher: 30.0.5 - jest-worker: 30.0.5 + jest-docblock: 30.2.0 + jest-environment-node: 30.3.0 + jest-haste-map: 30.3.0 + jest-leak-detector: 30.3.0 + jest-message-util: 30.3.0 + jest-resolve: 30.3.0 + jest-runtime: 30.3.0 + jest-util: 30.3.0 + jest-watcher: 30.3.0 + jest-worker: 30.3.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - jest-runtime@30.0.5: + jest-runtime@30.3.0: dependencies: - '@jest/environment': 30.0.5 - '@jest/fake-timers': 30.0.5 - '@jest/globals': 30.0.5 + '@jest/environment': 30.3.0 + '@jest/fake-timers': 30.3.0 + '@jest/globals': 30.3.0 '@jest/source-map': 30.0.1 - '@jest/test-result': 30.0.5 - '@jest/transform': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 25.5.0 + '@jest/test-result': 30.3.0 + '@jest/transform': 30.3.0 + '@jest/types': 30.3.0 + '@types/node': 25.5.2 chalk: 4.1.2 - cjs-module-lexer: 2.1.0 - collect-v8-coverage: 1.0.2 + cjs-module-lexer: 2.2.0 + collect-v8-coverage: 1.0.3 glob: 10.5.0 graceful-fs: 4.2.11 - jest-haste-map: 30.0.5 - jest-message-util: 30.0.5 - jest-mock: 30.0.5 + jest-haste-map: 30.3.0 + jest-message-util: 30.3.0 + jest-mock: 30.3.0 jest-regex-util: 30.0.1 - jest-resolve: 30.0.5 - jest-snapshot: 30.0.5 - jest-util: 30.0.5 + jest-resolve: 30.3.0 + jest-snapshot: 30.3.0 + jest-util: 30.3.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - jest-snapshot@30.0.5: + jest-snapshot@30.3.0: dependencies: '@babel/core': 7.29.0 '@babel/generator': 7.29.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) '@babel/types': 7.29.0 - '@jest/expect-utils': 30.0.5 - '@jest/get-type': 30.0.1 - '@jest/snapshot-utils': 30.0.5 - '@jest/transform': 30.0.5 - '@jest/types': 30.0.5 + '@jest/expect-utils': 30.3.0 + '@jest/get-type': 30.1.0 + '@jest/snapshot-utils': 30.3.0 + '@jest/transform': 30.3.0 + '@jest/types': 30.3.0 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) chalk: 4.1.2 - expect: 30.0.5 + expect: 30.3.0 graceful-fs: 4.2.11 - jest-diff: 30.0.5 - jest-matcher-utils: 30.0.5 - jest-message-util: 30.0.5 - jest-util: 30.0.5 - pretty-format: 30.0.5 + jest-diff: 30.3.0 + jest-matcher-utils: 30.3.0 + jest-message-util: 30.3.0 + jest-util: 30.3.0 + pretty-format: 30.3.0 semver: 7.7.4 - synckit: 0.11.11 + synckit: 0.11.12 transitivePeerDependencies: - supports-color jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 25.5.0 + '@types/node': 25.5.2 chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 graceful-fs: 4.2.11 - picomatch: 2.3.1 + picomatch: 2.3.2 - jest-util@30.0.5: + jest-util@30.3.0: dependencies: - '@jest/types': 30.0.5 - '@types/node': 25.5.0 + '@jest/types': 30.3.0 + '@types/node': 25.5.2 chalk: 4.1.2 ci-info: 4.4.0 graceful-fs: 4.2.11 picomatch: 4.0.4 - jest-validate@30.0.5: + jest-validate@30.3.0: dependencies: - '@jest/get-type': 30.0.1 - '@jest/types': 30.0.5 + '@jest/get-type': 30.1.0 + '@jest/types': 30.3.0 camelcase: 6.3.0 chalk: 4.1.2 leven: 3.1.0 - pretty-format: 30.0.5 + pretty-format: 30.3.0 - jest-watcher@30.0.5: + jest-watcher@30.3.0: dependencies: - '@jest/test-result': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 25.5.0 + '@jest/test-result': 30.3.0 + '@jest/types': 30.3.0 + '@types/node': 25.5.2 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 30.0.5 + jest-util: 30.3.0 string-length: 4.0.2 jest-worker@27.5.1: dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 merge-stream: 2.0.0 supports-color: 8.1.1 - jest-worker@29.5.0: + jest-worker@29.7.0: dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest-worker@30.0.5: + jest-worker@30.3.0: dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 '@ungap/structured-clone': 1.3.0 - jest-util: 30.0.5 + jest-util: 30.3.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -28619,7 +29012,7 @@ snapshots: jiti@2.6.1: {} - joi@17.13.1: + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -28627,7 +29020,7 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - joi@18.0.2: + joi@18.1.2: dependencies: '@hapi/address': 5.1.1 '@hapi/formula': 3.0.2 @@ -28637,13 +29030,13 @@ snapshots: '@hapi/topo': 6.0.2 '@standard-schema/spec': 1.1.0 - jose@6.1.3: {} + jose@6.2.2: {} js-tokens@10.0.0: {} js-tokens@4.0.0: {} - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 @@ -28652,15 +29045,10 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@0.1.1: - optional: true - - jsbn@1.1.0: {} - jsdom@29.0.1: dependencies: - '@asamuzakjp/css-color': 5.0.1 - '@asamuzakjp/dom-selector': 7.0.4 + '@asamuzakjp/css-color': 5.1.5 + '@asamuzakjp/dom-selector': 7.0.6 '@bramus/specificity': 2.4.2 '@csstools/css-syntax-patches-for-csstree': 1.1.2(css-tree@3.2.1) '@exodus/bytes': 1.15.0 @@ -28674,7 +29062,7 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.1 - undici: 7.24.6 + undici: 7.24.7 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 @@ -28705,19 +29093,13 @@ snapshots: json-schema-typed@8.0.2: {} - json-schema@0.4.0: - optional: true - json-stable-stringify-without-jsonify@1.0.1: {} - json-stringify-safe@5.0.1: - optional: true - - json-with-bigint@3.5.7: {} + json-with-bigint@3.5.8: {} json5@2.2.3: {} - jsonc-eslint-parser@2.4.0: + jsonc-eslint-parser@2.4.2: dependencies: acorn: 8.16.0 eslint-visitor-keys: 3.4.3 @@ -28734,26 +29116,14 @@ snapshots: jsonc-parser@3.3.1: {} - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: - universalify: 2.0.0 + universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 jsonparse@1.3.1: {} - jsprim@2.0.2: - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - optional: true - junk@4.0.1: {} karma-source-map-support@1.4.0: @@ -28764,11 +29134,7 @@ snapshots: dependencies: commander: 8.3.0 - keycharm@0.2.0: {} - - keygrip@1.1.0: - dependencies: - tsscmp: 1.0.6 + keycharm@0.4.0: {} keyv@4.5.4: dependencies: @@ -28782,29 +29148,6 @@ snapshots: klona@2.0.6: {} - koa-compose@4.1.0: {} - - koa@3.0.3: - dependencies: - accepts: 1.3.8 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookies: 0.9.1 - delegates: 1.0.0 - destroy: 1.2.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - fresh: 0.5.2 - http-assert: 1.5.0 - http-errors: 2.0.1 - koa-compose: 4.1.0 - mime-types: 3.0.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.2 - type-is: 2.0.1 - vary: 1.1.2 - kolorist@1.8.0: {} kubernetes-types@1.30.0: {} @@ -28821,10 +29164,10 @@ snapshots: dependencies: package-json: 8.1.1 - launch-editor@2.6.1: + launch-editor@2.13.2: dependencies: picocolors: 1.1.1 - shell-quote: 1.8.1 + shell-quote: 1.8.3 layout-base@1.0.2: {} @@ -28832,19 +29175,26 @@ snapshots: lazy-ass@1.6.0: {} - less-loader@12.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.19))(less@4.4.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + less-loader@12.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.4.2)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: less: 4.4.2 optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) - less-loader@12.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.19))(less@4.6.4)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + less-loader@12.3.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.5.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): + dependencies: + less: 4.5.1 + optionalDependencies: + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) + + less-loader@12.3.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.6.4)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: less: 4.6.4 optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) less@4.4.2: dependencies: @@ -28857,10 +29207,22 @@ snapshots: image-size: 0.5.5 make-dir: 2.1.0 mime: 1.6.0 - needle: 3.2.0 + needle: 3.5.0 + source-map: 0.6.1 + + less@4.5.1: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.5.0 source-map: 0.6.1 - transitivePeerDependencies: - - supports-color less@4.6.4: dependencies: @@ -28872,10 +29234,8 @@ snapshots: image-size: 0.5.5 make-dir: 2.1.0 mime: 1.6.0 - needle: 3.2.0 + needle: 3.5.0 source-map: 0.6.1 - transitivePeerDependencies: - - supports-color leven@3.1.0: {} @@ -28884,11 +29244,17 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + license-webpack-plugin@4.0.2(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): + dependencies: + webpack-sources: 3.3.4 + optionalDependencies: + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) + + license-webpack-plugin@4.0.2(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: - webpack-sources: 3.3.3 + webpack-sources: 3.3.4 optionalDependencies: - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) lightningcss-android-arm64@1.32.0: optional: true @@ -28957,30 +29323,16 @@ snapshots: picomatch: 4.0.4 string-argv: 0.3.2 tinyexec: 1.0.4 - yaml: 2.8.2 - - listr2@3.14.0(enquirer@2.4.1): - dependencies: - cli-truncate: 2.1.0 - colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 - rfdc: 1.4.1 - rxjs: 7.8.2 - through: 2.3.8 - wrap-ansi: 7.0.0 - optionalDependencies: - enquirer: 2.4.1 - optional: true + yaml: 2.8.3 listr2@9.0.5: dependencies: - cli-truncate: 5.1.1 + cli-truncate: 5.2.0 colorette: 2.0.20 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 log-update: 6.1.0 rfdc: 1.4.1 - wrap-ansi: 9.0.0 + wrap-ansi: 9.0.2 lmdb@3.5.1: dependencies: @@ -28988,7 +29340,7 @@ snapshots: msgpackr: 1.11.9 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.2.2 - ordered-binary: 1.5.3 + ordered-binary: 1.6.1 weak-lru-cache: 1.2.2 optionalDependencies: '@lmdb/lmdb-darwin-arm64': 3.5.1 @@ -29040,22 +29392,16 @@ snapshots: lodash-es@4.17.23: {} + lodash-es@4.18.1: {} + lodash.camelcase@4.3.0: {} lodash.capitalize@4.2.1: {} - lodash.clonedeepwith@4.5.0: {} - lodash.debounce@4.0.8: {} - lodash.defaults@4.2.0: - optional: true - lodash.escaperegexp@4.1.2: {} - lodash.isarguments@3.1.0: - optional: true - lodash.isplainobject@4.0.6: {} lodash.isstring@4.0.1: {} @@ -29066,9 +29412,6 @@ snapshots: lodash.mergewith@4.6.2: {} - lodash.once@4.1.1: - optional: true - lodash.snakecase@4.1.1: {} lodash.startcase@4.4.0: {} @@ -29079,9 +29422,7 @@ snapshots: lodash.upperfirst@4.3.1: {} - lodash@4.17.21: {} - - lodash@4.17.23: {} + lodash@4.18.1: {} log-symbols@4.1.0: dependencies: @@ -29091,33 +29432,15 @@ snapshots: log-symbols@7.0.1: dependencies: is-unicode-supported: 2.1.0 - yoctocolors: 2.1.1 - - log-update@4.0.0: - dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 - optional: true + yoctocolors: 2.1.2 log-update@6.1.0: dependencies: - ansi-escapes: 7.0.0 + ansi-escapes: 7.3.0 cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.2 - wrap-ansi: 9.0.0 - - log4js@6.9.1: - dependencies: - date-format: 4.0.14 - debug: 4.4.3(supports-color@8.1.1) - flatted: 3.4.2 - rfdc: 1.4.1 - streamroller: 3.1.5 - transitivePeerDependencies: - - supports-color + slice-ansi: 7.1.2 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 loglevel-plugin-prefix@0.8.4: {} @@ -29125,13 +29448,13 @@ snapshots: long-timeout@0.1.1: {} - longest-streak@3.0.1: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - loupe@3.2.0: {} + loupe@3.2.1: {} lower-case@2.0.2: dependencies: @@ -29149,7 +29472,7 @@ snapshots: lunr@2.3.9: {} - luxon@3.5.0: {} + luxon@3.7.2: {} lz-string@1.5.0: {} @@ -29161,7 +29484,7 @@ snapshots: magicast@0.5.2: dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 source-map-js: 1.2.1 @@ -29174,29 +29497,27 @@ snapshots: make-dir@2.1.0: dependencies: pify: 4.0.1 - semver: 5.7.1 + semver: 5.7.2 optional: true make-dir@4.0.0: dependencies: semver: 7.7.4 - make-error@1.3.6: - optional: true - - make-fetch-happen@15.0.3: + make-fetch-happen@15.0.5: dependencies: + '@gar/promise-retry': 1.0.3 '@npmcli/agent': 4.0.0 - cacache: 20.0.1 + '@npmcli/redact': 4.0.0 + cacache: 20.0.4 http-cache-semantics: 4.2.0 minipass: 7.1.3 - minipass-fetch: 5.0.0 - minipass-flush: 1.0.5 + minipass-fetch: 5.0.2 + minipass-flush: 1.0.7 minipass-pipeline: 1.2.4 negotiator: 1.0.0 - proc-log: 6.0.0 - promise-retry: 2.0.1 - ssri: 13.0.0 + proc-log: 6.1.0 + ssri: 13.0.1 transitivePeerDependencies: - supports-color @@ -29212,7 +29533,7 @@ snapshots: dependencies: repeat-string: 1.6.1 - markdown-table@3.0.2: {} + markdown-table@3.0.4: {} marked-gfm-heading-id@4.1.3(marked@17.0.5): dependencies: @@ -29234,7 +29555,7 @@ snapshots: marked-terminal@7.3.0(marked@15.0.12): dependencies: - ansi-escapes: 7.0.0 + ansi-escapes: 7.3.0 ansi-regex: 6.2.2 chalk: 5.6.2 cli-highlight: 2.1.11 @@ -29261,196 +29582,197 @@ snapshots: mdast-util-definitions@6.0.0: dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.0 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 unist-util-visit: 5.1.0 - mdast-util-directive@3.0.0: + mdast-util-directive@3.1.0: dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.0 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.3 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 unist-util-visit-parents: 6.0.2 transitivePeerDependencies: - supports-color - mdast-util-find-and-replace@3.0.1: + mdast-util-find-and-replace@3.0.2: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - mdast-util-from-markdown@2.0.0: + mdast-util-from-markdown@2.0.3: dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.0 - decode-named-character-reference: 1.0.2 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-decode-string: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color mdast-util-frontmatter@2.0.1: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 micromark-extension-frontmatter: 2.0.0 transitivePeerDependencies: - supports-color - mdast-util-gfm-autolink-literal@2.0.0: + mdast-util-gfm-autolink-literal@2.0.1: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.0.1 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 - mdast-util-gfm-footnote@2.0.0: + mdast-util-gfm-footnote@2.1.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: - supports-color mdast-util-gfm-strikethrough@2.0.0: dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm-table@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - markdown-table: 3.0.2 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm-task-list-item@2.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-gfm@3.0.0: + mdast-util-gfm@3.1.0: dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-gfm-autolink-literal: 2.0.0 - mdast-util-gfm-footnote: 2.0.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@2.0.0: + mdast-util-mdx-expression@2.0.1: dependencies: - '@types/estree-jsx': 1.0.1 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@3.0.0: + mdast-util-mdx-jsx@3.2.0: dependencies: - '@types/estree-jsx': 1.0.1 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - '@types/unist': 3.0.0 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.3 - unist-util-remove-position: 5.0.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color mdast-util-mdx@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-mdxjs-esm@2.0.1: dependencies: - '@types/estree-jsx': 1.0.1 + '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-phrasing@4.0.0: + mdast-util-phrasing@4.1.0: dependencies: - '@types/mdast': 4.0.3 - unist-util-is: 6.0.0 + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 - mdast-util-to-hast@13.1.0: + mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 '@ungap/structured-clone': 1.3.0 devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 + micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.1.0 vfile: 6.0.3 - mdast-util-to-markdown@2.1.0: + mdast-util-to-markdown@2.1.2: dependencies: - '@types/mdast': 4.0.3 - '@types/unist': 3.0.0 - longest-streak: 3.0.1 - mdast-util-phrasing: 4.0.0 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 - micromark-util-decode-string: 2.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 unist-util-visit: 5.1.0 zwitch: 2.0.4 mdast-util-to-string@4.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdn-data@2.0.28: {} @@ -29462,16 +29784,24 @@ snapshots: media-typer@1.1.0: {} - memfs@3.4.13: + memfs@3.5.3: dependencies: - fs-monkey: 1.0.3 + fs-monkey: 1.1.0 - memfs@4.51.0: + memfs@4.57.1(tslib@2.8.1): dependencies: + '@jsonjoy.com/fs-core': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-to-fsa': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.57.1(tslib@2.8.1) '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) glob-to-regex.js: 1.2.0(tslib@2.8.1) - thingies: 2.5.0(tslib@2.8.1) + thingies: 2.6.0(tslib@2.8.1) tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 @@ -29487,11 +29817,11 @@ snapshots: merge2@1.4.1: {} - mermaid@11.13.0: + mermaid@11.14.0: dependencies: '@braintree/sanitize-url': 7.1.2 '@iconify/utils': 3.1.0 - '@mermaid-js/parser': 1.0.1 + '@mermaid-js/parser': 1.1.0 '@types/d3': 7.4.3 '@upsetjs/venn.js': 2.0.0 cytoscape: 3.33.1 @@ -29501,10 +29831,10 @@ snapshots: d3-sankey: 0.12.3 dagre-d3-es: 7.0.14 dayjs: 1.11.20 - dompurify: 3.3.2 + dompurify: 3.3.3 katex: 0.16.44 khroma: 2.1.0 - lodash-es: 4.17.23 + lodash-es: 4.18.1 marked: 16.4.2 roughjs: 4.6.6 stylis: 4.3.6 @@ -29513,305 +29843,305 @@ snapshots: methods@1.1.2: {} - micromark-core-commonmark@2.0.0: + micromark-core-commonmark@2.0.3: dependencies: - decode-named-character-reference: 1.0.2 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 - micromark-factory-destination: 2.0.0 - micromark-factory-label: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-factory-title: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-html-tag-name: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-directive@3.0.0: + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-directive@3.0.2: dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - parse-entities: 4.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + parse-entities: 4.0.2 micromark-extension-frontmatter@2.0.0: dependencies: fault: 2.0.1 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-autolink-literal@2.0.0: + micromark-extension-gfm-autolink-literal@2.1.0: dependencies: - micromark-util-character: 2.0.1 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-footnote@2.0.0: + micromark-extension-gfm-footnote@2.1.0: dependencies: devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-strikethrough@2.0.0: + micromark-extension-gfm-strikethrough@2.1.0: dependencies: devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-table@2.0.0: + micromark-extension-gfm-table@2.1.1: dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 micromark-extension-gfm-tagfilter@2.0.0: dependencies: - micromark-util-types: 2.0.0 + micromark-util-types: 2.0.2 - micromark-extension-gfm-task-list-item@2.0.1: + micromark-extension-gfm-task-list-item@2.1.0: dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 micromark-extension-gfm@3.0.0: dependencies: - micromark-extension-gfm-autolink-literal: 2.0.0 - micromark-extension-gfm-footnote: 2.0.0 - micromark-extension-gfm-strikethrough: 2.0.0 - micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.0.1 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-mdx-expression@3.0.0: + micromark-extension-mdx-expression@3.0.1: dependencies: '@types/estree': 1.0.8 devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-mdx-jsx@3.0.0: + micromark-extension-mdx-jsx@3.0.2: dependencies: - '@types/acorn': 4.0.6 '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 micromark-extension-mdx-md@2.0.0: dependencies: - micromark-util-types: 2.0.0 + micromark-util-types: 2.0.2 micromark-extension-mdxjs-esm@3.0.0: dependencies: '@types/estree': 1.0.8 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-extension-mdxjs@3.0.0: dependencies: acorn: 8.16.0 acorn-jsx: 5.3.2(acorn@8.16.0) - micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 micromark-extension-mdx-md: 2.0.0 micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 - micromark-factory-destination@2.0.0: + micromark-factory-destination@2.0.1: dependencies: - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-factory-label@2.0.0: + micromark-factory-label@2.0.1: dependencies: devlop: 1.1.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-factory-mdx-expression@2.0.1: + micromark-factory-mdx-expression@2.0.3: dependencies: '@types/estree': 1.0.8 devlop: 1.1.0 - micromark-util-character: 2.0.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 - micromark-factory-space@1.0.0: + micromark-factory-space@1.1.0: dependencies: - micromark-util-character: 1.1.0 - micromark-util-types: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 - micromark-factory-space@2.0.0: + micromark-factory-space@2.0.1: dependencies: - micromark-util-character: 2.0.1 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 - micromark-factory-title@2.0.0: + micromark-factory-title@2.0.1: dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-factory-whitespace@2.0.0: + micromark-factory-whitespace@2.0.1: dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-util-character@1.1.0: + micromark-util-character@1.2.0: dependencies: - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 - micromark-util-character@2.0.1: + micromark-util-character@2.1.1: dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-util-chunked@2.0.0: + micromark-util-chunked@2.0.1: dependencies: - micromark-util-symbol: 2.0.0 + micromark-util-symbol: 2.0.1 - micromark-util-classify-character@2.0.0: + micromark-util-classify-character@2.0.1: dependencies: - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-util-combine-extensions@2.0.0: + micromark-util-combine-extensions@2.0.1: dependencies: - micromark-util-chunked: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 - micromark-util-decode-numeric-character-reference@2.0.1: + micromark-util-decode-numeric-character-reference@2.0.2: dependencies: - micromark-util-symbol: 2.0.0 + micromark-util-symbol: 2.0.1 - micromark-util-decode-string@2.0.0: + micromark-util-decode-string@2.0.1: dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-symbol: 2.0.0 + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 - micromark-util-encode@2.0.0: {} + micromark-util-encode@2.0.1: {} - micromark-util-events-to-acorn@2.0.2: + micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/acorn': 4.0.6 '@types/estree': 1.0.8 - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 - micromark-util-html-tag-name@2.0.0: {} + micromark-util-html-tag-name@2.0.1: {} - micromark-util-normalize-identifier@2.0.0: + micromark-util-normalize-identifier@2.0.1: dependencies: - micromark-util-symbol: 2.0.0 + micromark-util-symbol: 2.0.1 - micromark-util-resolve-all@2.0.0: + micromark-util-resolve-all@2.0.1: dependencies: - micromark-util-types: 2.0.0 + micromark-util-types: 2.0.2 - micromark-util-sanitize-uri@2.0.0: + micromark-util-sanitize-uri@2.0.1: dependencies: - micromark-util-character: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 - micromark-util-subtokenize@2.0.0: + micromark-util-subtokenize@2.1.0: dependencies: devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-util-symbol@1.0.1: {} + micromark-util-symbol@1.1.0: {} - micromark-util-symbol@2.0.0: {} + micromark-util-symbol@2.0.1: {} - micromark-util-types@1.0.2: {} + micromark-util-types@1.1.0: {} - micromark-util-types@2.0.0: {} + micromark-util-types@2.0.2: {} - micromark@4.0.0: + micromark@4.0.2: dependencies: - '@types/debug': 4.1.7 - debug: 4.4.3(supports-color@8.1.1) - decode-named-character-reference: 1.0.2 + '@types/debug': 4.1.13 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-chunked: 2.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 transitivePeerDependencies: - supports-color micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 mime-db@1.33.0: {} @@ -29847,28 +30177,38 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.10.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + mini-css-extract-plugin@2.10.0(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: schema-utils: 4.3.3 - tapable: 2.3.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + tapable: 2.3.2 + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) + + mini-css-extract-plugin@2.10.2(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): + dependencies: + schema-utils: 4.3.3 + tapable: 2.3.2 + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - mini-css-extract-plugin@2.4.7(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + mini-css-extract-plugin@2.4.7(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: schema-utils: 4.3.3 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) minimalistic-assert@1.0.1: {} minimatch@10.2.4: dependencies: - brace-expansion: 5.0.4 + brace-expansion: 5.0.5 + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.5 minimatch@3.1.5: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.13 - minimatch@5.1.0: + minimatch@5.1.9: dependencies: brace-expansion: 2.0.3 @@ -29882,31 +30222,27 @@ snapshots: dependencies: minipass: 7.1.3 - minipass-fetch@5.0.0: + minipass-fetch@5.0.2: dependencies: minipass: 7.1.3 - minipass-sized: 1.0.3 + minipass-sized: 2.0.0 minizlib: 3.1.0 optionalDependencies: - encoding: 0.1.13 + iconv-lite: 0.7.2 - minipass-flush@1.0.5: + minipass-flush@1.0.7: dependencies: - minipass: 3.3.4 + minipass: 3.3.6 minipass-pipeline@1.2.4: dependencies: - minipass: 3.3.4 - - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.4 + minipass: 3.3.6 - minipass@3.3.4: + minipass-sized@2.0.0: dependencies: - yallist: 4.0.0 + minipass: 7.1.3 - minipass@4.0.0: + minipass@3.3.6: dependencies: yallist: 4.0.0 @@ -29916,13 +30252,9 @@ snapshots: dependencies: minipass: 7.1.3 - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - mkdirp@3.0.1: {} - mlly@1.8.1: + mlly@1.8.2: dependencies: acorn: 8.16.0 pathe: 2.0.3 @@ -29945,25 +30277,25 @@ snapshots: ms@2.1.3: {} - msgpackr-extract@3.0.2: + msgpackr-extract@3.0.3: dependencies: - node-gyp-build-optional-packages: 5.0.7 + node-gyp-build-optional-packages: 5.2.2 optionalDependencies: - '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2 + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true msgpackr@1.11.9: optionalDependencies: - msgpackr-extract: 3.0.2 + msgpackr-extract: 3.0.3 multicast-dns@7.2.5: dependencies: - dns-packet: 5.4.0 + dns-packet: 5.6.1 thunky: 1.1.0 multipasta@0.2.7: {} @@ -29980,17 +30312,14 @@ snapshots: nanoid@3.3.11: {} - napi-postinstall@0.3.2: {} + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} - needle@3.2.0: + needle@3.5.0: dependencies: - debug: 3.2.7(supports-color@8.1.1) iconv-lite: 0.6.3 - sax: 1.5.0 - transitivePeerDependencies: - - supports-color + sax: 1.6.0 optional: true negotiator@0.6.3: {} @@ -30005,23 +30334,23 @@ snapshots: nerf-dart@1.0.0: {} - nf3@0.3.14: {} + nf3@0.3.16: {} ng-packagr@21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2): dependencies: '@ampproject/remapping': 2.3.0 '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2) '@rollup/plugin-json': 6.1.0(rollup@4.60.1) - '@rollup/wasm-node': 4.24.4 + '@rollup/wasm-node': 4.60.1 ajv: 8.18.0 ansi-colors: 4.1.3 - browserslist: 4.28.1 + browserslist: 4.28.2 chokidar: 5.0.0 commander: 14.0.3 dependency-graph: 1.0.0 - esbuild: 0.27.4 + esbuild: 0.27.7 find-cache-directory: 6.0.0 - injection-js: 2.4.0 + injection-js: 2.6.1 jsonc-parser: 3.3.1 less: 4.6.4 ora: 9.3.0 @@ -30029,38 +30358,35 @@ snapshots: postcss: 8.5.8 rollup-plugin-dts: 6.4.1(rollup@4.60.1)(typescript@6.0.2) rxjs: 7.8.2 - sass: 1.98.0 + sass: 1.99.0 tinyglobby: 0.2.15 tslib: 2.8.1 typescript: 6.0.2 optionalDependencies: rollup: 4.60.1 tailwindcss: 4.2.2 - transitivePeerDependencies: - - supports-color - nitro@3.0.260311-beta(chokidar@5.0.0)(dotenv@17.3.1)(giget@2.0.0)(ioredis@5.10.0)(jiti@2.6.1)(lru-cache@11.2.7)(rollup@4.60.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)): + nitro@3.0.260311-beta(chokidar@5.0.0)(dotenv@16.4.7)(jiti@2.6.1)(lru-cache@11.2.7)(rollup@4.60.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)): dependencies: consola: 3.4.2 - crossws: 0.4.4(srvx@0.11.13) + crossws: 0.4.4(srvx@0.11.15) db0: 0.3.4 env-runner: 0.1.7 - h3: 2.0.1-rc.20(crossws@0.4.4(srvx@0.11.13)) + h3: 2.0.1-rc.20(crossws@0.4.4(srvx@0.11.15)) hookable: 6.1.0 - nf3: 0.3.14 + nf3: 0.3.16 ocache: 0.1.4 ofetch: 2.0.0-alpha.3 ohash: 2.0.11 rolldown: 1.0.0-rc.13 - srvx: 0.11.13 + srvx: 0.11.15 unenv: 2.0.0-rc.24 - unstorage: 2.0.0-alpha.7(chokidar@5.0.0)(db0@0.3.4)(ioredis@5.10.0)(lru-cache@11.2.7)(ofetch@2.0.0-alpha.3) + unstorage: 2.0.0-alpha.7(chokidar@5.0.0)(db0@0.3.4)(lru-cache@11.2.7)(ofetch@2.0.0-alpha.3) optionalDependencies: - dotenv: 17.3.1 - giget: 2.0.0 + dotenv: 16.4.7 jiti: 2.6.1 rollup: 4.60.1 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -30101,12 +30427,12 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abort-controller@3.0.1: {} + node-abort-controller@3.1.1: {} node-addon-api@6.1.0: optional: true - node-addon-api@7.0.0: + node-addon-api@7.1.1: optional: true node-emoji@2.2.0: @@ -30124,28 +30450,25 @@ snapshots: optionalDependencies: encoding: 0.1.13 - node-forge@1.3.1: {} - - node-gyp-build-optional-packages@5.0.7: - optional: true + node-forge@1.4.0: {} node-gyp-build-optional-packages@5.2.2: dependencies: detect-libc: 2.1.2 optional: true - node-gyp@12.1.0: + node-gyp@12.2.0: dependencies: env-paths: 2.2.1 - exponential-backoff: 3.1.1 + exponential-backoff: 3.1.3 graceful-fs: 4.2.11 - make-fetch-happen: 15.0.3 + make-fetch-happen: 15.0.5 nopt: 9.0.0 - proc-log: 6.0.0 + proc-log: 6.1.0 semver: 7.7.4 - tar: 7.5.2 + tar: 7.5.13 tinyglobby: 0.2.15 - which: 6.0.0 + which: 6.0.1 transitivePeerDependencies: - supports-color @@ -30153,7 +30476,7 @@ snapshots: node-mock-http@1.0.4: {} - node-releases@2.0.27: {} + node-releases@2.0.37: {} node-schedule@2.1.1: dependencies: @@ -30165,10 +30488,9 @@ snapshots: dependencies: abbrev: 4.0.0 - normalize-package-data@6.0.0: + normalize-package-data@6.0.2: dependencies: - hosted-git-info: 7.0.1 - is-core-module: 2.16.1 + hosted-git-info: 7.0.2 semver: 7.7.4 validate-npm-package-license: 3.0.4 @@ -30180,13 +30502,13 @@ snapshots: normalize-package-data@8.0.0: dependencies: - hosted-git-info: 9.0.0 + hosted-git-info: 9.0.2 semver: 7.7.4 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} - normalize-url@8.0.0: {} + normalize-url@8.1.1: {} normalize-url@9.0.0: {} @@ -30202,15 +30524,15 @@ snapshots: npm-package-arg@13.0.2: dependencies: - hosted-git-info: 9.0.0 - proc-log: 6.0.0 + hosted-git-info: 9.0.2 + proc-log: 6.1.0 semver: 7.7.4 validate-npm-package-name: 7.0.2 - npm-packlist@10.0.3: + npm-packlist@10.0.4: dependencies: ignore-walk: 8.0.0 - proc-log: 6.0.0 + proc-log: 6.1.0 npm-pick-manifest@11.0.3: dependencies: @@ -30223,12 +30545,12 @@ snapshots: dependencies: '@npmcli/redact': 4.0.0 jsonparse: 1.3.1 - make-fetch-happen: 15.0.3 + make-fetch-happen: 15.0.5 minipass: 7.1.3 - minipass-fetch: 5.0.0 + minipass-fetch: 5.0.2 minizlib: 3.1.0 npm-package-arg: 13.0.2 - proc-log: 6.0.0 + proc-log: 6.1.0 transitivePeerDependencies: - supports-color @@ -30236,7 +30558,7 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.1.0: + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -30245,7 +30567,7 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 - npm@11.11.0: {} + npm@11.12.1: {} nprogress@0.2.0: {} @@ -30253,32 +30575,32 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@4.0.1(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + null-loader@4.0.1(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - nx@22.6.2(@swc-node/register@1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.18(@swc/helpers@0.5.19)): + nx@22.6.2(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)): dependencies: '@ltd/j-toml': 1.38.0 '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.2 '@zkochan/js-yaml': 0.0.7 - axios: 1.13.6(debug@4.4.3) + axios: 1.14.0(debug@4.4.3) cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: 8.0.1 dotenv: 16.4.7 - dotenv-expand: 11.0.6 + dotenv-expand: 11.0.7 ejs: 3.1.10 enquirer: 2.3.6 figures: 3.2.0 flat: 5.0.2 front-matter: 4.0.2 ignore: 7.0.5 - jest-diff: 30.0.5 + jest-diff: 30.3.0 jsonc-parser: 3.2.0 lines-and-columns: 2.0.3 minimatch: 10.2.4 @@ -30294,7 +30616,7 @@ snapshots: tree-kill: 1.2.2 tsconfig-paths: 4.2.0 tslib: 2.8.1 - yaml: 2.8.2 + yaml: 2.8.3 yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: @@ -30308,17 +30630,64 @@ snapshots: '@nx/nx-linux-x64-musl': 22.6.2 '@nx/nx-win32-arm64-msvc': 22.6.2 '@nx/nx-win32-x64-msvc': 22.6.2 - '@swc-node/register': 1.11.1(@swc/core@1.15.18(@swc/helpers@0.5.19))(@swc/types@0.1.26)(typescript@6.0.2) - '@swc/core': 1.15.18(@swc/helpers@0.5.19) + '@swc-node/register': 1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2) + '@swc/core': 1.15.24(@swc/helpers@0.5.21) transitivePeerDependencies: - debug - nypm@0.6.5: + nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)): dependencies: - citty: 0.2.1 - pathe: 2.0.3 - tinyexec: 1.0.4 - optional: true + '@ltd/j-toml': 1.38.0 + '@napi-rs/wasm-runtime': 0.2.4 + '@yarnpkg/lockfile': 1.1.0 + '@yarnpkg/parsers': 3.0.2 + '@zkochan/js-yaml': 0.0.7 + axios: 1.13.5 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: 8.0.1 + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + ejs: 5.0.1 + enquirer: 2.3.6 + figures: 3.2.0 + flat: 5.0.2 + front-matter: 4.0.2 + ignore: 7.0.5 + jest-diff: 30.3.0 + jsonc-parser: 3.2.0 + lines-and-columns: 2.0.3 + minimatch: 10.2.4 + npm-run-path: 4.0.1 + open: 8.4.2 + ora: 5.3.0 + picocolors: 1.1.1 + resolve.exports: 2.0.3 + semver: 7.7.4 + string-width: 4.2.3 + tar-stream: 2.2.0 + tmp: 0.2.5 + tree-kill: 1.2.2 + tsconfig-paths: 4.2.0 + tslib: 2.8.1 + yaml: 2.8.3 + yargs: 17.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 22.7.0-beta.10 + '@nx/nx-darwin-x64': 22.7.0-beta.10 + '@nx/nx-freebsd-x64': 22.7.0-beta.10 + '@nx/nx-linux-arm-gnueabihf': 22.7.0-beta.10 + '@nx/nx-linux-arm64-gnu': 22.7.0-beta.10 + '@nx/nx-linux-arm64-musl': 22.7.0-beta.10 + '@nx/nx-linux-x64-gnu': 22.7.0-beta.10 + '@nx/nx-linux-x64-musl': 22.7.0-beta.10 + '@nx/nx-win32-arm64-msvc': 22.7.0-beta.10 + '@nx/nx-win32-x64-msvc': 22.7.0-beta.10 + '@swc-node/register': 1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2) + '@swc/core': 1.15.24(@swc/helpers@0.5.21) + transitivePeerDependencies: + - debug object-assign@4.1.1: {} @@ -30326,10 +30695,12 @@ snapshots: object-keys@1.1.1: {} - object.assign@4.1.5: + object.assign@4.1.7: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 + es-object-atoms: 1.1.1 has-symbols: 1.1.0 object-keys: 1.1.1 @@ -30379,7 +30750,7 @@ snapshots: oniguruma-parser@0.12.1: {} - oniguruma-to-es@4.3.4: + oniguruma-to-es@4.3.5: dependencies: oniguruma-parser: 0.12.1 regex: 6.1.0 @@ -30387,14 +30758,14 @@ snapshots: open@10.2.0: dependencies: - default-browser: 5.4.0 + default-browser: 5.5.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 wsl-utils: 0.1.0 open@11.0.0: dependencies: - default-browser: 5.4.0 + default-browser: 5.5.0 define-lazy-prop: 3.0.0 is-in-ssh: 1.0.0 is-inside-container: 1.0.0 @@ -30417,21 +30788,21 @@ snapshots: opener@1.5.2: {} - optionator@0.9.3: + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 ora@5.3.0: dependencies: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.2 + cli-spinners: 2.6.1 is-interactive: 1.0.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 @@ -30441,26 +30812,26 @@ snapshots: dependencies: chalk: 5.6.2 cli-cursor: 5.0.0 - cli-spinners: 3.3.0 + cli-spinners: 3.4.0 is-interactive: 2.0.0 is-unicode-supported: 2.1.0 log-symbols: 7.0.1 stdin-discarder: 0.2.2 - string-width: 8.1.0 - strip-ansi: 7.1.2 + string-width: 8.2.0 + strip-ansi: 7.2.0 ora@9.3.0: dependencies: chalk: 5.6.2 cli-cursor: 5.0.0 - cli-spinners: 3.3.0 + cli-spinners: 3.4.0 is-interactive: 2.0.0 is-unicode-supported: 2.1.0 log-symbols: 7.0.1 stdin-discarder: 0.3.1 - string-width: 8.1.0 + string-width: 8.2.0 - ordered-binary@1.5.3: + ordered-binary@1.6.1: optional: true os-name@4.0.1: @@ -30470,10 +30841,7 @@ snapshots: os-tmpdir@1.0.2: {} - ospath@1.2.2: - optional: true - - oxc-parser@0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1): + oxc-parser@0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): dependencies: '@oxc-project/types': 0.123.0 optionalDependencies: @@ -30493,7 +30861,7 @@ snapshots: '@oxc-parser/binding-linux-x64-gnu': 0.123.0 '@oxc-parser/binding-linux-x64-musl': 0.123.0 '@oxc-parser/binding-openharmony-arm64': 0.123.0 - '@oxc-parser/binding-wasm32-wasi': 0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + '@oxc-parser/binding-wasm32-wasi': 0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) '@oxc-parser/binding-win32-arm64-msvc': 0.123.0 '@oxc-parser/binding-win32-ia32-msvc': 0.123.0 '@oxc-parser/binding-win32-x64-msvc': 0.123.0 @@ -30501,7 +30869,7 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' - oxc-resolver@11.19.1: + oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): optionalDependencies: '@oxc-resolver/binding-android-arm-eabi': 11.19.1 '@oxc-resolver/binding-android-arm64': 11.19.1 @@ -30519,12 +30887,15 @@ snapshots: '@oxc-resolver/binding-linux-x64-gnu': 11.19.1 '@oxc-resolver/binding-linux-x64-musl': 11.19.1 '@oxc-resolver/binding-openharmony-arm64': 11.19.1 - '@oxc-resolver/binding-wasm32-wasi': 11.19.1 + '@oxc-resolver/binding-wasm32-wasi': 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) '@oxc-resolver/binding-win32-arm64-msvc': 11.19.1 '@oxc-resolver/binding-win32-ia32-msvc': 11.19.1 '@oxc-resolver/binding-win32-x64-msvc': 11.19.1 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - oxc-transform@0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1): + oxc-transform@0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): optionalDependencies: '@oxc-transform/binding-android-arm-eabi': 0.123.0 '@oxc-transform/binding-android-arm64': 0.123.0 @@ -30542,7 +30913,7 @@ snapshots: '@oxc-transform/binding-linux-x64-gnu': 0.123.0 '@oxc-transform/binding-linux-x64-musl': 0.123.0 '@oxc-transform/binding-openharmony-arm64': 0.123.0 - '@oxc-transform/binding-wasm32-wasi': 0.123.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + '@oxc-transform/binding-wasm32-wasi': 0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) '@oxc-transform/binding-win32-arm64-msvc': 0.123.0 '@oxc-transform/binding-win32-ia32-msvc': 0.123.0 '@oxc-transform/binding-win32-x64-msvc': 0.123.0 @@ -30559,27 +30930,27 @@ snapshots: '@oxlint-tsgolint/win32-arm64': 0.19.0 '@oxlint-tsgolint/win32-x64': 0.19.0 - oxlint@1.57.0(oxlint-tsgolint@0.19.0): + oxlint@1.58.0(oxlint-tsgolint@0.19.0): optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.57.0 - '@oxlint/binding-android-arm64': 1.57.0 - '@oxlint/binding-darwin-arm64': 1.57.0 - '@oxlint/binding-darwin-x64': 1.57.0 - '@oxlint/binding-freebsd-x64': 1.57.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.57.0 - '@oxlint/binding-linux-arm-musleabihf': 1.57.0 - '@oxlint/binding-linux-arm64-gnu': 1.57.0 - '@oxlint/binding-linux-arm64-musl': 1.57.0 - '@oxlint/binding-linux-ppc64-gnu': 1.57.0 - '@oxlint/binding-linux-riscv64-gnu': 1.57.0 - '@oxlint/binding-linux-riscv64-musl': 1.57.0 - '@oxlint/binding-linux-s390x-gnu': 1.57.0 - '@oxlint/binding-linux-x64-gnu': 1.57.0 - '@oxlint/binding-linux-x64-musl': 1.57.0 - '@oxlint/binding-openharmony-arm64': 1.57.0 - '@oxlint/binding-win32-arm64-msvc': 1.57.0 - '@oxlint/binding-win32-ia32-msvc': 1.57.0 - '@oxlint/binding-win32-x64-msvc': 1.57.0 + '@oxlint/binding-android-arm-eabi': 1.58.0 + '@oxlint/binding-android-arm64': 1.58.0 + '@oxlint/binding-darwin-arm64': 1.58.0 + '@oxlint/binding-darwin-x64': 1.58.0 + '@oxlint/binding-freebsd-x64': 1.58.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.58.0 + '@oxlint/binding-linux-arm-musleabihf': 1.58.0 + '@oxlint/binding-linux-arm64-gnu': 1.58.0 + '@oxlint/binding-linux-arm64-musl': 1.58.0 + '@oxlint/binding-linux-ppc64-gnu': 1.58.0 + '@oxlint/binding-linux-riscv64-gnu': 1.58.0 + '@oxlint/binding-linux-riscv64-musl': 1.58.0 + '@oxlint/binding-linux-s390x-gnu': 1.58.0 + '@oxlint/binding-linux-x64-gnu': 1.58.0 + '@oxlint/binding-linux-x64-musl': 1.58.0 + '@oxlint/binding-openharmony-arm64': 1.58.0 + '@oxlint/binding-win32-arm64-msvc': 1.58.0 + '@oxlint/binding-win32-ia32-msvc': 1.58.0 + '@oxlint/binding-win32-x64-msvc': 1.58.0 oxlint-tsgolint: 0.19.0 p-cancelable@3.0.0: {} @@ -30588,7 +30959,7 @@ snapshots: p-event@6.0.1: dependencies: - p-timeout: 6.1.2 + p-timeout: 6.1.4 p-filter@4.1.0: dependencies: @@ -30612,11 +30983,11 @@ snapshots: p-limit@4.0.0: dependencies: - yocto-queue: 1.2.1 + yocto-queue: 1.2.2 p-limit@7.3.0: dependencies: - yocto-queue: 1.2.1 + yocto-queue: 1.2.2 p-locate@2.0.0: dependencies: @@ -30645,26 +31016,26 @@ snapshots: eventemitter3: 4.0.7 p-timeout: 3.2.0 - p-queue@9.1.0: + p-queue@9.1.1: dependencies: - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 p-timeout: 7.0.1 p-reduce@2.1.0: {} p-reduce@3.0.0: {} - p-retry@6.2.0: + p-retry@6.2.1: dependencies: '@types/retry': 0.12.2 - is-network-error: 1.1.0 + is-network-error: 1.3.1 retry: 0.13.1 p-timeout@3.2.0: dependencies: p-finally: 1.0.0 - p-timeout@6.1.2: {} + p-timeout@6.1.4: {} p-timeout@7.0.1: {} @@ -30677,7 +31048,7 @@ snapshots: package-json@8.1.1: dependencies: got: 12.6.1 - registry-auth-token: 5.0.2 + registry-auth-token: 5.1.1 registry-url: 6.0.1 semver: 7.7.4 @@ -30685,23 +31056,23 @@ snapshots: pacote@21.3.1: dependencies: - '@npmcli/git': 7.0.1 + '@npmcli/git': 7.0.2 '@npmcli/installed-package-contents': 4.0.0 - '@npmcli/package-json': 7.0.2 + '@npmcli/package-json': 7.0.5 '@npmcli/promise-spawn': 9.0.1 - '@npmcli/run-script': 10.0.3 - cacache: 20.0.1 - fs-minipass: 3.0.0 + '@npmcli/run-script': 10.0.4 + cacache: 20.0.4 + fs-minipass: 3.0.3 minipass: 7.1.3 npm-package-arg: 13.0.2 - npm-packlist: 10.0.3 + npm-packlist: 10.0.4 npm-pick-manifest: 11.0.3 npm-registry-fetch: 19.1.1 - proc-log: 6.0.0 + proc-log: 6.1.0 promise-retry: 2.0.1 - sigstore: 4.0.0 - ssri: 13.0.0 - tar: 7.5.2 + sigstore: 4.1.0 + ssri: 13.0.1 + tar: 7.5.13 transitivePeerDependencies: - supports-color @@ -30721,26 +31092,25 @@ snapshots: color-name: 1.1.4 hex-rgb: 4.3.0 - parse-entities@4.0.1: + parse-entities@4.0.2: dependencies: - '@types/unist': 2.0.6 - character-entities: 2.0.2 + '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 + decode-named-character-reference: 1.3.0 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 parse-json@4.0.0: dependencies: - error-ex: 1.3.2 + error-ex: 1.3.4 json-parse-better-errors: 1.0.2 parse-json@5.2.0: dependencies: '@babel/code-frame': 7.29.0 - error-ex: 1.3.2 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -30753,7 +31123,7 @@ snapshots: parse-latin@7.0.0: dependencies: '@types/nlcst': 2.0.3 - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 nlcst-to-string: 4.0.0 unist-util-modify-children: 4.0.0 unist-util-visit-children: 3.0.0 @@ -30769,7 +31139,7 @@ snapshots: parse5-html-rewriting-stream@8.0.0: dependencies: - entities: 6.0.0 + entities: 6.0.1 parse5: 8.0.0 parse5-sax-parser: 8.0.0 @@ -30798,11 +31168,11 @@ snapshots: parse5@7.3.0: dependencies: - entities: 6.0.0 + entities: 6.0.1 parse5@8.0.0: dependencies: - entities: 6.0.0 + entities: 6.0.1 parseurl@1.3.3: {} @@ -30841,21 +31211,21 @@ snapshots: lru-cache: 11.2.7 minipass: 7.1.3 - path-to-regexp@0.1.12: {} + path-to-regexp@0.1.13: {} - path-to-regexp@1.8.0: + path-to-regexp@1.9.0: dependencies: isarray: 0.0.1 path-to-regexp@3.3.0: {} - path-to-regexp@8.2.0: {} + path-to-regexp@8.4.2: {} path-type@4.0.0: {} pathe@2.0.3: {} - pathval@2.0.0: {} + pathval@2.0.1: {} pause-stream@0.0.11: dependencies: @@ -30863,19 +31233,13 @@ snapshots: pegjs@0.10.0: {} - pend@1.2.0: - optional: true - perfect-debounce@2.1.0: {} - performance-now@2.1.0: - optional: true - piccolore@0.1.3: {} picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} picomatch@4.0.2: {} @@ -30898,7 +31262,7 @@ snapshots: optionalDependencies: '@napi-rs/nice': 1.1.1 - pkce-challenge@5.0.0: {} + pkce-challenge@5.0.1: {} pkg-conf@2.1.0: dependencies: @@ -30916,7 +31280,7 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.8.1 + mlly: 1.8.2 pathe: 2.0.3 pkijs@3.4.0: @@ -30928,11 +31292,11 @@ snapshots: pvutils: 1.1.5 tslib: 2.8.1 - playwright-core@1.58.2: {} + playwright-core@1.59.1: {} - playwright@1.58.2: + playwright@1.59.1: dependencies: - playwright-core: 1.58.2 + playwright-core: 1.59.1 optionalDependencies: fsevents: 2.3.2 @@ -30950,11 +31314,10 @@ snapshots: '@polka/url': 0.5.0 trouter: 2.0.1 - portfinder@1.0.32: + portfinder@1.0.38: dependencies: - async: 2.6.4 - debug: 3.2.7(supports-color@8.1.1) - mkdirp: 0.5.6 + async: 3.2.6 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -30972,7 +31335,7 @@ snapshots: postcss-calc@9.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 - postcss-selector-parser: 6.1.1 + postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 postcss-clamp@4.1.0(postcss@8.5.8): @@ -30980,12 +31343,12 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.10(postcss@8.5.8): + postcss-color-functional-notation@7.0.12(postcss@8.5.8): dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 @@ -31003,29 +31366,29 @@ snapshots: postcss-colormin@6.1.0(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.8 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.6(postcss@8.5.8): + postcss-colormin@7.0.7(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + '@colordx/core': 5.0.3 + browserslist: 4.28.2 caniuse-api: 3.0.0 - colord: 2.9.3 postcss: 8.5.8 postcss-value-parser: 4.2.0 postcss-convert-values@6.1.0(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 postcss: 8.5.8 postcss-value-parser: 4.2.0 postcss-convert-values@7.0.9(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 postcss: 8.5.8 postcss-value-parser: 4.2.0 @@ -31095,11 +31458,11 @@ snapshots: postcss-discard-unused@6.0.5(postcss@8.5.8): dependencies: postcss: 8.5.8 - postcss-selector-parser: 6.1.1 + postcss-selector-parser: 6.1.2 - postcss-double-position-gradients@6.0.2(postcss@8.5.8): + postcss-double-position-gradients@6.0.4(postcss@8.5.8): dependencies: - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 postcss-value-parser: 4.2.0 @@ -31135,54 +31498,54 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.11 - postcss-lab-function@7.0.10(postcss@8.5.8): + postcss-lab-function@7.0.12(postcss@8.5.8): dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) '@csstools/utilities': 2.0.0(postcss@8.5.8) postcss: 8.5.8 - postcss-loader@6.2.1(postcss@8.5.8)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + postcss-loader@6.2.1(postcss@8.5.8)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: - cosmiconfig: 7.0.1 + cosmiconfig: 7.1.0 klona: 2.0.6 postcss: 8.5.8 semver: 7.7.4 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - postcss-loader@7.3.4(postcss@8.5.8)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + postcss-loader@7.3.4(postcss@8.5.8)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: cosmiconfig: 8.3.6(typescript@6.0.2) jiti: 1.21.7 postcss: 8.5.8 semver: 7.7.4 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - typescript - postcss-loader@8.2.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(postcss@8.5.6)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + postcss-loader@8.2.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.6)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: cosmiconfig: 9.0.1(typescript@6.0.2) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.4 optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) transitivePeerDependencies: - typescript - postcss-loader@8.2.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(postcss@8.5.8)(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + postcss-loader@8.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.8)(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: cosmiconfig: 9.0.1(typescript@6.0.2) jiti: 2.6.1 postcss: 8.5.8 semver: 7.7.4 optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - typescript @@ -31213,15 +31576,15 @@ snapshots: postcss-merge-rules@6.1.1(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 caniuse-api: 3.0.0 cssnano-utils: 4.0.2(postcss@8.5.8) postcss: 8.5.8 - postcss-selector-parser: 6.1.1 + postcss-selector-parser: 6.1.2 postcss-merge-rules@7.0.8(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 caniuse-api: 3.0.0 cssnano-utils: 5.0.1(postcss@8.5.8) postcss: 8.5.8 @@ -31244,23 +31607,23 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.1(postcss@8.5.8): + postcss-minify-gradients@7.0.2(postcss@8.5.8): dependencies: - colord: 2.9.3 + '@colordx/core': 5.0.3 cssnano-utils: 5.0.1(postcss@8.5.8) postcss: 8.5.8 postcss-value-parser: 4.2.0 postcss-minify-params@6.1.0(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 cssnano-utils: 4.0.2(postcss@8.5.8) postcss: 8.5.8 postcss-value-parser: 4.2.0 postcss-minify-params@7.0.6(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 cssnano-utils: 5.0.1(postcss@8.5.8) postcss: 8.5.8 postcss-value-parser: 4.2.0 @@ -31268,7 +31631,7 @@ snapshots: postcss-minify-selectors@6.0.4(postcss@8.5.8): dependencies: postcss: 8.5.8 - postcss-selector-parser: 6.1.1 + postcss-selector-parser: 6.1.2 postcss-minify-selectors@7.0.6(postcss@8.5.8): dependencies: @@ -31280,17 +31643,17 @@ snapshots: dependencies: postcss: 8.5.8 - postcss-modules-local-by-default@4.0.5(postcss@8.5.8): + postcss-modules-local-by-default@4.2.0(postcss@8.5.8): dependencies: icss-utils: 5.1.0(postcss@8.5.8) postcss: 8.5.8 - postcss-selector-parser: 6.1.1 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.0(postcss@8.5.8): + postcss-modules-scope@3.2.1(postcss@8.5.8): dependencies: postcss: 8.5.8 - postcss-selector-parser: 6.1.1 + postcss-selector-parser: 7.1.1 postcss-modules-values@4.0.0(postcss@8.5.8): dependencies: @@ -31364,13 +31727,13 @@ snapshots: postcss-normalize-unicode@6.1.0(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 postcss: 8.5.8 postcss-value-parser: 4.2.0 postcss-normalize-unicode@7.0.6(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 postcss: 8.5.8 postcss-value-parser: 4.2.0 @@ -31424,22 +31787,25 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 - postcss-preset-env@10.2.4(postcss@8.5.8): + postcss-preset-env@10.6.1(postcss@8.5.8): dependencies: + '@csstools/postcss-alpha-function': 1.0.1(postcss@8.5.8) '@csstools/postcss-cascade-layers': 5.0.2(postcss@8.5.8) - '@csstools/postcss-color-function': 4.0.10(postcss@8.5.8) - '@csstools/postcss-color-mix-function': 3.0.10(postcss@8.5.8) - '@csstools/postcss-color-mix-variadic-function-arguments': 1.0.0(postcss@8.5.8) - '@csstools/postcss-content-alt-text': 2.0.6(postcss@8.5.8) + '@csstools/postcss-color-function': 4.0.12(postcss@8.5.8) + '@csstools/postcss-color-function-display-p3-linear': 1.0.1(postcss@8.5.8) + '@csstools/postcss-color-mix-function': 3.0.12(postcss@8.5.8) + '@csstools/postcss-color-mix-variadic-function-arguments': 1.0.2(postcss@8.5.8) + '@csstools/postcss-content-alt-text': 2.0.8(postcss@8.5.8) + '@csstools/postcss-contrast-color-function': 2.0.12(postcss@8.5.8) '@csstools/postcss-exponential-functions': 2.0.9(postcss@8.5.8) '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.8) - '@csstools/postcss-gamut-mapping': 2.0.10(postcss@8.5.8) - '@csstools/postcss-gradients-interpolation-method': 5.0.10(postcss@8.5.8) - '@csstools/postcss-hwb-function': 4.0.10(postcss@8.5.8) - '@csstools/postcss-ic-unit': 4.0.2(postcss@8.5.8) + '@csstools/postcss-gamut-mapping': 2.0.11(postcss@8.5.8) + '@csstools/postcss-gradients-interpolation-method': 5.0.12(postcss@8.5.8) + '@csstools/postcss-hwb-function': 4.0.12(postcss@8.5.8) + '@csstools/postcss-ic-unit': 4.0.4(postcss@8.5.8) '@csstools/postcss-initial': 2.0.1(postcss@8.5.8) '@csstools/postcss-is-pseudo-class': 5.0.3(postcss@8.5.8) - '@csstools/postcss-light-dark-function': 2.0.9(postcss@8.5.8) + '@csstools/postcss-light-dark-function': 2.0.11(postcss@8.5.8) '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.8) '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.8) '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.8) @@ -31448,40 +31814,44 @@ snapshots: '@csstools/postcss-media-minmax': 2.0.9(postcss@8.5.8) '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.5(postcss@8.5.8) '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.8) - '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.8) - '@csstools/postcss-oklab-function': 4.0.10(postcss@8.5.8) - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.8) + '@csstools/postcss-normalize-display-values': 4.0.1(postcss@8.5.8) + '@csstools/postcss-oklab-function': 4.0.12(postcss@8.5.8) + '@csstools/postcss-position-area-property': 1.0.0(postcss@8.5.8) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.8) + '@csstools/postcss-property-rule-prelude-list': 1.0.0(postcss@8.5.8) '@csstools/postcss-random-function': 2.0.1(postcss@8.5.8) - '@csstools/postcss-relative-color-syntax': 3.0.10(postcss@8.5.8) + '@csstools/postcss-relative-color-syntax': 3.0.12(postcss@8.5.8) '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.8) '@csstools/postcss-sign-functions': 1.1.4(postcss@8.5.8) '@csstools/postcss-stepped-value-functions': 4.0.9(postcss@8.5.8) - '@csstools/postcss-text-decoration-shorthand': 4.0.2(postcss@8.5.8) + '@csstools/postcss-syntax-descriptor-syntax-production': 1.0.1(postcss@8.5.8) + '@csstools/postcss-system-ui-font-family': 1.0.0(postcss@8.5.8) + '@csstools/postcss-text-decoration-shorthand': 4.0.3(postcss@8.5.8) '@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.8) '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.8) autoprefixer: 10.4.27(postcss@8.5.8) - browserslist: 4.28.1 + browserslist: 4.28.2 css-blank-pseudo: 7.0.1(postcss@8.5.8) - css-has-pseudo: 7.0.2(postcss@8.5.8) + css-has-pseudo: 7.0.3(postcss@8.5.8) css-prefers-color-scheme: 10.0.0(postcss@8.5.8) - cssdb: 8.3.1 + cssdb: 8.8.0 postcss: 8.5.8 postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.8) postcss-clamp: 4.1.0(postcss@8.5.8) - postcss-color-functional-notation: 7.0.10(postcss@8.5.8) + postcss-color-functional-notation: 7.0.12(postcss@8.5.8) postcss-color-hex-alpha: 10.0.0(postcss@8.5.8) postcss-color-rebeccapurple: 10.0.0(postcss@8.5.8) postcss-custom-media: 11.0.6(postcss@8.5.8) postcss-custom-properties: 14.0.6(postcss@8.5.8) postcss-custom-selectors: 8.0.5(postcss@8.5.8) postcss-dir-pseudo-class: 9.0.1(postcss@8.5.8) - postcss-double-position-gradients: 6.0.2(postcss@8.5.8) + postcss-double-position-gradients: 6.0.4(postcss@8.5.8) postcss-focus-visible: 10.0.1(postcss@8.5.8) postcss-focus-within: 9.0.1(postcss@8.5.8) postcss-font-variant: 5.0.0(postcss@8.5.8) postcss-gap-properties: 6.0.0(postcss@8.5.8) postcss-image-set-function: 7.0.0(postcss@8.5.8) - postcss-lab-function: 7.0.10(postcss@8.5.8) + postcss-lab-function: 7.0.12(postcss@8.5.8) postcss-logical: 8.1.0(postcss@8.5.8) postcss-nesting: 13.0.2(postcss@8.5.8) postcss-opacity-percentage: 3.0.0(postcss@8.5.8) @@ -31504,13 +31874,13 @@ snapshots: postcss-reduce-initial@6.1.0(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 caniuse-api: 3.0.0 postcss: 8.5.8 postcss-reduce-initial@7.0.6(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 caniuse-api: 3.0.0 postcss: 8.5.8 @@ -31537,7 +31907,7 @@ snapshots: postcss: 8.5.8 postcss-selector-parser: 7.1.1 - postcss-selector-parser@6.1.1: + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -31556,7 +31926,7 @@ snapshots: dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 - svgo: 3.3.2 + svgo: 3.3.3 postcss-svgo@7.1.1(postcss@8.5.8): dependencies: @@ -31567,7 +31937,7 @@ snapshots: postcss-unique-selectors@6.0.4(postcss@8.5.8): dependencies: postcss: 8.5.8 - postcss-selector-parser: 6.1.1 + postcss-selector-parser: 6.1.2 postcss-unique-selectors@7.0.5(postcss@8.5.8): dependencies: @@ -31601,12 +31971,9 @@ snapshots: prettier@3.8.1: {} - pretty-bytes@5.6.0: - optional: true - pretty-error@4.0.0: dependencies: - lodash: 4.17.21 + lodash: 4.18.1 renderkid: 3.0.0 pretty-format@27.5.1: @@ -31621,13 +31988,13 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-format@30.0.5: + pretty-format@30.3.0: dependencies: '@jest/schemas': 30.0.5 ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-ms@9.2.0: + pretty-ms@9.3.0: dependencies: parse-ms: 4.0.0 @@ -31641,15 +32008,10 @@ snapshots: prismjs@1.30.0: {} - proc-log@5.0.0: {} - - proc-log@6.0.0: {} + proc-log@6.1.0: {} process-nextick-args@2.0.1: {} - process@0.11.10: - optional: true - promise-retry@2.0.1: dependencies: err-code: 2.0.3 @@ -31666,8 +32028,6 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 - property-information@6.1.1: {} - property-information@7.1.0: {} proto-list@1.2.4: {} @@ -31677,24 +32037,23 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-from-env@1.0.0: - optional: true - proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} + proxy-middleware@0.15.0: {} prr@1.0.1: optional: true - pump@3.0.0: + pump@3.0.4: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 punycode@2.3.1: {} - pupa@3.1.0: + pupa@3.3.0: dependencies: escape-goat: 4.0.0 @@ -31708,11 +32067,11 @@ snapshots: pvutils@1.1.5: {} - qs@6.13.0: + qs@6.14.2: dependencies: side-channel: 1.1.0 - qs@6.14.2: + qs@6.15.0: dependencies: side-channel: 1.1.0 @@ -31724,8 +32083,6 @@ snapshots: radix3@1.1.2: {} - rambda@9.3.0: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -31734,10 +32091,10 @@ snapshots: range-parser@1.2.1: {} - raw-body@2.5.2: + raw-body@2.5.3: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 unpipe: 1.0.0 @@ -31745,7 +32102,7 @@ snapshots: dependencies: bytes: 3.1.2 http-errors: 2.0.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 unpipe: 1.0.0 rc@1.2.8: @@ -31772,11 +32129,11 @@ snapshots: dependencies: react: 19.2.4 - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + react-loadable-ssr-addon-v5-slorber@1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: '@babel/runtime': 7.29.2 react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.4)' - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) react-refresh@0.18.0: {} @@ -31803,7 +32160,7 @@ snapshots: history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 - path-to-regexp: 1.8.0 + path-to-regexp: 1.9.0 prop-types: 15.8.1 react: 19.2.4 react-is: 16.13.1 @@ -31826,25 +32183,25 @@ snapshots: dependencies: find-up-simple: 1.0.1 read-pkg: 10.1.0 - type-fest: 5.4.4 + type-fest: 5.5.0 read-pkg@10.1.0: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 8.0.0 parse-json: 8.3.0 - type-fest: 5.4.4 + type-fest: 5.5.0 unicorn-magic: 0.4.0 read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 - normalize-package-data: 6.0.0 + normalize-package-data: 6.0.2 parse-json: 8.3.0 type-fest: 4.41.0 unicorn-magic: 0.1.0 - readable-stream@2.3.7: + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -31854,7 +32211,7 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 - readable-stream@3.6.0: + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 @@ -31862,9 +32219,9 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 - readdirp@4.0.2: {} + readdirp@4.1.2: {} readdirp@5.0.0: {} @@ -31910,14 +32267,6 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 - redis-errors@1.2.0: - optional: true - - redis-parser@3.0.0: - dependencies: - redis-errors: 1.2.0 - optional: true - reflect-metadata@0.2.2: {} regenerate-unicode-properties@10.2.2: @@ -31926,7 +32275,7 @@ snapshots: regenerate@1.4.2: {} - regex-parser@2.2.11: {} + regex-parser@2.3.1: {} regex-recursion@6.0.2: dependencies: @@ -31947,9 +32296,9 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 - registry-auth-token@5.0.2: + registry-auth-token@5.1.1: dependencies: - '@pnpm/npm-conf': 2.2.2 + '@pnpm/npm-conf': 3.0.2 registry-url@6.0.1: dependencies: @@ -31961,7 +32310,7 @@ snapshots: dependencies: jsesc: 3.1.0 - rehype-parse@9.0.0: + rehype-parse@9.0.1: dependencies: '@types/hast': 3.0.4 hast-util-from-html: 2.0.3 @@ -31970,14 +32319,14 @@ snapshots: rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 - hast-util-raw: 9.0.1 + hast-util-raw: 9.1.0 vfile: 6.0.3 rehype-recma@1.0.0: dependencies: '@types/estree': 1.0.8 '@types/hast': 3.0.4 - hast-util-to-estree: 3.1.0 + hast-util-to-estree: 3.1.3 transitivePeerDependencies: - supports-color @@ -31990,32 +32339,32 @@ snapshots: rehype@13.0.2: dependencies: '@types/hast': 3.0.4 - rehype-parse: 9.0.0 + rehype-parse: 9.0.1 rehype-stringify: 10.0.1 unified: 11.0.5 relateurl@0.2.7: {} - remark-directive@3.0.0: + remark-directive@3.0.1: dependencies: - '@types/mdast': 4.0.3 - mdast-util-directive: 3.0.0 - micromark-extension-directive: 3.0.0 + '@types/mdast': 4.0.4 + mdast-util-directive: 3.1.0 + micromark-extension-directive: 3.0.2 unified: 11.0.5 transitivePeerDependencies: - supports-color remark-emoji@4.0.1: dependencies: - '@types/mdast': 4.0.3 - emoticon: 4.0.1 - mdast-util-find-and-replace: 3.0.1 + '@types/mdast': 4.0.4 + emoticon: 4.1.0 + mdast-util-find-and-replace: 3.0.2 node-emoji: 2.2.0 unified: 11.0.5 remark-frontmatter@5.0.0: dependencies: - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 mdast-util-frontmatter: 2.0.1 micromark-extension-frontmatter: 2.0.0 unified: 11.0.5 @@ -32024,8 +32373,8 @@ snapshots: remark-gfm@4.0.1: dependencies: - '@types/mdast': 4.0.3 - mdast-util-gfm: 3.0.0 + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 @@ -32033,7 +32382,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-mdx@3.0.0: + remark-mdx@3.1.1: dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -32042,9 +32391,9 @@ snapshots: remark-parse@11.0.0: dependencies: - '@types/mdast': 4.0.3 - mdast-util-from-markdown: 2.0.0 - micromark-util-types: 2.0.0 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + micromark-util-types: 2.0.2 unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -32052,8 +32401,8 @@ snapshots: remark-rehype@11.1.2: dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 - mdast-util-to-hast: 13.1.0 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 unified: 11.0.5 vfile: 6.0.3 @@ -32066,8 +32415,8 @@ snapshots: remark-stringify@11.0.0: dependencies: - '@types/mdast': 4.0.3 - mdast-util-to-markdown: 2.1.0 + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 unified: 11.0.5 renderkid@3.0.0: @@ -32075,22 +32424,17 @@ snapshots: css-select: 4.3.0 dom-converter: 0.2.0 htmlparser2: 6.1.0 - lodash: 4.17.21 + lodash: 4.18.1 strip-ansi: 6.0.1 repeat-string@1.6.1: {} - replace-in-file@7.1.0: + replace-in-file@7.2.0: dependencies: chalk: 4.1.2 glob: 8.1.0 yargs: 17.7.2 - request-progress@3.0.0: - dependencies: - throttleit: 1.0.1 - optional: true - require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -32181,13 +32525,13 @@ snapshots: retry@0.13.1: {} - reusify@1.0.4: {} + reusify@1.1.0: {} rfdc@1.4.1: {} - robust-predicates@3.0.2: {} + robust-predicates@3.0.3: {} - rolldown-plugin-dts@0.23.2(oxc-resolver@11.19.1)(rolldown@1.0.0-rc.12)(typescript@6.0.2): + rolldown-plugin-dts@0.23.2(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(typescript@6.0.2): dependencies: '@babel/generator': 8.0.0-rc.3 '@babel/helper-validator-identifier': 8.0.0-rc.3 @@ -32195,17 +32539,17 @@ snapshots: '@babel/types': 8.0.0-rc.3 ast-kit: 3.0.0-beta.1 birpc: 4.0.0 - dts-resolver: 2.1.3(oxc-resolver@11.19.1) + dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) get-tsconfig: 4.13.7 obug: 2.1.1 picomatch: 4.0.4 - rolldown: 1.0.0-rc.12 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optionalDependencies: typescript: 6.0.2 transitivePeerDependencies: - oxc-resolver - rolldown-plugin-dts@0.23.2(oxc-resolver@11.19.1)(rolldown@1.0.0-rc.13)(typescript@6.0.2): + rolldown-plugin-dts@0.23.2(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@1.0.0-rc.13)(typescript@6.0.2): dependencies: '@babel/generator': 8.0.0-rc.3 '@babel/helper-validator-identifier': 8.0.0-rc.3 @@ -32213,7 +32557,7 @@ snapshots: '@babel/types': 8.0.0-rc.3 ast-kit: 3.0.0-beta.1 birpc: 4.0.0 - dts-resolver: 2.1.3(oxc-resolver@11.19.1) + dts-resolver: 2.1.3(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)) get-tsconfig: 4.13.7 obug: 2.1.1 picomatch: 4.0.4 @@ -32223,7 +32567,7 @@ snapshots: transitivePeerDependencies: - oxc-resolver - rolldown@1.0.0-rc.12: + rolldown@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): dependencies: '@oxc-project/types': 0.122.0 '@rolldown/pluginutils': 1.0.0-rc.12 @@ -32240,9 +32584,12 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' rolldown@1.0.0-rc.13: dependencies: @@ -32265,7 +32612,7 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.13 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.13 - rolldown@1.0.0-rc.4: + rolldown@1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): dependencies: '@oxc-project/types': 0.113.0 '@rolldown/pluginutils': 1.0.0-rc.4 @@ -32280,9 +32627,12 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.4 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.4 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.4 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.4 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.4 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' rollup-plugin-dts@6.4.1(rollup@4.60.1)(typescript@6.0.2): dependencies: @@ -32305,7 +32655,7 @@ snapshots: rolldown: 1.0.0-rc.13 rollup: 4.60.1 - rollup@2.79.1: + rollup@2.80.0: optionalDependencies: fsevents: 2.3.3 @@ -32351,22 +32701,22 @@ snapshots: router@2.2.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 - path-to-regexp: 8.2.0 + path-to-regexp: 8.4.2 transitivePeerDependencies: - supports-color - rtlcss@4.1.1: + rtlcss@4.3.0: dependencies: escalade: 3.2.0 picocolors: 1.1.1 postcss: 8.5.8 strip-json-comments: 3.1.1 - run-applescript@7.0.0: {} + run-applescript@7.1.0: {} run-async@2.4.1: {} @@ -32390,65 +32740,65 @@ snapshots: safer-buffer@2.1.2: {} - sass-embedded-all-unknown@1.98.0: + sass-embedded-all-unknown@1.99.0: dependencies: - sass: 1.98.0 + sass: 1.99.0 optional: true - sass-embedded-android-arm64@1.98.0: + sass-embedded-android-arm64@1.99.0: optional: true - sass-embedded-android-arm@1.98.0: + sass-embedded-android-arm@1.99.0: optional: true - sass-embedded-android-riscv64@1.98.0: + sass-embedded-android-riscv64@1.99.0: optional: true - sass-embedded-android-x64@1.98.0: + sass-embedded-android-x64@1.99.0: optional: true - sass-embedded-darwin-arm64@1.98.0: + sass-embedded-darwin-arm64@1.99.0: optional: true - sass-embedded-darwin-x64@1.98.0: + sass-embedded-darwin-x64@1.99.0: optional: true - sass-embedded-linux-arm64@1.98.0: + sass-embedded-linux-arm64@1.99.0: optional: true - sass-embedded-linux-arm@1.98.0: + sass-embedded-linux-arm@1.99.0: optional: true - sass-embedded-linux-musl-arm64@1.98.0: + sass-embedded-linux-musl-arm64@1.99.0: optional: true - sass-embedded-linux-musl-arm@1.98.0: + sass-embedded-linux-musl-arm@1.99.0: optional: true - sass-embedded-linux-musl-riscv64@1.98.0: + sass-embedded-linux-musl-riscv64@1.99.0: optional: true - sass-embedded-linux-musl-x64@1.98.0: + sass-embedded-linux-musl-x64@1.99.0: optional: true - sass-embedded-linux-riscv64@1.98.0: + sass-embedded-linux-riscv64@1.99.0: optional: true - sass-embedded-linux-x64@1.98.0: + sass-embedded-linux-x64@1.99.0: optional: true - sass-embedded-unknown-all@1.98.0: + sass-embedded-unknown-all@1.99.0: dependencies: - sass: 1.98.0 + sass: 1.99.0 optional: true - sass-embedded-win32-arm64@1.98.0: + sass-embedded-win32-arm64@1.99.0: optional: true - sass-embedded-win32-x64@1.98.0: + sass-embedded-win32-x64@1.99.0: optional: true - sass-embedded@1.98.0: + sass-embedded@1.99.0: dependencies: '@bufbuild/protobuf': 2.11.0 colorjs.io: 0.5.2 @@ -32458,42 +32808,42 @@ snapshots: sync-child-process: 1.0.2 varint: 6.0.0 optionalDependencies: - sass-embedded-all-unknown: 1.98.0 - sass-embedded-android-arm: 1.98.0 - sass-embedded-android-arm64: 1.98.0 - sass-embedded-android-riscv64: 1.98.0 - sass-embedded-android-x64: 1.98.0 - sass-embedded-darwin-arm64: 1.98.0 - sass-embedded-darwin-x64: 1.98.0 - sass-embedded-linux-arm: 1.98.0 - sass-embedded-linux-arm64: 1.98.0 - sass-embedded-linux-musl-arm: 1.98.0 - sass-embedded-linux-musl-arm64: 1.98.0 - sass-embedded-linux-musl-riscv64: 1.98.0 - sass-embedded-linux-musl-x64: 1.98.0 - sass-embedded-linux-riscv64: 1.98.0 - sass-embedded-linux-x64: 1.98.0 - sass-embedded-unknown-all: 1.98.0 - sass-embedded-win32-arm64: 1.98.0 - sass-embedded-win32-x64: 1.98.0 - - sass-loader@16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.19))(sass-embedded@1.98.0)(sass@1.97.3)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + sass-embedded-all-unknown: 1.99.0 + sass-embedded-android-arm: 1.99.0 + sass-embedded-android-arm64: 1.99.0 + sass-embedded-android-riscv64: 1.99.0 + sass-embedded-android-x64: 1.99.0 + sass-embedded-darwin-arm64: 1.99.0 + sass-embedded-darwin-x64: 1.99.0 + sass-embedded-linux-arm: 1.99.0 + sass-embedded-linux-arm64: 1.99.0 + sass-embedded-linux-musl-arm: 1.99.0 + sass-embedded-linux-musl-arm64: 1.99.0 + sass-embedded-linux-musl-riscv64: 1.99.0 + sass-embedded-linux-musl-x64: 1.99.0 + sass-embedded-linux-riscv64: 1.99.0 + sass-embedded-linux-x64: 1.99.0 + sass-embedded-unknown-all: 1.99.0 + sass-embedded-win32-arm64: 1.99.0 + sass-embedded-win32-x64: 1.99.0 + + sass-loader@16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.97.3)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: neo-async: 2.6.2 optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) sass: 1.97.3 - sass-embedded: 1.98.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + sass-embedded: 1.99.0 + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) - sass-loader@16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.19))(sass-embedded@1.98.0)(sass@1.98.0)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + sass-loader@16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: neo-async: 2.6.2 optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) - sass: 1.98.0 - sass-embedded: 1.98.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + sass: 1.99.0 + sass-embedded: 1.99.0 + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) sass@1.97.3: dependencies: @@ -32501,15 +32851,15 @@ snapshots: immutable: 5.1.5 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.4.1 + '@parcel/watcher': 2.5.6 - sass@1.98.0: + sass@1.99.0: dependencies: chokidar: 4.0.3 immutable: 5.1.5 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.4.1 + '@parcel/watcher': 2.5.6 satori-html@0.3.2: dependencies: @@ -32521,7 +32871,7 @@ snapshots: css-background-parser: 0.1.0 css-box-shadow: 1.0.0-3 css-to-react-native: 3.2.0 - emoji-regex: 10.3.0 + emoji-regex: 10.6.0 escape-html: 1.0.3 linebreak: 1.1.0 parse-css-color: 0.2.1 @@ -32542,10 +32892,7 @@ snapshots: postcss-value-parser: 4.2.0 yoga-layout: 3.2.1 - sax@1.4.4: - optional: true - - sax@1.5.0: {} + sax@1.6.0: {} saxes@6.0.0: dependencies: @@ -32578,7 +32925,7 @@ snapshots: ajv-formats: 2.1.1(ajv@8.18.0) ajv-keywords: 5.1.0(ajv@8.18.0) - search-insights@2.14.0: {} + search-insights@2.17.3: {} section-matter@1.0.0: dependencies: @@ -32591,8 +32938,8 @@ snapshots: selfsigned@2.4.1: dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 + '@types/node-forge': 1.3.14 + node-forge: 1.4.0 selfsigned@5.5.0: dependencies: @@ -32602,8 +32949,8 @@ snapshots: semantic-release-replace-plugin@1.2.7(semantic-release@25.0.3(typescript@6.0.2)): dependencies: jest-diff: 29.7.0 - lodash-es: 4.17.23 - replace-in-file: 7.1.0 + lodash-es: 4.18.1 + replace-in-file: 7.2.0 semantic-release: 25.0.3(typescript@6.0.2) semantic-release@25.0.3(typescript@6.0.2): @@ -32615,17 +32962,17 @@ snapshots: '@semantic-release/release-notes-generator': 14.1.0(semantic-release@25.0.3(typescript@6.0.2)) aggregate-error: 5.0.0 cosmiconfig: 9.0.1(typescript@6.0.2) - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 env-ci: 11.2.0 execa: 9.6.1 figures: 6.1.0 find-versions: 6.0.0 get-stream: 6.0.1 - git-log-parser: 1.2.0 + git-log-parser: 1.2.1 hook-std: 4.0.0 - hosted-git-info: 9.0.0 + hosted-git-info: 9.0.2 import-from-esm: 2.0.0 - lodash-es: 4.17.23 + lodash-es: 4.18.1 marked: 15.0.12 marked-terminal: 7.3.0(marked@15.0.12) micromatch: 4.0.8 @@ -32646,7 +32993,7 @@ snapshots: semver-regex@4.0.5: {} - semver@5.7.1: + semver@5.7.2: optional: true semver@6.3.1: {} @@ -32655,27 +33002,27 @@ snapshots: semver@7.7.4: {} - send@0.19.0: + send@0.19.2: dependencies: debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 mime: 1.6.0 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color send@1.2.1: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -32693,7 +33040,7 @@ snapshots: dependencies: randombytes: 2.1.0 - serialize-javascript@7.0.4: {} + serialize-javascript@7.0.5: {} serve-handler@6.1.7: dependencies: @@ -32705,24 +33052,24 @@ snapshots: path-to-regexp: 3.3.0 range-parser: 1.2.0 - serve-index@1.9.1: + serve-index@1.9.2: dependencies: accepts: 1.3.8 batch: 0.6.1 debug: 2.6.9 escape-html: 1.0.3 - http-errors: 1.6.3 + http-errors: 1.8.1 mime-types: 2.1.35 parseurl: 1.3.3 transitivePeerDependencies: - supports-color - serve-static@1.16.2: + serve-static@1.16.3: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.0 + send: 0.19.2 transitivePeerDependencies: - supports-color @@ -32737,7 +33084,7 @@ snapshots: set-blocking@2.0.0: {} - set-function-length@1.2.1: + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -32746,8 +33093,6 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 - setprototypeof@1.1.0: {} - setprototypeof@1.2.0: {} shallow-clone@3.0.1: @@ -32793,7 +33138,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.1: {} + shell-quote@1.8.3: {} shiki@4.0.2: dependencies: @@ -32846,37 +33191,37 @@ snapshots: figures: 2.0.0 pkg-conf: 2.1.0 - sigstore@4.0.0: + sigstore@4.1.0: dependencies: '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.0.0 + '@sigstore/core': 3.2.0 '@sigstore/protobuf-specs': 0.5.0 - '@sigstore/sign': 4.0.1 - '@sigstore/tuf': 4.0.0 - '@sigstore/verify': 3.0.0 + '@sigstore/sign': 4.1.1 + '@sigstore/tuf': 4.0.2 + '@sigstore/verify': 3.1.0 transitivePeerDependencies: - supports-color sirv@2.0.4: dependencies: - '@polka/url': 1.0.0-next.25 + '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 totalist: 3.0.1 sirv@3.0.2: dependencies: - '@polka/url': 1.0.0-next.25 + '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 totalist: 3.0.1 sisteransi@1.0.5: {} - sitemap@7.1.2: + sitemap@7.1.3: dependencies: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.5.0 + sax: 1.6.0 skin-tone@2.0.0: dependencies: @@ -32888,28 +33233,19 @@ snapshots: slash@5.1.0: {} - slice-ansi@3.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - optional: true - - slice-ansi@4.0.0: + slice-ansi@7.1.2: dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - optional: true + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 - slice-ansi@7.1.0: + slice-ansi@8.0.0: dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 smart-buffer@4.2.0: {} - smol-toml@1.6.0: {} + smol-toml@1.6.1: {} snake-case@3.0.4: dependencies: @@ -32922,17 +33258,17 @@ snapshots: uuid: 8.3.2 websocket-driver: 0.7.4 - socks-proxy-agent@8.0.4: + socks-proxy-agent@8.0.5: dependencies: - agent-base: 7.1.3 - debug: 4.4.3(supports-color@8.1.1) - socks: 2.8.3 + agent-base: 7.1.4 + debug: 4.4.3 + socks: 2.8.7 transitivePeerDependencies: - supports-color - socks@2.8.3: + socks@2.8.7: dependencies: - ip-address: 9.0.5 + ip-address: 10.1.0 smart-buffer: 4.2.0 sort-css-media-queries@2.2.0: {} @@ -32941,11 +33277,17 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + source-map-loader@5.0.0(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): + dependencies: + iconv-lite: 0.6.3 + source-map-js: 1.2.1 + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) + + source-map-loader@5.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) source-map-support@0.5.13: dependencies: @@ -32966,38 +33308,43 @@ snapshots: source-map@0.7.6: {} - space-separated-tokens@2.0.1: {} + space-separated-tokens@2.0.2: {} spawn-error-forwarder@1.0.0: {} - spdx-correct@3.1.1: + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.12 + spdx-license-ids: 3.0.23 - spdx-exceptions@2.3.0: {} + spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.12 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.23 + + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.23 - spdx-license-ids@3.0.12: {} + spdx-license-ids@3.0.23: {} spdy-transport@3.0.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 - readable-stream: 3.6.0 + readable-stream: 3.6.2 wbuf: 1.7.3 transitivePeerDependencies: - supports-color spdy@4.0.2: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -33015,30 +33362,11 @@ snapshots: sprintf-js@1.0.3: {} - sprintf-js@1.1.3: {} - srcset@4.0.0: {} - srvx@0.11.13: {} - - sshpk@1.18.0: - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - optional: true - - ssri@12.0.0: - dependencies: - minipass: 7.1.3 + srvx@0.11.15: {} - ssri@13.0.0: + ssri@13.0.1: dependencies: minipass: 7.1.3 @@ -33050,15 +33378,12 @@ snapshots: stackframe@1.3.4: {} - standard-as-callback@2.1.0: - optional: true - start-server-and-test@3.0.0: dependencies: arg: 5.0.2 bluebird: 3.7.2 check-more-types: 2.24.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 execa: 5.1.1 lazy-ass: 1.6.0 tree-kill: 1.2.2 @@ -33068,8 +33393,6 @@ snapshots: statuses@1.5.0: {} - statuses@2.0.1: {} - statuses@2.0.2: {} std-env@3.10.0: {} @@ -33080,20 +33403,20 @@ snapshots: stdin-discarder@0.3.1: {} - storybook@10.3.3(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.0.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@testing-library/jest-dom': 6.9.1 - '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) + '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 '@vitest/spy': 3.2.4 - esbuild: 0.27.4 + esbuild: 0.27.7 open: 10.2.0 recast: 0.23.11 semver: 7.7.4 use-sync-external-store: 1.6.0(react@19.2.4) - ws: 8.19.0 + ws: 8.20.0 optionalDependencies: prettier: 3.8.1 transitivePeerDependencies: @@ -33106,21 +33429,13 @@ snapshots: stream-combiner2@1.1.1: dependencies: duplexer2: 0.1.4 - readable-stream: 2.3.7 + readable-stream: 2.3.8 stream-combiner@0.2.2: dependencies: duplexer: 0.1.2 through: 2.3.8 - streamroller@3.1.5: - dependencies: - date-format: 4.0.14 - debug: 4.4.3(supports-color@8.1.1) - fs-extra: 8.1.0 - transitivePeerDependencies: - - supports-color - string-argv@0.3.2: {} string-length@4.0.2: @@ -33138,18 +33453,18 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 string-width@7.2.0: dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.4.0 - strip-ansi: 7.1.2 + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 - string-width@8.1.0: + string-width@8.2.0: dependencies: - get-east-asian-width: 1.4.0 - strip-ansi: 7.1.2 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 string.prototype.codepointat@0.2.1: {} @@ -33161,7 +33476,7 @@ snapshots: dependencies: safe-buffer: 5.2.1 - stringify-entities@4.0.3: + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 @@ -33176,7 +33491,7 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.2: + strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 @@ -33202,47 +33517,36 @@ snapshots: structured-clone-es@2.0.0: {} - style-loader@3.3.1(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + style-loader@3.3.4(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - style-loader@4.0.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + style-loader@4.0.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - style-to-object@0.4.2: + style-to-js@1.1.21: dependencies: - inline-style-parser: 0.1.1 + style-to-object: 1.0.14 - style-to-object@1.0.5: + style-to-object@1.0.14: dependencies: - inline-style-parser: 0.2.2 + inline-style-parser: 0.2.7 stylehacks@6.1.1(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 postcss: 8.5.8 - postcss-selector-parser: 6.1.1 + postcss-selector-parser: 6.1.2 stylehacks@7.0.8(postcss@8.5.8): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 postcss: 8.5.8 postcss-selector-parser: 7.1.1 stylis@4.3.6: {} - stylus@0.64.0: - dependencies: - '@adobe/css-tools': 4.3.3 - debug: 4.4.3(supports-color@8.1.1) - glob: 10.5.0 - sax: 1.4.4 - source-map: 0.7.6 - transitivePeerDependencies: - - supports-color - optional: true - super-regex@1.1.0: dependencies: function-timeout: 1.0.2 @@ -33272,41 +33576,38 @@ snapshots: svg-parser@2.0.4: {} - svgo@3.3.2: + svgo@3.3.3: dependencies: - '@trysound/sax': 0.2.0 commander: 7.2.0 - css-select: 5.1.0 + css-select: 5.2.2 css-tree: 2.3.1 - css-what: 6.1.0 + css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 + sax: 1.6.0 svgo@4.0.1: dependencies: commander: 11.1.0 - css-select: 5.1.0 + css-select: 5.2.2 css-tree: 3.2.1 - css-what: 6.1.0 + css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.5.0 + sax: 1.6.0 symbol-tree@3.2.4: {} sync-child-process@1.0.2: dependencies: - sync-message-port: 1.1.3 + sync-message-port: 1.2.0 - sync-message-port@1.1.3: {} + sync-message-port@1.2.0: {} - synckit@0.11.11: + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 - systeminformation@5.31.5: - optional: true - tablesort@5.7.0: {} tagged-tag@1.0.0: {} @@ -33315,15 +33616,17 @@ snapshots: tapable@2.3.0: {} + tapable@2.3.2: {} + tar-stream@2.2.0: dependencies: bl: 4.1.0 - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 fs-constants: 1.0.0 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.2 - tar@7.5.2: + tar@7.5.13: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -33335,40 +33638,45 @@ snapshots: temp-dir@3.0.0: {} - tempy@3.1.0: + tempy@3.2.0: dependencies: is-stream: 3.0.0 temp-dir: 3.0.0 type-fest: 2.19.0 unique-string: 3.0.0 - terser-webpack-plugin@5.3.16(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + terser-webpack-plugin@5.4.0(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - serialize-javascript: 6.0.2 terser: 5.46.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) optionalDependencies: - '@swc/core': 1.15.18(@swc/helpers@0.5.19) + '@swc/core': 1.15.24(@swc/helpers@0.5.21) esbuild: 0.27.3 - terser-webpack-plugin@5.3.16(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + terser-webpack-plugin@5.4.0(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - serialize-javascript: 6.0.2 terser: 5.46.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) optionalDependencies: - '@swc/core': 1.15.18(@swc/helpers@0.5.19) - esbuild: 0.27.4 + '@swc/core': 1.15.24(@swc/helpers@0.5.21) + esbuild: 0.27.7 terser@5.46.0: dependencies: - '@jridgewell/source-map': 0.3.5 + '@jridgewell/source-map': 0.3.11 + acorn: 8.16.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + terser@5.46.1: + dependencies: + '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -33387,16 +33695,13 @@ snapshots: dependencies: any-promise: 1.3.0 - thingies@2.5.0(tslib@2.8.1): + thingies@2.6.0(tslib@2.8.1): dependencies: tslib: 2.8.1 - throttleit@1.0.1: - optional: true - through2@2.0.5: dependencies: - readable-stream: 2.3.7 + readable-stream: 2.3.8 xtend: 4.0.2 through@2.3.8: {} @@ -33430,21 +33735,13 @@ snapshots: tinyrainbow@3.1.0: {} - tinyspy@4.0.3: {} - - tldts-core@6.1.86: - optional: true - - tldts-core@7.0.25: {} + tinyspy@4.0.4: {} - tldts@6.1.86: - dependencies: - tldts-core: 6.1.86 - optional: true + tldts-core@7.0.27: {} - tldts@7.0.25: + tldts@7.0.27: dependencies: - tldts-core: 7.0.25 + tldts-core: 7.0.27 tmp@0.0.33: dependencies: @@ -33464,14 +33761,9 @@ snapshots: totalist@3.0.1: {} - tough-cookie@5.1.2: - dependencies: - tldts: 6.1.86 - optional: true - tough-cookie@6.0.1: dependencies: - tldts: 7.0.25 + tldts: 7.0.27 tr46@0.0.3: {} @@ -33489,7 +33781,7 @@ snapshots: trim-lines@3.0.1: {} - trough@2.1.0: {} + trough@2.2.0: {} trouter@2.0.1: dependencies: @@ -33499,28 +33791,29 @@ snapshots: dependencies: typescript: 6.0.2 - ts-checker-rspack-plugin@1.1.1(@rspack/core@1.6.8(@swc/helpers@0.5.19))(typescript@6.0.2): + ts-checker-rspack-plugin@1.3.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(tslib@2.8.1)(typescript@6.0.2): dependencies: - '@babel/code-frame': 7.29.0 '@rspack/lite-tapable': 1.1.0 chokidar: 3.6.0 - memfs: 4.51.0 - minimatch: 9.0.9 + memfs: 4.57.1(tslib@2.8.1) picocolors: 1.1.1 typescript: 6.0.2 optionalDependencies: - '@rspack/core': 1.6.8(@swc/helpers@0.5.19) + '@rspack/core': 1.6.8(@swc/helpers@0.5.21) + transitivePeerDependencies: + - tslib ts-dedent@2.2.0: {} - ts-loader@9.4.1(typescript@6.0.2)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + ts-loader@9.5.7(typescript@6.0.2)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: chalk: 4.1.2 enhanced-resolve: 5.20.1 micromatch: 4.0.8 semver: 7.7.4 + source-map: 0.7.6 typescript: 6.0.2 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) ts-morph@21.0.1: dependencies: @@ -33532,27 +33825,6 @@ snapshots: '@ts-morph/common': 0.28.1 code-block-writer: 13.0.3 - ts-node@10.9.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(@types/node@25.5.0)(typescript@6.0.2): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 25.5.0 - acorn: 8.16.0 - acorn-walk: 8.3.5 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.4 - make-error: 1.3.6 - typescript: 6.0.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.15.18(@swc/helpers@0.5.19) - optional: true - tsconfck@3.1.6(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 @@ -33565,7 +33837,7 @@ snapshots: dependencies: chalk: 4.1.2 enhanced-resolve: 5.20.1 - tapable: 2.3.0 + tapable: 2.3.2 tsconfig-paths: 4.2.0 tsconfig-paths@4.2.0: @@ -33574,27 +33846,29 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.21.7(oxc-resolver@11.19.1)(synckit@0.11.11)(typescript@6.0.2): + tsdown@0.21.7(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(synckit@0.11.12)(typescript@6.0.2): dependencies: ansis: 4.2.0 cac: 7.0.0 - defu: 6.1.4 + defu: 6.1.6 empathic: 2.0.0 hookable: 6.1.0 import-without-cache: 0.2.5 obug: 2.1.1 picomatch: 4.0.4 - rolldown: 1.0.0-rc.12 - rolldown-plugin-dts: 0.23.2(oxc-resolver@11.19.1)(rolldown@1.0.0-rc.12)(typescript@6.0.2) + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + rolldown-plugin-dts: 0.23.2(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(typescript@6.0.2) semver: 7.7.4 tinyexec: 1.0.4 tinyglobby: 0.2.15 tree-kill: 1.2.2 unconfig-core: 7.5.0 - unrun: 0.2.34(synckit@0.11.11) + unrun: 0.2.34(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(synckit@0.11.12) optionalDependencies: typescript: 6.0.2 transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - '@ts-macro/tsc' - '@typescript/native-preview' - oxc-resolver @@ -33605,30 +33879,20 @@ snapshots: tslib@2.8.1: {} - tsscmp@1.0.6: {} - tsyringe@4.10.0: dependencies: tslib: 1.14.1 - tuf-js@4.0.0: + tuf-js@4.1.0: dependencies: - '@tufjs/models': 4.0.0 - debug: 4.4.3(supports-color@8.1.1) - make-fetch-happen: 15.0.3 + '@tufjs/models': 4.1.0 + debug: 4.4.3 + make-fetch-happen: 15.0.5 transitivePeerDependencies: - supports-color - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - optional: true - tunnel@0.0.6: {} - tweetnacl@0.14.5: - optional: true - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -33637,16 +33901,13 @@ snapshots: type-fest@0.21.3: {} - type-fest@0.8.1: - optional: true - type-fest@1.4.0: {} type-fest@2.19.0: {} type-fest@4.41.0: {} - type-fest@5.4.4: + type-fest@5.5.0: dependencies: tagged-tag: 1.0.0 @@ -33667,13 +33928,13 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript-eslint@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2): + typescript-eslint@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - '@typescript-eslint/parser': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + '@typescript-eslint/parser': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) - '@typescript-eslint/utils': 8.58.0(eslint@10.1.0(jiti@2.6.1))(typescript@6.0.2) - eslint: 10.1.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) + eslint: 10.2.0(jiti@2.6.1) typescript: 6.0.2 transitivePeerDependencies: - supports-color @@ -33684,7 +33945,7 @@ snapshots: ufo@1.6.3: {} - uglify-js@3.17.4: + uglify-js@3.19.3: optional: true ultrahtml@1.6.0: {} @@ -33698,28 +33959,28 @@ snapshots: undici-types@7.18.2: {} - undici@6.23.0: {} + undici@6.24.1: {} undici@7.24.4: {} - undici@7.24.6: {} + undici@7.24.7: {} unenv@2.0.0-rc.24: dependencies: pathe: 2.0.3 - unicode-canonical-property-names-ecmascript@2.0.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-emoji-modifier-base@1.0.0: {} unicode-match-property-ecmascript@2.0.0: dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 unicode-match-property-value-ecmascript@2.2.1: {} - unicode-property-aliases-ecmascript@2.1.0: {} + unicode-property-aliases-ecmascript@2.2.0: {} unicode-trie@2.0.0: dependencies: @@ -33734,12 +33995,12 @@ snapshots: unified@11.0.5: dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 bail: 2.0.2 devlop: 1.1.0 extend: 3.0.2 is-plain-obj: 4.1.0 - trough: 2.1.0 + trough: 2.2.0 vfile: 6.0.3 unifont@0.7.4: @@ -33750,15 +34011,7 @@ snapshots: union@0.5.0: dependencies: - qs: 6.14.2 - - unique-filename@4.0.0: - dependencies: - unique-slug: 5.0.0 - - unique-slug@5.0.0: - dependencies: - imurmurhash: 0.1.4 + qs: 6.15.0 unique-string@3.0.0: dependencies: @@ -33766,55 +34019,53 @@ snapshots: unist-util-find-after@5.0.0: dependencies: - '@types/unist': 3.0.0 - unist-util-is: 6.0.0 + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 - unist-util-is@6.0.0: + unist-util-is@6.0.1: dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-modify-children@4.0.0: dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 array-iterate: 2.0.1 unist-util-position-from-estree@2.0.0: dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-position@5.0.0: dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-remove-position@5.0.0: dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-visit: 5.1.0 unist-util-stringify-position@4.0.0: dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-visit-children@3.0.0: dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-visit-parents@6.0.2: dependencies: - '@types/unist': 3.0.0 - unist-util-is: 6.0.0 + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 unist-util-visit@5.1.0: dependencies: - '@types/unist': 3.0.0 - unist-util-is: 6.0.0 + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 universal-user-agent@7.0.3: {} - universalify@0.1.2: {} - - universalify@2.0.0: {} + universalify@2.0.1: {} unix-crypt-td-js@1.1.4: {} @@ -33834,7 +34085,7 @@ snapshots: unrs-resolver@1.11.1: dependencies: - napi-postinstall: 0.3.2 + napi-postinstall: 0.3.4 optionalDependencies: '@unrs/resolver-binding-android-arm-eabi': 1.11.1 '@unrs/resolver-binding-android-arm64': 1.11.1 @@ -33856,42 +34107,40 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - unrun@0.2.34(synckit@0.11.11): + unrun@0.2.34(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(synckit@0.11.12): dependencies: - rolldown: 1.0.0-rc.12 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optionalDependencies: - synckit: 0.11.11 + synckit: 0.11.12 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - unstorage@1.17.4(db0@0.3.4)(ioredis@5.10.0): + unstorage@1.17.5(db0@0.3.4): dependencies: anymatch: 3.1.3 chokidar: 5.0.0 destr: 2.0.5 - h3: 1.15.6 + h3: 1.15.11 lru-cache: 11.2.7 node-fetch-native: 1.6.7 ofetch: 1.5.1 ufo: 1.6.3 optionalDependencies: db0: 0.3.4 - ioredis: 5.10.0 - unstorage@2.0.0-alpha.7(chokidar@5.0.0)(db0@0.3.4)(ioredis@5.10.0)(lru-cache@11.2.7)(ofetch@2.0.0-alpha.3): + unstorage@2.0.0-alpha.7(chokidar@5.0.0)(db0@0.3.4)(lru-cache@11.2.7)(ofetch@2.0.0-alpha.3): optionalDependencies: chokidar: 5.0.0 db0: 0.3.4 - ioredis: 5.10.0 lru-cache: 11.2.7 ofetch: 2.0.0-alpha.3 - untildify@4.0.0: - optional: true - upath@2.0.1: {} - update-browserslist-db@1.2.3(browserslist@4.28.1): + update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 escalade: 3.2.0 picocolors: 1.1.1 @@ -33904,10 +34153,10 @@ snapshots: import-lazy: 4.0.0 is-ci: 3.0.1 is-installed-globally: 0.4.0 - is-npm: 6.0.0 + is-npm: 6.1.0 is-yarn-global: 0.4.1 latest-version: 7.0.0 - pupa: 3.1.0 + pupa: 3.3.0 semver: 7.7.4 semver-diff: 4.0.0 xdg-basedir: 5.1.0 @@ -33920,14 +34169,14 @@ snapshots: url-join@5.0.0: {} - url-loader@4.1.1(file-loader@6.2.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) optionalDependencies: - file-loader: 6.2.0(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + file-loader: 6.2.0(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) use-sync-external-store@1.6.0(react@19.2.4): dependencies: @@ -33947,14 +34196,11 @@ snapshots: uuid@8.3.2: {} - v8-compile-cache-lib@3.0.1: - optional: true - - v8-to-istanbul@9.0.1: + v8-to-istanbul@9.3.0: dependencies: '@jridgewell/trace-mapping': 0.3.31 '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 1.9.0 + convert-source-map: 2.0.0 valibot@1.3.1(typescript@6.0.2): optionalDependencies: @@ -33962,7 +34208,7 @@ snapshots: validate-npm-package-license@3.0.4: dependencies: - spdx-correct: 3.1.1 + spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 validate-npm-package-name@7.0.2: {} @@ -33973,38 +34219,31 @@ snapshots: vary@1.1.2: {} - verror@1.10.0: - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - optional: true - - vfile-location@5.0.2: + vfile-location@5.0.3: dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 vfile: 6.0.3 - vfile-message@4.0.2: + vfile-message@4.0.3: dependencies: - '@types/unist': 3.0.0 + '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 vfile@6.0.3: dependencies: - '@types/unist': 3.0.0 - vfile-message: 4.0.2 + '@types/unist': 3.0.3 + vfile-message: 4.0.3 vis-data@8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)): dependencies: uuid: 11.1.0 vis-util: 6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0) - vis-network@10.0.2(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)(keycharm@0.2.0)(uuid@11.1.0)(vis-data@8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)))(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)): + vis-network@10.0.2(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)(keycharm@0.4.0)(uuid@11.1.0)(vis-data@8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)))(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)): dependencies: '@egjs/hammerjs': 2.0.17 component-emitter: 2.0.0 - keycharm: 0.2.0 + keycharm: 0.4.0 uuid: 11.1.0 vis-data: 8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)) vis-util: 6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0) @@ -34014,17 +34253,17 @@ snapshots: '@egjs/hammerjs': 2.0.17 component-emitter: 2.0.0 - vite-plugin-eslint@1.8.1(eslint@10.1.0(jiti@2.6.1))(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)): + vite-plugin-eslint@1.8.1(eslint@10.2.0(jiti@2.6.1))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 - '@types/eslint': 8.37.0 - eslint: 10.1.0(jiti@2.6.1) - rollup: 2.79.1 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + '@types/eslint': 8.56.12 + eslint: 10.2.0(jiti@2.6.1) + rollup: 2.80.0 + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) - vite-plugin-inspect@12.0.0-beta.1(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(ws@8.19.0): + vite-plugin-inspect@12.0.0-beta.1(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(ws@8.20.0): dependencies: - '@vitejs/devtools-kit': 0.1.11(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(ws@8.19.0) + '@vitejs/devtools-kit': 0.1.13(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(ws@8.20.0) ansis: 4.2.0 error-stack-parser-es: 1.0.5 obug: 2.1.1 @@ -34033,131 +34272,207 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws - vite-tsconfig-paths@7.0.0-alpha.1(typescript@6.0.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)): + vite-tsconfig-paths@7.0.0-alpha.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)): dependencies: - debug: 4.4.3(supports-color@8.1.1) - oxc-resolver: 11.19.1 + debug: 4.4.3 + oxc-resolver: 11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) tsconfck: 3.1.6(typescript@6.0.2) - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - supports-color - typescript - vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2): + vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.3): dependencies: - esbuild: 0.27.4 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 postcss: 8.5.8 rollup: 4.60.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 fsevents: 2.3.3 jiti: 2.6.1 less: 4.4.2 lightningcss: 1.32.0 sass: 1.97.3 - sass-embedded: 1.98.0 - stylus: 0.64.0 + sass-embedded: 1.99.0 terser: 5.46.0 - yaml: 2.8.2 + yaml: 2.8.3 - vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2): + vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3): dependencies: - esbuild: 0.27.4 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.8 + rollup: 4.60.1 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.5.2 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.2 + lightningcss: 1.32.0 + sass: 1.97.3 + sass-embedded: 1.99.0 + terser: 5.46.1 + yaml: 2.8.3 + + vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3): + dependencies: + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 postcss: 8.5.8 rollup: 4.60.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 fsevents: 2.3.3 jiti: 2.6.1 less: 4.6.4 lightningcss: 1.32.0 sass: 1.97.3 - sass-embedded: 1.98.0 - stylus: 0.64.0 - terser: 5.46.0 - yaml: 2.8.2 + sass-embedded: 1.99.0 + terser: 5.46.1 + yaml: 2.8.3 - vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2): + vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3): dependencies: - esbuild: 0.27.4 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + esbuild: 0.27.3 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 postcss: 8.5.8 rollup: 4.60.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 fsevents: 2.3.3 jiti: 2.6.1 less: 4.6.4 lightningcss: 1.32.0 - sass: 1.98.0 - sass-embedded: 1.98.0 - stylus: 0.64.0 - terser: 5.46.0 - yaml: 2.8.2 + sass: 1.99.0 + sass-embedded: 1.99.0 + terser: 5.46.1 + yaml: 2.8.3 + + vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.8 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.5.2 + esbuild: 0.27.7 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.2 + sass: 1.97.3 + sass-embedded: 1.99.0 + terser: 5.46.1 + yaml: 2.8.3 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true - vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2): + vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.5.0 - esbuild: 0.27.4 + '@types/node': 25.5.2 + esbuild: 0.27.7 fsevents: 2.3.3 jiti: 2.6.1 less: 4.6.4 sass: 1.97.3 - sass-embedded: 1.98.0 - stylus: 0.64.0 - terser: 5.46.0 - yaml: 2.8.2 + sass-embedded: 1.99.0 + terser: 5.46.1 + yaml: 2.8.3 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2): + vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.5.0 - esbuild: 0.27.4 + '@types/node': 25.5.2 + esbuild: 0.27.7 fsevents: 2.3.3 jiti: 2.6.1 less: 4.6.4 - sass: 1.98.0 - sass-embedded: 1.98.0 - stylus: 0.64.0 - terser: 5.46.0 - yaml: 2.8.2 + sass: 1.99.0 + sass-embedded: 1.99.0 + terser: 5.46.1 + yaml: 2.8.3 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + vitefu@1.1.3(vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)): + optionalDependencies: + vite: 7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) - vitefu@1.1.2(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)): + vitefu@1.1.3(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)): optionalDependencies: - vite: 7.3.1(@types/node@25.5.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) - vitefu@1.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)): + vitest@4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)): + dependencies: + '@vitest/expect': 4.1.2 + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.2 + '@vitest/runner': 4.1.2 + '@vitest/snapshot': 4.1.2 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.0.0 + tinybench: 2.9.0 + tinyexec: 1.0.4 + tinyglobby: 0.2.15 + tinyrainbow: 3.1.0 + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) + why-is-node-running: 2.3.0 optionalDependencies: - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + '@types/node': 25.5.2 + '@vitest/browser-playwright': 4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) + '@vitest/ui': 4.1.2(vitest@4.1.2) + happy-dom: 20.8.9 + jsdom: 29.0.1 + transitivePeerDependencies: + - msw + optional: true - vitest@4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)): + vitest@4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -34174,21 +34489,21 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.5.0 - '@vitest/browser-playwright': 4.1.2(playwright@1.58.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.97.3)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) + '@types/node': 25.5.2 + '@vitest/browser-playwright': 4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) '@vitest/ui': 4.1.2(vitest@4.1.2) happy-dom: 20.8.9 jsdom: 29.0.1 transitivePeerDependencies: - msw - vitest@4.1.2(@types/node@25.5.0)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)): + vitest@4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2)) + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -34205,11 +34520,11 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.5.0 - '@vitest/browser-playwright': 4.1.2(playwright@1.58.2)(vite@8.0.3(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.98.0)(sass@1.98.0)(stylus@0.64.0)(terser@5.46.0)(yaml@2.8.2))(vitest@4.1.2) + '@types/node': 25.5.2 + '@vitest/browser-playwright': 4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) '@vitest/ui': 4.1.2(vitest@4.1.2) happy-dom: 20.8.9 jsdom: 29.0.1 @@ -34239,9 +34554,9 @@ snapshots: wait-on@9.0.4(debug@4.4.3): dependencies: - axios: 1.13.6(debug@4.4.3) - joi: 18.0.2 - lodash: 4.17.23 + axios: 1.14.0(debug@4.4.3) + joi: 18.1.2 + lodash: 4.18.1 minimist: 1.2.8 rxjs: 7.8.2 transitivePeerDependencies: @@ -34290,44 +34605,59 @@ snapshots: opener: 1.5.2 picocolors: 1.1.1 sirv: 2.0.4 - ws: 7.5.9 + ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate - webpack-dev-middleware@6.1.3(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + webpack-dev-middleware@6.1.3(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: colorette: 2.0.20 - memfs: 3.4.13 + memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - webpack-dev-middleware@7.4.5(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: colorette: 2.0.20 - memfs: 4.51.0 + memfs: 4.57.1(tslib@2.8.1) mime-types: 3.0.2 on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) + transitivePeerDependencies: + - tslib + + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): + dependencies: + colorette: 2.0.20 + memfs: 4.57.1(tslib@2.8.1) + mime-types: 3.0.2 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.3.3 + optionalDependencies: + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) + transitivePeerDependencies: + - tslib - webpack-dev-server@5.2.2(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + webpack-dev-server@5.2.3(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): 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.0 + '@types/express-serve-static-core': 4.19.8 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 + '@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.2.1 + bonjour-service: 1.3.0 chokidar: 3.6.0 colorette: 2.0.20 compression: 1.8.1 @@ -34335,37 +34665,38 @@ snapshots: express: 4.22.1 graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.25) - ipaddr.js: 2.2.0 - launch-editor: 2.6.1 + ipaddr.js: 2.3.0 + launch-editor: 2.13.2 open: 10.2.0 - p-retry: 6.2.0 + p-retry: 6.2.1 schema-utils: 4.3.3 - selfsigned: 2.4.1 - serve-index: 1.9.1 + selfsigned: 5.5.0 + serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - ws: 8.19.0 + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + ws: 8.20.0 optionalDependencies: - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) transitivePeerDependencies: - bufferutil - debug - supports-color + - tslib - utf-8-validate - webpack-dev-server@5.2.3(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + webpack-dev-server@5.2.3(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): 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.0 + '@types/express-serve-static-core': 4.19.8 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 + '@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.2.1 + bonjour-service: 1.3.0 chokidar: 3.6.0 colorette: 2.0.20 compression: 1.8.1 @@ -34373,23 +34704,24 @@ snapshots: express: 4.22.1 graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.25) - ipaddr.js: 2.2.0 - launch-editor: 2.6.1 + ipaddr.js: 2.3.0 + launch-editor: 2.13.2 open: 10.2.0 - p-retry: 6.2.0 + p-retry: 6.2.1 schema-utils: 4.3.3 selfsigned: 5.5.0 - serve-index: 1.9.1 + serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) - ws: 8.19.0 + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + ws: 8.20.0 optionalDependencies: - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) transitivePeerDependencies: - bufferutil - debug - supports-color + - tslib - utf-8-validate webpack-hot-middleware@2.26.1: @@ -34412,18 +34744,32 @@ snapshots: webpack-node-externals@3.0.0: {} - webpack-sources@3.3.3: {} + webpack-sources@3.3.4: {} - webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: typed-assert: 1.0.9 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) optionalDependencies: - html-webpack-plugin: 5.6.0(@rspack/core@1.6.8(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + html-webpack-plugin: 5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + + webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3)): + dependencies: + typed-assert: 1.0.9 + webpack: 5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3) + optionalDependencies: + html-webpack-plugin: 5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) + + webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): + dependencies: + typed-assert: 1.0.9 + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) + optionalDependencies: + html-webpack-plugin: 5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) webpack-virtual-modules@0.6.2: {} - webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.3): + webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -34433,8 +34779,8 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.16.0 acorn-import-phases: 1.0.4(acorn@8.16.0) - browserslist: 4.28.1 - chrome-trace-event: 1.0.3 + browserslist: 4.28.2 + chrome-trace-event: 1.0.4 enhanced-resolve: 5.20.1 es-module-lexer: 2.0.0 eslint-scope: 5.1.1 @@ -34446,16 +34792,16 @@ snapshots: mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.3 - tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + tapable: 2.3.2 + terser-webpack-plugin: 5.4.0(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3)(webpack@5.105.2(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.3)) watchpack: 2.5.1 - webpack-sources: 3.3.3 + webpack-sources: 3.3.4 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4): + webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -34465,8 +34811,8 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.16.0 acorn-import-phases: 1.0.4(acorn@8.16.0) - browserslist: 4.28.1 - chrome-trace-event: 1.0.3 + browserslist: 4.28.2 + chrome-trace-event: 1.0.4 enhanced-resolve: 5.20.1 es-module-lexer: 2.0.0 eslint-scope: 5.1.1 @@ -34478,16 +34824,16 @@ snapshots: mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.3 - tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)) + tapable: 2.3.2 + terser-webpack-plugin: 5.4.0(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) watchpack: 2.5.1 - webpack-sources: 3.3.3 + webpack-sources: 3.3.4 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpackbar@6.0.1(webpack@5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4)): + webpackbar@6.0.1(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)): dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -34496,12 +34842,12 @@ snapshots: markdown-table: 2.0.0 pretty-time: 1.1.0 std-env: 3.10.0 - webpack: 5.105.2(@swc/core@1.15.18(@swc/helpers@0.5.19))(esbuild@0.27.4) + webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) wrap-ansi: 7.0.0 websocket-driver@0.7.4: dependencies: - http-parser-js: 0.5.8 + http-parser-js: 0.5.10 safe-buffer: 5.2.1 websocket-extensions: 0.1.4 @@ -34534,7 +34880,7 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-module@2.0.0: {} + which-module@2.0.1: {} which-pm-runs@1.1.0: {} @@ -34546,9 +34892,9 @@ snapshots: dependencies: isexe: 2.0.0 - which@6.0.0: + which@6.0.1: dependencies: - isexe: 3.1.1 + isexe: 4.0.0 why-is-node-running@2.3.0: dependencies: @@ -34565,6 +34911,8 @@ snapshots: dependencies: execa: 4.1.0 + word-wrap@1.2.5: {} + wordwrap@1.0.0: {} wrap-ansi@6.2.0: @@ -34581,15 +34929,15 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 - wrap-ansi@9.0.0: + wrap-ansi@9.0.2: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 wrappy@1.0.2: {} @@ -34605,19 +34953,19 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - ws@7.5.9: {} + ws@7.5.10: {} ws@8.18.0: {} - ws@8.19.0: {} + ws@8.20.0: {} wsl-utils@0.1.0: dependencies: - is-wsl: 3.1.0 + is-wsl: 3.1.1 wsl-utils@0.3.1: dependencies: - is-wsl: 3.1.0 + is-wsl: 3.1.1 powershell-utils: 0.1.0 xdg-basedir@5.1.0: {} @@ -34626,7 +34974,7 @@ snapshots: xml-js@1.6.11: dependencies: - sax: 1.5.0 + sax: 1.6.0 xml-name-validator@5.0.0: {} @@ -34653,9 +35001,9 @@ snapshots: yallist@5.0.0: {} - yaml@1.10.2: {} + yaml@1.10.3: {} - yaml@2.8.2: {} + yaml@2.8.3: {} yargs-parser@18.1.3: dependencies: @@ -34678,7 +35026,7 @@ snapshots: require-main-filename: 2.0.0 set-blocking: 2.0.0 string-width: 4.2.3 - which-module: 2.0.0 + which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 @@ -34711,28 +35059,19 @@ snapshots: y18n: 5.0.8 yargs-parser: 22.0.0 - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - optional: true - - yn@3.1.1: - optional: true - yocto-queue@0.1.0: {} - yocto-queue@1.2.1: {} + yocto-queue@1.2.2: {} yoctocolors-cjs@2.1.3: {} - yoctocolors@2.1.1: {} + yoctocolors@2.1.2: {} yoga-layout@3.2.1: {} yoga-wasm-web@0.3.3: {} - zod-to-json-schema@3.25.1(zod@4.3.6): + zod-to-json-schema@3.25.2(zod@4.3.6): dependencies: zod: 4.3.6 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 223dd957b..db14c33b5 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -21,8 +21,24 @@ packages: catalog: '@astrojs/mdx': ^5.0.3 '@astrojs/react': ^5.0.2 + '@nx/angular': 22.7.0-beta.10 + '@nx/devkit': 22.7.0-beta.10 + '@nx/eslint': 22.7.0-beta.10 + '@nx/eslint-plugin': 22.7.0-beta.10 + '@nx/js': 22.7.0-beta.10 + '@nx/playwright': 22.7.0-beta.10 + '@nx/plugin': 22.7.0-beta.10 + '@nx/storybook': 22.7.0-beta.10 + '@nx/vite': 22.7.0-beta.10 + '@nx/vitest': 22.7.0-beta.10 + '@nx/web': 22.7.0-beta.10 + '@swc-node/register': ~1.11.1 + '@swc/core': ~1.15.5 + '@swc/helpers': ~0.5.18 + '@tailwindcss/postcss': ^4.2.2 '@tailwindcss/vite': ^4.2.2 '@standard-schema/spec': ^1.1.0 + angular-eslint: ^21.2.0 astro: 6.1.1 defu: ^6.1.4 front-matter: ^4.0.2 @@ -33,6 +49,7 @@ catalog: marked-mangle: ^1.1.12 marked-shiki: ^1.2.1 nitro: 3.0.260311-beta + nx: 22.7.0-beta.10 obug: ^2.1.1 ofetch: 2.0.0-alpha.3 oxc-parser: ^0.123.0 From 5156354a9c7a4b72aa9df308b3a1280a71161fca Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 22:25:40 -0400 Subject: [PATCH 15/33] fix(router): defer route metadata setup during bootstrap --- packages/router/server/src/render.spec.ts | 32 ++++--------------- packages/router/src/lib/json-ld.spec.ts | 32 ++++--------------- packages/router/src/lib/json-ld.ts | 17 ++++++---- packages/router/src/lib/meta-tags.spec.ts | 8 ++--- packages/router/src/lib/meta-tags.ts | 24 +++++++++----- .../src/lib/provide-file-router-base.ts | 26 +++++++++------ 6 files changed, 58 insertions(+), 81 deletions(-) diff --git a/packages/router/server/src/render.spec.ts b/packages/router/server/src/render.spec.ts index 4d66c1849..9fefe1fc8 100644 --- a/packages/router/server/src/render.spec.ts +++ b/packages/router/server/src/render.spec.ts @@ -1,8 +1,8 @@ /* eslint-disable @angular-eslint/component-selector */ import { - ENVIRONMENT_INITIALIZER, type ApplicationConfig, Component, + provideAppInitializer, } from '@angular/core'; import { Route, RouterOutlet, provideRouter } from '@angular/router'; @@ -47,11 +47,7 @@ describe('render', () => { const config: ApplicationConfig = { providers: [ provideRouter(routes), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), - }, + provideAppInitializer(() => updateJsonLdOnRouteChange()), ], }; @@ -107,11 +103,7 @@ describe('render', () => { const config: ApplicationConfig = { providers: [ provideRouter(routes), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), - }, + provideAppInitializer(() => updateJsonLdOnRouteChange()), ], }; @@ -174,11 +166,7 @@ describe('render', () => { const config: ApplicationConfig = { providers: [ provideRouter(routes), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), - }, + provideAppInitializer(() => updateJsonLdOnRouteChange()), ], }; @@ -228,11 +216,7 @@ describe('render', () => { const config: ApplicationConfig = { providers: [ provideRouter(routes), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), - }, + provideAppInitializer(() => updateJsonLdOnRouteChange()), ], }; @@ -290,11 +274,7 @@ describe('render', () => { const config: ApplicationConfig = { providers: [ provideRouter(routes), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), - }, + provideAppInitializer(() => updateJsonLdOnRouteChange()), ], }; diff --git a/packages/router/src/lib/json-ld.spec.ts b/packages/router/src/lib/json-ld.spec.ts index b403a5972..cd3fc6275 100644 --- a/packages/router/src/lib/json-ld.spec.ts +++ b/packages/router/src/lib/json-ld.spec.ts @@ -1,6 +1,6 @@ import { DOCUMENT } from '@angular/common'; import { provideLocationMocks } from '@angular/common/testing'; -import { Component, ENVIRONMENT_INITIALIZER } from '@angular/core'; +import { Component, provideAppInitializer } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { Route, Router, RouterOutlet, provideRouter } from '@angular/router'; import { map, timer } from 'rxjs'; @@ -59,11 +59,7 @@ describe('updateJsonLdOnRouteChange', () => { providers: [ provideRouter(routes), provideLocationMocks(), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), - }, + provideAppInitializer(() => updateJsonLdOnRouteChange()), ], }); @@ -170,11 +166,7 @@ describe('updateJsonLdOnRouteChange', () => { }, ]), provideLocationMocks(), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), - }, + provideAppInitializer(() => updateJsonLdOnRouteChange()), ], }); @@ -229,11 +221,7 @@ describe('updateJsonLdOnRouteChange', () => { }, ]), provideLocationMocks(), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), - }, + provideAppInitializer(() => updateJsonLdOnRouteChange()), ], }); @@ -293,11 +281,7 @@ describe('updateJsonLdOnRouteChange', () => { }, ]), provideLocationMocks(), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), - }, + provideAppInitializer(() => updateJsonLdOnRouteChange()), ], }); @@ -346,11 +330,7 @@ describe('updateJsonLdOnRouteChange', () => { }, ]), provideLocationMocks(), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), - }, + provideAppInitializer(() => updateJsonLdOnRouteChange()), ], }); diff --git a/packages/router/src/lib/json-ld.ts b/packages/router/src/lib/json-ld.ts index 31a941910..5954b2473 100644 --- a/packages/router/src/lib/json-ld.ts +++ b/packages/router/src/lib/json-ld.ts @@ -1,5 +1,9 @@ import { DOCUMENT } from '@angular/common'; -import { inject } from '@angular/core'; +import { + EnvironmentInjector, + inject, + runInInjectionContext, +} from '@angular/core'; import type { ActivatedRouteSnapshot } from '@angular/router'; import { NavigationEnd, Router } from '@angular/router'; import { isPlainObject } from 'es-toolkit'; @@ -57,15 +61,16 @@ const JSON_LD_SCRIPT_SELECTOR = 'script[data-analog-json-ld]'; export function updateJsonLdOnRouteChange(): void { const router = inject(Router); - const document = inject(DOCUMENT); + const injector = inject(EnvironmentInjector); router.events .pipe(filter((event) => event instanceof NavigationEnd)) .subscribe(() => { - applyJsonLdToDocument( - document, - getJsonLdEntries(router.routerState.snapshot.root), - ); + const entries = getJsonLdEntries(router.routerState.snapshot.root); + + runInInjectionContext(injector, () => { + applyJsonLdToDocument(inject(DOCUMENT), entries); + }); }); } diff --git a/packages/router/src/lib/meta-tags.spec.ts b/packages/router/src/lib/meta-tags.spec.ts index 21bbe9556..ae5a83c31 100644 --- a/packages/router/src/lib/meta-tags.spec.ts +++ b/packages/router/src/lib/meta-tags.spec.ts @@ -1,4 +1,4 @@ -import { Component, ENVIRONMENT_INITIALIZER } from '@angular/core'; +import { Component, provideAppInitializer } from '@angular/core'; import { fakeAsync, TestBed, tick } from '@angular/core/testing'; import { DOCUMENT } from '@angular/common'; import { @@ -121,11 +121,7 @@ describe('updateMetaTagsOnRouteChange', () => { providers: [ provideRouter(routes), provideLocationMocks(), - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateMetaTagsOnRouteChange(), - }, + provideAppInitializer(() => updateMetaTagsOnRouteChange()), ], }); diff --git a/packages/router/src/lib/meta-tags.ts b/packages/router/src/lib/meta-tags.ts index 7357ab310..53e92436b 100644 --- a/packages/router/src/lib/meta-tags.ts +++ b/packages/router/src/lib/meta-tags.ts @@ -1,4 +1,8 @@ -import { inject } from '@angular/core'; +import { + EnvironmentInjector, + inject, + runInInjectionContext, +} from '@angular/core'; import { Meta, MetaDefinition as NgMetaTag } from '@angular/platform-browser'; import { ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router'; import { filter } from 'rxjs/operators'; @@ -50,19 +54,23 @@ type MetaTagMap = Record; export function updateMetaTagsOnRouteChange(): void { const router = inject(Router); - const metaService = inject(Meta); + const injector = inject(EnvironmentInjector); router.events .pipe(filter((event) => event instanceof NavigationEnd)) .subscribe(() => { const metaTagMap = getMetaTagMap(router.routerState.snapshot.root); - for (const metaTagSelector in metaTagMap) { - const metaTag = metaTagMap[ - metaTagSelector as MetaTagSelector - ] as NgMetaTag; - metaService.updateTag(metaTag, metaTagSelector); - } + runInInjectionContext(injector, () => { + const metaService = inject(Meta); + + for (const metaTagSelector in metaTagMap) { + const metaTag = metaTagMap[ + metaTagSelector as MetaTagSelector + ] as NgMetaTag; + metaService.updateTag(metaTag, metaTagSelector); + } + }); }); } diff --git a/packages/router/src/lib/provide-file-router-base.ts b/packages/router/src/lib/provide-file-router-base.ts index 0736ceb52..04cee9877 100644 --- a/packages/router/src/lib/provide-file-router-base.ts +++ b/packages/router/src/lib/provide-file-router-base.ts @@ -1,8 +1,10 @@ import { - ENVIRONMENT_INITIALIZER, + APP_BOOTSTRAP_LISTENER, + EnvironmentInjector, EnvironmentProviders, inject, makeEnvironmentProviders, + runInInjectionContext, } from '@angular/core'; import { ɵHTTP_ROOT_INTERCEPTOR_FNS as HTTP_ROOT_INTERCEPTOR_FNS } from '@angular/common/http'; import { provideRouter, RouterFeatures, ROUTES, Routes } from '@angular/router'; @@ -102,7 +104,7 @@ export function provideFileRouterWithRoutes( for (const source of extraSources) { for (const [key, loader] of Object.entries(source.files)) { - allFiles[key] = loader; + allFiles[key] = loader as () => Promise; resolverMap.set(key, source.resolveModule); } } @@ -116,14 +118,20 @@ export function provideFileRouterWithRoutes( }, }, { - provide: ENVIRONMENT_INITIALIZER, + provide: APP_BOOTSTRAP_LISTENER, multi: true, - useValue: () => updateMetaTagsOnRouteChange(), - }, - { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => updateJsonLdOnRouteChange(), + useFactory: () => { + const injector = inject(EnvironmentInjector); + + return () => { + queueMicrotask(() => { + runInInjectionContext(injector, () => { + updateMetaTagsOnRouteChange(); + updateJsonLdOnRouteChange(); + }); + }); + }; + }, }, { provide: HTTP_ROOT_INTERCEPTOR_FNS, From 7c9c2e9ea1ba9e20fb9a14a88aad0ba4555ac092 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:16:54 -0400 Subject: [PATCH 16/33] chore: add tailwind debug coverage and stabilize e2e --- .dagger/src/index.ts | 2 +- .github/workflows/ci.yml | 1 + apps/analog-app/src/routeTree.gen.ts | 20 +-- apps/blog-app/src/routeTree.gen.ts | 29 +++- .../tests/component-css-hmr.spec.ts | 28 ++-- .../src/app/app.component.css | 91 ++++++++++++ apps/tailwind-debug-app/src/app/app.config.ts | 9 +- .../src/app/pages/(home).page.ts | 109 +++++++++++++- .../src/app/pages/probe.page.ts | 12 ++ .../src/app/probes/style-probe.component.css | 2 +- .../src/app/probes/style-probe.component.ts | 2 +- .../probes/tailwind-debug-shell.component.css | 61 ++++++++ .../probes/tailwind-debug-shell.component.ts | 66 +-------- apps/tailwind-debug-app/src/main.ts | 1 + apps/tailwind-debug-app/src/routeTree.gen.ts | 50 ++++++- apps/tailwind-debug-app/tsconfig.app.json | 2 +- apps/tailwind-debug-app/vite.config.ts | 133 +++++++++--------- apps/tanstack-query-app/vite.config.ts | 3 - libs/my-package/package.json | 2 +- .../{[slug].page.ts => posts.[slug].page.ts} | 2 +- package.json | 5 +- packages/router/src/lib/json-ld.ts | 21 ++- packages/router/src/lib/meta-tags.ts | 31 ++-- .../src/lib/provide-file-router-base.ts | 19 ++- pnpm-lock.yaml | 2 +- tools/scripts/verify-route-freshness.mts | 12 +- 26 files changed, 495 insertions(+), 220 deletions(-) create mode 100644 apps/tailwind-debug-app/src/app/app.component.css create mode 100644 apps/tailwind-debug-app/src/app/pages/probe.page.ts create mode 100644 apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.css rename libs/shared/feature/src/pages/blog/{[slug].page.ts => posts.[slug].page.ts} (90%) diff --git a/.dagger/src/index.ts b/.dagger/src/index.ts index bd746d61b..742cf6dc5 100644 --- a/.dagger/src/index.ts +++ b/.dagger/src/index.ts @@ -2,7 +2,7 @@ import type { Container, Directory, Secret } from '@dagger.io/dagger'; import { argument, dag, func, object } from '@dagger.io/dagger'; const DEFAULT_E2E_PROJECTS = - 'analog-app-e2e,blog-app-e2e,tanstack-query-app-e2e'; + 'analog-app-e2e,blog-app-e2e,tailwind-debug-app-e2e,tanstack-query-app-e2e'; @object() export class AnalogCi { diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d59c046e3..6af89fc18 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,6 +94,7 @@ jobs: project: - analog-app-e2e - blog-app-e2e + - tailwind-debug-app-e2e - tanstack-query-app-e2e steps: - uses: actions/checkout@v4 diff --git a/apps/analog-app/src/routeTree.gen.ts b/apps/analog-app/src/routeTree.gen.ts index 5bee9ae97..ad48e4101 100644 --- a/apps/analog-app/src/routeTree.gen.ts +++ b/apps/analog-app/src/routeTree.gen.ts @@ -98,7 +98,7 @@ declare module '@analogjs/router' { query: Record; queryOutput: Record; }; - '/blog/[slug]': { + '/blog/posts/[slug]': { params: { slug: string }; paramsOutput: { slug: string }; query: Record; @@ -173,7 +173,7 @@ export interface AnalogFileRoutesById { "/shipping/index": AnalogGeneratedRouteRecord<"/shipping/index", "shipping", "/shipping", null, readonly ["/shipping/[...slug]"]>; "/(auth)/sign-up": AnalogGeneratedRouteRecord<"/(auth)/sign-up", "sign-up", "/sign-up", "/(auth)", readonly []>; "/test": AnalogGeneratedRouteRecord<"/test", "test", "/test", null, readonly []>; - "/blog/[slug]": AnalogGeneratedRouteRecord<"/blog/[slug]", "blog/[slug]", "/blog/[slug]", null, readonly []>; + "/blog/posts/[slug]": AnalogGeneratedRouteRecord<"/blog/posts/[slug]", "blog/posts/[slug]", "/blog/posts/[slug]", null, readonly []>; "/greet/[name]": AnalogGeneratedRouteRecord<"/greet/[name]", "greet/[name]", "/greet/[name]", null, readonly []>; "/products/[productId]": AnalogGeneratedRouteRecord<"/products/[productId]", "products/[productId]", "/products/[productId]", null, readonly []>; "/[...slug]": AnalogGeneratedRouteRecord<"/[...slug]", "[...slug]", "/[...slug]", null, readonly []>; @@ -196,7 +196,7 @@ export interface AnalogFileRoutesByFullPath { "/shipping": AnalogFileRoutesById["/shipping/index"]; "/sign-up": AnalogFileRoutesById["/(auth)/sign-up"]; "/test": AnalogFileRoutesById["/test"]; - "/blog/[slug]": AnalogFileRoutesById["/blog/[slug]"]; + "/blog/posts/[slug]": AnalogFileRoutesById["/blog/posts/[slug]"]; "/greet/[name]": AnalogFileRoutesById["/greet/[name]"]; "/products/[productId]": AnalogFileRoutesById["/products/[productId]"]; "/[...slug]": AnalogFileRoutesById["/[...slug]"]; @@ -464,13 +464,13 @@ export const analogRouteTree = { isCatchAll: false, isOptionalCatchAll: false, } satisfies AnalogFileRoutesById["/test"], - "/blog/[slug]": { - id: "/blog/[slug]", - path: "blog/[slug]", - fullPath: "/blog/[slug]", + "/blog/posts/[slug]": { + id: "/blog/posts/[slug]", + path: "blog/posts/[slug]", + fullPath: "/blog/posts/[slug]", parentId: null, children: [] as const, - sourceFile: "/libs/shared/feature/src/pages/blog/[slug].page.ts", + sourceFile: "/libs/shared/feature/src/pages/blog/posts.[slug].page.ts", kind: "page", hasParamsSchema: false, hasQuerySchema: false, @@ -479,7 +479,7 @@ export const analogRouteTree = { isGroup: false, isCatchAll: false, isOptionalCatchAll: false, - } satisfies AnalogFileRoutesById["/blog/[slug]"], + } satisfies AnalogFileRoutesById["/blog/posts/[slug]"], "/greet/[name]": { id: "/greet/[name]", path: "greet/[name]", @@ -561,7 +561,7 @@ export const analogRouteTree = { "/shipping": "/shipping/index", "/sign-up": "/(auth)/sign-up", "/test": "/test", - "/blog/[slug]": "/blog/[slug]", + "/blog/posts/[slug]": "/blog/posts/[slug]", "/greet/[name]": "/greet/[name]", "/products/[productId]": "/products/[productId]", "/[...slug]": "/[...slug]", diff --git a/apps/blog-app/src/routeTree.gen.ts b/apps/blog-app/src/routeTree.gen.ts index 6f72c94f5..565fb85fa 100644 --- a/apps/blog-app/src/routeTree.gen.ts +++ b/apps/blog-app/src/routeTree.gen.ts @@ -93,6 +93,12 @@ declare module '@analogjs/router' { query: Record; queryOutput: Record; }; + '/blog/posts/[slug]': { + params: { slug: string }; + paramsOutput: { slug: string }; + query: Record; + queryOutput: Record; + }; '/[...page-not-found]': { params: { 'page-not-found': string[] }; paramsOutput: { 'page-not-found': string[] }; @@ -137,12 +143,13 @@ export interface AnalogFileRoutesById { "/archived/index": AnalogGeneratedRouteRecord<"/archived/index", "archived", "/archived", null, readonly ["/archived/2022-01-08-post1-2024", "/archived/2022-01-10-post2-2024", "/archived/[slug]"]>; "/archived/2022-01-08-post1-2024": AnalogGeneratedRouteRecord<"/archived/2022-01-08-post1-2024", "2022-01-08-post1-2024", "/archived/2022-01-08-post1-2024", "/archived/index", readonly []>; "/archived/2022-01-10-post2-2024": AnalogGeneratedRouteRecord<"/archived/2022-01-10-post2-2024", "2022-01-10-post2-2024", "/archived/2022-01-10-post2-2024", "/archived/index", readonly []>; - "/blog/index": AnalogGeneratedRouteRecord<"/blog/index", "blog", "/blog", null, readonly ["/blog/[slug]"]>; + "/blog/index": AnalogGeneratedRouteRecord<"/blog/index", "blog", "/blog", null, readonly ["/blog/[slug]", "/blog/posts/[slug]"]>; "/contact": AnalogGeneratedRouteRecord<"/contact", "contact", "/contact", null, readonly []>; "/shared-test": AnalogGeneratedRouteRecord<"/shared-test", "shared-test", "/shared-test", null, readonly []>; "/test": AnalogGeneratedRouteRecord<"/test", "test", "/test", null, readonly []>; "/archived/[slug]": AnalogGeneratedRouteRecord<"/archived/[slug]", "[slug]", "/archived/[slug]", "/archived/index", readonly []>; "/blog/[slug]": AnalogGeneratedRouteRecord<"/blog/[slug]", "[slug]", "/blog/[slug]", "/blog/index", readonly []>; + "/blog/posts/[slug]": AnalogGeneratedRouteRecord<"/blog/posts/[slug]", "posts/[slug]", "/blog/posts/[slug]", "/blog/index", readonly []>; "/[...page-not-found]": AnalogGeneratedRouteRecord<"/[...page-not-found]", "[...page-not-found]", "/[...page-not-found]", null, readonly []>; } @@ -162,6 +169,7 @@ export interface AnalogFileRoutesByFullPath { "/test": AnalogFileRoutesById["/test"]; "/archived/[slug]": AnalogFileRoutesById["/archived/[slug]"]; "/blog/[slug]": AnalogFileRoutesById["/blog/[slug]"]; + "/blog/posts/[slug]": AnalogFileRoutesById["/blog/posts/[slug]"]; "/[...page-not-found]": AnalogFileRoutesById["/[...page-not-found]"]; } @@ -319,7 +327,7 @@ export const analogRouteTree = { path: "blog", fullPath: "/blog", parentId: null, - children: ["/blog/[slug]"] as const, + children: ["/blog/[slug]", "/blog/posts/[slug]"] as const, sourceFile: "/src/app/pages/blog/index.page.ts", kind: "page", hasParamsSchema: false, @@ -410,6 +418,22 @@ export const analogRouteTree = { isCatchAll: false, isOptionalCatchAll: false, } satisfies AnalogFileRoutesById["/blog/[slug]"], + "/blog/posts/[slug]": { + id: "/blog/posts/[slug]", + path: "posts/[slug]", + fullPath: "/blog/posts/[slug]", + parentId: "/blog/index", + children: [] as const, + sourceFile: "/libs/shared/feature/src/pages/blog/posts.[slug].page.ts", + kind: "page", + hasParamsSchema: false, + hasQuerySchema: false, + hasJsonLd: false, + isIndex: false, + isGroup: false, + isCatchAll: false, + isOptionalCatchAll: false, + } satisfies AnalogFileRoutesById["/blog/posts/[slug]"], "/[...page-not-found]": { id: "/[...page-not-found]", path: "[...page-not-found]", @@ -443,6 +467,7 @@ export const analogRouteTree = { "/test": "/test", "/archived/[slug]": "/archived/[slug]", "/blog/[slug]": "/blog/[slug]", + "/blog/posts/[slug]": "/blog/posts/[slug]", "/[...page-not-found]": "/[...page-not-found]", }, } as const; diff --git a/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts b/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts index df6f34ce7..dcb63b2a5 100644 --- a/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts +++ b/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts @@ -1,6 +1,6 @@ import { expect, test } from '@playwright/test'; -import { readFileSync, writeFileSync } from 'node:fs'; -import { join } from 'node:path'; +import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { dirname, join } from 'node:path'; const WORKSPACE_ROOT = join(process.cwd(), '../..'); const STYLE_PROBE_CSS_PATH = join( @@ -19,6 +19,10 @@ const HMR_LOG_PATH = join( const ORIGINAL_CSS = readFileSync(STYLE_PROBE_CSS_PATH, 'utf8'); const BLUE_CLASS = 'tdbg:bg-blue-500'; const RED_CLASS = 'tdbg:bg-red-500'; +const RED_BACKGROUND_VALUES = new Set([ + 'rgb(239, 68, 68)', + 'oklch(0.637 0.237 25.331)', +]); function replaceProbeColor(className: string) { const nextCss = ORIGINAL_CSS.replace(BLUE_CLASS, className).replace( @@ -29,6 +33,7 @@ function replaceProbeColor(className: string) { } function truncateDebugLogs() { + mkdirSync(dirname(WS_LOG_PATH), { recursive: true }); writeFileSync(WS_LOG_PATH, '', 'utf8'); writeFileSync(HMR_LOG_PATH, '', 'utf8'); } @@ -45,7 +50,7 @@ test.afterAll(() => { test('updates the component stylesheet without a full reload', async ({ page, }) => { - await page.goto('/'); + await page.goto('/probe'); await expect(page.getByTestId('probe-card')).toBeVisible(); await page.getByTestId('probe-counter').click(); @@ -60,13 +65,18 @@ test('updates the component stylesheet without a full reload', async ({ await expect .poll( - async () => - page.getByTestId('probe-card').evaluate((element) => { - return window.getComputedStyle(element).backgroundColor; - }), + async () => { + const backgroundColor = await page + .getByTestId('probe-card') + .evaluate((element) => { + return window.getComputedStyle(element).backgroundColor; + }); + + return RED_BACKGROUND_VALUES.has(backgroundColor); + }, { timeout: 30_000 }, ) - .toBe('rgb(239, 68, 68)'); + .toBe(true); await expect(page.getByTestId('probe-counter')).toContainText('Clicks 1'); @@ -80,7 +90,7 @@ test('updates the component stylesheet without a full reload', async ({ const wsLog = readFileSync(WS_LOG_PATH, 'utf8'); const hmrLog = readFileSync(HMR_LOG_PATH, 'utf8'); - expect(wsLog).toContain('"type":"css-update"'); + expect(wsLog).toContain('style-probe.component.css'); expect(wsLog).not.toContain('"type":"full-reload"'); expect(hmrLog).toContain('style-probe.component.css'); }); diff --git a/apps/tailwind-debug-app/src/app/app.component.css b/apps/tailwind-debug-app/src/app/app.component.css new file mode 100644 index 000000000..90569726d --- /dev/null +++ b/apps/tailwind-debug-app/src/app/app.component.css @@ -0,0 +1,91 @@ +@reference "../styles.css"; + +.shell { + display: grid; + min-height: 100vh; + gap: 2rem; + padding: 3rem; + background: + radial-gradient( + circle at top left, + rgba(56, 189, 248, 0.22), + transparent 36% + ), + radial-gradient( + circle at right center, + rgba(59, 130, 246, 0.18), + transparent 28% + ), + linear-gradient(180deg, #020617 0%, #0f172a 100%); +} + +.hero { + display: grid; + gap: 1rem; + max-width: 56rem; +} + +.workspace { + display: grid; + grid-template-columns: minmax(0, 28rem) minmax(0, 1fr); + gap: 1.5rem; + align-items: start; +} + +.eyebrow { + margin: 0; + letter-spacing: 0.26em; + text-transform: uppercase; + font-size: 0.75rem; + font-weight: 700; + color: rgba(226, 232, 240, 0.76); +} + +.headline { + margin: 0; + font-size: clamp(2.75rem, 5vw, 5rem); + line-height: 0.95; + letter-spacing: -0.06em; +} + +.lede { + margin: 0; + max-width: 48rem; + font-size: 1rem; + line-height: 1.75; + color: rgba(226, 232, 240, 0.8); +} + +.probe-card { + @apply tdbg:bg-blue-500 tdbg:text-white tdbg:rounded-[2rem] tdbg:border tdbg:border-white/20 tdbg:p-8 tdbg:shadow-2xl tdbg:shadow-blue-950/40; +} + +.probe-kicker { + @apply tdbg:mb-3 tdbg:text-xs tdbg:font-bold tdbg:uppercase tdbg:tracking-[0.28em] tdbg:text-white/75; +} + +.probe-title { + @apply tdbg:text-3xl tdbg:font-semibold tdbg:tracking-tight; +} + +.probe-copy { + @apply tdbg:mt-4 tdbg:max-w-2xl tdbg:text-sm tdbg:leading-7 tdbg:text-white/85; +} + +.probe-toolbar { + @apply tdbg:mt-6 tdbg:flex tdbg:flex-wrap tdbg:items-center tdbg:gap-3; +} + +.probe-chip { + @apply tdbg:inline-flex tdbg:items-center tdbg:rounded-full tdbg:bg-white/15 tdbg:px-4 tdbg:py-2 tdbg:text-xs tdbg:font-medium tdbg:tracking-[0.12em] tdbg:uppercase; +} + +.probe-button { + @apply tdbg:inline-flex tdbg:items-center tdbg:rounded-full tdbg:bg-slate-950 tdbg:px-4 tdbg:py-2 tdbg:text-sm tdbg:font-semibold tdbg:text-white tdbg:ring-1 tdbg:ring-white/20; +} + +@media (max-width: 960px) { + .workspace { + grid-template-columns: 1fr; + } +} diff --git a/apps/tailwind-debug-app/src/app/app.config.ts b/apps/tailwind-debug-app/src/app/app.config.ts index e61e9bb0b..d97f803e1 100644 --- a/apps/tailwind-debug-app/src/app/app.config.ts +++ b/apps/tailwind-debug-app/src/app/app.config.ts @@ -1,6 +1,9 @@ -import type { ApplicationConfig } from '@angular/core'; -import { provideFileRouter } from '@analogjs/router'; +import { CSP_NONCE, type ApplicationConfig } from '@angular/core'; +import { provideFileRouter, withTypedRouter } from '@analogjs/router'; export const appConfig: ApplicationConfig = { - providers: [provideFileRouter()], + providers: [ + { provide: CSP_NONCE, useValue: null }, + provideFileRouter(withTypedRouter({ strictRouteParams: true })), + ], }; diff --git a/apps/tailwind-debug-app/src/app/pages/(home).page.ts b/apps/tailwind-debug-app/src/app/pages/(home).page.ts index 41cf02c9e..2ef5baab1 100644 --- a/apps/tailwind-debug-app/src/app/pages/(home).page.ts +++ b/apps/tailwind-debug-app/src/app/pages/(home).page.ts @@ -1,10 +1,109 @@ -import { Component } from '@angular/core'; +import type { RouteMeta } from '@analogjs/router'; +import { routePath } from '@analogjs/router'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { RouterLink } from '@angular/router'; +import type { WebPage, WithContext } from 'schema-dts'; -import { TailwindDebugShellComponent } from '../probes/tailwind-debug-shell.component'; +export const routeMeta: RouteMeta = { + title: 'Tailwind Debug App', + jsonLd: { + '@context': 'https://schema.org', + '@type': 'WebPage', + identifier: 'tailwind-debug-home', + name: 'Tailwind Debug App', + description: + 'Analog SSR harness for tracing Tailwind component stylesheet HMR.', + url: 'https://analogjs.org/tailwind-debug', + } satisfies WithContext, +}; @Component({ selector: 'app-tailwind-debug-home', - imports: [TailwindDebugShellComponent], - template: ` `, + imports: [RouterLink], + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + @let probeLink = routePath('/probe'); +
+
+

Analog SSR debug home

+

Tailwind debug app

+

+ The homepage now renders through SSR and publishes typed JSON-LD for + the route manifest. The live Tailwind component stylesheet harness + stays on a client-only route so CSS HMR can keep exercising external + Angular component styles. +

+
Open the HMR probe +
+
+ `, + styles: [ + ` + :host { + display: block; + min-height: 100vh; + color: #e2e8f0; + background: + radial-gradient( + circle at top left, + rgba(14, 165, 233, 0.22), + transparent 32% + ), + linear-gradient(180deg, #020617 0%, #111827 100%); + } + + .home-shell { + min-height: 100vh; + display: grid; + place-items: center; + padding: 2rem; + } + + .hero-card { + width: min(100%, 52rem); + display: grid; + gap: 1rem; + padding: 2rem; + border-radius: 1.5rem; + border: 1px solid rgba(148, 163, 184, 0.2); + background: rgba(15, 23, 42, 0.82); + box-shadow: 0 24px 80px rgba(2, 6, 23, 0.35); + } + + .eyebrow { + margin: 0; + text-transform: uppercase; + letter-spacing: 0.18em; + font-size: 0.72rem; + color: rgba(125, 211, 252, 0.88); + } + + h1 { + margin: 0; + font-size: clamp(2.5rem, 7vw, 4.75rem); + line-height: 0.95; + letter-spacing: -0.06em; + } + + .lede { + margin: 0; + max-width: 42rem; + line-height: 1.75; + color: rgba(226, 232, 240, 0.82); + } + + .cta { + width: fit-content; + padding: 0.9rem 1.3rem; + border-radius: 999px; + color: #020617; + font-weight: 700; + text-decoration: none; + background: linear-gradient(135deg, #7dd3fc, #38bdf8); + } + `, + ], }) -export default class HomeComponent {} +export default class HomeComponent { + protected readonly routePath = routePath; +} diff --git a/apps/tailwind-debug-app/src/app/pages/probe.page.ts b/apps/tailwind-debug-app/src/app/pages/probe.page.ts new file mode 100644 index 000000000..8f44be40f --- /dev/null +++ b/apps/tailwind-debug-app/src/app/pages/probe.page.ts @@ -0,0 +1,12 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { TailwindDebugShellComponent } from '../probes/tailwind-debug-shell.component'; + +@Component({ + selector: 'app-tailwind-debug-probe-page', + standalone: true, + imports: [TailwindDebugShellComponent], + template: ` `, + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export default class ProbePageComponent {} diff --git a/apps/tailwind-debug-app/src/app/probes/style-probe.component.css b/apps/tailwind-debug-app/src/app/probes/style-probe.component.css index 9ec4e46a5..05c135e1c 100644 --- a/apps/tailwind-debug-app/src/app/probes/style-probe.component.css +++ b/apps/tailwind-debug-app/src/app/probes/style-probe.component.css @@ -1,7 +1,7 @@ @reference "../../styles.css"; .probe-card { - @apply tdbg:bg-red-500 tdbg:text-white tdbg:rounded-[2rem] tdbg:border tdbg:border-white/20 tdbg:p-8 tdbg:shadow-2xl tdbg:shadow-blue-950/40; + @apply tdbg:bg-blue-500 tdbg:text-white tdbg:rounded-[2rem] tdbg:border tdbg:border-white/20 tdbg:p-8 tdbg:shadow-2xl tdbg:shadow-blue-950/40; } .probe-kicker { diff --git a/apps/tailwind-debug-app/src/app/probes/style-probe.component.ts b/apps/tailwind-debug-app/src/app/probes/style-probe.component.ts index efe991cbd..0f4f85b19 100644 --- a/apps/tailwind-debug-app/src/app/probes/style-probe.component.ts +++ b/apps/tailwind-debug-app/src/app/probes/style-probe.component.ts @@ -3,7 +3,7 @@ import { ChangeDetectionStrategy, Component, signal } from '@angular/core'; @Component({ selector: 'app-tailwind-style-probe', standalone: true, - styleUrl: './style-probe.component.css', + styleUrls: ['./style-probe.component.css'], template: `

Component stylesheet

diff --git a/apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.css b/apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.css new file mode 100644 index 000000000..c612c02e7 --- /dev/null +++ b/apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.css @@ -0,0 +1,61 @@ +.shell { + display: grid; + min-height: 100vh; + gap: 2rem; + padding: 3rem; + background: + radial-gradient( + circle at top left, + rgba(56, 189, 248, 0.22), + transparent 36% + ), + radial-gradient( + circle at right center, + rgba(59, 130, 246, 0.18), + transparent 28% + ), + linear-gradient(180deg, #020617 0%, #0f172a 100%); +} + +.hero { + display: grid; + gap: 1rem; + max-width: 56rem; +} + +.workspace { + display: grid; + grid-template-columns: minmax(0, 28rem) minmax(0, 1fr); + gap: 1.5rem; + align-items: start; +} + +.eyebrow { + margin: 0; + letter-spacing: 0.26em; + text-transform: uppercase; + font-size: 0.75rem; + font-weight: 700; + color: rgba(226, 232, 240, 0.76); +} + +.headline { + margin: 0; + font-size: clamp(2.75rem, 5vw, 5rem); + line-height: 0.95; + letter-spacing: -0.06em; +} + +.lede { + margin: 0; + max-width: 48rem; + font-size: 1rem; + line-height: 1.75; + color: rgba(226, 232, 240, 0.8); +} + +@media (max-width: 960px) { + .workspace { + grid-template-columns: 1fr; + } +} diff --git a/apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.ts b/apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.ts index 3df1af3aa..bb3c19307 100644 --- a/apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.ts +++ b/apps/tailwind-debug-app/src/app/probes/tailwind-debug-shell.component.ts @@ -5,6 +5,7 @@ import { StyleProbeComponent } from './style-probe.component'; selector: 'app-tailwind-debug-shell', standalone: true, imports: [StyleProbeComponent], + styleUrls: ['./tailwind-debug-shell.component.css'], template: `
@@ -24,71 +25,6 @@ import { StyleProbeComponent } from './style-probe.component';
`, - styles: [ - ` - .shell { - display: grid; - min-height: 100vh; - gap: 2rem; - padding: 3rem; - background: - radial-gradient( - circle at top left, - rgba(56, 189, 248, 0.22), - transparent 36% - ), - radial-gradient( - circle at right center, - rgba(59, 130, 246, 0.18), - transparent 28% - ), - linear-gradient(180deg, #020617 0%, #0f172a 100%); - } - - .hero { - display: grid; - gap: 1rem; - max-width: 56rem; - } - - .workspace { - display: grid; - grid-template-columns: minmax(0, 28rem) minmax(0, 1fr); - gap: 1.5rem; - align-items: start; - } - - .eyebrow { - margin: 0; - letter-spacing: 0.26em; - text-transform: uppercase; - font-size: 0.75rem; - font-weight: 700; - color: rgba(226, 232, 240, 0.76); - } - - .headline { - margin: 0; - font-size: clamp(2.75rem, 5vw, 5rem); - line-height: 0.95; - letter-spacing: -0.06em; - } - - .lede { - margin: 0; - max-width: 48rem; - font-size: 1rem; - line-height: 1.75; - color: rgba(226, 232, 240, 0.8); - } - - @media (max-width: 960px) { - .workspace { - grid-template-columns: 1fr; - } - } - `, - ], changeDetection: ChangeDetectionStrategy.OnPush, }) export class TailwindDebugShellComponent {} diff --git a/apps/tailwind-debug-app/src/main.ts b/apps/tailwind-debug-app/src/main.ts index ddab236c6..d7bc85149 100644 --- a/apps/tailwind-debug-app/src/main.ts +++ b/apps/tailwind-debug-app/src/main.ts @@ -1,4 +1,5 @@ import 'zone.js'; +import '@angular/compiler'; import { bootstrapApplication } from '@angular/platform-browser'; import { AppComponent } from './app/app.component'; diff --git a/apps/tailwind-debug-app/src/routeTree.gen.ts b/apps/tailwind-debug-app/src/routeTree.gen.ts index e99f5c4d3..082d3672b 100644 --- a/apps/tailwind-debug-app/src/routeTree.gen.ts +++ b/apps/tailwind-debug-app/src/routeTree.gen.ts @@ -1,6 +1,9 @@ // This file is auto-generated by @analogjs/platform // Do not edit manually +import type { Graph, Thing, WithContext } from 'schema-dts'; +import * as routeModule0 from './app/pages/(home).page'; + declare module '@analogjs/router' { interface AnalogRouteTable { '/': { @@ -9,6 +12,12 @@ declare module '@analogjs/router' { query: Record; queryOutput: Record; }; + '/probe': { + params: Record; + paramsOutput: Record; + query: Record; + queryOutput: Record; + }; } } @@ -39,10 +48,12 @@ export interface AnalogGeneratedRouteRecord< export interface AnalogFileRoutesById { "/(home)": AnalogGeneratedRouteRecord<"/(home)", "/", "/", null, readonly []>; + "/probe": AnalogGeneratedRouteRecord<"/probe", "probe", "/probe", null, readonly []>; } export interface AnalogFileRoutesByFullPath { "/": AnalogFileRoutesById["/(home)"]; + "/probe": AnalogFileRoutesById["/probe"]; } export type AnalogRouteTreeId = keyof AnalogFileRoutesById; @@ -60,14 +71,51 @@ export const analogRouteTree = { kind: "page", hasParamsSchema: false, hasQuerySchema: false, - hasJsonLd: false, + hasJsonLd: true, isIndex: false, isGroup: true, isCatchAll: false, isOptionalCatchAll: false, } satisfies AnalogFileRoutesById["/(home)"], + "/probe": { + id: "/probe", + path: "probe", + fullPath: "/probe", + parentId: null, + children: [] as const, + sourceFile: "/src/app/pages/probe.page.ts", + kind: "page", + hasParamsSchema: false, + hasQuerySchema: false, + hasJsonLd: false, + isIndex: false, + isGroup: false, + isCatchAll: false, + isOptionalCatchAll: false, + } satisfies AnalogFileRoutesById["/probe"], }, byFullPath: { "/": "/(home)", + "/probe": "/probe", }, } as const; + +export type AnalogJsonLdDocument = WithContext | Graph | Array>; +export type GeneratedJsonLdManifestEntry = { routePath: string; sourceFile: string; kind: 'module' | 'content'; resolveJsonLd: () => AnalogJsonLdDocument[]; }; + +function normalizeJsonLd(value: unknown): AnalogJsonLdDocument[] { + if (Array.isArray(value)) { + return value.filter((entry): entry is AnalogJsonLdDocument => typeof entry === 'object' && entry !== null && !Array.isArray(entry)); + } + + return typeof value === 'object' && value !== null ? [value as AnalogJsonLdDocument] : []; +} + +function resolveModuleJsonLd(routeModule: unknown): AnalogJsonLdDocument[] { + const typedRouteModule = routeModule as { routeJsonLd?: unknown; routeMeta?: { jsonLd?: unknown } }; + return normalizeJsonLd(typedRouteModule.routeMeta?.jsonLd ?? typedRouteModule.routeJsonLd); +} + +export const routeJsonLdManifest = new Map([ + ['/', { routePath: '/', sourceFile: '/src/app/pages/(home).page.ts', kind: 'module', resolveJsonLd: () => resolveModuleJsonLd(routeModule0) }], +]); diff --git a/apps/tailwind-debug-app/tsconfig.app.json b/apps/tailwind-debug-app/tsconfig.app.json index 9a4d03ac0..2bd047b62 100644 --- a/apps/tailwind-debug-app/tsconfig.app.json +++ b/apps/tailwind-debug-app/tsconfig.app.json @@ -7,7 +7,7 @@ "files": ["src/main.ts", "src/main.server.ts"], "include": [ "src/**/*.d.ts", - "src/app/pages/**/*.page.ts", + "src/app/**/*.ts", "src/server/middleware/**/*.ts" ], "exclude": ["**/*.test.ts", "**/*.spec.ts"] diff --git a/apps/tailwind-debug-app/vite.config.ts b/apps/tailwind-debug-app/vite.config.ts index 11f7e98f8..e89605631 100644 --- a/apps/tailwind-debug-app/vite.config.ts +++ b/apps/tailwind-debug-app/vite.config.ts @@ -50,80 +50,73 @@ function hmrWiretapPlugin(): Plugin { } // https://vitejs.dev/config/ -export default defineConfig(({ mode }) => { - return { - root: __dirname, - publicDir: 'public', - cacheDir: '../../node_modules/.vite', - build: { - outDir: '../../dist/apps/tailwind-debug-app/client', - reportCompressedSize: true, - target: ['es2020'], - }, - optimizeDeps: { - include: ['@angular/forms'], - noDiscovery: true, - }, - customLogger: (() => { - const logger = createLogger(); - const warn = logger.warn.bind(logger); - logger.warn = (msg, options) => { - if ( - typeof msg === 'string' && - msg.includes('ɵɵgetReplaceMetadataURL') - ) { - return; - } - warn(msg, options); - }; - return logger; - })(), - plugins: [ - analog({ - apiPrefix: 'api', - hmr: true, - ssr: false, - experimental: { - useAngularCompilationAPI: true, - }, - nitro: { - experimental: { - websocket: true, +export default defineConfig(({ mode }) => ({ + root: __dirname, + publicDir: 'public', + cacheDir: '../../node_modules/.vite', + build: { + outDir: '../../dist/apps/tailwind-debug-app/client', + reportCompressedSize: true, + target: ['es2020'], + }, + customLogger: (() => { + const logger = createLogger(); + const warn = logger.warn.bind(logger); + logger.warn = (msg, options) => { + if (typeof msg === 'string' && msg.includes('ɵɵgetReplaceMetadataURL')) { + return; + } + warn(msg, options); + }; + return logger; + })(), + plugins: [ + analog({ + apiPrefix: 'api', + hmr: true, + ssr: false, + nitro: { + routeRules: { + '/probe': { + ssr: false, }, }, - tailwindCss: { - prefixes: ['tdbg:'], - rootStylesheet: 'apps/tailwind-debug-app/src/styles.css', + experimental: { + websocket: true, }, - }), - tailwindcss(), - nxViteTsPaths(), - hmrWiretapPlugin(), - ], - test: { - reporters: ['default'], - coverage: { - reportsDirectory: '../../coverage/apps/tailwind-debug-app', - provider: 'v8', }, - globals: true, - environment: 'jsdom', - setupFiles: ['src/test-setup.ts'], - include: ['**/*.spec.ts'], + tailwindCss: { + prefixes: ['tdbg:'], + rootStylesheet: 'apps/tailwind-debug-app/src/styles.css', + }, + }), + tailwindcss(), + nxViteTsPaths(), + hmrWiretapPlugin(), + ], + test: { + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/apps/tailwind-debug-app', + provider: 'v8', }, - define: { - 'import.meta.vitest': mode !== 'production', + globals: true, + environment: 'jsdom', + setupFiles: ['src/test-setup.ts'], + include: ['**/*.spec.ts'], + }, + define: { + 'import.meta.vitest': mode !== 'production', + }, + server: { + port: 43040, + fs: { + allow: ['.'], }, - server: { - port: 43040, - fs: { - allow: ['.'], - }, - hmr: { - clientPort: 4201, - path: 'vite-hmr', - port: 4201, - }, + hmr: { + clientPort: 4201, + path: 'vite-hmr', + port: 4201, }, - }; -}); + }, +})); diff --git a/apps/tanstack-query-app/vite.config.ts b/apps/tanstack-query-app/vite.config.ts index 4f49c492b..65088fa99 100644 --- a/apps/tanstack-query-app/vite.config.ts +++ b/apps/tanstack-query-app/vite.config.ts @@ -17,9 +17,6 @@ export default defineConfig(({ mode }) => { }, optimizeDeps: { include: ['@angular/forms'], - // Prevent Vite 8 dep scanner from racing with analog() plugin server - // restarts, which causes "Request is outdated" errors from Rolldown. - noDiscovery: true, }, plugins: [ tailwindcss(), diff --git a/libs/my-package/package.json b/libs/my-package/package.json index 45fc3fdfe..c06392bab 100644 --- a/libs/my-package/package.json +++ b/libs/my-package/package.json @@ -3,7 +3,7 @@ "type": "module", "private": true, "peerDependencies": { - "@angular/core": "^21.2.5" + "@angular/core": "catalog:peerCompat" }, "devDependencies": { "@analogjs/vite-plugin-angular": "workspace:*" diff --git a/libs/shared/feature/src/pages/blog/[slug].page.ts b/libs/shared/feature/src/pages/blog/posts.[slug].page.ts similarity index 90% rename from libs/shared/feature/src/pages/blog/[slug].page.ts rename to libs/shared/feature/src/pages/blog/posts.[slug].page.ts index 48463e1ed..ac868b1d6 100644 --- a/libs/shared/feature/src/pages/blog/[slug].page.ts +++ b/libs/shared/feature/src/pages/blog/posts.[slug].page.ts @@ -1,4 +1,4 @@ -// /src/app/pages/blog/posts.[slug].page.ts +// Example shared library page mounted at /blog/posts/[slug]. import { injectContent, MarkdownComponent } from '@analogjs/content'; import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; diff --git a/package.json b/package.json index bae46b5c2..65a578b78 100644 --- a/package.json +++ b/package.json @@ -12,13 +12,14 @@ "contributors:add": "all-contributors add", "contributors:generate": "all-contributors generate", "dev": "nx serve", - "e2e": "nx run-many --target e2e --projects=analog-app-e2e,blog-app-e2e,tanstack-query-app-e2e", - "ghci": "pnpm run \"/^ghci:(prettier|lint|build-test|e2e:(analog|blog|tanstack-query))$/\"", + "e2e": "nx run-many --target e2e --projects=analog-app-e2e,blog-app-e2e,tailwind-debug-app-e2e,tanstack-query-app-e2e", + "ghci": "pnpm run \"/^ghci:(prettier|lint|build-test|e2e:(analog|blog|tailwind-debug|tanstack-query))$/\"", "ghci:build-test": "dagger call --progress=plain build-and-test --source .", "ghci:checks": "dagger call --progress=plain ci-checks --source .", "ghci:e2e": "dagger call --progress=plain end-to-end --source .", "ghci:e2e:analog": "dagger call --progress=plain end-to-end --source . --projects analog-app-e2e", "ghci:e2e:blog": "dagger call --progress=plain end-to-end --source . --projects blog-app-e2e", + "ghci:e2e:tailwind-debug": "dagger call --progress=plain end-to-end --source . --projects tailwind-debug-app-e2e", "ghci:e2e:tanstack-query": "dagger call --progress=plain end-to-end --source . --projects tanstack-query-app-e2e", "ghci:lint": "dagger call --progress=plain lint --source .", "ghci:prettier": "dagger call --progress=plain prettier --source .", diff --git a/packages/router/src/lib/json-ld.ts b/packages/router/src/lib/json-ld.ts index 5954b2473..89f47cd0c 100644 --- a/packages/router/src/lib/json-ld.ts +++ b/packages/router/src/lib/json-ld.ts @@ -1,9 +1,5 @@ import { DOCUMENT } from '@angular/common'; -import { - EnvironmentInjector, - inject, - runInInjectionContext, -} from '@angular/core'; +import { inject } from '@angular/core'; import type { ActivatedRouteSnapshot } from '@angular/router'; import { NavigationEnd, Router } from '@angular/router'; import { isPlainObject } from 'es-toolkit'; @@ -59,18 +55,19 @@ export const ROUTE_JSON_LD_KEY: unique symbol = Symbol( ); const JSON_LD_SCRIPT_SELECTOR = 'script[data-analog-json-ld]'; -export function updateJsonLdOnRouteChange(): void { - const router = inject(Router); - const injector = inject(EnvironmentInjector); +export function updateJsonLdOnRouteChange( + router: Router = inject(Router), + document: Document | null = inject(DOCUMENT, { optional: true }), +): void { + if (!document) { + return; + } router.events .pipe(filter((event) => event instanceof NavigationEnd)) .subscribe(() => { const entries = getJsonLdEntries(router.routerState.snapshot.root); - - runInInjectionContext(injector, () => { - applyJsonLdToDocument(inject(DOCUMENT), entries); - }); + applyJsonLdToDocument(document, entries); }); } diff --git a/packages/router/src/lib/meta-tags.ts b/packages/router/src/lib/meta-tags.ts index 53e92436b..4c0fe19fa 100644 --- a/packages/router/src/lib/meta-tags.ts +++ b/packages/router/src/lib/meta-tags.ts @@ -1,8 +1,4 @@ -import { - EnvironmentInjector, - inject, - runInInjectionContext, -} from '@angular/core'; +import { inject } from '@angular/core'; import { Meta, MetaDefinition as NgMetaTag } from '@angular/platform-browser'; import { ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router'; import { filter } from 'rxjs/operators'; @@ -52,25 +48,20 @@ type MetaTagSelector = | typeof ITEMPROP_KEY}="${string}"`; type MetaTagMap = Record; -export function updateMetaTagsOnRouteChange(): void { - const router = inject(Router); - const injector = inject(EnvironmentInjector); - +export function updateMetaTagsOnRouteChange( + router: Router = inject(Router), + metaService: Meta = inject(Meta), +): void { router.events .pipe(filter((event) => event instanceof NavigationEnd)) .subscribe(() => { const metaTagMap = getMetaTagMap(router.routerState.snapshot.root); - - runInInjectionContext(injector, () => { - const metaService = inject(Meta); - - for (const metaTagSelector in metaTagMap) { - const metaTag = metaTagMap[ - metaTagSelector as MetaTagSelector - ] as NgMetaTag; - metaService.updateTag(metaTag, metaTagSelector); - } - }); + for (const metaTagSelector in metaTagMap) { + const metaTag = metaTagMap[ + metaTagSelector as MetaTagSelector + ] as NgMetaTag; + metaService.updateTag(metaTag, metaTagSelector); + } }); } diff --git a/packages/router/src/lib/provide-file-router-base.ts b/packages/router/src/lib/provide-file-router-base.ts index 04cee9877..7cc05f27b 100644 --- a/packages/router/src/lib/provide-file-router-base.ts +++ b/packages/router/src/lib/provide-file-router-base.ts @@ -1,13 +1,14 @@ import { APP_BOOTSTRAP_LISTENER, - EnvironmentInjector, EnvironmentProviders, inject, makeEnvironmentProviders, - runInInjectionContext, } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; import { ɵHTTP_ROOT_INTERCEPTOR_FNS as HTTP_ROOT_INTERCEPTOR_FNS } from '@angular/common/http'; +import { Meta } from '@angular/platform-browser'; import { provideRouter, RouterFeatures, ROUTES, Routes } from '@angular/router'; +import { Router } from '@angular/router'; import { API_PREFIX } from '@analogjs/router/tokens'; import { cookieInterceptor } from './cookie-interceptor'; @@ -121,14 +122,18 @@ export function provideFileRouterWithRoutes( provide: APP_BOOTSTRAP_LISTENER, multi: true, useFactory: () => { - const injector = inject(EnvironmentInjector); + if (import.meta.env.DEV) { + return () => {}; + } + + const router = inject(Router); + const meta = inject(Meta); + const document = inject(DOCUMENT, { optional: true }); return () => { queueMicrotask(() => { - runInInjectionContext(injector, () => { - updateMetaTagsOnRouteChange(); - updateJsonLdOnRouteChange(); - }); + updateMetaTagsOnRouteChange(router, meta); + updateJsonLdOnRouteChange(router, document); }); }; }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7bc69c1d..a3bf5b45f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -943,7 +943,7 @@ importers: libs/my-package: dependencies: '@angular/core': - specifier: ^21.2.5 + specifier: catalog:peerCompat version: 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) tslib: specifier: ^2.8.1 diff --git a/tools/scripts/verify-route-freshness.mts b/tools/scripts/verify-route-freshness.mts index e53b1f909..96017075c 100644 --- a/tools/scripts/verify-route-freshness.mts +++ b/tools/scripts/verify-route-freshness.mts @@ -16,11 +16,15 @@ * pnpm build && node tools/scripts/verify-route-freshness.mts */ -import { execSync } from 'node:child_process'; +import { execFileSync } from 'node:child_process'; -const diff = execSync('git diff --name-only -- "**/routeTree.gen.ts"', { - encoding: 'utf-8', -}).trim(); +const diff = execFileSync( + 'git', + ['diff', '--name-only', '--', '**/routeTree.gen.ts'], + { + encoding: 'utf-8', + }, +).trim(); if (diff) { console.error('[Analog] Stale route files detected after generation:'); From 677a4a692e5961be04113b60386721ac687ef780 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:24:50 -0400 Subject: [PATCH 17/33] fix(vite-plugin-angular): handle > inside quoted class bindings --- .../src/lib/provide-file-router-base.ts | 2 +- .../src/lib/angular-vite-plugin.spec.ts | 11 +++ .../src/lib/angular-vite-plugin.ts | 80 ++++++++++++++----- 3 files changed, 72 insertions(+), 21 deletions(-) diff --git a/packages/router/src/lib/provide-file-router-base.ts b/packages/router/src/lib/provide-file-router-base.ts index 7cc05f27b..31aed3e40 100644 --- a/packages/router/src/lib/provide-file-router-base.ts +++ b/packages/router/src/lib/provide-file-router-base.ts @@ -123,7 +123,7 @@ export function provideFileRouterWithRoutes( multi: true, useFactory: () => { if (import.meta.env.DEV) { - return () => {}; + return () => undefined; } const router = inject(Router); diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts index 9f1790cc8..ed76fea49 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts @@ -678,6 +678,17 @@ describe('findStaticClassAndBoundClassConflicts', () => { expect(findStaticClassAndBoundClassConflicts(template)).toEqual([]); }); + + it('handles > inside quoted [class] expressions without truncating the tag', () => { + const template = `
`; + + expect(findStaticClassAndBoundClassConflicts(template)).toEqual([ + expect.objectContaining({ + line: 1, + snippet: `
`, + }), + ]); + }); }); describe('findBoundClassAndNgClassConflicts', () => { diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts index c8abdcf82..1e9963816 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts @@ -3396,10 +3396,8 @@ export function findStaticClassAndBoundClassConflicts( template: string, ): TemplateClassBindingIssue[] { const issues: TemplateClassBindingIssue[] = []; - const tagPattern = /<([a-zA-Z][\w:-]*)([\s\S]*?)>/g; - for (const match of template.matchAll(tagPattern)) { - const snippet = match[0]; + for (const { index, snippet } of findOpeningTagSnippets(template)) { if (!snippet.includes('[class]')) { continue; } @@ -3411,11 +3409,11 @@ export function findStaticClassAndBoundClassConflicts( snippet, ); - if (hasStaticClass && hasBoundClass && match.index !== undefined) { - const prefix = template.slice(0, match.index); + if (hasStaticClass && hasBoundClass) { + const prefix = template.slice(0, index); const line = prefix.split('\n').length; const lastNewline = prefix.lastIndexOf('\n'); - const column = match.index - lastNewline; + const column = index - lastNewline; issues.push({ line, column, @@ -3447,30 +3445,72 @@ export function findBoundClassAndNgClassConflicts( template: string, ): TemplateClassBindingIssue[] { const issues: TemplateClassBindingIssue[] = []; - const tagPattern = /<([a-zA-Z][\w:-]*)([\s\S]*?)>/g; - for (const match of template.matchAll(tagPattern)) { - const snippet = match[0]; + for (const { index, snippet } of findOpeningTagSnippets(template)) { if (!snippet.includes('[class]') || !snippet.includes('[ngClass]')) { continue; } - if (match.index !== undefined) { - const prefix = template.slice(0, match.index); - const line = prefix.split('\n').length; - const lastNewline = prefix.lastIndexOf('\n'); - const column = match.index - lastNewline; - issues.push({ - line, - column, - snippet: snippet.replace(/\s+/g, ' ').trim(), - }); - } + const prefix = template.slice(0, index); + const line = prefix.split('\n').length; + const lastNewline = prefix.lastIndexOf('\n'); + const column = index - lastNewline; + issues.push({ + line, + column, + snippet: snippet.replace(/\s+/g, ' ').trim(), + }); } return issues; } +function findOpeningTagSnippets( + template: string, +): Array<{ index: number; snippet: string }> { + const matches: Array<{ index: number; snippet: string }> = []; + + for (let index = 0; index < template.length; index++) { + if (template[index] !== '<') { + continue; + } + + const tagStart = template[index + 1]; + if (!tagStart || !/[a-zA-Z]/.test(tagStart)) { + continue; + } + + let quote: '"' | "'" | null = null; + + for (let end = index + 1; end < template.length; end++) { + const char = template[end]; + + if (quote) { + if (char === quote) { + quote = null; + } + continue; + } + + if (char === '"' || char === "'") { + quote = char; + continue; + } + + if (char === '>') { + matches.push({ + index, + snippet: template.slice(index, end + 1), + }); + index = end; + break; + } + } + } + + return matches; +} + function formatActiveGraphLocations(entries: Iterable): string { return [...entries] .sort() From 1683e4ee0b844cb6b101dbddd6af7f123b2c78df Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:28:22 -0400 Subject: [PATCH 18/33] fix(vite-plugin-angular): ignore [class.foo] in ngClass conflict guard --- .../vite-plugin-angular/src/lib/angular-vite-plugin.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts index 1e9963816..ffef75be3 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts @@ -3445,9 +3445,14 @@ export function findBoundClassAndNgClassConflicts( template: string, ): TemplateClassBindingIssue[] { const issues: TemplateClassBindingIssue[] = []; + const hasWholeElementClassBinding = /\[class\]\s*=/.test(template); + + if (!hasWholeElementClassBinding || !template.includes('[ngClass]')) { + return issues; + } for (const { index, snippet } of findOpeningTagSnippets(template)) { - if (!snippet.includes('[class]') || !snippet.includes('[ngClass]')) { + if (!/\[class\]\s*=/.test(snippet) || !snippet.includes('[ngClass]')) { continue; } From 6a6efc4a573b1f3f5e48daeb4b38efeddaba395a Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:32:22 -0400 Subject: [PATCH 19/33] fix(router): preserve last-wins behavior for equal-priority collisions --- packages/router/src/lib/route-builder.ts | 18 ++++++++------ packages/router/src/lib/routes.spec.ts | 30 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/packages/router/src/lib/route-builder.ts b/packages/router/src/lib/route-builder.ts index 14ffeadd7..bec4c285d 100644 --- a/packages/router/src/lib/route-builder.ts +++ b/packages/router/src/lib/route-builder.ts @@ -35,11 +35,7 @@ export function createRoutes( const aPriority = getCollisionPriority(a); const bPriority = getCollisionPriority(b); - if (aPriority !== bPriority) { - return aPriority - bPriority; - } - - return a.localeCompare(b); + return aPriority - bPriority; }); if (filenames.length === 0) { @@ -55,14 +51,22 @@ export function createRoutes( const existing = acc[level]?.[rawPath]; if (existing?.filename && existing.filename !== filename) { + const existingPriority = getCollisionPriority(existing.filename); + const nextPriority = getCollisionPriority(filename); + const shouldKeepExisting = existingPriority < nextPriority; + const chosenFilename = shouldKeepExisting ? existing.filename : filename; + if (import.meta.env.DEV) { console.warn( `[Analog] Route files "${existing.filename}" and "${filename}" ` + `resolve to the same route path "${rawPath}". ` + - `Only "${existing.filename}" will be used.`, + `Only "${chosenFilename}" will be used.`, ); } - return acc; + + if (shouldKeepExisting) { + return acc; + } } return { diff --git a/packages/router/src/lib/routes.spec.ts b/packages/router/src/lib/routes.spec.ts index 20566072f..3745f2b37 100644 --- a/packages/router/src/lib/routes.spec.ts +++ b/packages/router/src/lib/routes.spec.ts @@ -978,6 +978,7 @@ describe('routes', () => { describe('duplicate route precedence', () => { class AppRouteComponent {} class SharedRouteComponent {} + class SharedRouteComponentB {} let warnSpy: ReturnType; beforeEach(() => { @@ -1018,6 +1019,35 @@ describe('routes', () => { ), ); }); + + it('keeps last-wins behavior for collisions within the same priority bucket', async () => { + const files: Files = { + '/libs/shared/feature-a/src/pages/blog/[slug].page.ts': () => + Promise.resolve({ default: SharedRouteComponent }), + '/libs/shared/feature-b/src/pages/blog/[slug].page.ts': () => + Promise.resolve({ default: SharedRouteComponentB }), + }; + + const routes = createBaseRoutes( + files, + (_filename, fileLoader) => fileLoader as () => Promise, + ); + const blogRoute = routes.find((r) => r.path === 'blog'); + const route = blogRoute?.children?.find( + (child) => child.path === ':slug', + ); + + expect(blogRoute).toBeDefined(); + expect(route).toBeDefined(); + const loadedRoutes = (await route!.loadChildren?.()) as Route[]; + + expect(loadedRoutes[0].component).toBe(SharedRouteComponentB); + expect(warnSpy).toHaveBeenCalledWith( + expect.stringContaining( + 'Only "/libs/shared/feature-b/src/pages/blog/[slug].page.ts" will be used.', + ), + ); + }); }); describe('merged route resolver dispatch', () => { From 7eafecb9d0dfccace3580befd760f12b7b0f30fd Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:39:10 -0400 Subject: [PATCH 20/33] fix(router): register route metadata listeners during app init --- .../src/lib/provide-file-router-base.ts | 28 ++++------- .../src/lib/provide-file-router.spec.ts | 47 ++++++++++++++++++- 2 files changed, 54 insertions(+), 21 deletions(-) diff --git a/packages/router/src/lib/provide-file-router-base.ts b/packages/router/src/lib/provide-file-router-base.ts index 31aed3e40..0e7cac229 100644 --- a/packages/router/src/lib/provide-file-router-base.ts +++ b/packages/router/src/lib/provide-file-router-base.ts @@ -1,8 +1,8 @@ import { - APP_BOOTSTRAP_LISTENER, EnvironmentProviders, inject, makeEnvironmentProviders, + provideAppInitializer, } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { ɵHTTP_ROOT_INTERCEPTOR_FNS as HTTP_ROOT_INTERCEPTOR_FNS } from '@angular/common/http'; @@ -118,26 +118,14 @@ export function provideFileRouterWithRoutes( }); }, }, - { - provide: APP_BOOTSTRAP_LISTENER, - multi: true, - useFactory: () => { - if (import.meta.env.DEV) { - return () => undefined; - } + provideAppInitializer(() => { + const router = inject(Router); + const meta = inject(Meta); + const document = inject(DOCUMENT, { optional: true }); - const router = inject(Router); - const meta = inject(Meta); - const document = inject(DOCUMENT, { optional: true }); - - return () => { - queueMicrotask(() => { - updateMetaTagsOnRouteChange(router, meta); - updateJsonLdOnRouteChange(router, document); - }); - }; - }, - }, + updateMetaTagsOnRouteChange(router, meta); + updateJsonLdOnRouteChange(router, document); + }), { provide: HTTP_ROOT_INTERCEPTOR_FNS, multi: true, diff --git a/packages/router/src/lib/provide-file-router.spec.ts b/packages/router/src/lib/provide-file-router.spec.ts index e9bca2c79..6352d2809 100644 --- a/packages/router/src/lib/provide-file-router.spec.ts +++ b/packages/router/src/lib/provide-file-router.spec.ts @@ -1,10 +1,13 @@ import { Component } from '@angular/core'; import { TestBed } from '@angular/core/testing'; +import { DOCUMENT } from '@angular/common'; import { provideLocationMocks } from '@angular/common/testing'; -import { ROUTES } from '@angular/router'; +import { ROUTES, Router } from '@angular/router'; import { describe, expect, it, vi } from 'vitest'; import { RouteExport } from './models'; +import { ROUTE_JSON_LD_KEY } from './json-ld'; +import { ROUTE_META_TAGS_KEY } from './meta-tags'; import { ANALOG_EXTRA_ROUTE_FILE_SOURCES, ExtraRouteFileSource, @@ -203,4 +206,46 @@ describe('provideFileRouter integration', () => { spy.mockRestore(); }); + + it('should register meta tag and JSON-LD listeners before first navigation', async () => { + TestBed.configureTestingModule({ + providers: [ + provideFileRouter( + withExtraRoutes([ + { + path: '', + component: StubComponent, + data: { + [ROUTE_META_TAGS_KEY]: [ + { name: 'description', content: 'Provide File Router Home' }, + ], + [ROUTE_JSON_LD_KEY]: { + '@context': 'https://schema.org', + '@type': 'WebPage', + name: 'Provide File Router Home', + }, + }, + }, + ]), + ), + provideLocationMocks(), + ], + }); + + const router = TestBed.inject(Router); + const document = TestBed.inject(DOCUMENT); + + await router.navigateByUrl('/'); + + expect( + document + .querySelector('meta[name="description"]') + ?.getAttribute('content'), + ).toBe('Provide File Router Home'); + expect( + document + .querySelector('script[data-analog-json-ld]') + ?.textContent?.includes('Provide File Router Home'), + ).toBe(true); + }); }); From b55a43660d47b06814cf401bd056c617e44d3ffd Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:41:53 -0400 Subject: [PATCH 21/33] fix(vite-plugin-angular): restore rxjs optimizeDeps prebundling --- .../src/lib/angular-vite-plugin.spec.ts | 22 +++++++++++++++++++ .../src/lib/angular-vite-plugin.ts | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts index ed76fea49..02da11d56 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts @@ -34,6 +34,28 @@ describe('angularVitePlugin', () => { '@analogjs/vite-plugin-angular', ); }); + + it('prebundles rxjs and tslib in optimizeDeps', async () => { + const plugin = angular().find( + (p) => p.name === '@analogjs/vite-plugin-angular', + ) as Plugin; + const configHook = + typeof plugin.config === 'function' + ? plugin.config + : (plugin.config as any)?.handler; + + const config = await configHook?.call( + {} as any, + { resolve: {} }, + { command: 'serve', mode: 'development' }, + ); + + expect(config?.optimizeDeps?.include).toEqual([ + 'rxjs/operators', + 'rxjs', + 'tslib', + ]); + }); }); describe('hmr option', () => { diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts index ffef75be3..30676efb8 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts @@ -842,7 +842,7 @@ export function angular(options?: PluginOptions): Plugin[] { return { [jsTransformConfigKey]: jsTransformConfigValue, optimizeDeps: { - include: ['tslib'], + include: ['rxjs/operators', 'rxjs', 'tslib'], exclude: ['@angular/platform-server'], ...(useRolldown ? { rolldownOptions } : { esbuildOptions }), }, From 8a93d0cd5f088ccdda63f675fc981c3da5a8bfdc Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:45:17 -0400 Subject: [PATCH 22/33] fix(vite-plugin-angular): evict stale metadata on file deletion --- .../src/lib/angular-vite-plugin.spec.ts | 37 +++++++++++++++++++ .../src/lib/angular-vite-plugin.ts | 31 +++++++++++++++- 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts index 02da11d56..95e6d58c5 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts @@ -6,6 +6,7 @@ import type { Plugin } from 'vite'; import { angular, createFsWatcherCacheInvalidator, + evictDeletedFileMetadata, findBoundClassAndNgClassConflicts, findStaticClassAndBoundClassConflicts, findTemplateOwnerModules, @@ -503,6 +504,42 @@ describe('createFsWatcherCacheInvalidator', () => { }); }); +describe('evictDeletedFileMetadata', () => { + it('removes component and stylesheet ownership for deleted files', () => { + const removeActiveGraphMetadata = vi.fn(); + const removeStyleOwnerMetadata = vi.fn(); + const classNamesMap = new Map([ + ['/workspace/apps/demo/src/app/demo.component.ts', 'DemoComponent'], + ]); + const fileTransformMap = new Map([ + ['/workspace/apps/demo/src/app/demo.component.ts', '@Component({})'], + ]); + + evictDeletedFileMetadata( + '/workspace/apps/demo/src/app/demo.component.ts?t=12345', + { + removeActiveGraphMetadata, + removeStyleOwnerMetadata, + classNamesMap, + fileTransformMap, + }, + ); + + expect(removeActiveGraphMetadata).toHaveBeenCalledWith( + '/workspace/apps/demo/src/app/demo.component.ts', + ); + expect(removeStyleOwnerMetadata).toHaveBeenCalledWith( + '/workspace/apps/demo/src/app/demo.component.ts', + ); + expect( + classNamesMap.has('/workspace/apps/demo/src/app/demo.component.ts'), + ).toBe(false); + expect( + fileTransformMap.has('/workspace/apps/demo/src/app/demo.component.ts'), + ).toBe(false); + }); +}); + describe('toAngularCompilationFileReplacements', () => { it('maps browser file replacements for the Angular compilation host', () => { expect( diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts index 30676efb8..e86639e5b 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts @@ -258,6 +258,27 @@ export function normalizeIncludeGlob( const TS_EXT_REGEX = /\.[cm]?(ts)[^x]?\??/; const classNames = new Map(); +export function evictDeletedFileMetadata( + file: string, + { + removeActiveGraphMetadata, + removeStyleOwnerMetadata, + classNamesMap, + fileTransformMap, + }: { + removeActiveGraphMetadata: (file: string) => void; + removeStyleOwnerMetadata: (file: string) => void; + classNamesMap: Map; + fileTransformMap: Map; + }, +): void { + const normalizedFile = normalizePath(file.split('?')[0]); + removeActiveGraphMetadata(normalizedFile); + removeStyleOwnerMetadata(normalizedFile); + classNamesMap.delete(normalizedFile); + fileTransformMap.delete(normalizedFile); +} + export function isIgnoredHmrFile(file: string): boolean { return file.endsWith('.tsbuildinfo'); } @@ -896,7 +917,15 @@ export function angular(options?: PluginOptions): Plugin[] { () => performCompilation(resolvedConfig), ); server.watcher.on('add', invalidateCompilationOnFsChange); - server.watcher.on('unlink', invalidateCompilationOnFsChange); + server.watcher.on('unlink', (file) => { + evictDeletedFileMetadata(file, { + removeActiveGraphMetadata, + removeStyleOwnerMetadata, + classNamesMap: classNames as Map, + fileTransformMap, + }); + return invalidateCompilationOnFsChange(); + }); server.watcher.on('change', (file) => { if (file.includes('tsconfig')) { invalidateTsconfigCaches(); From 002de6c96d0e963c8db439e292aa327ecec6041c Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:47:44 -0400 Subject: [PATCH 23/33] fix(platform): cache page-route discovery for diagnostics --- .../platform/src/lib/router-plugin.spec.ts | 57 +++++++++++++++++++ packages/platform/src/lib/router-plugin.ts | 19 +++++-- 2 files changed, 70 insertions(+), 6 deletions(-) diff --git a/packages/platform/src/lib/router-plugin.spec.ts b/packages/platform/src/lib/router-plugin.spec.ts index 5588527f0..d8e92bca4 100644 --- a/packages/platform/src/lib/router-plugin.spec.ts +++ b/packages/platform/src/lib/router-plugin.spec.ts @@ -4,13 +4,26 @@ vi.mock('tinyglobby', () => ({ globSync: vi.fn(() => []), })); +vi.mock('node:fs', () => ({ + readFileSync: vi.fn(() => '@Component({})'), +})); + +vi.mock('./route-idiom-diagnostics.js', () => ({ + analyzeAnalogRouteFile: vi.fn(() => []), + formatAnalogRouteIdiomDiagnostic: vi.fn(() => 'diagnostic'), +})); + import { globSync } from 'tinyglobby'; +import { readFileSync } from 'node:fs'; +import { analyzeAnalogRouteFile } from './route-idiom-diagnostics.js'; import { routerPlugin } from './router-plugin.js'; describe('routerPlugin', () => { beforeEach(() => { vi.clearAllMocks(); vi.mocked(globSync).mockReturnValue([]); + vi.mocked(readFileSync).mockReturnValue('@Component({})' as any); + vi.mocked(analyzeAnalogRouteFile).mockReturnValue([]); }); const configureServer = (options?: Parameters[0]) => { @@ -372,6 +385,50 @@ describe('routerPlugin', () => { expect(globSync).toHaveBeenCalledTimes(4); }); + it('reuses cached page-route discovery for diagnostics on change', () => { + const plugins = routerPlugin({ + workspaceRoot, + }); + const invalidatePlugin = plugins.find( + (p) => p.name === 'analogjs-router-invalidate-routes', + )!; + const transformPlugin = plugins.find( + (p) => p.name === 'analog-glob-routes', + )!; + (transformPlugin as any).config?.({ root: 'apps/my-app' }); + + const on = vi.fn(); + const server = { + moduleGraph: { + fileToModulesMap: new Map(), + getModulesByFile: vi.fn(() => undefined), + invalidateModule: vi.fn(), + }, + watcher: { on, add: vi.fn() }, + ws: { send: vi.fn() }, + }; + + vi.mocked(globSync).mockReturnValue([ + `${appRoot}/src/app/pages/first.page.ts`, + ]); + + (invalidatePlugin.configureServer as (server: unknown) => void)(server); + + expect(globSync).toHaveBeenCalledTimes(1); + + const changeHandler = on.mock.calls.find( + ([eventName]) => eventName === 'change', + )?.[1]; + changeHandler(`${appRoot}/src/app/pages/first.page.ts`); + + expect(globSync).toHaveBeenCalledTimes(1); + expect(readFileSync).toHaveBeenCalledWith( + `${appRoot}/src/app/pages/first.page.ts`, + 'utf-8', + ); + expect(analyzeAnalogRouteFile).toHaveBeenCalled(); + }); + // Regression: the Rolldown transform filter used 'ANALOG_ROUTE_FILES' as // a substring pre-filter, assuming it matched 'ANALOG_CONTENT_ROUTE_FILES'. // It does not — they diverge at position 7 ('ANALOG_C...' vs 'ANALOG_R...'). diff --git a/packages/platform/src/lib/router-plugin.ts b/packages/platform/src/lib/router-plugin.ts index 3eda2ebc9..00a7b882a 100644 --- a/packages/platform/src/lib/router-plugin.ts +++ b/packages/platform/src/lib/router-plugin.ts @@ -80,6 +80,7 @@ export function routerPlugin(options?: Options): Plugin[] { // These lists are used repeatedly by transform hooks during serve. Keeping // them warm avoids a full glob on every route/content invalidation. let routeFilesCache: string[] | undefined; + let pageRouteFilesCache: string[] | undefined; let contentRouteFilesCache: string[] | undefined; let endpointFilesCache: string[] | undefined; const routeDiagnosticCache = new Map(); @@ -129,8 +130,16 @@ export function routerPlugin(options?: Options): Plugin[] { return endpointFilesCache; }; + const discoverPageRouteFiles = () => { + pageRouteFilesCache ??= discoverRouteFiles().filter((file) => + file.endsWith('.page.ts'), + ); + + return pageRouteFilesCache; + }; const invalidateDiscoveryCaches = () => { routeFilesCache = undefined; + pageRouteFilesCache = undefined; contentRouteFilesCache = undefined; endpointFilesCache = undefined; }; @@ -141,9 +150,7 @@ export function routerPlugin(options?: Options): Plugin[] { try { const code = readFileSync(path, 'utf-8'); - const routeFiles = discoverRouteFiles().filter((file) => - file.endsWith('.page.ts'), - ); + const routeFiles = discoverPageRouteFiles(); const diagnostics = analyzeAnalogRouteFile({ filename: path, code, @@ -279,9 +286,9 @@ export function routerPlugin(options?: Options): Plugin[] { server.watcher.add(dir); } - discoverRouteFiles() - .filter((file) => file.endsWith('.page.ts')) - .forEach((file) => reportRouteDiagnostics(file)); + discoverPageRouteFiles().forEach((file) => + reportRouteDiagnostics(file), + ); }, }, { From 61807f343079376e2a0fc2d8f2f7ec5ae9ed1903 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:50:45 -0400 Subject: [PATCH 24/33] refactor(vite-plugin-angular): dedupe vite-ignore hmr injection --- .../src/lib/angular-vite-plugin.spec.ts | 17 +++- .../src/lib/angular-vite-plugin.ts | 88 ++++--------------- 2 files changed, 32 insertions(+), 73 deletions(-) diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts index 95e6d58c5..d70b26094 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts @@ -14,6 +14,7 @@ import { getModulesForChangedFile, isModuleForChangedResource, isIgnoredHmrFile, + injectViteIgnoreForHmrMetadata, mapTemplateUpdatesToFiles, normalizeIncludeGlob, refreshStylesheetRegistryForFile, @@ -22,10 +23,7 @@ import { } from './angular-vite-plugin'; import { AnalogStylesheetRegistry } from './stylesheet-registry.js'; -const hmrPluginNames = [ - '@analogjs/vite-plugin-angular:hmr-vite-ignore', - 'analogjs-live-reload-plugin', -]; +const hmrPluginNames = ['analogjs-live-reload-plugin']; const originalNodeEnv = process.env['NODE_ENV']; const originalVitestEnv = process.env['VITEST']; @@ -540,6 +538,17 @@ describe('evictDeletedFileMetadata', () => { }); }); +describe('injectViteIgnoreForHmrMetadata', () => { + it('adds @vite-ignore to Angular HMR metadata imports', () => { + const code = + 'return import(i0.ɵɵgetReplaceMetadataURL(id, t, import.meta.url));'; + + expect(injectViteIgnoreForHmrMetadata(code)).toContain( + 'import(/* @vite-ignore */ i0.ɵɵgetReplaceMetadataURL', + ); + }); +}); + describe('toAngularCompilationFileReplacements', () => { it('maps browser file replacements for the Angular compilation host', () => { expect( diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts index e86639e5b..0afa32dda 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts @@ -279,6 +279,22 @@ export function evictDeletedFileMetadata( fileTransformMap.delete(normalizedFile); } +export function injectViteIgnoreForHmrMetadata(code: string): string { + let patched = code.replace( + /\bimport\(([a-zA-Z_$][\w$]*\.\u0275\u0275getReplaceMetadataURL)/g, + 'import(/* @vite-ignore */ $1', + ); + + if (patched === code) { + patched = patched.replace( + /import\((\S+getReplaceMetadataURL)/g, + 'import(/* @vite-ignore */ $1', + ); + } + + return patched; +} + export function isIgnoredHmrFile(file: string): boolean { return file.endsWith('.tsbuildinfo'); } @@ -1735,18 +1751,11 @@ export function angular(options?: PluginOptions): Plugin[] { hasMetaUrl, }); if (hasMetaUrl) { - data = data.replace( - /\bimport\(([a-zA-Z_$][\w$]*\.\u0275\u0275getReplaceMetadataURL)/g, - 'import(/* @vite-ignore */ $1', - ); - if (!data.includes('@vite-ignore')) { + const patched = injectViteIgnoreForHmrMetadata(data); + if (patched !== data && !patched.includes('@vite-ignore')) { debugHmrV('vite-ignore regex fallback', { id }); - // Fallback: broader replace - data = data.replace( - /import\((\S+getReplaceMetadataURL)/g, - 'import(/* @vite-ignore */ $1', - ); } + data = patched; } } @@ -1949,65 +1958,6 @@ export function angular(options?: PluginOptions): Plugin[] { }, } satisfies Plugin), angularPlugin(), - // ----------------------------------------------------------------------- - // Angular HMR: suppress Vite "dynamic import cannot be analyzed" warnings - // ----------------------------------------------------------------------- - // - // Angular 21's compiler emits HMR metadata replacement code per component: - // - // import(i0.ɵɵgetReplaceMetadataURL(id, t, import.meta.url)) - // .then((m) => m.default && i0.ɵɵreplaceMetadata(Component, ...)) - // - // Vite's vite:import-analysis plugin cannot statically analyze this computed - // import() expression and emits a warning for every @Component in the app. - // - // The Angular compiler's IR *does* include a /* @vite-ignore */ comment on - // the import(), but it is stripped during TypeScript's emit phase (TS does - // not preserve comments inside expressions by default). - // - // This post-transform plugin re-injects /* @vite-ignore */ on the final JS - // output. It runs with enforce:"post" so it sees the code AFTER the Angular - // compilation and TypeScript emit have completed. - // - // LIMITATION — SSR environment: - // Vite processes client and SSR environments through separate plugin - // containers. This plugin's transform fires for .ts files in the CLIENT - // environment, silencing warnings there. However, the SSR environment's - // vite:import-analysis still sees the un-patched code and logs the same - // warnings. These SSR warnings are harmless — the import is runtime-only - // HMR plumbing, not a code-split boundary — but they add noise to the dev - // server console (~one per @Component). - // - // Consuming apps can suppress the SSR warnings in their Vite customLogger: - // - // logger.warn = (msg, options) => { - // if (typeof msg === 'string' && msg.includes('getReplaceMetadataURL')) return; - // originalWarn(msg, options); - // }; - // - pluginOptions.hmr && - ({ - name: '@analogjs/vite-plugin-angular:hmr-vite-ignore', - enforce: 'post' as const, - transform(code: string, id: string) { - if ( - !id.includes('.ts') || - id.includes('node_modules') || - !code.includes('\u0275\u0275getReplaceMetadataURL') - ) { - return; - } - - const patched = code.replace( - /\bimport\(([a-zA-Z_$][\w$]*\.\u0275\u0275getReplaceMetadataURL)/g, - 'import(/* @vite-ignore */ $1', - ); - - if (patched !== code) { - return { code: patched, map: null }; - } - }, - } satisfies Plugin), pluginOptions.hmr && liveReloadPlugin({ classNames, fileEmitter }), ...(isTest && !isStackBlitz ? angularVitestPlugins() : []), (jit && From ba044b0f00df1faa425ee918726d985044f101a3 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:52:52 -0400 Subject: [PATCH 25/33] chore: remove investigation snapshot artifacts --- .../2026-04-04-reset-investigation/README.md | 41 ------------------- 1 file changed, 41 deletions(-) delete mode 100644 changes/2026-04-04-reset-investigation/README.md diff --git a/changes/2026-04-04-reset-investigation/README.md b/changes/2026-04-04-reset-investigation/README.md deleted file mode 100644 index a206d0b3d..000000000 --- a/changes/2026-04-04-reset-investigation/README.md +++ /dev/null @@ -1,41 +0,0 @@ -## 2026-04-04 Reset Investigation - -This folder snapshots the Analog repo changes made during the HMR and Angular compilation investigation before reverting the live code back to `HEAD`. - -### Purpose - -- preserve the exact work done in the local Analog fork -- make it easy to re-apply one slice at a time -- reset the working tree to a stable baseline for smaller, controlled re-implementation - -### Captured Scope - -The saved patches cover: - -- docs and contributor guidance -- `@analogjs/platform` local-linking behavior -- `@analogjs/vite-plugin-angular` HMR, external resource tracking, and served HMR module changes - -### Files - -- `status-before-revert.txt` - - working tree status before restoration -- `patches/full.patch` - - complete combined diff for the captured Analog changes -- `patches/docs.patch` - - `CONTRIBUTING.md` and docs-app debugging guide changes -- `patches/platform.patch` - - `packages/platform/src/lib/platform-plugin.ts` - - `packages/platform/src/lib/platform-plugin.spec.ts` -- `patches/vite-plugin-angular.patch` - - `packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts` - - `packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts` - - `packages/vite-plugin-angular/src/lib/angular-vite-plugin-live-reload.spec.ts` - - `packages/vite-plugin-angular/src/lib/live-reload-plugin.ts` - - `packages/vite-plugin-angular/src/lib/live-reload-plugin.spec.ts` - -### Notes - -- This snapshot intentionally does not treat `BundleSizeAnalysisPlan.md` as part of the revert set. -- Some late-stage probe logging was included in the captured `vite-plugin-angular` patch to preserve the exact investigation state. -- After this snapshot is created, the intended next step is restoring the modified tracked files to `HEAD` and re-implementing in smaller steps. From 135c883eee050db9257f392dcca00e2f05fc4d82 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sat, 4 Apr 2026 23:59:21 -0400 Subject: [PATCH 26/33] build: move all root package deps to workspace catalogs --- package.json | 238 +++++++------- pnpm-lock.yaml | 764 ++++++++++++++++++++++++++++---------------- pnpm-workspace.yaml | 117 +++++++ 3 files changed, 730 insertions(+), 389 deletions(-) diff --git a/package.json b/package.json index 65a578b78..6ef8b1984 100644 --- a/package.json +++ b/package.json @@ -59,67 +59,67 @@ }, "private": true, "dependencies": { - "@angular/animations": "21.2.6", - "@angular/cdk": "21.2.4", - "@angular/common": "21.2.6", - "@angular/compiler": "21.2.6", - "@angular/core": "21.2.6", - "@angular/forms": "21.2.6", - "@angular/material": "21.2.4", - "@angular/platform-browser": "21.2.6", - "@angular/platform-browser-dynamic": "21.2.6", - "@angular/platform-server": "~21.2.6", - "@angular/router": "21.2.6", - "@angular/ssr": "21.2.4", + "@angular/animations": "catalog:", + "@angular/cdk": "catalog:", + "@angular/common": "catalog:", + "@angular/compiler": "catalog:", + "@angular/core": "catalog:", + "@angular/forms": "catalog:", + "@angular/material": "catalog:", + "@angular/platform-browser": "catalog:", + "@angular/platform-browser-dynamic": "catalog:", + "@angular/platform-server": "catalog:", + "@angular/router": "catalog:", + "@angular/ssr": "catalog:", "@astrojs/mdx": "catalog:", "@astrojs/react": "catalog:", - "@mdx-js/react": "3.1.1", + "@mdx-js/react": "catalog:", "@nx/angular": "catalog:", "@nx/devkit": "catalog:", "@standard-schema/spec": "catalog:", "@tailwindcss/postcss": "catalog:", - "@tanstack/angular-query-experimental": "^5.95.2", - "@tanstack/query-core": "^5.95.2", - "ajv-formats": "^3.0.1", + "@tanstack/angular-query-experimental": "catalog:", + "@tanstack/query-core": "catalog:", + "ajv-formats": "catalog:", "defu": "catalog:", - "destr": "^2.0.5", + "destr": "catalog:", "front-matter": "catalog:", "marked": "catalog:", "marked-gfm-heading-id": "catalog:", "marked-highlight": "catalog:", - "mermaid": "^11.13.0", + "mermaid": "catalog:", "radix3": "catalog:", "react": "catalog:", "react-dom": "catalog:", - "rehype": "^13.0.2", - "rxjs": "7.8.2", - "semver": "^7.7.4", - "tslib": "^2.8.1", - "ufo": "^1.6.3", - "valibot": "^1.3.1", - "xhr2": "^0.2.1", - "zod": "^4.3.6", - "zone.js": "^0.16.1" + "rehype": "catalog:", + "rxjs": "catalog:", + "semver": "catalog:", + "tslib": "catalog:", + "ufo": "catalog:", + "valibot": "catalog:", + "xhr2": "catalog:", + "zod": "catalog:", + "zone.js": "catalog:" }, "devDependencies": { - "@angular-devkit/architect": "0.2102.6", - "@angular-devkit/build-angular": "21.2.4", - "@angular-devkit/core": "21.2.4", - "@angular-devkit/schematics": "21.2.4", - "@angular-eslint/eslint-plugin": "21.3.1", - "@angular-eslint/eslint-plugin-template": "21.3.1", - "@angular-eslint/template-parser": "21.3.1", - "@angular/build": "21.2.4", - "@angular/cli": "21.2.4", - "@angular/compiler-cli": "21.2.6", - "@angular/language-service": "21.2.6", - "@astrojs/markdown-component": "^1.0.5", - "@commitlint/cli": "^20.5.0", - "@commitlint/config-conventional": "^20.5.0", - "@compodoc/compodoc": "^1.2.1", - "@eslint/eslintrc": "^3.3.5", - "@eslint/js": "^10.0.1", - "@netlify/functions": "^5.1.5", + "@angular-devkit/architect": "catalog:", + "@angular-devkit/build-angular": "catalog:", + "@angular-devkit/core": "catalog:", + "@angular-devkit/schematics": "catalog:", + "@angular-eslint/eslint-plugin": "catalog:", + "@angular-eslint/eslint-plugin-template": "catalog:", + "@angular-eslint/template-parser": "catalog:", + "@angular/build": "catalog:", + "@angular/cli": "catalog:", + "@angular/compiler-cli": "catalog:", + "@angular/language-service": "catalog:", + "@astrojs/markdown-component": "catalog:", + "@commitlint/cli": "catalog:", + "@commitlint/config-conventional": "catalog:", + "@compodoc/compodoc": "catalog:", + "@eslint/eslintrc": "catalog:", + "@eslint/js": "catalog:", + "@netlify/functions": "catalog:", "@nx/eslint": "catalog:", "@nx/eslint-plugin": "catalog:", "@nx/js": "catalog:", @@ -129,108 +129,108 @@ "@nx/vite": "catalog:", "@nx/vitest": "catalog:", "@nx/web": "catalog:", - "@oxc-angular/vite": "^0.0.22", - "@oxc-project/runtime": "^0.123.0", - "@playwright/test": "^1.58.2", - "@schematics/angular": "21.2.4", - "@semantic-release/changelog": "^6.0.3", - "@semantic-release/exec": "^7.1.0", - "@semantic-release/git": "^10.0.1", + "@oxc-angular/vite": "catalog:", + "@oxc-project/runtime": "catalog:", + "@playwright/test": "catalog:", + "@schematics/angular": "catalog:", + "@semantic-release/changelog": "catalog:", + "@semantic-release/exec": "catalog:", + "@semantic-release/git": "catalog:", "@standard-schema/spec": "catalog:", - "@storybook/addon-docs": "^10.3.3", - "@storybook/addon-links": "^10.3.3", - "@storybook/addon-vitest": "^10.3.3", - "@storybook/angular": "10.3.3", + "@storybook/addon-docs": "catalog:", + "@storybook/addon-links": "catalog:", + "@storybook/addon-vitest": "catalog:", + "@storybook/angular": "catalog:", "@storybook/builder-vite": "catalog:peerStorybook10", "@swc-node/register": "catalog:", "@swc/core": "catalog:", "@swc/helpers": "catalog:", "@tailwindcss/vite": "catalog:", - "@types/hast": "^3.0.4", - "@types/node": "^25.5.0", - "@types/prismjs": "^1.26.6", - "@types/react": "^19.2.14", - "@types/react-dom": "^19.2.3", - "@types/semver": "^7.7.1", - "@typescript-eslint/eslint-plugin": "8.58.0", - "@typescript-eslint/parser": "8.58.0", - "@typescript-eslint/type-utils": "8.58.0", - "@typescript-eslint/utils": "^8.57.2", - "@vitest/browser-playwright": "4.1.2", - "@vitest/coverage-v8": "4.1.2", - "@vitest/ui": "4.1.2", - "ajv": "^8.18.0", - "all-contributors-cli": "^6.26.1", + "@types/hast": "catalog:", + "@types/node": "catalog:", + "@types/prismjs": "catalog:", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@types/semver": "catalog:", + "@typescript-eslint/eslint-plugin": "catalog:", + "@typescript-eslint/parser": "catalog:", + "@typescript-eslint/type-utils": "catalog:", + "@typescript-eslint/utils": "catalog:", + "@vitest/browser-playwright": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "ajv": "catalog:", + "all-contributors-cli": "catalog:", "angular-eslint": "catalog:", "astro": "catalog:", - "conventional-changelog": "^7.2.0", - "cpy-cli": "^7.0.0", - "effect": "4.0.0-beta.36", - "eslint": "^10.1.0", - "eslint-config-prettier": "10.1.8", - "eslint-plugin-oxlint": "^1.57.0", - "eslint-plugin-playwright": "^2.10.1", - "eslint-plugin-storybook": "10.3.3", - "execa": "^9.6.1", - "fast-glob": "^3.3.3", - "fd-package-json": "^2.0.0", - "find-up": "^8.0.0", - "fs-extra": "^11.3.4", - "happy-dom": "^20.8.9", - "jiti": "2.6.1", - "jsdom": "29.0.1", - "jsonc-eslint-parser": "^3.1.0", - "jsonc-parser": "3.3.1", - "kolorist": "^1.8.0", - "less": "4.6.4", - "lint-staged": "^16.4.0", + "conventional-changelog": "catalog:", + "cpy-cli": "catalog:", + "effect": "catalog:", + "eslint": "catalog:", + "eslint-config-prettier": "catalog:", + "eslint-plugin-oxlint": "catalog:", + "eslint-plugin-playwright": "catalog:", + "eslint-plugin-storybook": "catalog:", + "execa": "catalog:", + "fast-glob": "catalog:", + "fd-package-json": "catalog:", + "find-up": "catalog:", + "fs-extra": "catalog:", + "happy-dom": "catalog:", + "jiti": "catalog:", + "jsdom": "catalog:", + "jsonc-eslint-parser": "catalog:", + "jsonc-parser": "catalog:", + "kolorist": "catalog:", + "less": "catalog:", + "lint-staged": "catalog:", "marked-mangle": "catalog:", "marked-shiki": "catalog:", - "md4x": "^0.0.25", - "minimist": "^1.2.8", - "ng-packagr": "21.2.1", + "md4x": "catalog:", + "minimist": "catalog:", + "ng-packagr": "catalog:", "nitro": "catalog:", "nx": "catalog:", - "obug": "^2.1.1", + "obug": "catalog:", "ofetch": "catalog:", "oxc-parser": "catalog:", "oxc-resolver": "catalog:", "oxc-transform": "catalog:", - "oxlint": "^1.57.0", - "oxlint-tsgolint": "^0.19.0", - "playwright": "^1.58.2", - "postcss": "^8.5.8", - "prettier": "^3.8.1", + "oxlint": "catalog:", + "oxlint-tsgolint": "catalog:", + "playwright": "catalog:", + "postcss": "catalog:", + "prettier": "catalog:", "prismjs": "catalog:", "prompts": "catalog:", "rolldown": "catalog:", - "rolldown-plugin-dts": "^0.23.0", - "rollup": "^4.60.0", - "rollup-plugin-visualizer": "^7.0.1", - "sass": "1.99.0", - "sass-embedded": "1.99.0", - "satori": "^0.26.0", + "rolldown-plugin-dts": "catalog:", + "rollup": "catalog:", + "rollup-plugin-visualizer": "catalog:", + "sass": "catalog:", + "sass-embedded": "catalog:", + "satori": "catalog:", "satori-html": "catalog:", "schema-dts": "catalog:", - "semantic-release": "^25.0.3", - "semantic-release-replace-plugin": "^1.2.7", + "semantic-release": "catalog:", + "semantic-release-replace-plugin": "catalog:", "sharp": "catalog:", "shiki": "catalog:", - "start-server-and-test": "^3.0.0", - "storybook": "10.3.3", + "start-server-and-test": "catalog:", + "storybook": "catalog:", "tailwindcss": "catalog:", "tinyglobby": "catalog:", - "ts-dedent": "^2.2.0", - "ts-morph": "^27.0.2", + "ts-dedent": "catalog:", + "ts-morph": "catalog:", "tsdown": "catalog:", "typescript": "catalog:", - "typescript-eslint": "^8.57.2", - "vite": "^8.0.3", - "vite-plugin-eslint": "^1.8.1", - "vite-plugin-inspect": "12.0.0-beta.1", - "vite-tsconfig-paths": "^7.0.0-alpha.1", + "typescript-eslint": "catalog:", + "vite": "catalog:", + "vite-plugin-eslint": "catalog:", + "vite-plugin-inspect": "catalog:", + "vite-tsconfig-paths": "catalog:", "vitefu": "catalog:", - "vitest": "4.1.2", + "vitest": "catalog:", "xmlbuilder2": "catalog:" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3bf5b45f..410a1e7a7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,12 +6,105 @@ settings: catalogs: default: + '@angular-devkit/architect': + specifier: 0.2102.6 + version: 0.2102.6 + '@angular-devkit/build-angular': + specifier: 21.2.4 + version: 21.2.4 + '@angular-devkit/core': + specifier: 21.2.4 + version: 21.2.4 + '@angular-devkit/schematics': + specifier: 21.2.4 + version: 21.2.4 + '@angular-eslint/eslint-plugin': + specifier: 21.3.1 + version: 21.3.1 + '@angular-eslint/eslint-plugin-template': + specifier: 21.3.1 + version: 21.3.1 + '@angular-eslint/template-parser': + specifier: 21.3.1 + version: 21.3.1 + '@angular/animations': + specifier: 21.2.6 + version: 21.2.6 + '@angular/build': + specifier: 21.2.4 + version: 21.2.4 + '@angular/cdk': + specifier: 21.2.4 + version: 21.2.4 + '@angular/cli': + specifier: 21.2.4 + version: 21.2.4 + '@angular/common': + specifier: 21.2.6 + version: 21.2.6 + '@angular/compiler': + specifier: 21.2.6 + version: 21.2.6 + '@angular/compiler-cli': + specifier: 21.2.6 + version: 21.2.6 + '@angular/core': + specifier: 21.2.6 + version: 21.2.6 + '@angular/forms': + specifier: 21.2.6 + version: 21.2.6 + '@angular/language-service': + specifier: 21.2.6 + version: 21.2.6 + '@angular/material': + specifier: 21.2.4 + version: 21.2.4 + '@angular/platform-browser': + specifier: 21.2.6 + version: 21.2.6 + '@angular/platform-browser-dynamic': + specifier: 21.2.6 + version: 21.2.6 + '@angular/platform-server': + specifier: 21.2.6 + version: 21.2.6 + '@angular/router': + specifier: 21.2.6 + version: 21.2.6 + '@angular/ssr': + specifier: 21.2.4 + version: 21.2.4 + '@astrojs/markdown-component': + specifier: ^1.0.5 + version: 1.0.5 '@astrojs/mdx': specifier: ^5.0.3 version: 5.0.3 '@astrojs/react': specifier: ^5.0.2 version: 5.0.2 + '@commitlint/cli': + specifier: ^20.5.0 + version: 20.5.0 + '@commitlint/config-conventional': + specifier: ^20.5.0 + version: 20.5.0 + '@compodoc/compodoc': + specifier: ^1.2.1 + version: 1.2.1 + '@eslint/eslintrc': + specifier: ^3.3.5 + version: 3.3.5 + '@eslint/js': + specifier: ^10.0.1 + version: 10.0.1 + '@mdx-js/react': + specifier: 3.1.1 + version: 3.1.1 + '@netlify/functions': + specifier: ^5.1.5 + version: 5.1.5 '@nx/angular': specifier: 22.7.0-beta.10 version: 22.7.0-beta.10 @@ -45,9 +138,42 @@ catalogs: '@nx/web': specifier: 22.7.0-beta.10 version: 22.7.0-beta.10 + '@oxc-angular/vite': + specifier: ^0.0.22 + version: 0.0.22 + '@oxc-project/runtime': + specifier: ^0.123.0 + version: 0.123.0 + '@playwright/test': + specifier: ^1.58.2 + version: 1.59.1 + '@schematics/angular': + specifier: 21.2.4 + version: 21.2.4 + '@semantic-release/changelog': + specifier: ^6.0.3 + version: 6.0.3 + '@semantic-release/exec': + specifier: ^7.1.0 + version: 7.1.0 + '@semantic-release/git': + specifier: ^10.0.1 + version: 10.0.1 '@standard-schema/spec': specifier: ^1.1.0 version: 1.1.0 + '@storybook/addon-docs': + specifier: ^10.3.3 + version: 10.3.4 + '@storybook/addon-links': + specifier: ^10.3.3 + version: 10.3.4 + '@storybook/addon-vitest': + specifier: ^10.3.3 + version: 10.3.4 + '@storybook/angular': + specifier: 10.3.3 + version: 10.3.3 '@swc-node/register': specifier: ~1.11.1 version: 1.11.1 @@ -63,21 +189,141 @@ catalogs: '@tailwindcss/vite': specifier: ^4.2.2 version: 4.2.2 + '@tanstack/angular-query-experimental': + specifier: ^5.95.2 + version: 5.96.2 + '@tanstack/query-core': + specifier: ^5.95.2 + version: 5.96.2 + '@types/hast': + specifier: ^3.0.4 + version: 3.0.4 + '@types/node': + specifier: ^25.5.0 + version: 25.5.2 + '@types/prismjs': + specifier: ^1.26.6 + version: 1.26.6 + '@types/react': + specifier: ^19.2.14 + version: 19.2.14 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3 + '@types/semver': + specifier: ^7.7.1 + version: 7.7.1 + '@typescript-eslint/eslint-plugin': + specifier: 8.58.0 + version: 8.58.0 + '@typescript-eslint/parser': + specifier: 8.58.0 + version: 8.58.0 + '@typescript-eslint/type-utils': + specifier: 8.58.0 + version: 8.58.0 + '@typescript-eslint/utils': + specifier: ^8.57.2 + version: 8.58.0 + '@vitest/browser-playwright': + specifier: 4.1.2 + version: 4.1.2 + '@vitest/coverage-v8': + specifier: 4.1.2 + version: 4.1.2 + '@vitest/ui': + specifier: 4.1.2 + version: 4.1.2 + ajv: + specifier: ^8.18.0 + version: 8.18.0 + ajv-formats: + specifier: ^3.0.1 + version: 3.0.1 + all-contributors-cli: + specifier: ^6.26.1 + version: 6.26.1 angular-eslint: specifier: ^21.2.0 version: 21.3.1 astro: specifier: 6.1.1 version: 6.1.1 + conventional-changelog: + specifier: ^7.2.0 + version: 7.2.0 + cpy-cli: + specifier: ^7.0.0 + version: 7.0.0 defu: specifier: ^6.1.4 version: 6.1.6 + destr: + specifier: ^2.0.5 + version: 2.0.5 + effect: + specifier: 4.0.0-beta.36 + version: 4.0.0-beta.36 es-toolkit: specifier: ^1.45.1 version: 1.45.1 + eslint: + specifier: ^10.1.0 + version: 10.2.0 + eslint-config-prettier: + specifier: 10.1.8 + version: 10.1.8 + eslint-plugin-oxlint: + specifier: ^1.57.0 + version: 1.58.0 + eslint-plugin-playwright: + specifier: ^2.10.1 + version: 2.10.1 + eslint-plugin-storybook: + specifier: 10.3.3 + version: 10.3.3 + execa: + specifier: ^9.6.1 + version: 9.6.1 + fast-glob: + specifier: ^3.3.3 + version: 3.3.3 + fd-package-json: + specifier: ^2.0.0 + version: 2.0.0 + find-up: + specifier: ^8.0.0 + version: 8.0.0 front-matter: specifier: ^4.0.2 version: 4.0.2 + fs-extra: + specifier: ^11.3.4 + version: 11.3.4 + happy-dom: + specifier: ^20.8.9 + version: 20.8.9 + jiti: + specifier: 2.6.1 + version: 2.6.1 + jsdom: + specifier: 29.0.1 + version: 29.0.1 + jsonc-eslint-parser: + specifier: ^3.1.0 + version: 3.1.0 + jsonc-parser: + specifier: 3.3.1 + version: 3.3.1 + kolorist: + specifier: ^1.8.0 + version: 1.8.0 + less: + specifier: 4.6.4 + version: 4.6.4 + lint-staged: + specifier: ^16.4.0 + version: 16.4.0 marked: specifier: ^17.0.5 version: 17.0.5 @@ -93,6 +339,18 @@ catalogs: marked-shiki: specifier: ^1.2.1 version: 1.2.1 + md4x: + specifier: ^0.0.25 + version: 0.0.25 + mermaid: + specifier: ^11.13.0 + version: 11.14.0 + minimist: + specifier: ^1.2.8 + version: 1.2.8 + ng-packagr: + specifier: 21.2.1 + version: 21.2.1 nitro: specifier: 3.0.260311-beta version: 3.0.260311-beta @@ -114,6 +372,21 @@ catalogs: oxc-transform: specifier: ^0.123.0 version: 0.123.0 + oxlint: + specifier: ^1.57.0 + version: 1.58.0 + oxlint-tsgolint: + specifier: ^0.19.0 + version: 0.19.0 + playwright: + specifier: ^1.58.2 + version: 1.59.1 + postcss: + specifier: ^8.5.8 + version: 8.5.8 + prettier: + specifier: ^3.8.1 + version: 3.8.1 prismjs: specifier: ^1.30.0 version: 1.30.0 @@ -129,27 +402,72 @@ catalogs: react-dom: specifier: ^19.2.4 version: 19.2.4 + rehype: + specifier: ^13.0.2 + version: 13.0.2 rolldown: specifier: ^1.0.0-rc.13 version: 1.0.0-rc.13 + rolldown-plugin-dts: + specifier: ^0.23.0 + version: 0.23.2 + rollup: + specifier: ^4.60.0 + version: 4.60.1 + rollup-plugin-visualizer: + specifier: ^7.0.1 + version: 7.0.1 + rxjs: + specifier: 7.8.2 + version: 7.8.2 + sass: + specifier: 1.99.0 + version: 1.99.0 + sass-embedded: + specifier: 1.99.0 + version: 1.99.0 + satori: + specifier: ^0.26.0 + version: 0.26.0 satori-html: specifier: ^0.3.2 version: 0.3.2 schema-dts: specifier: ^2.0.0 version: 2.0.0 + semantic-release: + specifier: ^25.0.3 + version: 25.0.3 + semantic-release-replace-plugin: + specifier: ^1.2.7 + version: 1.2.7 + semver: + specifier: ^7.7.4 + version: 7.7.4 sharp: specifier: ^0.34.5 version: 0.34.5 shiki: specifier: ^1.29.2 || ^4.0.2 version: 4.0.2 + start-server-and-test: + specifier: ^3.0.0 + version: 3.0.0 + storybook: + specifier: 10.3.3 + version: 10.3.3 tailwindcss: specifier: ^4.2.2 version: 4.2.2 tinyglobby: specifier: ^0.2.15 version: 0.2.15 + ts-dedent: + specifier: ^2.2.0 + version: 2.2.0 + ts-morph: + specifier: ^27.0.2 + version: 27.0.2 tsdown: specifier: ^0.21.5 version: 0.21.7 @@ -159,12 +477,45 @@ catalogs: typescript: specifier: 6.0.2 version: 6.0.2 + typescript-eslint: + specifier: ^8.57.2 + version: 8.58.0 + ufo: + specifier: ^1.6.3 + version: 1.6.3 + valibot: + specifier: ^1.3.1 + version: 1.3.1 + vite: + specifier: ^8.0.3 + version: 8.0.3 + vite-plugin-eslint: + specifier: ^1.8.1 + version: 1.8.1 + vite-plugin-inspect: + specifier: 12.0.0-beta.1 + version: 12.0.0-beta.1 + vite-tsconfig-paths: + specifier: ^7.0.0-alpha.1 + version: 7.0.0-alpha.1 vitefu: specifier: ^1.1.2 version: 1.1.3 + vitest: + specifier: 4.1.2 + version: 4.1.2 + xhr2: + specifier: ^0.2.1 + version: 0.2.1 xmlbuilder2: specifier: ^4.0.3 version: 4.0.3 + zod: + specifier: ^4.3.6 + version: 4.3.6 + zone.js: + specifier: ^0.16.1 + version: 0.16.1 peerAngular20Plus: '@angular/animations': specifier: '>=20.0.0' @@ -273,40 +624,40 @@ importers: .: dependencies: '@angular/animations': - specifier: 21.2.6 + specifier: 'catalog:' version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/cdk': - specifier: 21.2.4 + specifier: 'catalog:' version: 21.2.4(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/common': - specifier: 21.2.6 + specifier: 'catalog:' version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) '@angular/compiler': - specifier: 21.2.6 + specifier: 'catalog:' version: 21.2.6 '@angular/core': - specifier: 21.2.6 + specifier: 'catalog:' version: 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) '@angular/forms': - specifier: 21.2.6 + specifier: 'catalog:' version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/material': - specifier: 21.2.4 + specifier: 'catalog:' version: 21.2.4(2045f7bd5f6e95e11cc97fff9a766245) '@angular/platform-browser': - specifier: 21.2.6 + specifier: 'catalog:' version: 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) '@angular/platform-browser-dynamic': - specifier: 21.2.6 + specifier: 'catalog:' version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))) '@angular/platform-server': - specifier: ~21.2.6 + specifier: 'catalog:' version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/router': - specifier: 21.2.6 + specifier: 'catalog:' version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) '@angular/ssr': - specifier: 21.2.4 + specifier: 'catalog:' version: 21.2.4(7413267c1883f3ede58570ed37d43fb5) '@astrojs/mdx': specifier: 'catalog:' @@ -315,7 +666,7 @@ importers: specifier: 'catalog:' version: 5.0.2(@types/node@25.5.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) '@mdx-js/react': - specifier: 3.1.1 + specifier: 'catalog:' version: 3.1.1(@types/react@19.2.14)(react@19.2.4) '@nx/angular': specifier: 'catalog:' @@ -330,19 +681,19 @@ importers: specifier: 'catalog:' version: 4.2.2 '@tanstack/angular-query-experimental': - specifier: ^5.95.2 + specifier: 'catalog:' version: 5.96.2(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) '@tanstack/query-core': - specifier: ^5.95.2 + specifier: 'catalog:' version: 5.96.2 ajv-formats: - specifier: ^3.0.1 + specifier: 'catalog:' version: 3.0.1(ajv@8.18.0) defu: specifier: 'catalog:' version: 6.1.6 destr: - specifier: ^2.0.5 + specifier: 'catalog:' version: 2.0.5 front-matter: specifier: 'catalog:' @@ -357,7 +708,7 @@ importers: specifier: 'catalog:' version: 2.2.3(marked@17.0.5) mermaid: - specifier: ^11.13.0 + specifier: 'catalog:' version: 11.14.0 radix3: specifier: 'catalog:' @@ -369,86 +720,86 @@ importers: specifier: 'catalog:' version: 19.2.4(react@19.2.4) rehype: - specifier: ^13.0.2 + specifier: 'catalog:' version: 13.0.2 rxjs: - specifier: 7.8.2 + specifier: 'catalog:' version: 7.8.2 semver: - specifier: ^7.7.4 + specifier: 'catalog:' version: 7.7.4 tslib: - specifier: ^2.8.1 + specifier: 'catalog:' version: 2.8.1 ufo: - specifier: ^1.6.3 + specifier: 'catalog:' version: 1.6.3 valibot: - specifier: ^1.3.1 + specifier: 'catalog:' version: 1.3.1(typescript@6.0.2) xhr2: - specifier: ^0.2.1 + specifier: 'catalog:' version: 0.2.1 zod: - specifier: ^4.3.6 + specifier: 'catalog:' version: 4.3.6 zone.js: - specifier: ^0.16.1 + specifier: 'catalog:' version: 0.16.1 devDependencies: '@angular-devkit/architect': - specifier: 0.2102.6 + specifier: 'catalog:' version: 0.2102.6(chokidar@5.0.0) '@angular-devkit/build-angular': - specifier: 21.2.4 + specifier: 'catalog:' version: 21.2.4(add8bde166a9c825117621996a363ef3) '@angular-devkit/core': - specifier: 21.2.4 + specifier: 'catalog:' version: 21.2.4(chokidar@5.0.0) '@angular-devkit/schematics': - specifier: 21.2.4 + specifier: 'catalog:' version: 21.2.4(chokidar@5.0.0) '@angular-eslint/eslint-plugin': - specifier: 21.3.1 + specifier: 'catalog:' version: 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@angular-eslint/eslint-plugin-template': - specifier: 21.3.1 + specifier: 'catalog:' version: 21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@angular-eslint/template-parser': - specifier: 21.3.1 + specifier: 'catalog:' version: 21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@angular/build': - specifier: 21.2.4 + specifier: 'catalog:' version: 21.2.4(d177fe19ad80c073ee03544d343f9ed0) '@angular/cli': - specifier: 21.2.4 + specifier: 'catalog:' version: 21.2.4(@types/node@25.5.2)(chokidar@5.0.0) '@angular/compiler-cli': - specifier: 21.2.6 + specifier: 'catalog:' version: 21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2) '@angular/language-service': - specifier: 21.2.6 + specifier: 'catalog:' version: 21.2.6 '@astrojs/markdown-component': - specifier: ^1.0.5 + specifier: 'catalog:' version: 1.0.5 '@commitlint/cli': - specifier: ^20.5.0 + specifier: 'catalog:' version: 20.5.0(@types/node@25.5.2)(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)(typescript@6.0.2) '@commitlint/config-conventional': - specifier: ^20.5.0 + specifier: 'catalog:' version: 20.5.0 '@compodoc/compodoc': - specifier: ^1.2.1 + specifier: 'catalog:' version: 1.2.1(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)(keycharm@0.4.0)(typescript@6.0.2)(vis-data@8.0.3(uuid@11.1.0)(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)))(vis-util@6.0.0(@egjs/hammerjs@2.0.17)(component-emitter@2.0.0)) '@eslint/eslintrc': - specifier: ^3.3.5 + specifier: 'catalog:' version: 3.3.5 '@eslint/js': - specifier: ^10.0.1 + specifier: 'catalog:' version: 10.0.1(eslint@10.2.0(jiti@2.6.1)) '@netlify/functions': - specifier: ^5.1.5 + specifier: 'catalog:' version: 5.1.5 '@nx/eslint': specifier: 'catalog:' @@ -478,37 +829,37 @@ importers: specifier: 'catalog:' version: 22.7.0-beta.10(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@oxc-angular/vite': - specifier: ^0.0.22 + specifier: 'catalog:' version: 0.0.22(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) '@oxc-project/runtime': - specifier: ^0.123.0 + specifier: 'catalog:' version: 0.123.0 '@playwright/test': - specifier: ^1.58.2 + specifier: 'catalog:' version: 1.59.1 '@schematics/angular': - specifier: 21.2.4 + specifier: 'catalog:' version: 21.2.4(chokidar@5.0.0) '@semantic-release/changelog': - specifier: ^6.0.3 + specifier: 'catalog:' version: 6.0.3(semantic-release@25.0.3(typescript@6.0.2)) '@semantic-release/exec': - specifier: ^7.1.0 + specifier: 'catalog:' version: 7.1.0(semantic-release@25.0.3(typescript@6.0.2)) '@semantic-release/git': - specifier: ^10.0.1 + specifier: 'catalog:' version: 10.0.1(semantic-release@25.0.3(typescript@6.0.2)) '@storybook/addon-docs': - specifier: ^10.3.3 + specifier: 'catalog:' version: 10.3.4(@types/react@19.2.14)(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) '@storybook/addon-links': - specifier: ^10.3.3 + specifier: 'catalog:' version: 10.3.4(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) '@storybook/addon-vitest': - specifier: ^10.3.3 + specifier: 'catalog:' version: 10.3.4(@vitest/browser-playwright@4.1.2)(@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2))(@vitest/runner@4.1.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vitest@4.1.2) '@storybook/angular': - specifier: 10.3.3 + specifier: 'catalog:' version: 10.3.3(bc89a49b7ef7c3b0ebc444702278ad2d) '@storybook/builder-vite': specifier: catalog:peerStorybook10 @@ -526,49 +877,49 @@ importers: specifier: 'catalog:' version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) '@types/hast': - specifier: ^3.0.4 + specifier: 'catalog:' version: 3.0.4 '@types/node': - specifier: ^25.5.0 + specifier: 'catalog:' version: 25.5.2 '@types/prismjs': - specifier: ^1.26.6 + specifier: 'catalog:' version: 1.26.6 '@types/react': - specifier: ^19.2.14 + specifier: 'catalog:' version: 19.2.14 '@types/react-dom': - specifier: ^19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.14) '@types/semver': - specifier: ^7.7.1 + specifier: 'catalog:' version: 7.7.1 '@typescript-eslint/eslint-plugin': - specifier: 8.58.0 + specifier: 'catalog:' version: 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@typescript-eslint/parser': - specifier: 8.58.0 + specifier: 'catalog:' version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@typescript-eslint/type-utils': - specifier: 8.58.0 + specifier: 'catalog:' version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@typescript-eslint/utils': - specifier: ^8.57.2 + specifier: 'catalog:' version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@vitest/browser-playwright': - specifier: 4.1.2 + specifier: 'catalog:' version: 4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) '@vitest/coverage-v8': - specifier: 4.1.2 + specifier: 'catalog:' version: 4.1.2(@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2))(vitest@4.1.2) '@vitest/ui': - specifier: 4.1.2 + specifier: 'catalog:' version: 4.1.2(vitest@4.1.2) ajv: - specifier: ^8.18.0 + specifier: 'catalog:' version: 8.18.0 all-contributors-cli: - specifier: ^6.26.1 + specifier: 'catalog:' version: 6.26.1(encoding@0.1.13) angular-eslint: specifier: 'catalog:' @@ -577,67 +928,67 @@ importers: specifier: 'catalog:' version: 6.1.1(@types/node@25.5.2)(db0@0.3.4)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(rollup@4.60.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.2)(yaml@2.8.3) conventional-changelog: - specifier: ^7.2.0 + specifier: 'catalog:' version: 7.2.0(conventional-commits-filter@5.0.0) cpy-cli: - specifier: ^7.0.0 + specifier: 'catalog:' version: 7.0.0 effect: - specifier: 4.0.0-beta.36 + specifier: 'catalog:' version: 4.0.0-beta.36 eslint: - specifier: ^10.1.0 + specifier: 'catalog:' version: 10.2.0(jiti@2.6.1) eslint-config-prettier: - specifier: 10.1.8 + specifier: 'catalog:' version: 10.1.8(eslint@10.2.0(jiti@2.6.1)) eslint-plugin-oxlint: - specifier: ^1.57.0 + specifier: 'catalog:' version: 1.58.0(oxlint@1.58.0(oxlint-tsgolint@0.19.0)) eslint-plugin-playwright: - specifier: ^2.10.1 + specifier: 'catalog:' version: 2.10.1(eslint@10.2.0(jiti@2.6.1)) eslint-plugin-storybook: - specifier: 10.3.3 + specifier: 'catalog:' version: 10.3.3(eslint@10.2.0(jiti@2.6.1))(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2) execa: - specifier: ^9.6.1 + specifier: 'catalog:' version: 9.6.1 fast-glob: - specifier: ^3.3.3 + specifier: 'catalog:' version: 3.3.3 fd-package-json: - specifier: ^2.0.0 + specifier: 'catalog:' version: 2.0.0 find-up: - specifier: ^8.0.0 + specifier: 'catalog:' version: 8.0.0 fs-extra: - specifier: ^11.3.4 + specifier: 'catalog:' version: 11.3.4 happy-dom: - specifier: ^20.8.9 + specifier: 'catalog:' version: 20.8.9 jiti: - specifier: 2.6.1 + specifier: 'catalog:' version: 2.6.1 jsdom: - specifier: 29.0.1 + specifier: 'catalog:' version: 29.0.1 jsonc-eslint-parser: - specifier: ^3.1.0 + specifier: 'catalog:' version: 3.1.0 jsonc-parser: - specifier: 3.3.1 + specifier: 'catalog:' version: 3.3.1 kolorist: - specifier: ^1.8.0 + specifier: 'catalog:' version: 1.8.0 less: - specifier: 4.6.4 + specifier: 'catalog:' version: 4.6.4 lint-staged: - specifier: ^16.4.0 + specifier: 'catalog:' version: 16.4.0 marked-mangle: specifier: 'catalog:' @@ -646,13 +997,13 @@ importers: specifier: 'catalog:' version: 1.2.1(marked@17.0.5)(shiki@4.0.2) md4x: - specifier: ^0.0.25 + specifier: 'catalog:' version: 0.0.25 minimist: - specifier: ^1.2.8 + specifier: 'catalog:' version: 1.2.8 ng-packagr: - specifier: 21.2.1 + specifier: 'catalog:' version: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) nitro: specifier: 'catalog:' @@ -661,7 +1012,7 @@ importers: specifier: 'catalog:' version: 22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21)) obug: - specifier: ^2.1.1 + specifier: 'catalog:' version: 2.1.1 ofetch: specifier: 'catalog:' @@ -676,19 +1027,19 @@ importers: specifier: 'catalog:' version: 0.123.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) oxlint: - specifier: ^1.57.0 + specifier: 'catalog:' version: 1.58.0(oxlint-tsgolint@0.19.0) oxlint-tsgolint: - specifier: ^0.19.0 + specifier: 'catalog:' version: 0.19.0 playwright: - specifier: ^1.58.2 + specifier: 'catalog:' version: 1.59.1 postcss: - specifier: ^8.5.8 + specifier: 'catalog:' version: 8.5.8 prettier: - specifier: ^3.8.1 + specifier: 'catalog:' version: 3.8.1 prismjs: specifier: 'catalog:' @@ -700,22 +1051,22 @@ importers: specifier: 'catalog:' version: 1.0.0-rc.13 rolldown-plugin-dts: - specifier: ^0.23.0 + specifier: 'catalog:' version: 0.23.2(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@1.0.0-rc.13)(typescript@6.0.2) rollup: - specifier: ^4.60.0 + specifier: 'catalog:' version: 4.60.1 rollup-plugin-visualizer: - specifier: ^7.0.1 + specifier: 'catalog:' version: 7.0.1(rolldown@1.0.0-rc.13)(rollup@4.60.1) sass: - specifier: 1.99.0 + specifier: 'catalog:' version: 1.99.0 sass-embedded: - specifier: 1.99.0 + specifier: 'catalog:' version: 1.99.0 satori: - specifier: ^0.26.0 + specifier: 'catalog:' version: 0.26.0 satori-html: specifier: 'catalog:' @@ -724,10 +1075,10 @@ importers: specifier: 'catalog:' version: 2.0.0(typescript@6.0.2) semantic-release: - specifier: ^25.0.3 + specifier: 'catalog:' version: 25.0.3(typescript@6.0.2) semantic-release-replace-plugin: - specifier: ^1.2.7 + specifier: 'catalog:' version: 1.2.7(semantic-release@25.0.3(typescript@6.0.2)) sharp: specifier: 'catalog:' @@ -736,10 +1087,10 @@ importers: specifier: 'catalog:' version: 4.0.2 start-server-and-test: - specifier: ^3.0.0 + specifier: 'catalog:' version: 3.0.0 storybook: - specifier: 10.3.3 + specifier: 'catalog:' version: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tailwindcss: specifier: 'catalog:' @@ -748,10 +1099,10 @@ importers: specifier: 'catalog:' version: 0.2.15 ts-dedent: - specifier: ^2.2.0 + specifier: 'catalog:' version: 2.2.0 ts-morph: - specifier: ^27.0.2 + specifier: 'catalog:' version: 27.0.2 tsdown: specifier: 'catalog:' @@ -760,25 +1111,25 @@ importers: specifier: 'catalog:' version: 6.0.2 typescript-eslint: - specifier: ^8.57.2 + specifier: 'catalog:' version: 8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) vite: - specifier: ^8.0.3 + specifier: 'catalog:' version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) vite-plugin-eslint: - specifier: ^1.8.1 + specifier: 'catalog:' version: 1.8.1(eslint@10.2.0(jiti@2.6.1))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) vite-plugin-inspect: - specifier: 12.0.0-beta.1 + specifier: 'catalog:' version: 12.0.0-beta.1(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(ws@8.20.0) vite-tsconfig-paths: - specifier: ^7.0.0-alpha.1 + specifier: 'catalog:' version: 7.0.0-alpha.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) vitefu: specifier: 'catalog:' version: 1.1.3(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) vitest: - specifier: 4.1.2 + specifier: 'catalog:' version: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) xmlbuilder2: specifier: 'catalog:' @@ -1004,7 +1355,7 @@ importers: version: 2.8.1 vite: specifier: catalog:peerCompat - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3) packages/content: dependencies: @@ -1111,7 +1462,7 @@ importers: version: link:../vite-plugin-nitro '@nx/angular': specifier: catalog:peerCompat - version: 22.6.2(2a579566a2f9025e1fc42cc56ec7d2ef) + version: 22.6.2(471fad38a868a22111c123225b52bfe1) '@nx/devkit': specifier: catalog:peerCompat version: 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) @@ -1202,7 +1553,7 @@ importers: version: 2.4.0(@angular-devkit/build-angular@21.2.4(add8bde166a9c825117621996a363ef3))(@angular/build@21.2.4(d177fe19ad80c073ee03544d343f9ed0)) '@storybook/angular': specifier: catalog:peerStorybook10 - version: 10.3.3(975f11fc86a5e94c9ef15edca002f86b) + version: 10.3.3(bc89a49b7ef7c3b0ebc444702278ad2d) '@storybook/builder-vite': specifier: catalog:peerStorybook10 version: 10.3.4(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)) @@ -16526,7 +16877,7 @@ snapshots: '@angular-eslint/builder@21.3.1(@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - '@angular-devkit/core': 21.2.4(chokidar@5.0.0) + '@angular-devkit/core': 21.2.6(chokidar@5.0.0) '@angular/cli': 21.2.4(@types/node@25.5.2)(chokidar@5.0.0) eslint: 10.2.0(jiti@2.6.1) typescript: 6.0.2 @@ -16558,7 +16909,7 @@ snapshots: '@angular-eslint/schematics@21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(chokidar@5.0.0)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2)': dependencies: - '@angular-devkit/core': 21.2.4(chokidar@5.0.0) + '@angular-devkit/core': 21.2.6(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.4(chokidar@5.0.0) '@angular-eslint/eslint-plugin': 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@angular-eslint/eslint-plugin-template': 21.3.1(@angular-eslint/template-parser@21.3.1(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(@typescript-eslint/types@8.58.0)(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) @@ -16754,7 +17105,7 @@ snapshots: ng-packagr: 21.2.1(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2))(tailwindcss@4.2.2)(tslib@2.8.1)(typescript@6.0.2) postcss: 8.5.8 tailwindcss: 4.2.2 - vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -19705,7 +20056,7 @@ snapshots: '@docusaurus/react-loadable@6.0.0(react@19.2.4)': dependencies: - '@types/react': 19.2.14 + '@types/react': 18.3.28 react: 19.2.4 '@docusaurus/theme-classic@3.9.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@types/react@18.3.28)(esbuild@0.27.7)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': @@ -21275,9 +21626,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@nx/angular@22.6.2(2a579566a2f9025e1fc42cc56ec7d2ef)': + '@nx/angular@22.6.2(471fad38a868a22111c123225b52bfe1)': dependencies: - '@angular-devkit/core': 21.2.6(chokidar@5.0.0) + '@angular-devkit/core': 21.2.4(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.4(chokidar@5.0.0) '@nx/devkit': 22.6.2(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) '@nx/eslint': 22.6.2(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@10.2.0(jiti@2.6.1))(nx@22.7.0-beta.10(@swc-node/register@1.11.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@swc/core@1.15.24(@swc/helpers@0.5.21))(@swc/types@0.1.26)(typescript@6.0.2))(@swc/core@1.15.24(@swc/helpers@0.5.21))) @@ -23435,37 +23786,6 @@ snapshots: - react - react-dom - '@storybook/angular@10.3.3(975f11fc86a5e94c9ef15edca002f86b)': - dependencies: - '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) - '@angular-devkit/build-angular': 21.2.4(add8bde166a9c825117621996a363ef3) - '@angular-devkit/core': 21.2.6(chokidar@5.0.0) - '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/compiler': 21.2.6 - '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@6.0.2) - '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) - '@angular/platform-browser-dynamic': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.2.6(@angular/animations@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1))) - '@storybook/builder-webpack5': 10.3.3(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@6.0.2) - '@storybook/global': 5.0.0 - rxjs: 7.8.2 - storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - telejson: 8.0.0 - ts-dedent: 2.2.0 - tsconfig-paths-webpack-plugin: 4.2.0 - typescript: 6.0.2 - webpack: 5.105.4(@swc/core@1.15.24(@swc/helpers@0.5.21))(esbuild@0.27.7) - optionalDependencies: - '@angular/animations': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)(zone.js@0.16.1)) - '@angular/cli': 21.2.4(@types/node@25.5.2)(chokidar@5.0.0) - zone.js: 0.16.1 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - '@storybook/angular@10.3.3(bc89a49b7ef7c3b0ebc444702278ad2d)': dependencies: '@angular-devkit/architect': 0.2102.6(chokidar@5.0.0) @@ -24302,7 +24622,7 @@ snapshots: '@typescript-eslint/project-service@8.57.2(typescript@6.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@6.0.2) + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) '@typescript-eslint/types': 8.58.0 debug: 4.4.3 typescript: 6.0.2 @@ -24552,20 +24872,6 @@ snapshots: - vite optional: true - '@vitest/browser-playwright@4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': - dependencies: - '@vitest/browser': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) - '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) - playwright: 1.59.1 - tinyrainbow: 3.1.0 - vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - optional: true - '@vitest/browser-playwright@4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': dependencies: '@vitest/browser': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) @@ -24597,24 +24903,6 @@ snapshots: - vite optional: true - '@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': - dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) - '@vitest/utils': 4.1.2 - magic-string: 0.30.21 - pngjs: 7.0.0 - sirv: 3.0.2 - tinyrainbow: 3.1.0 - vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) - ws: 8.20.0 - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - optional: true - '@vitest/browser@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2)': dependencies: '@blazediff/core': 1.9.1 @@ -24674,14 +24962,6 @@ snapshots: vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) optional: true - '@vitest/mocker@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))': - dependencies: - '@vitest/spy': 4.1.2 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) - '@vitest/mocker@4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 @@ -24725,7 +25005,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) + vitest: 4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) '@vitest/utils@3.2.4': dependencies: @@ -24977,7 +25257,7 @@ snapshots: angular-eslint@21.3.1(@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@10.2.0(jiti@2.6.1))(typescript-eslint@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(typescript@6.0.2): dependencies: - '@angular-devkit/core': 21.2.4(chokidar@5.0.0) + '@angular-devkit/core': 21.2.6(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.4(chokidar@5.0.0) '@angular-eslint/builder': 21.3.1(@angular/cli@21.2.4(@types/node@25.5.2)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) '@angular-eslint/eslint-plugin': 21.3.1(@typescript-eslint/utils@8.58.0(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) @@ -27512,10 +27792,6 @@ snapshots: dependencies: walk-up-path: 4.0.0 - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 @@ -34291,9 +34567,9 @@ snapshots: vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.3): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.8 rollup: 4.60.1 tinyglobby: 0.2.15 @@ -34310,9 +34586,9 @@ snapshots: vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.8 rollup: 4.60.1 tinyglobby: 0.2.15 @@ -34329,9 +34605,9 @@ snapshots: vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.8 rollup: 4.60.1 tinyglobby: 0.2.15 @@ -34348,9 +34624,9 @@ snapshots: vite@7.3.1(@types/node@25.5.2)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.8 rollup: 4.60.1 tinyglobby: 0.2.15 @@ -34387,27 +34663,6 @@ snapshots: - '@emnapi/runtime' optional: true - vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3): - dependencies: - lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 25.5.2 - esbuild: 0.27.7 - fsevents: 2.3.3 - jiti: 2.6.1 - less: 4.6.4 - sass: 1.97.3 - sass-embedded: 1.99.0 - terser: 5.46.1 - yaml: 2.8.3 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 @@ -34469,37 +34724,6 @@ snapshots: - msw optional: true - vitest@4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)): - dependencies: - '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3)) - '@vitest/pretty-format': 4.1.2 - '@vitest/runner': 4.1.2 - '@vitest/snapshot': 4.1.2 - '@vitest/spy': 4.1.2 - '@vitest/utils': 4.1.2 - es-module-lexer: 2.0.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.1 - pathe: 2.0.3 - picomatch: 4.0.4 - std-env: 4.0.0 - tinybench: 2.9.0 - tinyexec: 1.0.4 - tinyglobby: 0.2.15 - tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 25.5.2 - '@vitest/browser-playwright': 4.1.2(playwright@1.59.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.2) - '@vitest/ui': 4.1.2(vitest@4.1.2) - happy-dom: 20.8.9 - jsdom: 29.0.1 - transitivePeerDependencies: - - msw - vitest@4.1.2(@types/node@25.5.2)(@vitest/browser-playwright@4.1.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(less@4.6.4)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index db14c33b5..05ba3d35c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -19,8 +19,22 @@ packages: - 'tests/*' catalog: + '@angular/animations': 21.2.6 + '@angular/cdk': 21.2.4 + '@angular/common': 21.2.6 + '@angular/compiler': 21.2.6 + '@angular/core': 21.2.6 + '@angular/forms': 21.2.6 + '@angular/material': 21.2.4 + '@angular/platform-browser': 21.2.6 + '@angular/platform-browser-dynamic': 21.2.6 + '@angular/platform-server': 21.2.6 + '@angular/router': 21.2.6 + '@angular/ssr': 21.2.4 '@astrojs/mdx': ^5.0.3 + '@astrojs/markdown-component': ^1.0.5 '@astrojs/react': ^5.0.2 + '@mdx-js/react': 3.1.1 '@nx/angular': 22.7.0-beta.10 '@nx/devkit': 22.7.0-beta.10 '@nx/eslint': 22.7.0-beta.10 @@ -32,22 +46,94 @@ catalog: '@nx/vite': 22.7.0-beta.10 '@nx/vitest': 22.7.0-beta.10 '@nx/web': 22.7.0-beta.10 + '@oxc-angular/vite': ^0.0.22 + '@oxc-project/runtime': ^0.123.0 + '@playwright/test': ^1.58.2 '@swc-node/register': ~1.11.1 '@swc/core': ~1.15.5 '@swc/helpers': ~0.5.18 '@tailwindcss/postcss': ^4.2.2 '@tailwindcss/vite': ^4.2.2 '@standard-schema/spec': ^1.1.0 + '@tanstack/angular-query-experimental': ^5.95.2 + '@tanstack/query-core': ^5.95.2 + '@types/hast': ^3.0.4 + '@types/node': ^25.5.0 + '@types/prismjs': ^1.26.6 + '@types/react': ^19.2.14 + '@types/react-dom': ^19.2.3 + '@types/semver': ^7.7.1 + '@vitest/browser-playwright': 4.1.2 + '@vitest/coverage-v8': 4.1.2 + '@vitest/ui': 4.1.2 + '@angular-devkit/architect': 0.2102.6 + '@angular-devkit/build-angular': 21.2.4 + '@angular-devkit/core': 21.2.4 + '@angular-devkit/schematics': 21.2.4 + '@angular-eslint/eslint-plugin': 21.3.1 + '@angular-eslint/eslint-plugin-template': 21.3.1 + '@angular-eslint/template-parser': 21.3.1 + '@angular/build': 21.2.4 + '@angular/cli': 21.2.4 + '@angular/compiler-cli': 21.2.6 + '@angular/language-service': 21.2.6 + '@commitlint/cli': ^20.5.0 + '@commitlint/config-conventional': ^20.5.0 + '@compodoc/compodoc': ^1.2.1 + '@eslint/eslintrc': ^3.3.5 + '@eslint/js': ^10.0.1 + '@netlify/functions': ^5.1.5 + '@schematics/angular': 21.2.4 + '@semantic-release/changelog': ^6.0.3 + '@semantic-release/exec': ^7.1.0 + '@semantic-release/git': ^10.0.1 + '@storybook/addon-docs': ^10.3.3 + '@storybook/addon-links': ^10.3.3 + '@storybook/addon-vitest': ^10.3.3 + '@storybook/angular': 10.3.3 + '@typescript-eslint/eslint-plugin': 8.58.0 + '@typescript-eslint/parser': 8.58.0 + '@typescript-eslint/type-utils': 8.58.0 + '@typescript-eslint/utils': ^8.57.2 + ajv: ^8.18.0 + ajv-formats: ^3.0.1 + all-contributors-cli: ^6.26.1 angular-eslint: ^21.2.0 astro: 6.1.1 + conventional-changelog: ^7.2.0 + cpy-cli: ^7.0.0 defu: ^6.1.4 + destr: ^2.0.5 + effect: 4.0.0-beta.36 + eslint: ^10.1.0 + eslint-config-prettier: 10.1.8 + eslint-plugin-oxlint: ^1.57.0 + eslint-plugin-playwright: ^2.10.1 + eslint-plugin-storybook: 10.3.3 front-matter: ^4.0.2 es-toolkit: ^1.45.1 + execa: ^9.6.1 + fast-glob: ^3.3.3 + fd-package-json: ^2.0.0 + find-up: ^8.0.0 + fs-extra: ^11.3.4 + happy-dom: ^20.8.9 + jiti: 2.6.1 + jsdom: 29.0.1 + jsonc-eslint-parser: ^3.1.0 + jsonc-parser: 3.3.1 + kolorist: ^1.8.0 + less: 4.6.4 + lint-staged: ^16.4.0 marked: ^17.0.5 marked-gfm-heading-id: ^4.1.3 marked-highlight: ^2.2.3 marked-mangle: ^1.1.12 marked-shiki: ^1.2.1 + md4x: ^0.0.25 + mermaid: ^11.13.0 + minimist: ^1.2.8 + ng-packagr: 21.2.1 nitro: 3.0.260311-beta nx: 22.7.0-beta.10 obug: ^2.1.1 @@ -55,23 +141,54 @@ catalog: oxc-parser: ^0.123.0 oxc-transform: ^0.123.0 oxc-resolver: ^11.19.1 + oxlint: ^1.57.0 + oxlint-tsgolint: ^0.19.0 + playwright: ^1.58.2 + postcss: ^8.5.8 + prettier: ^3.8.1 prismjs: ^1.30.0 prompts: ^2.4.2 radix3: ^1.1.2 react: ^19.2.4 react-dom: ^19.2.4 + rehype: ^13.0.2 + rollup: ^4.60.0 + rolldown-plugin-dts: ^0.23.0 + rollup-plugin-visualizer: ^7.0.1 rolldown: ^1.0.0-rc.13 + rxjs: 7.8.2 + sass: 1.99.0 + sass-embedded: 1.99.0 + satori: ^0.26.0 satori-html: ^0.3.2 schema-dts: ^2.0.0 + semver: ^7.7.4 + semantic-release: ^25.0.3 + semantic-release-replace-plugin: ^1.2.7 shiki: ^1.29.2 || ^4.0.2 sharp: ^0.34.5 + start-server-and-test: ^3.0.0 + storybook: 10.3.3 tslib: ^2.3.0 tinyglobby: ^0.2.15 tailwindcss: ^4.2.2 + ts-dedent: ^2.2.0 + ts-morph: ^27.0.2 tsdown: ^0.21.5 typescript: 6.0.2 + typescript-eslint: ^8.57.2 + ufo: ^1.6.3 + valibot: ^1.3.1 + vite: ^8.0.3 + vite-plugin-eslint: ^1.8.1 + vite-plugin-inspect: 12.0.0-beta.1 + vite-tsconfig-paths: ^7.0.0-alpha.1 vitefu: ^1.1.2 + vitest: 4.1.2 + xhr2: ^0.2.1 xmlbuilder2: ^4.0.3 + zod: ^4.3.6 + zone.js: ^0.16.1 catalogs: peerCompat: From fb701b8f333621335eb4a747ffa5b1c24466582c Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sun, 5 Apr 2026 00:13:13 -0400 Subject: [PATCH 27/33] docs: note Angular HMR version requirements --- apps/docs-app/docs/guides/migrating.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/docs-app/docs/guides/migrating.md b/apps/docs-app/docs/guides/migrating.md index 6c343b332..b49ebdb28 100644 --- a/apps/docs-app/docs/guides/migrating.md +++ b/apps/docs-app/docs/guides/migrating.md @@ -182,6 +182,7 @@ export default defineConfig(({ mode }) => ({ ## Enabling HMR Angular supports HMR where in most cases components can be updated without a full page reload. In Analog, prefer the `hmr` option. `liveReload` is still accepted as a compatibility alias, but `hmr` is the primary API. +Analog requires Angular v19 or newer for `hmr` / `liveReload` to work. On Angular v16-v18, `hmr` and its `liveReload` alias are forcibly disabled at runtime with a console warning, so HMR is unavailable on those versions. ```ts /// From 9c6a2966bac35fa85b7f6e6aa6c894459bb97d9c Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sun, 5 Apr 2026 00:13:22 -0400 Subject: [PATCH 28/33] fix: harden tailwind debug app HMR diagnostics --- .../tests/component-css-hmr.spec.ts | 2 +- apps/tailwind-debug-app/project.json | 1 + .../src/app/app.component.css | 1 + .../src/app/debug/debug-stream.service.ts | 23 ++++++++++++++++--- .../src/app/debug/hmr-diagnostics.ts | 18 +++++++++++++-- .../probes/debug-stream-panel.component.ts | 7 +++++- .../app/probes/style-probe.component.spec.ts | 2 +- 7 files changed, 46 insertions(+), 8 deletions(-) diff --git a/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts b/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts index dcb63b2a5..d61eb4d8f 100644 --- a/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts +++ b/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts @@ -44,7 +44,7 @@ test.beforeEach(() => { }); test.afterAll(() => { - replaceProbeColor(BLUE_CLASS); + writeFileSync(STYLE_PROBE_CSS_PATH, ORIGINAL_CSS, 'utf8'); }); test('updates the component stylesheet without a full reload', async ({ diff --git a/apps/tailwind-debug-app/project.json b/apps/tailwind-debug-app/project.json index 40fa6cb44..88cb43d21 100644 --- a/apps/tailwind-debug-app/project.json +++ b/apps/tailwind-debug-app/project.json @@ -42,6 +42,7 @@ }, "serve-nitro": { "executor": "nx:run-commands", + "dependsOn": ["build"], "options": { "cwd": "dist/apps/tailwind-debug-app/analog", "command": "node --unhandled-rejections=throw ./server/index.mjs", diff --git a/apps/tailwind-debug-app/src/app/app.component.css b/apps/tailwind-debug-app/src/app/app.component.css index 90569726d..9f2740f06 100644 --- a/apps/tailwind-debug-app/src/app/app.component.css +++ b/apps/tailwind-debug-app/src/app/app.component.css @@ -1,3 +1,4 @@ +/* stylelint-disable-next-line scss/at-rule-no-unknown */ @reference "../styles.css"; .shell { diff --git a/apps/tailwind-debug-app/src/app/debug/debug-stream.service.ts b/apps/tailwind-debug-app/src/app/debug/debug-stream.service.ts index f37462110..a0c855108 100644 --- a/apps/tailwind-debug-app/src/app/debug/debug-stream.service.ts +++ b/apps/tailwind-debug-app/src/app/debug/debug-stream.service.ts @@ -19,11 +19,28 @@ import { const STREAM_LIMIT = 200; +function mergeUniqueEntries( + entries: readonly TailwindDebugEventEntry[], +): TailwindDebugEventEntry[] { + const seen = new Set(); + const merged: TailwindDebugEventEntry[] = []; + + for (const entry of entries) { + if (seen.has(entry.id)) { + continue; + } + seen.add(entry.id); + merged.push(entry); + } + + return merged.slice(-STREAM_LIMIT); +} + function appendEntry( entries: readonly TailwindDebugEventEntry[], nextEntry: TailwindDebugEventEntry, ) { - return [...entries, nextEntry].slice(-STREAM_LIMIT); + return mergeUniqueEntries([...entries, nextEntry]); } @Injectable({ providedIn: 'root' }) @@ -148,7 +165,7 @@ export class TailwindDebugStreamService { (entry) => entry.clientId !== this.clientId, ); this.entries.update((entries) => - [...entries, ...serverEntries].slice(-STREAM_LIMIT), + mergeUniqueEntries([...entries, ...serverEntries]), ); } @@ -191,7 +208,7 @@ export class TailwindDebugStreamService { const seededEntries = [...previousEntries, ...sessionEntries].map( (breadcrumb) => toBrowserEntry(breadcrumb, this.clientId), ); - this.entries.set(seededEntries.slice(-STREAM_LIMIT)); + this.entries.set(mergeUniqueEntries(seededEntries)); } private send(message: TailwindDebugSocketMessage) { diff --git a/apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.ts b/apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.ts index 654d26081..498d6b025 100644 --- a/apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.ts +++ b/apps/tailwind-debug-app/src/app/debug/hmr-diagnostics.ts @@ -82,7 +82,14 @@ export function writeStoredBreadcrumbs( breadcrumbs: readonly HmrBreadcrumb[], key = BREADCRUMB_KEY, ) { - storage.setItem(key, JSON.stringify(breadcrumbs)); + try { + storage.setItem(key, JSON.stringify(breadcrumbs)); + } catch (error) { + console.warn('[tailwind-debug-app] failed to persist breadcrumbs', { + error, + key, + }); + } } function readBootCount(storage: Pick): number { @@ -92,7 +99,14 @@ function readBootCount(storage: Pick): number { } function writeBootCount(storage: Pick, count: number) { - storage.setItem(BOOT_COUNT_KEY, String(count)); + try { + storage.setItem(BOOT_COUNT_KEY, String(count)); + } catch (error) { + console.warn('[tailwind-debug-app] failed to persist boot count', { + error, + key: BOOT_COUNT_KEY, + }); + } } export function setupBrowserDiagnostics( diff --git a/apps/tailwind-debug-app/src/app/probes/debug-stream-panel.component.ts b/apps/tailwind-debug-app/src/app/probes/debug-stream-panel.component.ts index 3085c378b..ff241a2df 100644 --- a/apps/tailwind-debug-app/src/app/probes/debug-stream-panel.component.ts +++ b/apps/tailwind-debug-app/src/app/probes/debug-stream-panel.component.ts @@ -58,7 +58,7 @@ const ALL_SOURCES: TailwindDebugSource[] = [ @@ -547,4 +547,9 @@ export class DebugStreamPanelComponent { [source]: !sources[source], })); } + + clearEntries() { + this.stream.clear(); + this.frozenEntries.set([]); + } } diff --git a/apps/tailwind-debug-app/src/app/probes/style-probe.component.spec.ts b/apps/tailwind-debug-app/src/app/probes/style-probe.component.spec.ts index 9f401ccd2..1284d86dc 100644 --- a/apps/tailwind-debug-app/src/app/probes/style-probe.component.spec.ts +++ b/apps/tailwind-debug-app/src/app/probes/style-probe.component.spec.ts @@ -20,7 +20,7 @@ describe('StyleProbeComponent', () => { ); }); - it('preserves local state across css-only assertions', () => { + it('increments and displays click count', () => { const fixture = TestBed.createComponent(StyleProbeComponent); fixture.componentInstance.increment(); fixture.detectChanges(); From 779c9c8f4ed104422a11df44dd1599af685f79ea Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sun, 5 Apr 2026 00:13:33 -0400 Subject: [PATCH 29/33] fix(platform): refresh route diagnostics on route graph changes --- packages/platform/src/lib/content-plugin.ts | 2 +- .../platform/src/lib/router-plugin.spec.ts | 58 +++++++++++++++++++ packages/platform/src/lib/router-plugin.ts | 11 +++- packages/platform/src/lib/utils/debug.spec.ts | 2 + 4 files changed, 70 insertions(+), 3 deletions(-) diff --git a/packages/platform/src/lib/content-plugin.ts b/packages/platform/src/lib/content-plugin.ts index 92fd4bbf0..707369891 100644 --- a/packages/platform/src/lib/content-plugin.ts +++ b/packages/platform/src/lib/content-plugin.ts @@ -194,7 +194,7 @@ export function contentPlugin( server.ws.send('analog:debug-full-reload', { plugin: 'platform:content-plugin', reason: 'content-file-set-changed', - path, + path: normalizedPath, }); server.ws.send({ type: 'full-reload', diff --git a/packages/platform/src/lib/router-plugin.spec.ts b/packages/platform/src/lib/router-plugin.spec.ts index d8e92bca4..b4c8758cb 100644 --- a/packages/platform/src/lib/router-plugin.spec.ts +++ b/packages/platform/src/lib/router-plugin.spec.ts @@ -181,6 +181,64 @@ describe('routerPlugin', () => { expect(send).toHaveBeenCalledWith({ type: 'full-reload' }); }); + it('rescans all page diagnostics when a route file is added', () => { + vi.mocked(globSync).mockReturnValue([ + '/src/app/pages/products.page.ts', + '/src/app/pages/products/[id].page.ts', + ]); + + const { on } = configureServer(); + + vi.mocked(analyzeAnalogRouteFile).mockClear(); + + const addHandler = on.mock.calls.find( + ([eventName]) => eventName === 'add', + )?.[1]; + + expect(addHandler).toBeTypeOf('function'); + + addHandler('/src/app/pages/hot-added.page.ts'); + + expect(vi.mocked(analyzeAnalogRouteFile).mock.calls).toHaveLength(2); + expect( + vi + .mocked(analyzeAnalogRouteFile) + .mock.calls.map(([args]) => args.filename), + ).toEqual([ + '/src/app/pages/products.page.ts', + '/src/app/pages/products/[id].page.ts', + ]); + }); + + it('rescans all remaining page diagnostics when a route file is removed', () => { + vi.mocked(globSync).mockReturnValue([ + '/src/app/pages/products.page.ts', + '/src/app/pages/products/[id].page.ts', + ]); + + const { on } = configureServer(); + + vi.mocked(analyzeAnalogRouteFile).mockClear(); + + const unlinkHandler = on.mock.calls.find( + ([eventName]) => eventName === 'unlink', + )?.[1]; + + expect(unlinkHandler).toBeTypeOf('function'); + + unlinkHandler('/src/app/pages/removed.page.ts'); + + expect(vi.mocked(analyzeAnalogRouteFile).mock.calls).toHaveLength(2); + expect( + vi + .mocked(analyzeAnalogRouteFile) + .mock.calls.map(([args]) => args.filename), + ).toEqual([ + '/src/app/pages/products.page.ts', + '/src/app/pages/products/[id].page.ts', + ]); + }); + describe('transform - key normalization', () => { const workspaceRoot = '/home/user/workspace'; const appRoot = `${workspaceRoot}/apps/my-app`; diff --git a/packages/platform/src/lib/router-plugin.ts b/packages/platform/src/lib/router-plugin.ts index 00a7b882a..8de32b396 100644 --- a/packages/platform/src/lib/router-plugin.ts +++ b/packages/platform/src/lib/router-plugin.ts @@ -236,10 +236,17 @@ export function routerPlugin(options?: Options): Plugin[] { invalidateDiscoveryCaches(); } - if (event === 'unlink') { + if (event === 'change') { + reportRouteDiagnostics(path); + } else if (event === 'unlink') { routeDiagnosticCache.delete(path); + discoverPageRouteFiles().forEach((file) => + reportRouteDiagnostics(file), + ); } else { - reportRouteDiagnostics(path); + discoverPageRouteFiles().forEach((file) => + reportRouteDiagnostics(file), + ); } invalidateFileModules(server, path); diff --git a/packages/platform/src/lib/utils/debug.spec.ts b/packages/platform/src/lib/utils/debug.spec.ts index 4d7c5584e..ca811e14c 100644 --- a/packages/platform/src/lib/utils/debug.spec.ts +++ b/packages/platform/src/lib/utils/debug.spec.ts @@ -116,6 +116,8 @@ describe('applyDebugOption logFile (platform)', () => { it('uses provided workspaceRoot for file path', () => { applyDebugOption({ logFile: true }, '/custom/root'); const callArgs = vi.mocked(wrapInstancesForFileLog).mock.calls[0]; + expect(Array.isArray(callArgs[0])).toBe(true); + expect(callArgs[0].length).toBeGreaterThan(0); expect(callArgs[1]).toContain('/custom/root'); }); From c37ff35f2f36132a5a5ae4f594b9fbda3077bd52 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sun, 5 Apr 2026 00:13:38 -0400 Subject: [PATCH 30/33] fix(vite-plugin-angular): restrict metadata extraction to component decorators --- .../src/lib/component-resolvers.spec.ts | 25 +++++++ .../src/lib/component-resolvers.ts | 71 +++++++++++++------ 2 files changed, 73 insertions(+), 23 deletions(-) diff --git a/packages/vite-plugin-angular/src/lib/component-resolvers.spec.ts b/packages/vite-plugin-angular/src/lib/component-resolvers.spec.ts index ab9fc1c07..a1bd8ca45 100644 --- a/packages/vite-plugin-angular/src/lib/component-resolvers.spec.ts +++ b/packages/vite-plugin-angular/src/lib/component-resolvers.spec.ts @@ -414,6 +414,31 @@ describe('component-resolvers', () => { ]); }); + it('ignores template properties outside @Component decorators', () => { + const code = ` + const preview = { + template: '
Preview only
' + }; + + @Component({ + selector: 'demo-card', + template: '
Inline
' + }) + export class DemoCardComponent {} + `; + + expect(getInlineTemplates(code)).toEqual(['
Inline
']); + expect(getAngularComponentMetadata(code)).toEqual([ + { + className: 'DemoCardComponent', + selector: 'demo-card', + styleUrls: [], + templateUrls: [], + inlineTemplates: ['
Inline
'], + }, + ]); + }); + it('extracts component metadata for selector, class name, and templates', () => { const code = ` @Component({ diff --git a/packages/vite-plugin-angular/src/lib/component-resolvers.ts b/packages/vite-plugin-angular/src/lib/component-resolvers.ts index dd6e614ee..074009654 100644 --- a/packages/vite-plugin-angular/src/lib/component-resolvers.ts +++ b/packages/vite-plugin-angular/src/lib/component-resolvers.ts @@ -65,34 +65,59 @@ function collectComponentUrls(code: string): { const inlineTemplates: string[] = []; const visitor = new Visitor({ - // The Visitor callback receives raw ESTree nodes. We use `any` - // because OXC's AST includes non-standard node variants and the - // project tsconfig enforces `noPropertyAccessFromIndexSignature`. // eslint-disable-next-line @typescript-eslint/no-explicit-any - Property(node: any) { - if (node.key?.type !== 'Identifier') return; - const name: string = node.key.name; - - if (name === 'styleUrls' && node.value?.type === 'ArrayExpression') { - for (const el of node.value.elements) { - const val = getStringValue(el); - if (val !== undefined) styleUrls.push(val); + ClassDeclaration(node: any) { + const decorators = node.decorators ?? []; + for (const decorator of decorators) { + const expression = decorator.expression; + if ( + expression?.type !== 'CallExpression' || + expression.callee?.type !== 'Identifier' || + expression.callee.name !== 'Component' + ) { + continue; } - } - if (name === 'styleUrl') { - const val = getStringValue(node.value); - if (val !== undefined) styleUrls.push(val); - } + const componentArg = expression.arguments?.[0]; + if (componentArg?.type !== 'ObjectExpression') { + continue; + } - if (name === 'templateUrl') { - const val = getStringValue(node.value); - if (val !== undefined) templateUrls.push(val); - } + for (const property of componentArg.properties ?? []) { + if ( + property?.type !== 'Property' || + property.key?.type !== 'Identifier' + ) { + continue; + } + + const name = property.key.name; - if (name === 'template') { - const val = getStringValue(node.value); - if (val !== undefined) inlineTemplates.push(val); + if ( + name === 'styleUrls' && + property.value?.type === 'ArrayExpression' + ) { + for (const el of property.value.elements) { + const val = getStringValue(el); + if (val !== undefined) styleUrls.push(val); + } + } + + if (name === 'styleUrl') { + const val = getStringValue(property.value); + if (val !== undefined) styleUrls.push(val); + } + + if (name === 'templateUrl') { + const val = getStringValue(property.value); + if (val !== undefined) templateUrls.push(val); + } + + if (name === 'template') { + const val = getStringValue(property.value); + if (val !== undefined) inlineTemplates.push(val); + } + } } }, }); From bcadc13e0e52ca370dda08aae76f289e66057bca Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sun, 5 Apr 2026 00:13:44 -0400 Subject: [PATCH 31/33] test(vite-plugin-angular): tighten resolver coverage docs --- .../src/lib/angular-vite-plugin.spec.ts | 15 ++++++++------- .../src/lib/stylesheet-registry.spec.ts | 11 +++++++++++ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts index d70b26094..23ab49bbf 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.spec.ts @@ -1236,11 +1236,12 @@ describe('tailwind-reference plugin', () => { // // When useAngularCompilationAPI is enabled, the Vite transform hook receives // already-compiled code (decorators stripped), so hasComponent is always false. -// These tests document the expected behavior for both compilation paths. +// This suite is behavior documentation for both compilation paths rather than +// a regression harness for `hasComponent`. // ============================================================================= -describe('hasComponent detection', () => { - it('detects @Component in raw TypeScript source (legacy path)', () => { +describe('hasComponent detection behavior docs', () => { + it('documents @Component detection in raw TypeScript source (legacy path)', () => { // Simulates what the legacy (non-API) compilation path sees const rawTs = ` import { Component } from '@angular/core'; @@ -1250,10 +1251,10 @@ describe('hasComponent detection', () => { expect(rawTs.includes('@Component')).toBe(true); }); - it('does NOT detect @Component in compiled output (useAngularCompilationAPI path)', () => { - // Simulates what the Vite transform hook sees after Angular compilation — - // @Component is compiled into ɵɵdefineComponent(), so the naive string - // check returns false. This is expected and documented behavior. + it('documents missing @Component detection in compiled output (useAngularCompilationAPI path)', () => { + // Simulates what the Vite transform hook sees after Angular compilation. + // `@Component` becomes `ɵɵdefineComponent()`, so the naive string check + // returns false. This is expected documented behavior for that path. const compiledJs = ` import * as i0 from "@angular/core"; export class DemoComponent {} diff --git a/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts b/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts index d14427d34..db7ba71ab 100644 --- a/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts +++ b/packages/vite-plugin-angular/src/lib/stylesheet-registry.spec.ts @@ -32,6 +32,17 @@ describe('stylesheet-registry', () => { ); }); + it('rewrites relative css imports in url(...) form to absolute paths', () => { + expect( + rewriteRelativeCssImports( + '@import url("./submenu/submenu.component.css");\n.demo { color: red; }', + '/project/src/app/header.component.css', + ), + ).toBe( + '@import url("/project/src/app/submenu/submenu.component.css");\n.demo { color: red; }', + ); + }); + it('registers stylesheet content under the generated id and resource aliases', () => { const registry = new AnalogStylesheetRegistry(); From 9e0be352489cf09c7786bbd3b41792bd85987df2 Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sun, 5 Apr 2026 00:28:29 -0400 Subject: [PATCH 32/33] test(vite-plugin-angular): align tailwind debug app e2e with upstream full-reload repro --- .../tests/component-css-hmr.spec.ts | 48 ++++++++++++------- apps/tailwind-debug-app/vite.config.ts | 30 +++++++++++- .../src/lib/angular-vite-plugin.ts | 23 +++++---- 3 files changed, 74 insertions(+), 27 deletions(-) diff --git a/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts b/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts index d61eb4d8f..6483f2f02 100644 --- a/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts +++ b/apps/tailwind-debug-app-e2e/tests/component-css-hmr.spec.ts @@ -19,10 +19,16 @@ const HMR_LOG_PATH = join( const ORIGINAL_CSS = readFileSync(STYLE_PROBE_CSS_PATH, 'utf8'); const BLUE_CLASS = 'tdbg:bg-blue-500'; const RED_CLASS = 'tdbg:bg-red-500'; -const RED_BACKGROUND_VALUES = new Set([ - 'rgb(239, 68, 68)', - 'oklch(0.637 0.237 25.331)', -]); +function parseLogEntries(log: string): Array> { + return log + .split('\n') + .map((line) => line.trim()) + .filter(Boolean) + .map((line) => { + const jsonStart = line.indexOf('{'); + return JSON.parse(line.slice(jsonStart)) as Record; + }); +} function replaceProbeColor(className: string) { const nextCss = ORIGINAL_CSS.replace(BLUE_CLASS, className).replace( @@ -47,7 +53,7 @@ test.afterAll(() => { writeFileSync(STYLE_PROBE_CSS_PATH, ORIGINAL_CSS, 'utf8'); }); -test('updates the component stylesheet without a full reload', async ({ +test('reproduces Tailwind-triggered full reload for component stylesheet edits', async ({ page, }) => { await page.goto('/probe'); @@ -66,31 +72,41 @@ test('updates the component stylesheet without a full reload', async ({ await expect .poll( async () => { - const backgroundColor = await page - .getByTestId('probe-card') - .evaluate((element) => { - return window.getComputedStyle(element).backgroundColor; - }); - - return RED_BACKGROUND_VALUES.has(backgroundColor); + const wsEntries = parseLogEntries(readFileSync(WS_LOG_PATH, 'utf8')); + return wsEntries.findIndex( + (entry) => + (entry.payload as { type?: string } | undefined)?.type === + 'full-reload', + ); }, { timeout: 30_000 }, ) - .toBe(true); + .toBeGreaterThanOrEqual(0); - await expect(page.getByTestId('probe-counter')).toContainText('Clicks 1'); + await page.waitForLoadState('domcontentloaded'); + await expect(page.getByTestId('probe-card')).toBeVisible(); + + await expect(page.getByTestId('probe-counter')).toContainText('Clicks 0'); await expect .poll( async () => page.evaluate(() => window.__TAILWIND_DEBUG__?.bootCount), { timeout: 10_000 }, ) - .toBe(initialBootCount); + .not.toBe(initialBootCount); const wsLog = readFileSync(WS_LOG_PATH, 'utf8'); const hmrLog = readFileSync(HMR_LOG_PATH, 'utf8'); + const wsEntries = parseLogEntries(wsLog); + + const fullReloadEntry = wsEntries.find( + (entry) => + (entry.payload as { type?: string } | undefined)?.type === 'full-reload', + ); expect(wsLog).toContain('style-probe.component.css'); - expect(wsLog).not.toContain('"type":"full-reload"'); + expect(fullReloadEntry).toBeTruthy(); + expect(fullReloadEntry?.source).toBe('environment.hot.send'); + expect(String(fullReloadEntry?.stack ?? '')).toContain('updateModules'); expect(hmrLog).toContain('style-probe.component.css'); }); diff --git a/apps/tailwind-debug-app/vite.config.ts b/apps/tailwind-debug-app/vite.config.ts index e89605631..4ab79260c 100644 --- a/apps/tailwind-debug-app/vite.config.ts +++ b/apps/tailwind-debug-app/vite.config.ts @@ -27,12 +27,40 @@ function hmrWiretapPlugin(): Plugin { configureServer(server) { const originalSend = server.ws.send.bind(server.ws); server.ws.send = ((payload: unknown, ...args: unknown[]) => { - writeDebugLog(WS_LOG_PATH, payload); + writeDebugLog(WS_LOG_PATH, { + payload, + source: 'server.ws.send', + }); return (originalSend as (...inner: unknown[]) => unknown)( payload, ...args, ); }) as typeof server.ws.send; + + for (const [environmentName, environment] of Object.entries( + server.environments ?? {}, + )) { + const originalHotSend = environment.hot.send.bind(environment.hot); + environment.hot.send = ((payload: unknown) => { + const stack = + typeof payload === 'object' && + payload !== null && + 'type' in payload && + (payload as { type?: unknown }).type === 'full-reload' + ? new Error(`[tailwind-debug-app] ${environmentName} full-reload`) + .stack + : undefined; + + writeDebugLog(WS_LOG_PATH, { + environmentName, + payload, + source: 'environment.hot.send', + stack, + }); + + return originalHotSend(payload as never); + }) as typeof environment.hot.send; + } }, handleHotUpdate(ctx) { writeDebugLog(HMR_LOG_PATH, { diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts index 0afa32dda..fd9af3cc5 100644 --- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts +++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts @@ -2300,18 +2300,19 @@ export function angular(options?: PluginOptions): Plugin[] { mtimeMs: safeStatMtimeMs(key), ...describeStylesheetContent(rawCss), }); + preprocessed = rewriteRelativeCssImports(preprocessed, key); + stylesheetRegistry.registerServedStylesheet( + { + publicId: angularHash, + sourcePath: key, + originalCode: rawCss, + normalizedCode: preprocessed, + }, + [key, normalizePath(key), basename(key), key.replace(/^\//, '')], + ); + if (preprocessed && preprocessed !== rawCss) { preprocessStats.injected++; - preprocessed = rewriteRelativeCssImports(preprocessed, key); - stylesheetRegistry.registerServedStylesheet( - { - publicId: angularHash, - sourcePath: key, - originalCode: rawCss, - normalizedCode: preprocessed, - }, - [key, normalizePath(key), basename(key), key.replace(/^\//, '')], - ); debugStylesV( 'preprocessed external stylesheet for Tailwind @reference', { @@ -2329,6 +2330,8 @@ export function angular(options?: PluginOptions): Plugin[] { resolvedPath: key, mtimeMs: safeStatMtimeMs(key), raw: describeStylesheetContent(rawCss), + served: describeStylesheetContent(preprocessed), + hint: 'Registry mapping is still registered so Angular component stylesheet HMR can track and refresh this file even when preprocessing makes no textual changes.', }); } } catch (e) { From c091cf7a2b83025a803ea50050bea6fbaa229e6e Mon Sep 17 00:00:00 2001 From: Ben Snyder Date: Sun, 5 Apr 2026 00:36:33 -0400 Subject: [PATCH 33/33] fix(vite-plugin-nitro): avoid SSR entry lookup for ssr:false apps with empty prerender routes --- apps/tailwind-debug-app/vite.config.ts | 3 + .../src/lib/vite-plugin-nitro.spec.ts | 57 +++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/apps/tailwind-debug-app/vite.config.ts b/apps/tailwind-debug-app/vite.config.ts index 4ab79260c..430cbf92c 100644 --- a/apps/tailwind-debug-app/vite.config.ts +++ b/apps/tailwind-debug-app/vite.config.ts @@ -102,6 +102,9 @@ export default defineConfig(({ mode }) => ({ analog({ apiPrefix: 'api', hmr: true, + prerender: { + routes: [], + }, ssr: false, nitro: { routeRules: { diff --git a/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.spec.ts b/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.spec.ts index 2102da3c4..213f1f6df 100644 --- a/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.spec.ts +++ b/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.spec.ts @@ -409,6 +409,63 @@ describe('nitro', () => { } }); + it('does not require an SSR entry for client-only apps with explicit empty prerender routes', async () => { + vi.stubEnv('VITEST', ''); + vi.stubEnv('NODE_ENV', 'production'); + const { buildServerImportSpy } = await mockBuildFunctions(); + const workspaceRoot = mkdtempSync(join(tmpdir(), 'analog-nitro-')); + + try { + writeBuiltClientIndexHtml( + workspaceRoot, + 'client only explicit prerender opt-out', + ); + + const plugin = nitro({ + workspaceRoot, + ssr: false, + prerender: { + routes: [], + }, + }); + const result = await (plugin[1].config as any)( + {}, + { command: 'build', mode: 'production' }, + ); + + const builderBuild = vi.fn().mockResolvedValue(undefined); + await result.builder.buildApp({ + build: builderBuild, + environments: { + client: {}, + ssr: {}, + }, + }); + + expect(builderBuild).toHaveBeenCalledTimes(1); + expect(builderBuild).not.toHaveBeenCalledWith( + expect.objectContaining({ + config: expect.objectContaining({ + build: expect.objectContaining({ + ssr: true, + }), + }), + }), + ); + + const nitroConfig = buildServerImportSpy.mock.calls[0][1]; + expect(nitroConfig.alias?.['#analog/ssr']).toBeUndefined(); + expect(nitroConfig.virtual?.['#ANALOG_CLIENT_RENDERER']).toContain( + "import template from '#analog/index';", + ); + expect(nitroConfig.virtual?.['#analog/index']).toBe( + 'export default "client only explicit prerender opt-out";', + ); + } finally { + rmSync(workspaceRoot, { recursive: true, force: true }); + } + }); + it('should resolve client output path correctly for nested roots without explicit build.outDir', async () => { vi.stubEnv('VITEST', ''); vi.stubEnv('NODE_ENV', 'production');