diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index df86c73ca..38f0cb301 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,6 +12,13 @@ concurrency: env: NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} + # Same cap as pr.yml. nx.json sets parallel: 5 for local machines. + # GitHub-hosted runners have far fewer cores/RAM, and each test:lib + # (vitest) / test:types (tsc) task spawns its own worker pool. + # Release runs `nx run-many` across every package, so unbounded + # parallelism oversubscribes the runner and flakes test:lib + # (5s timeouts, vitest worker RPC stalls). + NX_PARALLEL: 3 permissions: contents: read diff --git a/examples/react/bundling-repro/package.json b/examples/react/bundling-repro/package.json index c7b354e89..2e28200cf 100644 --- a/examples/react/bundling-repro/package.json +++ b/examples/react/bundling-repro/package.json @@ -60,7 +60,7 @@ "jsdom": "^27.0.0", "typescript": "~5.9.2", "vite": "^8.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.10", "web-vitals": "^5.1.0", "wrangler": "^4.40.3" } diff --git a/examples/react/start/package.json b/examples/react/start/package.json index 7bcac42e3..a38bcbe6b 100644 --- a/examples/react/start/package.json +++ b/examples/react/start/package.json @@ -35,7 +35,7 @@ "jsdom": "^27.0.0", "typescript": "~5.9.2", "vite": "^8.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.10", "web-vitals": "^5.1.0" } } diff --git a/package.json b/package.json index a19493434..5f45962cb 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "tinyglobby": "^0.2.15", "typescript": "~5.9.2", "vite": "^8.0.0", - "vitest": "^3.2.4" + "vitest": "^4.1.10" }, "overrides": { "@tanstack/devtools": "workspace:*", diff --git a/packages/angular-devtools/package.json b/packages/angular-devtools/package.json index 21086c7d9..fdadc96d5 100644 --- a/packages/angular-devtools/package.json +++ b/packages/angular-devtools/package.json @@ -63,7 +63,7 @@ "@angular/core": "^21.2.0", "ng-packagr": "^21.2.0", "tslib": "^2.3.0", - "vitest": "^3.2.4" + "vitest": "^4.1.10" }, "peerDependencies": { "@angular/core": ">=21.0.0" diff --git a/packages/devtools-a11y/vite.config.ts b/packages/devtools-a11y/vite.config.ts index 29e7a0a51..20e13d17b 100644 --- a/packages/devtools-a11y/vite.config.ts +++ b/packages/devtools-a11y/vite.config.ts @@ -9,6 +9,9 @@ const config = defineConfig({ plugins: [ solid({ ssr: process.env.VITEST !== 'true', + // Vitest 4's module runner treats `/@solid-refresh` as `file:///@solid-refresh` + // and throws. HMR is not used in tests. + hot: process.env.VITEST !== 'true', }) as any satisfies Plugin, ], test: { @@ -18,6 +21,11 @@ const config = defineConfig({ environment: 'jsdom', setupFiles: ['./tests/test-setup.ts'], globals: true, + // Solid component mounts in tests/theme.test.ts share the same CI-load + // profile as @tanstack/devtools-ui. Raise the default 5s timeout so a + // loaded GitHub runner does not flake test:lib. + testTimeout: 30_000, + hookTimeout: 30_000, alias: { '@tanstack/devtools-utils/react': fileURLToPath( new URL('../devtools-utils/src/react/index.ts', import.meta.url), diff --git a/packages/devtools-ui/vite.config.ts b/packages/devtools-ui/vite.config.ts index 0c7ec3962..048092c8e 100644 --- a/packages/devtools-ui/vite.config.ts +++ b/packages/devtools-ui/vite.config.ts @@ -6,7 +6,13 @@ import type { Plugin } from 'vite' const config = defineConfig({ base: './', - plugins: [solid() as any satisfies Plugin], + plugins: [ + solid({ + // Vitest 4's module runner treats `/@solid-refresh` as `file:///@solid-refresh` + // and throws. HMR is not used in tests. + hot: process.env.VITEST !== 'true', + }) as any satisfies Plugin, + ], build: { rollupOptions: { output: { @@ -23,6 +29,13 @@ const config = defineConfig({ environment: 'jsdom', setupFiles: ['./tests/test-setup.ts'], globals: true, + // Component tests render the full Solid + goober tree (see tests/*.ts(x)). + // These take 1-5s locally but run on shared CI runners that are ~4x slower, + // pushing individual tests past vitest's default 5s timeout and causing + // flaky `test:lib` failures on Release. Give them headroom; fast tests + // are unaffected. + testTimeout: 30_000, + hookTimeout: 30_000, }, }) diff --git a/packages/devtools-utils/vite.config.solid-class.ts b/packages/devtools-utils/vite.config.solid-class.ts index ecf83b1b0..2f1665668 100644 --- a/packages/devtools-utils/vite.config.solid-class.ts +++ b/packages/devtools-utils/vite.config.solid-class.ts @@ -4,7 +4,13 @@ import solid from 'vite-plugin-solid' import packageJson from './package.json' const config = defineConfig({ - plugins: [solid()], + plugins: [ + solid({ + // Vitest 4's module runner treats `/@solid-refresh` as `file:///@solid-refresh` + // and throws. HMR is not used in tests. + hot: process.env.VITEST !== 'true', + }), + ], test: { name: packageJson.name, dir: './', diff --git a/packages/devtools-utils/vite.config.solid.ts b/packages/devtools-utils/vite.config.solid.ts index b58aba0e3..991823394 100644 --- a/packages/devtools-utils/vite.config.solid.ts +++ b/packages/devtools-utils/vite.config.solid.ts @@ -8,6 +8,9 @@ const config = defineConfig({ plugins: [ solid({ ssr: true, + // Vitest 4's module runner treats `/@solid-refresh` as `file:///@solid-refresh` + // and throws. HMR is not used in tests. + hot: process.env.VITEST !== 'true', }) as any, ], test: { diff --git a/packages/devtools-vite/tests/index.test.ts b/packages/devtools-vite/tests/index.test.ts index 73118c058..47571da28 100644 --- a/packages/devtools-vite/tests/index.test.ts +++ b/packages/devtools-vite/tests/index.test.ts @@ -332,14 +332,18 @@ describe('devtools plugin', () => { describe('configureServer - onConsolePipe uses pre-wrap console methods', () => { let originalLog: typeof console.log - let beforeWrapSpy: ReturnType - let afterWrapSpy: ReturnType + // Vitest 4 types a bare `vi.fn()` as a constructor too. Give the spy + // the console.log signature so it can replace the live method. + const createLogSpy = () => + vi.fn((..._data: Parameters) => {}) + let beforeWrapSpy: ReturnType + let afterWrapSpy: ReturnType beforeEach(async () => { capturedOnConsolePipe = undefined originalLog = console.log - beforeWrapSpy = vi.fn() - afterWrapSpy = vi.fn() + beforeWrapSpy = createLogSpy() + afterWrapSpy = createLogSpy() console.log = beforeWrapSpy diff --git a/packages/devtools/tests/index.test.ts b/packages/devtools/tests/index.test.ts index cf732d536..2959dcdab 100644 --- a/packages/devtools/tests/index.test.ts +++ b/packages/devtools/tests/index.test.ts @@ -5,12 +5,9 @@ import DevTools from '../src/devtools' import { TanStackDevtoolsCore } from '../src/core' import { DevtoolsProvider } from '../src/context/devtools-context' import { PiPProvider } from '../src/context/pip-context' -import { mountDevtools } from '../src/mount-impl' +import * as mountImpl from '../src/mount-impl' import type { TanStackDevtoolsConfig } from '../src/context/devtools-context' -vi.mock('../src/mount-impl', () => ({ mountDevtools: vi.fn() })) -const mockedMount = vi.mocked(mountDevtools) - const shellDisposers = new Map void>() const mountShell = (config: Partial) => { const host = document.body.appendChild(document.createElement('div')) @@ -41,7 +38,6 @@ const disposeShell = (host: HTMLElement) => { beforeEach(() => { localStorage.clear() history.replaceState({}, '', '/') - mockedMount.mockReset() vi.stubGlobal( 'ResizeObserver', class ResizeObserver { @@ -134,7 +130,10 @@ describe('devtools core boundaries', () => { }) it('aborts a pending dynamic mount and resets after repeated mount errors', async () => { - mockedMount.mockReturnValue({ + // Spy on the live ESM export. Vitest 4's module runner does not apply + // `vi.mock` to `import('./mount-impl')` inside core.ts, so a file-level + // mock never sees those calls. A spy on the same module namespace does. + const mockedMount = vi.spyOn(mountImpl, 'mountDevtools').mockReturnValue({ dispose: vi.fn(), eventBus: { stop: vi.fn() }, }) @@ -152,9 +151,10 @@ describe('devtools core boundaries', () => { }) const failing = new TanStackDevtoolsCore({}) failing.mount(host) - await vi.waitFor(() => expect(error).toHaveBeenCalledTimes(1)) + await vi.waitFor(() => expect(mockedMount).toHaveBeenCalledTimes(1)) failing.mount(host) - await vi.waitFor(() => expect(error).toHaveBeenCalledTimes(2)) + await vi.waitFor(() => expect(mockedMount).toHaveBeenCalledTimes(2)) + expect(error).toHaveBeenCalledTimes(2) expect(() => failing.unmount()).toThrow('Devtools is not mounted') }) }) diff --git a/packages/devtools/vite.config.ts b/packages/devtools/vite.config.ts index 96f58bb51..a52d9d885 100644 --- a/packages/devtools/vite.config.ts +++ b/packages/devtools/vite.config.ts @@ -5,7 +5,13 @@ import packageJson from './package.json' import type { Plugin } from 'vite' const config = defineConfig({ - plugins: [solid() as any satisfies Plugin], + plugins: [ + solid({ + // Vitest 4's module runner treats `/@solid-refresh` as `file:///@solid-refresh` + // and throws. HMR is not used in tests. + hot: process.env.VITEST !== 'true', + }) as any satisfies Plugin, + ], test: { name: packageJson.name, dir: './', diff --git a/packages/event-bus-client/tests/index.test.ts b/packages/event-bus-client/tests/index.test.ts index 6827231d7..e5b27e867 100644 --- a/packages/event-bus-client/tests/index.test.ts +++ b/packages/event-bus-client/tests/index.test.ts @@ -9,14 +9,19 @@ describe('EventClient', () => { let bus: ClientEventBus beforeEach(() => { - // Create a fresh bus for each test to ensure isolation + // EventClient starts reconnect intervals and has no public stop. + // Fake timers so each test owns those intervals and leftover + // `tanstack-connect` events do not leak into the next test. + vi.useFakeTimers() bus = new ClientEventBus() bus.start() }) afterEach(() => { - // Clean up after each test bus.stop() + vi.clearAllTimers() + vi.useRealTimers() + vi.restoreAllMocks() }) describe('debug config', () => { @@ -209,8 +214,7 @@ describe('EventClient', () => { describe('queued events', () => { it('emits queued events when connected to the event bus', async () => { bus.stop() - // Wait for bus to fully stop - await new Promise((resolve) => setTimeout(resolve, 50)) + await vi.advanceTimersByTimeAsync(50) const client = new EventClient({ debug: false, @@ -222,13 +226,13 @@ describe('EventClient', () => { // Start bus first, then emit (to ensure bus is ready) bus.start() - await new Promise((resolve) => setTimeout(resolve, 50)) + await vi.advanceTimersByTimeAsync(50) // Now emit - this will queue and trigger connection client.emit('event', { foo: 'bar' }) // wait for connection to establish and queued events to be emitted - await new Promise((resolve) => setTimeout(resolve, 300)) + await vi.advanceTimersByTimeAsync(300) expect(eventHandler).toHaveBeenCalledWith({ type: 'test-queued:event', payload: { foo: 'bar' }, @@ -241,7 +245,7 @@ describe('EventClient', () => { // The ClientEventBus dispatches to global window events which persist across tests // This needs a more robust cleanup mechanism bus.stop() - await new Promise((resolve) => setTimeout(resolve, 100)) + await vi.advanceTimersByTimeAsync(100) const client = new EventClient({ debug: false, @@ -253,7 +257,7 @@ describe('EventClient', () => { // Start bus FIRST, wait for it to be ready bus.start() - await new Promise((resolve) => setTimeout(resolve, 100)) + await vi.advanceTimersByTimeAsync(100) // NOW emit multiple events (they'll queue and then connect) client.emit('event', { count: 1 }) @@ -261,7 +265,7 @@ describe('EventClient', () => { client.emit('event', { count: 3 }) // Wait for connection and all queued events to be emitted - await new Promise((resolve) => setTimeout(resolve, 300)) + await vi.advanceTimersByTimeAsync(300) // All 3 events should have been received expect(eventHandler).nthCalledWith(1, { @@ -308,7 +312,7 @@ describe('EventClient', () => { describe('connecting behavior', () => { it('should only attempt connection once when #connecting flag is set', async () => { bus.stop() - await new Promise((resolve) => setTimeout(resolve, 50)) + await vi.advanceTimersByTimeAsync(50) const client = new EventClient({ debug: false, @@ -338,7 +342,7 @@ describe('EventClient', () => { it('should stop connect loop after successful connection', async () => { bus.stop() - await new Promise((resolve) => setTimeout(resolve, 50)) + await vi.advanceTimersByTimeAsync(50) const client = new EventClient({ debug: false, @@ -351,15 +355,15 @@ describe('EventClient', () => { // Start bus to allow connection bus.start() - await new Promise((resolve) => setTimeout(resolve, 50)) + await vi.advanceTimersByTimeAsync(50) // Wait for connection to establish - await new Promise((resolve) => setTimeout(resolve, 200)) + await vi.advanceTimersByTimeAsync(200) const dispatchSpy = vi.spyOn(window, 'dispatchEvent') // Wait for what would be several retry intervals - await new Promise((resolve) => setTimeout(resolve, 400)) + await vi.advanceTimersByTimeAsync(400) const connectCalls = dispatchSpy.mock.calls.filter( (call) => @@ -375,7 +379,7 @@ describe('EventClient', () => { it('should respect max retries limit', async () => { // Don't start the bus so connection always fails bus.stop() - await new Promise((resolve) => setTimeout(resolve, 50)) + await vi.advanceTimersByTimeAsync(50) const client = new EventClient({ debug: false, @@ -389,7 +393,7 @@ describe('EventClient', () => { client.emit('event', { foo: 'bar' }) // Wait long enough for max retries (5 attempts at 50ms intervals = 250ms + buffer) - await new Promise((resolve) => setTimeout(resolve, 400)) + await vi.advanceTimersByTimeAsync(400) const connectCalls = dispatchSpy.mock.calls.filter( (call) => @@ -401,7 +405,7 @@ describe('EventClient', () => { // Wait longer to ensure no more attempts dispatchSpy.mockClear() - await new Promise((resolve) => setTimeout(resolve, 200)) + await vi.advanceTimersByTimeAsync(200) const additionalCalls = dispatchSpy.mock.calls.filter( (call) => @@ -416,7 +420,7 @@ describe('EventClient', () => { it('should reset connecting flag when connection succeeds and allow new connections', async () => { bus.stop() - await new Promise((resolve) => setTimeout(resolve, 50)) + await vi.advanceTimersByTimeAsync(50) // Create first client and connect it const client1 = new EventClient({ @@ -427,18 +431,18 @@ describe('EventClient', () => { // Start bus before emitting so connection succeeds bus.start() - await new Promise((resolve) => setTimeout(resolve, 50)) + await vi.advanceTimersByTimeAsync(50) // First connection attempt client1.emit('event1', { id: 1 }) // Wait for connection - await new Promise((resolve) => setTimeout(resolve, 150)) + await vi.advanceTimersByTimeAsync(150) // Now create a SECOND client (which will need to connect) // Stop/start bus to simulate a scenario where new client needs to connect bus.stop() - await new Promise((resolve) => setTimeout(resolve, 50)) + await vi.advanceTimersByTimeAsync(50) const dispatchSpy = vi.spyOn(window, 'dispatchEvent') @@ -452,7 +456,7 @@ describe('EventClient', () => { client2.emit('event2', { id: 2 }) // Wait a bit for the connection attempt - await new Promise((resolve) => setTimeout(resolve, 100)) + await vi.advanceTimersByTimeAsync(100) const connectCalls = dispatchSpy.mock.calls.filter( (call) => diff --git a/packages/react-devtools/tests/devtools.test.tsx b/packages/react-devtools/tests/devtools.test.tsx index 3674689fc..6dc88d868 100644 --- a/packages/react-devtools/tests/devtools.test.tsx +++ b/packages/react-devtools/tests/devtools.test.tsx @@ -12,13 +12,17 @@ import type { // The real core does a full Solid DOM mount which is heavy in jsdom. Mock it // down to the methods the React adapter actually calls (constructor + mount + // unmount + setConfig), so we can drive the portal wiring in isolation. -vi.mock('@tanstack/devtools', () => ({ - TanStackDevtoolsCore: vi.fn().mockImplementation(() => ({ - mount: vi.fn(), - unmount: vi.fn(), - setConfig: vi.fn(), - })), -})) +vi.mock('@tanstack/devtools', () => { + // Vitest 4 constructs mocks with `new`. Arrow functions are not constructors. + const TanStackDevtoolsCore = vi.fn( + class { + mount = vi.fn() + unmount = vi.fn() + setConfig = vi.fn() + }, + ) + return { TanStackDevtoolsCore } +}) const CoreMock = vi.mocked(TanStackDevtoolsCore) diff --git a/packages/solid-devtools/vite.config.ts b/packages/solid-devtools/vite.config.ts index cb5526577..6f9a8b6e1 100644 --- a/packages/solid-devtools/vite.config.ts +++ b/packages/solid-devtools/vite.config.ts @@ -5,7 +5,13 @@ import packageJson from './package.json' import type { Plugin } from 'vite' const config = defineConfig({ - plugins: [solid() as any satisfies Plugin], + plugins: [ + solid({ + // Vitest 4's module runner treats `/@solid-refresh` as `file:///@solid-refresh` + // and throws. HMR is not used in tests. + hot: process.env.VITEST !== 'true', + }) as any satisfies Plugin, + ], test: { name: packageJson.name, dir: './tests', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1777116b0..0709ba0f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,8 +84,8 @@ importers: specifier: ^8.0.0 version: 8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^4.1.10 + version: 4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) e2e/apps/angular: dependencies: @@ -119,7 +119,7 @@ importers: devDependencies: '@angular/build': specifier: ^21.2.0 - version: 21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) + version: 21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(yaml@2.8.3) '@angular/cli': specifier: ^21.2.0 version: 21.2.10(@types/node@22.19.15)(chokidar@5.0.0) @@ -488,7 +488,7 @@ importers: devDependencies: '@angular/build': specifier: ^21.2.0 - version: 21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) + version: 21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(yaml@2.8.3) '@angular/cli': specifier: ^21.2.0 version: 21.2.10(@types/node@22.19.15)(chokidar@5.0.0) @@ -537,7 +537,7 @@ importers: devDependencies: '@angular/build': specifier: ^21.2.0 - version: 21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) + version: 21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(yaml@2.8.3) '@angular/cli': specifier: ^21.2.0 version: 21.2.10(@types/node@22.19.15)(chokidar@5.0.0) @@ -592,7 +592,7 @@ importers: devDependencies: '@angular/build': specifier: ^21.2.0 - version: 21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) + version: 21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(yaml@2.8.3) '@angular/cli': specifier: ^21.2.0 version: 21.2.10(@types/node@22.19.15)(chokidar@5.0.0) @@ -646,7 +646,7 @@ importers: devDependencies: '@angular/build': specifier: ^21.2.0 - version: 21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) + version: 21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(yaml@2.8.3) '@angular/cli': specifier: ^21.2.0 version: 21.2.10(@types/node@22.19.15)(chokidar@5.0.0) @@ -987,8 +987,8 @@ importers: specifier: ^8.0.0 version: 8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^4.1.10 + version: 4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) web-vitals: specifier: ^5.1.0 version: 5.2.0 @@ -1207,8 +1207,8 @@ importers: specifier: ^8.0.0 version: 8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^4.1.10 + version: 4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) web-vitals: specifier: ^5.1.0 version: 5.2.0 @@ -1509,8 +1509,8 @@ importers: specifier: ^21.2.0 version: 21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^4.1.10 + version: 4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/devtools: dependencies: @@ -6352,34 +6352,34 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/expect@4.1.10': + resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + '@vitest/mocker@4.1.10': + resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.1.10': + resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@vitest/runner@4.1.10': + resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@vitest/snapshot@4.1.10': + resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@vitest/spy@4.1.10': + resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.1.10': + resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} @@ -6889,8 +6889,8 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.3.3: - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} chalk@4.1.2: @@ -6916,10 +6916,6 @@ packages: chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - check-error@2.1.3: - resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} - engines: {node: '>= 16'} - cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -7450,10 +7446,6 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -7815,6 +7807,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.3.1: + resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -9235,9 +9230,6 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - loupe@3.2.1: - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -10180,10 +10172,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - perfect-debounce@2.1.0: resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} @@ -11267,16 +11255,8 @@ packages: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.4: - resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} engines: {node: '>=14.0.0'} tldts-core@7.0.27: @@ -11766,11 +11746,6 @@ packages: peerDependencies: vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - vite-node@3.2.4: - resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - vite-plugin-dts@4.2.3: resolution: {integrity: sha512-O5NalzHANQRwVw1xj8KQun3Bv8OSDAlNJXrnqoAz10BOuW8FVvY5g4ygj+DlJZL5mtSPuMu9vd3OfrdW5d4k6w==} engines: {node: ^14.18.0 || >=16.0.0} @@ -11961,26 +11936,39 @@ packages: vite: optional: true - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.1.10: + resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.10 + '@vitest/browser-preview': 4.1.10 + '@vitest/browser-webdriverio': 4.1.10 + '@vitest/coverage-istanbul': 4.1.10 + '@vitest/coverage-v8': 4.1.10 + '@vitest/ui': 4.1.10 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/debug': + '@opentelemetry/api': optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': optional: true '@vitest/ui': optional: true @@ -12499,7 +12487,64 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3)': + '@angular/build@21.2.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(yaml@2.8.3)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.2102.10(chokidar@5.0.0) + '@angular/compiler': 21.2.12 + '@angular/compiler-cli': 21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3) + '@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@22.19.15) + '@vitejs/plugin-basic-ssl': 2.1.4(vite@7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(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.4 + piscina: 5.1.4 + rolldown: 1.0.0-rc.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + sass: 1.97.3 + semver: 7.7.4 + source-map-support: 0.5.21 + tinyglobby: 0.2.15 + tslib: 2.8.1 + typescript: 5.9.3 + undici: 7.24.4 + vite: 7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + watchpack: 2.5.1 + optionalDependencies: + '@angular/core': 21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2) + '@angular/platform-browser': 21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)) + less: 4.6.4 + lmdb: 3.5.1 + ng-packagr: 21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3) + postcss: 8.5.14 + tailwindcss: 4.3.0 + vitest: 4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(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.10(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(@angular/compiler@21.2.12)(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(@angular/platform-browser@21.2.12(@angular/common@21.2.12(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.12(@angular/compiler@21.2.12)(rxjs@7.8.2)))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@22.19.15)(chokidar@5.0.0)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(ng-packagr@21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.14)(tailwindcss@4.3.0)(terser@5.46.1)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(yaml@2.8.3)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2102.10(chokidar@5.0.0) @@ -12540,7 +12585,7 @@ snapshots: ng-packagr: 21.2.3(@angular/compiler-cli@21.2.12(@angular/compiler@21.2.12)(typescript@5.9.3))(tailwindcss@4.3.0)(tslib@2.8.1)(typescript@5.9.3) postcss: 8.5.14 tailwindcss: 4.3.0 - vitest: 3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vitest: 4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -16906,47 +16951,55 @@ snapshots: vite: 8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vue: 3.5.34(typescript@5.9.3) - '@vitest/expect@3.2.4': + '@vitest/expect@4.1.10': dependencies: + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - tinyrainbow: 2.0.0 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + chai: 6.2.2 + tinyrainbow: 3.1.1 - '@vitest/mocker@3.2.4(vite@7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.10(vite@7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: - '@vitest/spy': 3.2.4 + '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + optional: true - '@vitest/pretty-format@3.2.4': + '@vitest/mocker@4.1.10(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: - tinyrainbow: 2.0.0 + '@vitest/spy': 4.1.10 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/runner@3.2.4': + '@vitest/pretty-format@4.1.10': dependencies: - '@vitest/utils': 3.2.4 + tinyrainbow: 3.1.1 + + '@vitest/runner@4.1.10': + dependencies: + '@vitest/utils': 4.1.10 pathe: 2.0.3 - strip-literal: 3.1.0 - '@vitest/snapshot@3.2.4': + '@vitest/snapshot@4.1.10': dependencies: - '@vitest/pretty-format': 3.2.4 + '@vitest/pretty-format': 4.1.10 + '@vitest/utils': 4.1.10 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.4 + '@vitest/spy@4.1.10': {} - '@vitest/utils@3.2.4': + '@vitest/utils@4.1.10': dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.2.1 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.1.10 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.1 '@volar/language-core@2.4.28': dependencies: @@ -17526,13 +17579,7 @@ snapshots: ccount@2.0.1: {} - chai@5.3.3: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.3 - deep-eql: 5.0.2 - loupe: 3.2.1 - pathval: 2.0.1 + chai@6.2.2: {} chalk@4.1.2: dependencies: @@ -17551,8 +17598,6 @@ snapshots: chardet@2.1.1: {} - check-error@2.1.3: {} - cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 @@ -18073,8 +18118,6 @@ snapshots: dependencies: character-entities: 2.0.2 - deep-eql@5.0.2: {} - deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -18289,6 +18332,8 @@ snapshots: es-module-lexer@1.7.0: {} + es-module-lexer@2.3.1: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -18746,7 +18791,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 esutils@2.0.3: {} @@ -20060,8 +20105,6 @@ snapshots: longest-streak@3.1.0: {} - loupe@3.2.1: {} - lru-cache@10.4.3: {} lru-cache@11.2.7: {} @@ -21534,8 +21577,6 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.1: {} - perfect-debounce@2.1.0: {} pg-cloudflare@1.3.0: @@ -22855,11 +22896,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - - tinyspy@4.0.4: {} + tinyrainbow@3.1.1: {} tldts-core@7.0.27: {} @@ -23360,27 +23397,6 @@ snapshots: dependencies: vite: 8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-node@3.2.4(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): - dependencies: - cac: 6.7.14 - debug: 4.4.3 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vite-plugin-dts@4.2.3(@types/node@22.19.15)(rollup@4.60.1)(typescript@5.9.3)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@microsoft/api-extractor': 7.47.7(@types/node@22.19.15) @@ -23511,25 +23527,6 @@ snapshots: tsx: 4.21.0 yaml: 2.8.3 - vite@7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): - dependencies: - esbuild: 0.27.4 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - postcss: 8.5.14 - rollup: 4.60.1 - tinyglobby: 0.2.16 - optionalDependencies: - '@types/node': 22.19.15 - fsevents: 2.3.3 - jiti: 2.7.0 - less: 4.6.4 - lightningcss: 1.32.0 - sass: 1.99.0 - terser: 5.46.1 - tsx: 4.21.0 - yaml: 2.8.3 - vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 @@ -23552,49 +23549,64 @@ snapshots: optionalDependencies: vite: 8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.19.15)(happy-dom@20.9.0)(jiti@2.7.0)(jsdom@27.4.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vitest@4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.3 + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(vite@7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.3.1 expect-type: 1.3.0 magic-string: 0.30.21 + obug: 2.1.3 pathe: 2.0.3 picomatch: 4.0.4 - std-env: 3.10.0 + std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.0.4 tinyglobby: 0.2.16 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-node: 3.2.4(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + tinyrainbow: 3.1.1 + vite: 7.3.2(@types/node@22.19.15)(jiti@2.7.0)(less@4.6.4)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.19.15 + happy-dom: 20.9.0 + jsdom: 27.4.0 + transitivePeerDependencies: + - msw + optional: true + + vitest@4.1.10(@types/node@22.19.15)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + dependencies: + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(vite@8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.3.1 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.3 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.0.0 + tinybench: 2.9.0 + tinyexec: 1.0.4 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.1 + vite: 8.0.12(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.13 '@types/node': 22.19.15 happy-dom: 20.9.0 jsdom: 27.4.0 transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml vscode-jsonrpc@8.2.0: {} diff --git a/tsconfig.json b/tsconfig.json index 34b251249..22d13427e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -28,6 +28,6 @@ "prettier.config.js", "scripts", "eslint.config.js", - "vitest.workspace.js" + "vitest.config.ts" ] } diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 000000000..33ee44f73 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + projects: [ + './packages/devtools/vite.config.ts', + './packages/react-devtools/vite.config.ts', + './packages/preact-devtools/vite.config.ts', + './packages/solid-devtools/vite.config.ts', + ], + }, +}) diff --git a/vitest.workspace.js b/vitest.workspace.js deleted file mode 100644 index 61cabd603..000000000 --- a/vitest.workspace.js +++ /dev/null @@ -1,8 +0,0 @@ -import { defineWorkspace } from 'vitest/config' - -export default defineWorkspace([ - './packages/devtools/vite.config.ts', - './packages/react-devtools/vite.config.ts', - './packages/preact-devtools/vite.config.ts', - './packages/solid-devtools/vite.config.ts', -])