From 0c3d46ad3dcd681bea0dd610b0d971fb21062110 Mon Sep 17 00:00:00 2001 From: Dermot Duffy Date: Sun, 26 Jul 2026 11:28:58 -0700 Subject: [PATCH] chore: Upgrade to Vitest 4 and regroup tests for performance (#2618) --- package.json | 8 +- .../camera-triggers-manager.ts | 4 +- src/components-lib/media-height-controller.ts | 7 +- src/components-lib/zoom/zoom-controller.ts | 33 +- .../frigate/engine-frigate.test.ts | 1 + .../actions/actions/set.test.ts | 6 +- tests/card-controller/call/manager.test.ts | 8 +- tests/card-controller/call/ringtone.test.ts | 24 +- .../card-controller/call/tones/custom.test.ts | 7 +- .../card-controller/call/tones/test-utils.ts | 8 +- .../effects/effects-manager.test.ts | 27 +- .../fullscreen/fullscreen-manager.test.ts | 1 + .../fullscreen/screenfull/index.test.ts | 1 + .../lazy-load-controller.test.ts | 3 + .../adapters/media-source.test.ts | 4 +- .../session-controller.test.ts | 12 +- .../go2rtc-experimental/signaling.test.ts | 8 +- .../go2rtc-experimental/sources/mjpeg.test.ts | 2 +- .../go2rtc-experimental/sources/mp4.test.ts | 9 +- .../go2rtc-experimental/test-utils.ts | 10 +- .../media-grid-controller.test.ts | 4 +- .../signed-url-controller.test.ts | 1 + .../zoom/zoom-controller.test.ts | 6 +- .../common/media-query-watcher.test.ts | 7 +- .../conditions/conditions-manager.test.ts | 3 +- .../conditions/conditions/screen.test.ts | 5 +- .../triggers/triggers/screen.test.ts | 3 +- tests/config/profiles/casting.test.ts | 6 +- tests/config/profiles/doorbell.test.ts | 6 +- tests/config/profiles/low-performance.test.ts | 6 +- tests/config/profiles/scrubbing.test.ts | 6 +- tests/test-utils.ts | 45 +- tests/utils/basic.test.ts | 6 +- tests/utils/thumbnail.test.ts | 14 +- vite.config.ts | 91 +- yarn.lock | 1856 +++++++---------- 36 files changed, 1041 insertions(+), 1207 deletions(-) diff --git a/package.json b/package.json index e716c7c6..af296dc4 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "@types/masonry-layout": "^4.2.8", "@typescript-eslint/eslint-plugin": "^8.30.1", "@typescript-eslint/parser": "^8.30.1", - "@vitest/coverage-istanbul": "^1.6.0", + "@vitest/coverage-istanbul": "^4.1.10", "conventional-changelog-conventionalcommits": "^8.0.0", "docsify-cli": "^4.4.4", "eslint": "^9.24.0", @@ -86,8 +86,8 @@ "semantic-release-export-data": "^1.1.0", "type-fest": "^4.41.0", "typescript": "^5.8.3", - "vitest": "^1.6.0", - "vitest-mock-extended": "^1.3.1" + "vitest": "^4.1.10", + "vitest-mock-extended": "^5.1.0" }, "release": { "branches": [ @@ -188,7 +188,7 @@ "format-check": "prettier --check .", "rollup": "rollup -c", "prune": "knip", - "test": "VITEST_GROUP=shared vitest run && VITEST_GROUP=isolated vitest run", + "test": "vitest run", "coverage": "vitest run --coverage" }, "volta": { diff --git a/src/card-controller/camera-triggers-manager.ts b/src/card-controller/camera-triggers-manager.ts index 9545e5c7..6da04796 100644 --- a/src/card-controller/camera-triggers-manager.ts +++ b/src/card-controller/camera-triggers-manager.ts @@ -242,14 +242,14 @@ export class CameraTriggersManager { } else if (ev.fidelity === 'high' && triggerAction === 'media') { // Choose the most appropriate media view based on what's available. // Priority: review > clip > snapshot + /* istanbul ignore next: the `null` case is unreachable due to `skipViewAction` above -- @preserve */ const view = ev.review ? 'review' : ev.clip ? 'clip' : ev.snapshot ? 'snapshot' - : /* istanbul ignore next: unreachable due to `skipViewAction` above -- @preserve */ - null; + : null; /* istanbul ignore next: unreachable due to `skipViewAction` above -- @preserve */ if (view) { diff --git a/src/components-lib/media-height-controller.ts b/src/components-lib/media-height-controller.ts index 880bec50..71199273 100644 --- a/src/components-lib/media-height-controller.ts +++ b/src/components-lib/media-height-controller.ts @@ -101,11 +101,10 @@ export class MediaHeightController { } private _initializeRoot(): void { + /* istanbul ignore next: the absent-root path cannot be reached as root will + always exist by the time the mutation observer is observing -- @preserve */ const children = [ - ...(this._root?.querySelectorAll(this._selector) ?? - /* istanbul ignore next: this path cannot be reached as root will always - exist by the time the mutation observer is observing -- @preserve */ - []), + ...(this._root?.querySelectorAll(this._selector) ?? []), ]; if (isEqual(children, this._children)) { return; diff --git a/src/components-lib/zoom/zoom-controller.ts b/src/components-lib/zoom/zoom-controller.ts index 5115d5f3..ee3da9bc 100644 --- a/src/components-lib/zoom/zoom-controller.ts +++ b/src/components-lib/zoom/zoom-controller.ts @@ -123,6 +123,12 @@ export class ZoomController { config?.zoom ?? ZOOM_DEFAULT_SCALE, ); + // The ZOOM_DEFAULT_SCALE fallback is not reachable: without a zoom value a + // default of 1 is assumed in _convertPercentToXYPan, which returns null at + // the default zoom, leaving `converted` unset. + /* istanbul ignore next @preserve */ + const startScale = config?.zoom ?? ZOOM_DEFAULT_SCALE; + this._panzoom = Panzoom(this._element, { contain: 'outside', maxScale: 10, @@ -140,16 +146,7 @@ export class ZoomController { // Set the initial pan/zoom values to avoid an initial unzoomed view. ...(config && converted && { startX: converted.x }), ...(config && converted && { startY: converted.y }), - ...(config && - converted && { - startScale: - config.zoom ?? - // This is not reachable as without a zoom value, a default of 1 is - // assumed in _convertPercentToXYPan, which will return null @ - // default zoom, and so this cannot be reached in practice. - /* istanbul ignore next @preserve */ - ZOOM_DEFAULT_SCALE, - }), + ...(config && converted && { startScale }), }); const registerListeners = ( @@ -436,18 +433,16 @@ export class ZoomController { return true; } + // The ZOOM_DEFAULT_SCALE fallback cannot be reached: when + // this._defaultSettings.zoom is undefined, convertedDefault ends up null + // above and this function has already returned. + /* istanbul ignore next @preserve */ + const defaultScale = this._defaultSettings.zoom ?? ZOOM_DEFAULT_SCALE; + return ( arefloatsApproximatelyEqual(x, convertedDefault.x) && arefloatsApproximatelyEqual(y, convertedDefault.y) && - arefloatsApproximatelyEqual( - scale, - this._defaultSettings.zoom ?? - // The ZOOM_DEFAULT_SCALE clause below cannot be reached since when - // this._defaultConfig.zoom is undefined, convertedDefault will end up - // null above and this function will have already returned. - /* istanbul ignore next @preserve */ - ZOOM_DEFAULT_SCALE, - ) + arefloatsApproximatelyEqual(scale, defaultScale) ); } diff --git a/tests/camera-manager/frigate/engine-frigate.test.ts b/tests/camera-manager/frigate/engine-frigate.test.ts index d697b7a1..fe6976a7 100644 --- a/tests/camera-manager/frigate/engine-frigate.test.ts +++ b/tests/camera-manager/frigate/engine-frigate.test.ts @@ -208,6 +208,7 @@ describe('FrigateQueryResultsClassifier', () => { describe('FrigateCameraManagerEngine', () => { afterEach(() => { vi.restoreAllMocks(); + vi.clearAllMocks(); }); describe('getEngineType', () => { diff --git a/tests/card-controller/actions/actions/set.test.ts b/tests/card-controller/actions/actions/set.test.ts index 0b4b506e..91204923 100644 --- a/tests/card-controller/actions/actions/set.test.ts +++ b/tests/card-controller/actions/actions/set.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it, vi } from 'vitest'; +import { afterEach, describe, expect, it, vi } from 'vitest'; import { ActionSet } from '../../../../src/card-controller/actions/actions/set'; import { createLogAction } from '../../../../src/utils/action'; @@ -6,6 +6,10 @@ import { arrayify } from '../../../../src/utils/basic'; import { createCardAPI } from '../../../test-utils'; describe('ActionSet', () => { + afterEach(() => { + vi.restoreAllMocks(); + }); + const createAPI = () => { const api = createCardAPI(); vi.mocked(api.getLockManager().getAllowedActions).mockImplementation((actions) => diff --git a/tests/card-controller/call/manager.test.ts b/tests/card-controller/call/manager.test.ts index d5505947..1d440a26 100644 --- a/tests/card-controller/call/manager.test.ts +++ b/tests/card-controller/call/manager.test.ts @@ -29,9 +29,13 @@ import { // Replace Ringtone with a fresh `mock()` per construction so each // CallManager gets an isolated, type-safe ringtone we can assert on. The -// real Ringtone creates an AudioContext, which we never want in tests. +// real Ringtone creates an AudioContext, which we never want in tests. The +// implementation must be callable with `new`, so it cannot be an arrow +// function. vi.mock('../../../src/card-controller/call/ringtone', () => ({ - Ringtone: vi.fn().mockImplementation(() => mock()), + Ringtone: vi.fn().mockImplementation(function () { + return mock(); + }), })); // Each test creates a new CallManager which constructs a new Ringtone, so the diff --git a/tests/card-controller/call/ringtone.test.ts b/tests/card-controller/call/ringtone.test.ts index 919dd8ac..1edd151d 100644 --- a/tests/card-controller/call/ringtone.test.ts +++ b/tests/card-controller/call/ringtone.test.ts @@ -12,20 +12,32 @@ import type { RingtoneConfig } from '../../../src/config/schema/live'; // Each tone constructor returns a fresh `mock<>()` per `new` call; the mock // implementation persists across `vi.clearAllMocks()` (which only clears call // records, not implementations) so tests don't need per-test re-installation. +// The implementations must be callable with `new`, so they cannot be arrow +// functions. vi.mock('../../../src/card-controller/call/tones/chime', () => ({ - ChimeTone: vi.fn().mockImplementation(() => mock()), + ChimeTone: vi.fn().mockImplementation(function () { + return mock(); + }), })); vi.mock('../../../src/card-controller/call/tones/westminster', () => ({ - WestminsterTone: vi.fn().mockImplementation(() => mock()), + WestminsterTone: vi.fn().mockImplementation(function () { + return mock(); + }), })); vi.mock('../../../src/card-controller/call/tones/arpeggio', () => ({ - ArpeggioTone: vi.fn().mockImplementation(() => mock()), + ArpeggioTone: vi.fn().mockImplementation(function () { + return mock(); + }), })); vi.mock('../../../src/card-controller/call/tones/melody', () => ({ - MelodyTone: vi.fn().mockImplementation(() => mock()), + MelodyTone: vi.fn().mockImplementation(function () { + return mock(); + }), })); vi.mock('../../../src/card-controller/call/tones/custom', () => ({ - CustomTone: vi.fn().mockImplementation(() => mock()), + CustomTone: vi.fn().mockImplementation(function () { + return mock(); + }), })); // Returns the most recently constructed instance of a mocked class. @@ -187,7 +199,7 @@ describe('lock', () => { describe('natural finish', () => { it('should release the lock when the tone fires its finished handler', () => { let finishedHandler: (() => void) | undefined; - vi.mocked(ChimeTone).mockImplementationOnce(() => { + vi.mocked(ChimeTone).mockImplementationOnce(function () { const tone = mock(); vi.mocked(tone.start).mockImplementation((handler) => { finishedHandler = handler; diff --git a/tests/card-controller/call/tones/custom.test.ts b/tests/card-controller/call/tones/custom.test.ts index cbb6f2bd..44b9a9b0 100644 --- a/tests/card-controller/call/tones/custom.test.ts +++ b/tests/card-controller/call/tones/custom.test.ts @@ -8,7 +8,7 @@ interface AudioMocks { // and pushed here in construction order, so tests can dispatch real events // and read real properties (`loop`, `currentTime`, etc.) on the instances. instances: HTMLAudioElement[]; - ctor: Mock<[string?], HTMLAudioElement>; + ctor: Mock<(url?: string) => HTMLAudioElement>; } // Uses real jsdom HTMLAudioElement instances and only stubs the parts jsdom @@ -33,7 +33,10 @@ const useAudioElementMocks = (): AudioMocks => { vi.spyOn(HTMLMediaElement.prototype, 'pause').mockImplementation(() => {}); const RealAudio = window.Audio; - handle.ctor = vi.fn((url?: string) => { + + // The source calls `new Audio(...)`, and a mock implementation must be + // callable with `new`, so it cannot be an arrow function. + handle.ctor = vi.fn(function (url?: string) { const audio = new RealAudio(url); handle.instances.push(audio); return audio; diff --git a/tests/card-controller/call/tones/test-utils.ts b/tests/card-controller/call/tones/test-utils.ts index 2b28d50e..bae921fc 100644 --- a/tests/card-controller/call/tones/test-utils.ts +++ b/tests/card-controller/call/tones/test-utils.ts @@ -10,7 +10,7 @@ import { mock, type MockProxy } from 'vitest-mock-extended'; // over the same observable state. interface AudioMocks { audioContext: MockProxy; - audioContextCtor: Mock<[], MockProxy>; + audioContextCtor: Mock<() => MockProxy>; // Filled in the order `createOscillator()` / `createGain()` were called. oscillators: MockProxy[]; @@ -73,7 +73,11 @@ export const useAudioMocks = (): AudioMocks => { configurable: true, }); - audio.audioContextCtor = vi.fn(() => audio.audioContext); + // The source calls `new AudioContext()`, and a mock implementation must be + // callable with `new`, so it cannot be an arrow function. + audio.audioContextCtor = vi.fn(function () { + return audio.audioContext; + }); vi.stubGlobal('AudioContext', audio.audioContextCtor); }); diff --git a/tests/card-controller/effects/effects-manager.test.ts b/tests/card-controller/effects/effects-manager.test.ts index b697cb36..ae99e217 100644 --- a/tests/card-controller/effects/effects-manager.test.ts +++ b/tests/card-controller/effects/effects-manager.test.ts @@ -5,28 +5,43 @@ import type { EffectComponent } from '../../../src/card-controller/effects/types import type { EffectName } from '../../../src/types'; import { flushPromises } from '../../test-utils'; +// The source constructs each effect component with `new`, and a mock +// implementation must be callable with `new`, so it cannot be an arrow +// function. vi.mock('../../../src/components/effects/fireworks', () => ({ - AdvancedCameraCardEffectFireworks: vi.fn(() => createMockEffectComponent()), + AdvancedCameraCardEffectFireworks: vi.fn(function () { + return createMockEffectComponent(); + }), })); vi.mock('../../../src/components/effects/check', () => ({ - AdvancedCameraCardEffectCheck: vi.fn(() => createMockEffectComponent()), + AdvancedCameraCardEffectCheck: vi.fn(function () { + return createMockEffectComponent(); + }), })); vi.mock('../../../src/components/effects/ghost', () => ({ - AdvancedCameraCardEffectGhost: vi.fn(() => createMockEffectComponent()), + AdvancedCameraCardEffectGhost: vi.fn(function () { + return createMockEffectComponent(); + }), })); vi.mock('../../../src/components/effects/hearts', () => ({ - AdvancedCameraCardEffectHearts: vi.fn(() => createMockEffectComponent()), + AdvancedCameraCardEffectHearts: vi.fn(function () { + return createMockEffectComponent(); + }), })); vi.mock('../../../src/components/effects/shamrocks', () => ({ - AdvancedCameraCardEffectShamrocks: vi.fn(() => createMockEffectComponent()), + AdvancedCameraCardEffectShamrocks: vi.fn(function () { + return createMockEffectComponent(); + }), })); vi.mock('../../../src/components/effects/snow', () => ({ - AdvancedCameraCardEffectSnow: vi.fn(() => createMockEffectComponent()), + AdvancedCameraCardEffectSnow: vi.fn(function () { + return createMockEffectComponent(); + }), })); const createMockEffectComponent = (): EffectComponent => { diff --git a/tests/card-controller/fullscreen/fullscreen-manager.test.ts b/tests/card-controller/fullscreen/fullscreen-manager.test.ts index 8355cf9c..685bb536 100644 --- a/tests/card-controller/fullscreen/fullscreen-manager.test.ts +++ b/tests/card-controller/fullscreen/fullscreen-manager.test.ts @@ -11,6 +11,7 @@ vi.mock('../../../src/card-controller/fullscreen/factory'); describe('FullscreenManager', () => { afterEach(() => { vi.restoreAllMocks(); + vi.clearAllMocks(); }); it('should initialize', () => { diff --git a/tests/card-controller/fullscreen/screenfull/index.test.ts b/tests/card-controller/fullscreen/screenfull/index.test.ts index daea2aea..4ba857f4 100644 --- a/tests/card-controller/fullscreen/screenfull/index.test.ts +++ b/tests/card-controller/fullscreen/screenfull/index.test.ts @@ -29,6 +29,7 @@ describe('ScreenfullFullScreenProvider', () => { afterEach(() => { vi.restoreAllMocks(); + vi.clearAllMocks(); }); describe('should connect', () => { diff --git a/tests/components-lib/lazy-load-controller.test.ts b/tests/components-lib/lazy-load-controller.test.ts index b150324a..a4c82564 100644 --- a/tests/components-lib/lazy-load-controller.test.ts +++ b/tests/components-lib/lazy-load-controller.test.ts @@ -35,11 +35,13 @@ describe('LazyLoadController', () => { Object.defineProperty(document, 'visibilityState', { value: 'visible', writable: true, + configurable: true, }); }); afterEach(() => { vi.restoreAllMocks(); + vi.clearAllMocks(); }); it('should be unloaded by default', () => { @@ -281,6 +283,7 @@ describe('LazyLoadController', () => { Object.defineProperty(document, 'visibilityState', { value: 'hidden', writable: true, + configurable: true, }); const controller = new LazyLoadController(createLitElement()); diff --git a/tests/components-lib/live/providers/go2rtc-experimental/adapters/media-source.test.ts b/tests/components-lib/live/providers/go2rtc-experimental/adapters/media-source.test.ts index 32e2311e..fd692f31 100644 --- a/tests/components-lib/live/providers/go2rtc-experimental/adapters/media-source.test.ts +++ b/tests/components-lib/live/providers/go2rtc-experimental/adapters/media-source.test.ts @@ -7,7 +7,7 @@ class FakeMediaSource extends EventTarget { public addSourceBuffer = vi.fn(); public setLiveSeekableRange = vi.fn(); - public static isTypeSupported = vi.fn<[string], boolean>(() => true); + public static isTypeSupported = vi.fn<(mimeType: string) => boolean>(() => true); constructor() { super(); @@ -19,7 +19,7 @@ class FakeManagedMediaSource extends EventTarget { public addSourceBuffer = vi.fn(); public setLiveSeekableRange = vi.fn(); public readyState: 'closed' | 'open' | 'ended' = 'closed'; - public static isTypeSupported = vi.fn<[string], boolean>(() => true); + public static isTypeSupported = vi.fn<(mimeType: string) => boolean>(() => true); } const createObjectURL = vi.fn(() => 'blob:fake-url'); diff --git a/tests/components-lib/live/providers/go2rtc-experimental/session-controller.test.ts b/tests/components-lib/live/providers/go2rtc-experimental/session-controller.test.ts index 76831aac..b8155efe 100644 --- a/tests/components-lib/live/providers/go2rtc-experimental/session-controller.test.ts +++ b/tests/components-lib/live/providers/go2rtc-experimental/session-controller.test.ts @@ -100,7 +100,7 @@ describe('Go2RTCSessionController', () => { cardWideConfig?: CardWideConfig | null; }) => { const websockets: FakeWebSocket[] = []; - const createWebSocket = vi.fn<[string], WebSocket>(() => { + const createWebSocket = vi.fn<(url: string) => WebSocket>(() => { const websocket = new FakeWebSocket(); websockets.push(websocket); return websocket.asWebSocket(); @@ -1060,7 +1060,7 @@ describe('Go2RTCSessionController', () => { it('should ignore callbacks fired while a binary source is constructed', () => { const websockets: FakeWebSocket[] = []; - const createWebSocket = vi.fn<[string], WebSocket>(() => { + const createWebSocket = vi.fn<(url: string) => WebSocket>(() => { const websocket = new FakeWebSocket(); websockets.push(websocket); return websocket.asWebSocket(); @@ -1095,7 +1095,7 @@ describe('Go2RTCSessionController', () => { it('should ignore callbacks fired while a WebRTC source is constructed', () => { const websockets: FakeWebSocket[] = []; - const createWebSocket = vi.fn<[string], WebSocket>(() => { + const createWebSocket = vi.fn<(url: string) => WebSocket>(() => { const websocket = new FakeWebSocket(); websockets.push(websocket); return websocket.asWebSocket(); @@ -1129,7 +1129,7 @@ describe('Go2RTCSessionController', () => { it('should use the default binary source factory when none is injected', () => { const websockets: FakeWebSocket[] = []; - const createWebSocket = vi.fn<[string], WebSocket>(() => { + const createWebSocket = vi.fn<(url: string) => WebSocket>(() => { const websocket = new FakeWebSocket(); websockets.push(websocket); return websocket.asWebSocket(); @@ -1160,7 +1160,7 @@ describe('Go2RTCSessionController', () => { it('should use the default WebRTC source factory when none is injected', () => { vi.stubGlobal('RTCPeerConnection', FakeRTCPeerConnection); const websockets: FakeWebSocket[] = []; - const createWebSocket = vi.fn<[string], WebSocket>(() => { + const createWebSocket = vi.fn<(url: string) => WebSocket>(() => { const websocket = new FakeWebSocket(); websockets.push(websocket); return websocket.asWebSocket(); @@ -1187,7 +1187,7 @@ describe('Go2RTCSessionController', () => { it('should create an off-screen video with the default factory when none is injected', () => { const websockets: FakeWebSocket[] = []; - const createWebSocket = vi.fn<[string], WebSocket>(() => { + const createWebSocket = vi.fn<(url: string) => WebSocket>(() => { const websocket = new FakeWebSocket(); websockets.push(websocket); return websocket.asWebSocket(); diff --git a/tests/components-lib/live/providers/go2rtc-experimental/signaling.test.ts b/tests/components-lib/live/providers/go2rtc-experimental/signaling.test.ts index 9dd8e306..c5341062 100644 --- a/tests/components-lib/live/providers/go2rtc-experimental/signaling.test.ts +++ b/tests/components-lib/live/providers/go2rtc-experimental/signaling.test.ts @@ -9,7 +9,7 @@ describe('SignalingChannel', () => { disconnectCallback?: () => void; }) => { const websockets: FakeWebSocket[] = []; - const createWebSocket = vi.fn<[string], WebSocket>(() => { + const createWebSocket = vi.fn<(url: string) => WebSocket>(() => { const websocket = new FakeWebSocket(); websockets.push(websocket); return websocket.asWebSocket(); @@ -238,7 +238,11 @@ describe('SignalingChannel', () => { }); it('should construct a real websocket by default', () => { - const webSocketConstructor = vi.fn(() => new FakeWebSocket().asWebSocket()); + // A mock implementation must be callable with `new`, so it cannot be an + // arrow function. + const webSocketConstructor = vi.fn(function () { + return new FakeWebSocket().asWebSocket(); + }); vi.stubGlobal('WebSocket', webSocketConstructor); const channel = new SignalingChannel('ws://host/api/ws', {}); channel.connect(); diff --git a/tests/components-lib/live/providers/go2rtc-experimental/sources/mjpeg.test.ts b/tests/components-lib/live/providers/go2rtc-experimental/sources/mjpeg.test.ts index 0335df60..81f6e5e4 100644 --- a/tests/components-lib/live/providers/go2rtc-experimental/sources/mjpeg.test.ts +++ b/tests/components-lib/live/providers/go2rtc-experimental/sources/mjpeg.test.ts @@ -14,7 +14,7 @@ describe('MJPEGStreamSource', () => { const channel = new FakeStreamSourceChannel(); const loadedCallback = vi.fn(); const failedCallback = vi.fn(); - const showFrame = vi.fn<[Blob], Promise>(() => Promise.resolve()); + const showFrame = vi.fn<(blob: Blob) => Promise>(() => Promise.resolve()); const context: StreamSourceContext = { target: { kind: 'image', showFrame }, diff --git a/tests/components-lib/live/providers/go2rtc-experimental/sources/mp4.test.ts b/tests/components-lib/live/providers/go2rtc-experimental/sources/mp4.test.ts index f2bacf5c..2df988d8 100644 --- a/tests/components-lib/live/providers/go2rtc-experimental/sources/mp4.test.ts +++ b/tests/components-lib/live/providers/go2rtc-experimental/sources/mp4.test.ts @@ -32,7 +32,7 @@ describe('MP4StreamSource', () => { const channel = new FakeStreamSourceChannel(); const loadedCallback = vi.fn(); const failedCallback = vi.fn(); - const showFrame = vi.fn<[Blob], Promise>(() => Promise.resolve()); + const showFrame = vi.fn<(blob: Blob) => Promise>(() => Promise.resolve()); const context: StreamSourceContext = { target: { kind: 'image', showFrame }, channel, @@ -65,6 +65,7 @@ describe('MP4StreamSource', () => { afterEach(() => { vi.useRealTimers(); + vi.restoreAllMocks(); }); it('should request the mp4 stream on start', () => { @@ -217,6 +218,12 @@ describe('MP4StreamSource', () => { callbacks: { loadedCallback: vi.fn(), failedCallback: vi.fn() }, }); + // This is the only test that reaches a real canvas element. jsdom does not + // implement `getContext` and writes an error to the console when it is + // called; the source treats a missing context as nothing to draw to avoid + // console spam. + vi.spyOn(HTMLCanvasElement.prototype, 'getContext').mockReturnValue(null); + const createElement = vi.spyOn(document, 'createElement'); source.start(); channel.binaryCallback?.(frame()); diff --git a/tests/components-lib/live/providers/go2rtc-experimental/test-utils.ts b/tests/components-lib/live/providers/go2rtc-experimental/test-utils.ts index 6300a6f2..ae9a53cf 100644 --- a/tests/components-lib/live/providers/go2rtc-experimental/test-utils.ts +++ b/tests/components-lib/live/providers/go2rtc-experimental/test-utils.ts @@ -125,7 +125,7 @@ class FakeRTCTransceiver { public currentDirection: string; public sender: { track: FakeMediaStreamTrack | null; - replaceTrack: Mock<[MediaStreamTrack | null], Promise>; + replaceTrack: Mock<(track: MediaStreamTrack | null) => Promise>; }; public receiver: { track: FakeMediaStreamTrack }; @@ -134,7 +134,7 @@ class FakeRTCTransceiver { this.currentDirection = direction; this.sender = { track, - replaceTrack: vi.fn<[MediaStreamTrack | null], Promise>(() => + replaceTrack: vi.fn<(track: MediaStreamTrack | null) => Promise>(() => Promise.resolve(), ), }; @@ -241,9 +241,9 @@ export class FakeMediaSourceInstance implements MediaSourceInterface { public attach = vi.fn(); public detach = vi.fn(); public setLiveSeekableRange = vi.fn(); - public isOpen = vi.fn<[], boolean>(() => true); - public isTypeSupported = vi.fn<[string], boolean>(() => true); - public addSourceBuffer = vi.fn<[string], SourceBuffer>(() => + public isOpen = vi.fn<() => boolean>(() => true); + public isTypeSupported = vi.fn<(mimeType: string) => boolean>(() => true); + public addSourceBuffer = vi.fn<(mimeType: string) => SourceBuffer>(() => this.sourceBuffer.asSourceBuffer(), ); diff --git a/tests/components-lib/media-grid-controller.test.ts b/tests/components-lib/media-grid-controller.test.ts index 666d3e8b..00dd8680 100644 --- a/tests/components-lib/media-grid-controller.test.ts +++ b/tests/components-lib/media-grid-controller.test.ts @@ -24,8 +24,10 @@ vi.mock('lodash-es', async () => ({ })); const masonry = mock(); +// The source calls `new Masonry(...)`, and a mock implementation must be +// callable with `new`, so it cannot be an arrow function. vi.mock('masonry-layout', () => ({ - default: vi.fn().mockImplementation(() => { + default: vi.fn().mockImplementation(function () { return masonry; }), })); diff --git a/tests/components-lib/signed-url-controller.test.ts b/tests/components-lib/signed-url-controller.test.ts index 6a9523ca..ce6cae0d 100644 --- a/tests/components-lib/signed-url-controller.test.ts +++ b/tests/components-lib/signed-url-controller.test.ts @@ -23,6 +23,7 @@ const createEndpoint = (url: string, sign?: boolean): Endpoint => ({ describe('SignedURLController', () => { afterEach(() => { vi.restoreAllMocks(); + vi.clearAllMocks(); }); it('should initialize correctly', () => { diff --git a/tests/components-lib/zoom/zoom-controller.test.ts b/tests/components-lib/zoom/zoom-controller.test.ts index 0807273a..99bc5302 100644 --- a/tests/components-lib/zoom/zoom-controller.test.ts +++ b/tests/components-lib/zoom/zoom-controller.test.ts @@ -2,7 +2,7 @@ import Panzoom, { type PanzoomEventDetail, type PanzoomObject, } from '@dermotduffy/panzoom'; -import { beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; +import { beforeAll, beforeEach, describe, expect, it, vi, type Mock } from 'vitest'; import { mock, mockClear } from 'vitest-mock-extended'; import { ZoomController } from '../../../src/components-lib/zoom/zoom-controller'; @@ -11,6 +11,7 @@ import { createTouchEvent, requestAnimationFrameMock, ResizeObserverMock, + stubMatchMedia, } from '../../test-utils'; vi.mock('@dermotduffy/panzoom'); @@ -37,7 +38,7 @@ const setElementToDefaultCardSize = (element: HTMLElement, multiple?: number): v // @vitest-environment jsdom describe('ZoomController', () => { - const mediaSpy = vi.spyOn(window, 'matchMedia'); + let mediaSpy: Mock; const createMockPanZoom = (): PanzoomObject => { const panzoom = mock(); @@ -60,6 +61,7 @@ describe('ZoomController', () => { beforeEach(() => { vi.mocked(Panzoom).mockReset(); vi.mocked(global.ResizeObserver).mockClear(); + mediaSpy = stubMatchMedia(); mediaSpy.mockReturnValue({ matches: true }); }); diff --git a/tests/condition-trigger/common/media-query-watcher.test.ts b/tests/condition-trigger/common/media-query-watcher.test.ts index 841636b2..98308047 100644 --- a/tests/condition-trigger/common/media-query-watcher.test.ts +++ b/tests/condition-trigger/common/media-query-watcher.test.ts @@ -1,6 +1,7 @@ import { afterEach, describe, expect, it, vi } from 'vitest'; import { MediaQueryWatcher } from '../../../src/condition-trigger/common/media-query-watcher'; +import { stubMatchMedia } from '../../test-utils'; // @vitest-environment jsdom describe('MediaQueryWatcher', () => { @@ -9,7 +10,7 @@ describe('MediaQueryWatcher', () => { }); it('should report whether the query matches', () => { - vi.spyOn(window, 'matchMedia').mockReturnValue({ + stubMatchMedia().mockReturnValue({ matches: true, } as unknown as MediaQueryList); @@ -18,7 +19,7 @@ describe('MediaQueryWatcher', () => { it('should invoke the callback on a media-query change', () => { const addEventListener = vi.fn(); - vi.spyOn(window, 'matchMedia').mockReturnValue({ + stubMatchMedia().mockReturnValue({ addEventListener, removeEventListener: vi.fn(), } as unknown as MediaQueryList); @@ -35,7 +36,7 @@ describe('MediaQueryWatcher', () => { it('should stop listening and ignore changes after teardown', () => { const addEventListener = vi.fn(); const removeEventListener = vi.fn(); - vi.spyOn(window, 'matchMedia').mockReturnValue({ + stubMatchMedia().mockReturnValue({ addEventListener, removeEventListener, } as unknown as MediaQueryList); diff --git a/tests/condition-trigger/conditions/conditions-manager.test.ts b/tests/condition-trigger/conditions/conditions-manager.test.ts index 75024a94..490dfbc9 100644 --- a/tests/condition-trigger/conditions/conditions-manager.test.ts +++ b/tests/condition-trigger/conditions/conditions-manager.test.ts @@ -8,6 +8,7 @@ import { createMockTemplateRenderer, createStateEntity, stubConnectedHomeAssistant, + stubMatchMedia, } from '../../test-utils'; // A mock renderer for the orchestration tests, which never render templates. @@ -71,7 +72,7 @@ describe('ConditionsManager', () => { it('should re-evaluate and notify when a subscribed condition source changes', () => { const addEventListener = vi.fn(); const removeEventListener = vi.fn(); - vi.spyOn(window, 'matchMedia') + stubMatchMedia() .mockReturnValueOnce({ addEventListener: addEventListener, removeEventListener: removeEventListener, diff --git a/tests/condition-trigger/conditions/conditions/screen.test.ts b/tests/condition-trigger/conditions/conditions/screen.test.ts index 8529273a..37523e6b 100644 --- a/tests/condition-trigger/conditions/conditions/screen.test.ts +++ b/tests/condition-trigger/conditions/conditions/screen.test.ts @@ -1,6 +1,7 @@ import { afterEach, describe, expect, it, vi } from 'vitest'; import { createConditionEvaluator } from '../../../../src/condition-trigger/conditions/factory'; +import { stubMatchMedia } from '../../../test-utils'; import { createEvaluatorContext } from './test-utils'; // @vitest-environment jsdom @@ -10,7 +11,7 @@ describe('screen condition', () => { }); it('should evaluate the media query', () => { - vi.spyOn(window, 'matchMedia').mockReturnValue({ + stubMatchMedia().mockReturnValue({ matches: true, } as unknown as MediaQueryList); @@ -30,7 +31,7 @@ describe('screen condition', () => { }); it('should not match or expose a source without a media query', () => { - const matchMedia = vi.spyOn(window, 'matchMedia'); + const matchMedia = stubMatchMedia(); const evaluator = createConditionEvaluator( { condition: 'screen' as const }, createEvaluatorContext(), diff --git a/tests/condition-trigger/triggers/triggers/screen.test.ts b/tests/condition-trigger/triggers/triggers/screen.test.ts index ab2c730e..9df708cd 100644 --- a/tests/condition-trigger/triggers/triggers/screen.test.ts +++ b/tests/condition-trigger/triggers/triggers/screen.test.ts @@ -2,6 +2,7 @@ import { afterEach, describe, expect, it, vi, type Mock } from 'vitest'; import { ScreenTrigger } from '../../../../src/condition-trigger/triggers/triggers/screen'; import type { TriggerOfType } from '../../../../src/condition-trigger/triggers/triggers/types'; +import { stubMatchMedia } from '../../../test-utils'; // @vitest-environment jsdom describe('ScreenTrigger', () => { @@ -10,7 +11,7 @@ describe('ScreenTrigger', () => { const removeEventListener = vi.fn(); const mockMatchMedia = (): void => { - vi.spyOn(window, 'matchMedia').mockImplementation( + stubMatchMedia().mockImplementation( () => ({ get matches(): boolean { diff --git a/tests/config/profiles/casting.test.ts b/tests/config/profiles/casting.test.ts index dcc1cabe..c76aa388 100644 --- a/tests/config/profiles/casting.test.ts +++ b/tests/config/profiles/casting.test.ts @@ -1,5 +1,6 @@ import { expect, it } from 'vitest'; +import { copyConfig } from '../../../src/config/management'; import { CASTING_PROFILE } from '../../../src/config/profiles/casting'; import { setProfiles } from '../../../src/config/profiles/set-profiles'; import { advancedCameraCardConfigSchema } from '../../../src/config/schema/types'; @@ -23,7 +24,10 @@ it('should contain expected defaults', () => { it('should be parseable after application', () => { const rawInputConfig = createRawConfig(); - const parsedConfig = advancedCameraCardConfigSchema.parse(rawInputConfig); + // `setProfiles` writes into the config it is given, and Zod hands out a + // single shared instance of each default object, so the parse result must be + // cloned before it is mutated. + const parsedConfig = copyConfig(advancedCameraCardConfigSchema.parse(rawInputConfig)); setProfiles(rawInputConfig, parsedConfig, ['casting']); diff --git a/tests/config/profiles/doorbell.test.ts b/tests/config/profiles/doorbell.test.ts index 99860a60..ca2b7371 100644 --- a/tests/config/profiles/doorbell.test.ts +++ b/tests/config/profiles/doorbell.test.ts @@ -1,5 +1,6 @@ import { expect, it } from 'vitest'; +import { copyConfig } from '../../../src/config/management'; import { DOORBELL_PROFILE } from '../../../src/config/profiles/doorbell'; import { setProfiles } from '../../../src/config/profiles/set-profiles'; import { advancedCameraCardConfigSchema } from '../../../src/config/schema/types'; @@ -17,7 +18,10 @@ it('should contain expected defaults', () => { it('should be parseable after application', () => { const rawInputConfig = createRawConfig(); - const parsedConfig = advancedCameraCardConfigSchema.parse(rawInputConfig); + // `setProfiles` writes into the config it is given, and Zod hands out a + // single shared instance of each default object, so the parse result must be + // cloned before it is mutated. + const parsedConfig = copyConfig(advancedCameraCardConfigSchema.parse(rawInputConfig)); setProfiles(rawInputConfig, parsedConfig, ['doorbell']); diff --git a/tests/config/profiles/low-performance.test.ts b/tests/config/profiles/low-performance.test.ts index 97a6d8fa..95f981eb 100644 --- a/tests/config/profiles/low-performance.test.ts +++ b/tests/config/profiles/low-performance.test.ts @@ -1,5 +1,6 @@ import { expect, it } from 'vitest'; +import { copyConfig } from '../../../src/config/management'; import { LOW_PERFORMANCE_PROFILE } from '../../../src/config/profiles/low-performance'; import { setProfiles } from '../../../src/config/profiles/set-profiles'; import { advancedCameraCardConfigSchema } from '../../../src/config/schema/types'; @@ -53,7 +54,10 @@ it('should contain expected defaults', () => { it('should be parseable after application', () => { const rawInputConfig = createRawConfig(); - const parsedConfig = advancedCameraCardConfigSchema.parse(rawInputConfig); + // `setProfiles` writes into the config it is given, and Zod hands out a + // single shared instance of each default object, so the parse result must be + // cloned before it is mutated. + const parsedConfig = copyConfig(advancedCameraCardConfigSchema.parse(rawInputConfig)); setProfiles(rawInputConfig, parsedConfig, ['low-performance']); diff --git a/tests/config/profiles/scrubbing.test.ts b/tests/config/profiles/scrubbing.test.ts index 46d9d7a6..e49b1b1c 100644 --- a/tests/config/profiles/scrubbing.test.ts +++ b/tests/config/profiles/scrubbing.test.ts @@ -1,5 +1,6 @@ import { expect, it } from 'vitest'; +import { copyConfig } from '../../../src/config/management'; import { SCRUBBING_PROFILE } from '../../../src/config/profiles/scrubbing'; import { setProfiles } from '../../../src/config/profiles/set-profiles'; import { advancedCameraCardConfigSchema } from '../../../src/config/schema/types'; @@ -18,7 +19,10 @@ it('should contain expected defaults', () => { it('should be parseable after application', () => { const rawInputConfig = createRawConfig(); - const parsedConfig = advancedCameraCardConfigSchema.parse(rawInputConfig); + // `setProfiles` writes into the config it is given, and Zod hands out a + // single shared instance of each default object, so the parse result must be + // cloned before it is mutated. + const parsedConfig = copyConfig(advancedCameraCardConfigSchema.parse(rawInputConfig)); setProfiles(rawInputConfig, parsedConfig, ['low-performance']); diff --git a/tests/test-utils.ts b/tests/test-utils.ts index 115cd56b..e874cfad 100644 --- a/tests/test-utils.ts +++ b/tests/test-utils.ts @@ -6,7 +6,7 @@ import { } from 'home-assistant-js-websocket'; import type { LitElement } from 'lit'; import screenfull from 'screenfull'; -import { expect, vi } from 'vitest'; +import { expect, onTestFinished, vi, type Mock } from 'vitest'; import { mock } from 'vitest-mock-extended'; import { Camera } from '../src/camera-manager/camera'; @@ -577,23 +577,35 @@ export class TestViewMedia extends ViewMedia implements EventViewMedia, ReviewVi } } -export const ResizeObserverMock = vi.fn(() => ({ - disconnect: vi.fn(), - observe: vi.fn(), - unobserve: vi.fn(), -})); +// jsdom does not implement `window.matchMedia`, so it has to be installed +// before a test can control what it returns. Must be called from inside a test +// or a test hook, as the stub is removed once the test finishes. +export const stubMatchMedia = (): Mock => { + const matchMedia = vi.fn(); + vi.stubGlobal('matchMedia', matchMedia); + onTestFinished(() => { + // There is no singular unstubGlobal. + Reflect.deleteProperty(globalThis, 'matchMedia'); + }); + return matchMedia; +}; -export const IntersectionObserverMock = vi.fn(() => ({ - disconnect: vi.fn(), - observe: vi.fn(), - unobserve: vi.fn(), -})); +// A mock implementation must be callable with `new`, so it cannot be an arrow +// function. +const createObserverMock = () => + vi.fn(function () { + return { + disconnect: vi.fn(), + observe: vi.fn(), + unobserve: vi.fn(), + }; + }); -export const MutationObserverMock = vi.fn(() => ({ - disconnect: vi.fn(), - observe: vi.fn(), - unobserve: vi.fn(), -})); +export const ResizeObserverMock = createObserverMock(); + +export const IntersectionObserverMock = createObserverMock(); + +export const MutationObserverMock = createObserverMock(); export const requestAnimationFrameMock = (callback: FrameRequestCallback) => { callback(new Date().getTime()); @@ -650,6 +662,7 @@ export const callVisibilityHandler = async (visible: boolean): Promise => Object.defineProperty(document, 'visibilityState', { value: visible ? 'visible' : 'hidden', writable: true, + configurable: true, }); const mock = vi.mocked(global.document.addEventListener).mock; diff --git a/tests/utils/basic.test.ts b/tests/utils/basic.test.ts index 5d1c14f8..21473641 100644 --- a/tests/utils/basic.test.ts +++ b/tests/utils/basic.test.ts @@ -32,7 +32,7 @@ import { setOrRemoveAttribute, setOrRemoveStyleProperty, } from '../../src/utils/basic.js'; -import { createSlot, createSlotHost } from '../test-utils.js'; +import { createSlot, createSlotHost, stubMatchMedia } from '../test-utils.js'; describe('prettifyTitle', () => { it('should return undefined when passed undefined', () => { @@ -146,11 +146,11 @@ describe('isHoverableDevice', () => { }); it('should return hoverable', () => { - vi.spyOn(window, 'matchMedia').mockReturnValue({ matches: true }); + stubMatchMedia().mockReturnValue({ matches: true }); expect(isHoverableDevice()).toBeTruthy(); }); it('should return not hoverable', () => { - vi.spyOn(window, 'matchMedia').mockReturnValue({ matches: false }); + stubMatchMedia().mockReturnValue({ matches: false }); expect(isHoverableDevice()).toBeFalsy(); }); }); diff --git a/tests/utils/thumbnail.test.ts b/tests/utils/thumbnail.test.ts index 57dab494..35270920 100644 --- a/tests/utils/thumbnail.test.ts +++ b/tests/utils/thumbnail.test.ts @@ -71,7 +71,11 @@ describe('thumbnail utilities', () => { }); vi.stubGlobal( 'FileReader', - vi.fn(() => mockFileReader), + // The source calls `new FileReader()`, and a mock implementation must be + // callable with `new`, so it cannot be an arrow function. + vi.fn(function () { + return mockFileReader; + }), ); createFetchThumbnailTask( @@ -129,7 +133,9 @@ describe('thumbnail utilities', () => { const mockFileReader = mock(); vi.stubGlobal( 'FileReader', - vi.fn(() => mockFileReader), + vi.fn(function () { + return mockFileReader; + }), ); createFetchThumbnailTask( @@ -166,7 +172,9 @@ describe('thumbnail utilities', () => { }); vi.stubGlobal( 'FileReader', - vi.fn(() => mockFileReader), + vi.fn(function () { + return mockFileReader; + }), ); createFetchThumbnailTask( diff --git a/vite.config.ts b/vite.config.ts index 30fb6f2a..538640de 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -23,23 +23,6 @@ const EXCLUSIONS = [ ]; const TEST_DIRECTORY = 'tests'; -const INCLUSIONS = [`${TEST_DIRECTORY}/**/*.test.ts`]; - -// For test performance reasons, tests are split into two groups: -// -// - `shared`: run non-isolated, so they share one loaded copy of the source -// tree instead of each re-importing it. -// - `isolated`: given their own module registry per file, because sharing one -// would change their behaviour. A file calling `vi.mock()` cannot replace a -// module an earlier file already loaded unmocked; a file loading the template -// renderer reads browser globals as the renderer loads; and a file needing a -// DOM leaves modules holding a `window` that is torn down when it finishes, -// which breaks any later file that reaches one of those modules. -// -// Absent this variable every test file runs isolated, which is both the safe -// default and what coverage requires (istanbul only counts a module's top-level -// code the first time it runs). -const GROUP = process.env.VITEST_GROUP; const findTestFiles = (directory: string): string[] => { const files: string[] = []; @@ -54,16 +37,21 @@ const findTestFiles = (directory: string): string[] => { return files; }; -const REQUIRE_ISOLATION_REGEXP = - /\bvi\.(do)?mock\(|loadRenderer|stubConnectedHomeAssistant|@vitest-environment\s+jsdom/; +// Each test file is read and sorted into one of the projects below, which +// explain what these two properties cost. +const REQUIRE_ISOLATION_REGEXP = /\bvi\.(do)?mock\(/; +const REQUIRE_DOM_REGEXP = /@vitest-environment\s+jsdom/; -const getGroup = (file: string): string => - REQUIRE_ISOLATION_REGEXP.test(readFileSync(file, 'utf-8')) ? 'isolated' : 'shared'; +const getGroup = (file: string): string => { + const contents = readFileSync(file, 'utf-8'); + if (REQUIRE_ISOLATION_REGEXP.test(contents)) { + return 'isolated'; + } + return REQUIRE_DOM_REGEXP.test(contents) ? 'shared-jsdom' : 'shared-node'; +}; -const getInclusions = (): string[] => - GROUP - ? findTestFiles(TEST_DIRECTORY).filter((file) => getGroup(file) === GROUP) - : INCLUSIONS; +const getInclusions = (group: string): string[] => + findTestFiles(TEST_DIRECTORY).filter((file) => getGroup(file) === group); export default defineConfig({ plugins: [svgPath()], @@ -75,13 +63,62 @@ export default defineConfig({ inline: ['ha-nunjucks', 'ts-py-datetime'], }, }, - include: getInclusions(), // Forked child processes start and tear down faster here than worker // threads, which matters when every test file needs a fresh one. pool: 'forks', - isolate: !GROUP || GROUP === 'isolated', + // Importing the source tree costs far more than running the tests in it, so + // files are grouped by whether they can share one loaded copy of it. Each + // project below is a group that can, or the one that cannot. + projects: [ + { + extends: true, + test: { + // Nothing stops these sharing, so they run against a single loaded + // copy of the source tree. Most of the suite is here, and anything + // moved out of here pays to import that tree again. + name: 'shared-node', + include: getInclusions('shared-node'), + isolate: false, + }, + }, + { + extends: true, + test: { + // These share too, but only with each other. A module loaded under + // jsdom holds a reference to that DOM, so a worker that moves from a + // DOM file to a non-DOM one drops its loaded copy of the source tree + // and imports it again. A project's files are spread across workers + // without regard to environment, so putting both kinds in one project + // leaves every worker alternating between them and reloading as it + // goes, and the more workers there are the more often that happens. A + // project per environment hands each worker a run of files that all + // want the same one. The file-level `@vitest-environment jsdom` + // comments are what sort files into here, and are redundant once they + // arrive. + // + // They share one `document` as well, so a file that redefines part of + // it must leave the property configurable for the files that follow. + name: 'shared-jsdom', + include: getInclusions('shared-jsdom'), + environment: 'jsdom', + isolate: false, + }, + }, + { + extends: true, + test: { + // `vi.mock()` cannot replace a module that an earlier file already + // loaded unmocked, so these cannot share a loaded source tree with + // anything, including each other. They get a registry per file and + // pay the full import cost. + name: 'isolated', + include: getInclusions('isolated'), + isolate: true, + }, + }, + ], // Hide console writing to keep output clean, usual sources of noise: // - Unnecessary Lit dev-mode warnings. diff --git a/yarn.lock b/yarn.lock index dd86a82a..a7a5a5f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,17 +39,7 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:^2.2.0": - version: 2.3.0 - resolution: "@ampproject/remapping@npm:2.3.0" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.23.5": +"@babel/code-frame@npm:^7.0.0": version: 7.23.5 resolution: "@babel/code-frame@npm:7.23.5" dependencies: @@ -80,45 +70,33 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/compat-data@npm:7.23.5" - checksum: 10c0/081278ed46131a890ad566a59c61600a5f9557bd8ee5e535890c8548192532ea92590742fd74bd9db83d74c669ef8a04a7e1c85cdea27f960233e3b83c3a957c +"@babel/compat-data@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/compat-data@npm:7.29.7" + checksum: 10c0/47913f05e08a45a1c9df38c02b4b49e391005085b489432647a1abe112e5d9c75e3be8ea5972b7f6da4ec5d1339922ceb9ea02b8a25d4ed1cb8636e5261f344e languageName: node linkType: hard -"@babel/core@npm:^7.23.9": - version: 7.24.0 - resolution: "@babel/core@npm:7.24.0" +"@babel/core@npm:^7.29.0": + version: 7.29.7 + resolution: "@babel/core@npm:7.29.7" dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.23.5" - "@babel/generator": "npm:^7.23.6" - "@babel/helper-compilation-targets": "npm:^7.23.6" - "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helpers": "npm:^7.24.0" - "@babel/parser": "npm:^7.24.0" - "@babel/template": "npm:^7.24.0" - "@babel/traverse": "npm:^7.24.0" - "@babel/types": "npm:^7.24.0" + "@babel/code-frame": "npm:^7.29.7" + "@babel/generator": "npm:^7.29.7" + "@babel/helper-compilation-targets": "npm:^7.29.7" + "@babel/helper-module-transforms": "npm:^7.29.7" + "@babel/helpers": "npm:^7.29.7" + "@babel/parser": "npm:^7.29.7" + "@babel/template": "npm:^7.29.7" + "@babel/traverse": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + "@jridgewell/remapping": "npm:^2.3.5" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/bb37cbf0bdfd676b246af0a3d9a7932d10573f2d45114fdda02a71889e35530ce13d8930177e78b065d6734b8d45a4fbf7c77f223b1d44b4a28cfe5fefee93ed - languageName: node - linkType: hard - -"@babel/generator@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/generator@npm:7.23.6" - dependencies: - "@babel/types": "npm:^7.23.6" - "@jridgewell/gen-mapping": "npm:^0.3.2" - "@jridgewell/trace-mapping": "npm:^0.3.17" - jsesc: "npm:^2.5.1" - checksum: 10c0/53540e905cd10db05d9aee0a5304e36927f455ce66f95d1253bb8a179f286b88fa7062ea0db354c566fe27f8bb96567566084ffd259f8feaae1de5eccc8afbda + checksum: 10c0/112fb09c24de7a1de64d1de2c31fe65c4e6af4cb2fb6e6d99ea5373e6fc51e75b88581c0efae4c4c68f119a02a988c7106e95011a41530a2fb8ed793c7eaa07b languageName: node linkType: hard @@ -135,33 +113,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/helper-compilation-targets@npm:7.23.6" +"@babel/helper-compilation-targets@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-compilation-targets@npm:7.29.7" dependencies: - "@babel/compat-data": "npm:^7.23.5" - "@babel/helper-validator-option": "npm:^7.23.5" - browserslist: "npm:^4.22.2" + "@babel/compat-data": "npm:^7.29.7" + "@babel/helper-validator-option": "npm:^7.29.7" + browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10c0/ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-environment-visitor@npm:7.22.20" - checksum: 10c0/e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-function-name@npm:7.23.0" - dependencies: - "@babel/template": "npm:^7.22.15" - "@babel/types": "npm:^7.23.0" - checksum: 10c0/d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 + checksum: 10c0/4c15fd4c69a0a7047799a28a88460c19cede0a0ee8af994ea169114986f4af48b92c7393a4a3fee0456c11a656eece3448a6ed06354453d6c27cccf17195453b languageName: node linkType: hard @@ -172,61 +133,26 @@ __metadata: languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-hoist-variables@npm:7.22.5" +"@babel/helper-module-imports@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-module-imports@npm:7.29.7" dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10c0/60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 + "@babel/traverse": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + checksum: 10c0/6adf60d97356027413342a092f818d9678c4f5caff716a33e3284b5ae14e47a9e88059d421dde4ee4894691260039a12602c0e7becadc175602194b40dfa345d languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-module-imports@npm:7.22.15" +"@babel/helper-module-transforms@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-module-transforms@npm:7.29.7" dependencies: - "@babel/types": "npm:^7.22.15" - checksum: 10c0/4e0d7fc36d02c1b8c8b3006dfbfeedf7a367d3334a04934255de5128115ea0bafdeb3e5736a2559917f0653e4e437400d54542da0468e08d3cbc86d3bbfa8f30 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/helper-module-transforms@npm:7.23.3" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-module-imports": "npm:^7.22.15" - "@babel/helper-simple-access": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/helper-validator-identifier": "npm:^7.22.20" + "@babel/helper-module-imports": "npm:^7.29.7" + "@babel/helper-validator-identifier": "npm:^7.29.7" + "@babel/traverse": "npm:^7.29.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-simple-access@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10c0/f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-split-export-declaration@npm:7.22.6" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10c0/d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/helper-string-parser@npm:7.23.4" - checksum: 10c0/f348d5637ad70b6b54b026d6544bd9040f78d24e7ec245a0fc42293968181f6ae9879c22d89744730d246ce8ec53588f716f102addd4df8bbc79b73ea10004ac + checksum: 10c0/ee5a2172c24a42be696836f4b0d947489c9729d8adf5821885cf77d1ad5333e3c447368e9a71f67df1099570490553dccf9f888ef0a92a48aa63cb086bd8c7e1 languageName: node linkType: hard @@ -258,21 +184,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/helper-validator-option@npm:7.23.5" - checksum: 10c0/af45d5c0defb292ba6fd38979e8f13d7da63f9623d8ab9ededc394f67eb45857d2601278d151ae9affb6e03d5d608485806cd45af08b4468a0515cf506510e94 +"@babel/helper-validator-option@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-validator-option@npm:7.29.7" + checksum: 10c0/d2a06c6d0ac40ba4a2f219fc2cab249c7a94bacdb2686273b7f9598571c908809b48468ff588915a346e6cc7296f60b581023d1d498b747fed06f779d335c2cc languageName: node linkType: hard -"@babel/helpers@npm:^7.24.0": - version: 7.24.0 - resolution: "@babel/helpers@npm:7.24.0" +"@babel/helpers@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helpers@npm:7.29.7" dependencies: - "@babel/template": "npm:^7.24.0" - "@babel/traverse": "npm:^7.24.0" - "@babel/types": "npm:^7.24.0" - checksum: 10c0/dd27c9f11c1c5244ef312fae37636f2fcc69c541c46508017b846c4cf680af059f1922ce84e3f778f123a70d027ded75c96070ee8e906f3bc52dc26dc43df608 + "@babel/template": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + checksum: 10c0/218e8d10953647c9f44775f5a022b227a182674853b5ea8631889deb7e1a3e4bc870388aaecf59bb8bd92a87f9a96220ed3f70a35bffec6bcf9169ecb67891ac languageName: node linkType: hard @@ -299,16 +224,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.23.6, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0": - version: 7.24.0 - resolution: "@babel/parser@npm:7.24.0" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/77593d0b9de9906823c4d653bb6cda1c7593837598516330f655f70cba6224a37def7dbe5b4dad0038482d407d8d209eb8be5f48ca9a13357d769f829c5adb8e - languageName: node - linkType: hard - -"@babel/parser@npm:^7.26.2, @babel/parser@npm:^7.29.7": +"@babel/parser@npm:^7.26.2, @babel/parser@npm:^7.29.3, @babel/parser@npm:^7.29.7": version: 7.29.7 resolution: "@babel/parser@npm:7.29.7" dependencies: @@ -319,17 +235,6 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.22.15, @babel/template@npm:^7.24.0": - version: 7.24.0 - resolution: "@babel/template@npm:7.24.0" - dependencies: - "@babel/code-frame": "npm:^7.23.5" - "@babel/parser": "npm:^7.24.0" - "@babel/types": "npm:^7.24.0" - checksum: 10c0/9d3dd8d22fe1c36bc3bdef6118af1f4b030aaf6d7d2619f5da203efa818a2185d717523486c111de8d99a8649ddf4bbf6b2a7a64962d8411cf6a8fa89f010e54 - languageName: node - linkType: hard - "@babel/template@npm:^7.29.7": version: 7.29.7 resolution: "@babel/template@npm:7.29.7" @@ -341,25 +246,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.24.0": - version: 7.24.0 - resolution: "@babel/traverse@npm:7.24.0" - dependencies: - "@babel/code-frame": "npm:^7.23.5" - "@babel/generator": "npm:^7.23.6" - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-hoist-variables": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.24.0" - "@babel/types": "npm:^7.24.0" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/55ffd2b0ce0fbd0a09051edc4def4fb1e96f35e0b100c0dc2a7429df569971ae312c290e980e423471f350961705698a257c7eea8c8304918024cc26f02468ba - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.25.9": +"@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.29.7": version: 7.29.7 resolution: "@babel/traverse@npm:7.29.7" dependencies: @@ -374,18 +261,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.6, @babel/types@npm:^7.24.0, @babel/types@npm:^7.8.3": - version: 7.24.0 - resolution: "@babel/types@npm:7.24.0" - dependencies: - "@babel/helper-string-parser": "npm:^7.23.4" - "@babel/helper-validator-identifier": "npm:^7.22.20" - to-fast-properties: "npm:^2.0.0" - checksum: 10c0/777a0bb5dbe038ca4c905fdafb1cdb6bdd10fe9d63ce13eca0bd91909363cbad554a53dc1f902004b78c1dcbc742056f877f2c99eeedff647333b1fadf51235d - languageName: node - linkType: hard - -"@babel/types@npm:^7.26.0, @babel/types@npm:^7.29.7": +"@babel/types@npm:^7.26.0, @babel/types@npm:^7.29.0, @babel/types@npm:^7.29.7": version: 7.29.7 resolution: "@babel/types@npm:7.29.7" dependencies: @@ -434,6 +310,16 @@ __metadata: languageName: node linkType: hard +"@emnapi/core@npm:1.11.1": + version: 1.11.1 + resolution: "@emnapi/core@npm:1.11.1" + dependencies: + "@emnapi/wasi-threads": "npm:1.2.2" + tslib: "npm:^2.4.0" + checksum: 10c0/2c6defdac2d1d26090384655d7d6c9614fa553853b1760597686749e9375dc2aa0dae80a2615b81c254600f5d531d07d8466cde0d331a8caae64b93f3ca5937e + languageName: node + linkType: hard + "@emnapi/core@npm:1.11.2": version: 1.11.2 resolution: "@emnapi/core@npm:1.11.2" @@ -444,6 +330,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/runtime@npm:1.11.1": + version: 1.11.1 + resolution: "@emnapi/runtime@npm:1.11.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/04332fb62076afc440aa23316c04bec42f584ca8b074e5507d08e2b33a47cbe0493b1aadb8f3c1057b64ae1e17f5bde1a7bc37f7facc9d0bc25c18197cbd366f + languageName: node + linkType: hard + "@emnapi/runtime@npm:1.11.2": version: 1.11.2 resolution: "@emnapi/runtime@npm:1.11.2" @@ -462,167 +357,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/aix-ppc64@npm:0.19.12" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/android-arm64@npm:0.19.12" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/android-arm@npm:0.19.12" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/android-x64@npm:0.19.12" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/darwin-arm64@npm:0.19.12" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/darwin-x64@npm:0.19.12" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/freebsd-arm64@npm:0.19.12" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/freebsd-x64@npm:0.19.12" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-arm64@npm:0.19.12" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-arm@npm:0.19.12" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-ia32@npm:0.19.12" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-loong64@npm:0.19.12" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-mips64el@npm:0.19.12" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-ppc64@npm:0.19.12" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-riscv64@npm:0.19.12" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-s390x@npm:0.19.12" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-x64@npm:0.19.12" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/netbsd-x64@npm:0.19.12" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/openbsd-x64@npm:0.19.12" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/sunos-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/sunos-x64@npm:0.19.12" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/win32-arm64@npm:0.19.12" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/win32-ia32@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/win32-ia32@npm:0.19.12" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/win32-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/win32-x64@npm:0.19.12" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -854,23 +588,14 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": +"@istanbuljs/schema@npm:^0.1.3": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a languageName: node linkType: hard -"@jest/schemas@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/schemas@npm:29.6.3" - dependencies: - "@sinclair/typebox": "npm:^0.27.8" - checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": +"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.5 resolution: "@jridgewell/gen-mapping@npm:0.3.5" dependencies: @@ -881,7 +606,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.12": +"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.13": version: 0.3.13 resolution: "@jridgewell/gen-mapping@npm:0.3.13" dependencies: @@ -891,6 +616,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/remapping@npm:^2.3.5": + version: 2.3.5 + resolution: "@jridgewell/remapping@npm:2.3.5" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" @@ -922,34 +657,14 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.5.0": +"@jridgewell/sourcemap-codec@npm:^1.5.0, @jridgewell/sourcemap-codec@npm:^1.5.5": version: 1.5.5 resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.24 - resolution: "@jridgewell/trace-mapping@npm:0.3.24" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10c0/5d6656c439f67cee8bc196a72ceebc446c23924dba6c67806fd3dfefb3ef4c8b2168ea44a0293d8c33c71b88e60862e0397576ef8707e4321e64898fec7a0189 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.23": - version: 0.3.25 - resolution: "@jridgewell/trace-mapping@npm:0.3.25" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.28": +"@jridgewell/trace-mapping@npm:0.3.31, @jridgewell/trace-mapping@npm:^0.3.28": version: 0.3.31 resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: @@ -959,6 +674,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.24 + resolution: "@jridgewell/trace-mapping@npm:0.3.24" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/5d6656c439f67cee8bc196a72ceebc446c23924dba6c67806fd3dfefb3ef4c8b2168ea44a0293d8c33c71b88e60862e0397576ef8707e4321e64898fec7a0189 + languageName: node + linkType: hard + "@lit-labs/scoped-registry-mixin@npm:^1.0.3": version: 1.0.3 resolution: "@lit-labs/scoped-registry-mixin@npm:1.0.3" @@ -1516,6 +1241,13 @@ __metadata: languageName: node linkType: hard +"@oxc-project/types@npm:=0.139.0": + version: 0.139.0 + resolution: "@oxc-project/types@npm:0.139.0" + checksum: 10c0/ad57d1bee4b972ecf6784183da12ac6865edfff326bd83712fb75262b901868bc2b72d6fb502465a5f0dbaaded2910003f73365caf3821901dad565cc0b7fdf2 + languageName: node + linkType: hard + "@oxc-project/types@npm:^0.140.0": version: 0.140.0 resolution: "@oxc-project/types@npm:0.140.0" @@ -1701,6 +1433,122 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-android-arm64@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-android-arm64@npm:1.1.5" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-darwin-arm64@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-darwin-arm64@npm:1.1.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-darwin-x64@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-darwin-x64@npm:1.1.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/binding-freebsd-x64@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-freebsd-x64@npm:1.1.5" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm-gnueabihf@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.1.5" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm64-gnu@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.1.5" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm64-musl@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.1.5" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rolldown/binding-linux-ppc64-gnu@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.1.5" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-s390x-gnu@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.1.5" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-x64-gnu@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.1.5" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-x64-musl@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.1.5" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rolldown/binding-openharmony-arm64@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.1.5" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-wasm32-wasi@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-wasm32-wasi@npm:1.1.5" + dependencies: + "@emnapi/core": "npm:1.11.1" + "@emnapi/runtime": "npm:1.11.1" + "@napi-rs/wasm-runtime": "npm:^1.1.6" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@rolldown/binding-win32-arm64-msvc@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.1.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-win32-x64-msvc@npm:1.1.5": + version: 1.1.5 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.1.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/pluginutils@npm:^1.0.0": + version: 1.0.1 + resolution: "@rolldown/pluginutils@npm:1.0.1" + checksum: 10c0/99d9b06d90196823e4d8c841f258db7a16e5dbba5824a2962b05d907b79f1ba929d56f22dd744fd530936e568c865ee56a719dc31e57e13bc0a8eb4764a8d8dd + languageName: node + linkType: hard + "@rollup/plugin-commonjs@npm:^26.0.1": version: 26.0.1 resolution: "@rollup/plugin-commonjs@npm:26.0.1" @@ -1858,97 +1706,6 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.12.0" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@rollup/rollup-android-arm64@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-android-arm64@npm:4.12.0" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-arm64@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.12.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-x64@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.12.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm-gnueabihf@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.12.0" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-gnu@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.12.0" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-musl@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.12.0" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-riscv64-gnu@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.12.0" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-gnu@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.12.0" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-musl@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.12.0" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-win32-arm64-msvc@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.12.0" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-ia32-msvc@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.12.0" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@rollup/rollup-win32-x64-msvc@npm:4.12.0": - version: 4.12.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.12.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@sec-ant/readable-stream@npm:^0.4.1": version: 0.4.1 resolution: "@sec-ant/readable-stream@npm:0.4.1" @@ -2108,13 +1865,6 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.27.8": - version: 0.27.8 - resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e - languageName: node - linkType: hard - "@sindresorhus/is@npm:^0.14.0": version: 0.14.0 resolution: "@sindresorhus/is@npm:0.14.0" @@ -2143,6 +1893,13 @@ __metadata: languageName: node linkType: hard +"@standard-schema/spec@npm:^1.1.0": + version: 1.1.0 + resolution: "@standard-schema/spec@npm:1.1.0" + checksum: 10c0/d90f55acde4b2deb983529c87e8025fa693de1a5e8b49ecc6eb84d1fd96328add0e03d7d551442156c7432fd78165b2c26ff561b970a9a881f046abb78d6a526 + languageName: node + linkType: hard + "@stencil/core@npm:^2.20.0, @stencil/core@npm:^2.3.0": version: 2.22.3 resolution: "@stencil/core@npm:2.22.3" @@ -2201,7 +1958,24 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.0": +"@types/chai@npm:^5.2.2": + version: 5.2.3 + resolution: "@types/chai@npm:5.2.3" + dependencies: + "@types/deep-eql": "npm:*" + assertion-error: "npm:^2.0.1" + checksum: 10c0/e0ef1de3b6f8045a5e473e867c8565788c444271409d155588504840ad1a53611011f85072188c2833941189400228c1745d78323dac13fcede9c2b28bacfb2f + languageName: node + linkType: hard + +"@types/deep-eql@npm:*": + version: 4.0.2 + resolution: "@types/deep-eql@npm:4.0.2" + checksum: 10c0/bf3f811843117900d7084b9d0c852da9a044d12eb40e6de73b552598a6843c21291a8a381b0532644574beecd5e3491c5ff3a0365ab86b15d59862c025384844 + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d @@ -2467,76 +2241,105 @@ __metadata: languageName: node linkType: hard -"@vitest/coverage-istanbul@npm:^1.6.0": - version: 1.6.0 - resolution: "@vitest/coverage-istanbul@npm:1.6.0" +"@vitest/coverage-istanbul@npm:^4.1.10": + version: 4.1.10 + resolution: "@vitest/coverage-istanbul@npm:4.1.10" dependencies: - debug: "npm:^4.3.4" + "@babel/core": "npm:^7.29.0" + "@istanbuljs/schema": "npm:^0.1.3" + "@jridgewell/gen-mapping": "npm:^0.3.13" + "@jridgewell/trace-mapping": "npm:0.3.31" istanbul-lib-coverage: "npm:^3.2.2" - istanbul-lib-instrument: "npm:^6.0.1" istanbul-lib-report: "npm:^3.0.1" - istanbul-lib-source-maps: "npm:^5.0.4" - istanbul-reports: "npm:^3.1.6" - magicast: "npm:^0.3.3" - picocolors: "npm:^1.0.0" - test-exclude: "npm:^6.0.0" + istanbul-reports: "npm:^3.2.0" + magicast: "npm:^0.5.2" + obug: "npm:^2.1.1" + tinyrainbow: "npm:^3.1.0" peerDependencies: - vitest: 1.6.0 - checksum: 10c0/42524de58d24101b50da048214b8e760c46f32760e371c700704a67ace2828d9d12b6d87720139c8a7e17fbce40dfcaf47296605c85533cc78b9c9f73c50e3d2 + vitest: 4.1.10 + checksum: 10c0/a426b0aff94482587a100db7e8db4e238fabf9e5bc4d33a319bd9cd4261b8972a7b3d78f2bc7cbc3d11b0b58b5d7cc487f96ab35a96c1c766c54f9b6d5eb4f78 languageName: node linkType: hard -"@vitest/expect@npm:1.6.0": - version: 1.6.0 - resolution: "@vitest/expect@npm:1.6.0" +"@vitest/expect@npm:4.1.10": + version: 4.1.10 + resolution: "@vitest/expect@npm:4.1.10" dependencies: - "@vitest/spy": "npm:1.6.0" - "@vitest/utils": "npm:1.6.0" - chai: "npm:^4.3.10" - checksum: 10c0/a4351f912a70543e04960f5694f1f1ac95f71a856a46e87bba27d3eb72a08c5d11d35021cbdc6077452a152e7d93723fc804bba76c2cc53c8896b7789caadae3 + "@standard-schema/spec": "npm:^1.1.0" + "@types/chai": "npm:^5.2.2" + "@vitest/spy": "npm:4.1.10" + "@vitest/utils": "npm:4.1.10" + chai: "npm:^6.2.2" + tinyrainbow: "npm:^3.1.0" + checksum: 10c0/a817ad0d9bd6a039776a7228d54fb8319c17e4af15917407f5566ac61781a8511f591d302519d6999217399915bc3c0290028189fc73f5c38f80cb01b6f19c8d languageName: node linkType: hard -"@vitest/runner@npm:1.6.0": - version: 1.6.0 - resolution: "@vitest/runner@npm:1.6.0" +"@vitest/mocker@npm:4.1.10": + version: 4.1.10 + resolution: "@vitest/mocker@npm:4.1.10" dependencies: - "@vitest/utils": "npm:1.6.0" - p-limit: "npm:^5.0.0" - pathe: "npm:^1.1.1" - checksum: 10c0/27d67fa51f40effe0e41ee5f26563c12c0ef9a96161f806036f02ea5eb9980c5cdf305a70673942e7a1e3d472d4d7feb40093ae93024ef1ccc40637fc65b1d2f - languageName: node - linkType: hard - -"@vitest/snapshot@npm:1.6.0": - version: 1.6.0 - resolution: "@vitest/snapshot@npm:1.6.0" - dependencies: - magic-string: "npm:^0.30.5" - pathe: "npm:^1.1.1" - pretty-format: "npm:^29.7.0" - checksum: 10c0/be027fd268d524589ff50c5fad7b4faa1ac5742b59ac6c1dc6f5a3930aad553560e6d8775e90ac4dfae4be746fc732a6f134ba95606a1519707ce70db3a772a5 - languageName: node - linkType: hard - -"@vitest/spy@npm:1.6.0": - version: 1.6.0 - resolution: "@vitest/spy@npm:1.6.0" - dependencies: - tinyspy: "npm:^2.2.0" - checksum: 10c0/df66ea6632b44fb76ef6a65c1abbace13d883703aff37cd6d062add6dcd1b883f19ce733af8e0f7feb185b61600c6eb4042a518e4fb66323d0690ec357f9401c - languageName: node - linkType: hard - -"@vitest/utils@npm:1.6.0": - version: 1.6.0 - resolution: "@vitest/utils@npm:1.6.0" - dependencies: - diff-sequences: "npm:^29.6.3" + "@vitest/spy": "npm:4.1.10" estree-walker: "npm:^3.0.3" - loupe: "npm:^2.3.7" - pretty-format: "npm:^29.7.0" - checksum: 10c0/8b0d19835866455eb0b02b31c5ca3d8ad45f41a24e4c7e1f064b480f6b2804dc895a70af332f14c11ed89581011b92b179718523f55f5b14787285a0321b1301 + magic-string: "npm:^0.30.21" + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: 10c0/4aa70b0df58681652e2e28093437fb2e8f4d02a6d03f5619abc266ac1c5ae5f43326148061d13ae6e071e0f6cfcf7634659af63644de8ce098a7c98949a3d1ad + languageName: node + linkType: hard + +"@vitest/pretty-format@npm:4.1.10": + version: 4.1.10 + resolution: "@vitest/pretty-format@npm:4.1.10" + dependencies: + tinyrainbow: "npm:^3.1.0" + checksum: 10c0/1a5daba730ffe23f2000bff484b4b2842f3b178d93663cb487b215516b8d3b62caa3e2bb2a3c63307b61a9fe58fb9bfff38559bc0c5e49d8aa403d6803a1d918 + languageName: node + linkType: hard + +"@vitest/runner@npm:4.1.10": + version: 4.1.10 + resolution: "@vitest/runner@npm:4.1.10" + dependencies: + "@vitest/utils": "npm:4.1.10" + pathe: "npm:^2.0.3" + checksum: 10c0/554b72639de9694271b99be8ae273fe12ec793093ec91cce143816cd1187d40b7138a4d9d4de4f456cfca9567de986825bff97e107c05b9eb4abc130e854286d + languageName: node + linkType: hard + +"@vitest/snapshot@npm:4.1.10": + version: 4.1.10 + resolution: "@vitest/snapshot@npm:4.1.10" + dependencies: + "@vitest/pretty-format": "npm:4.1.10" + "@vitest/utils": "npm:4.1.10" + magic-string: "npm:^0.30.21" + pathe: "npm:^2.0.3" + checksum: 10c0/e71398725f51af5fd0c07bb4b957d0f987daf9b4c564ac24cb2a4d1afde1a6939f535ac17761a32dcc41b0a1e6d4088af66dc44df89fdebebb92aabed1a92b5f + languageName: node + linkType: hard + +"@vitest/spy@npm:4.1.10": + version: 4.1.10 + resolution: "@vitest/spy@npm:4.1.10" + checksum: 10c0/e5c08012560af6727fd66741c5cda25560d7c5442103d0c83e4276a9b0dd90b9da6cdf823a461195229a16c6ff87768ce788a68d0fa29dea73ee285618668178 + languageName: node + linkType: hard + +"@vitest/utils@npm:4.1.10": + version: 4.1.10 + resolution: "@vitest/utils@npm:4.1.10" + dependencies: + "@vitest/pretty-format": "npm:4.1.10" + convert-source-map: "npm:^2.0.0" + tinyrainbow: "npm:^3.1.0" + checksum: 10c0/05b0ecec6997ec22fc08377e57dbd8fa37992e05961f3a7a916d98b1ab56d15c2a87dbd83d392b628242bdc156b1705e7fa60a3bf0c54bdb51158c153e05fc5d languageName: node linkType: hard @@ -2587,15 +2390,6 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.3.2": - version: 8.3.3 - resolution: "acorn-walk@npm:8.3.3" - dependencies: - acorn: "npm:^8.11.0" - checksum: 10c0/4a9e24313e6a0a7b389e712ba69b66b455b4cb25988903506a8d247e7b126f02060b05a8a5b738a9284214e4ca95f383dd93443a4ba84f1af9b528305c7f243b - languageName: node - linkType: hard - "acorn@npm:^8.1.0, acorn@npm:^8.8.2": version: 8.11.3 resolution: "acorn@npm:8.11.3" @@ -2605,15 +2399,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.11.0, acorn@npm:^8.11.3": - version: 8.12.1 - resolution: "acorn@npm:8.12.1" - bin: - acorn: bin/acorn - checksum: 10c0/51fb26cd678f914e13287e886da2d7021f8c2bc0ccc95e03d3e0447ee278dd3b40b9c57dc222acd5881adcf26f3edc40901a4953403232129e3876793cd17386 - languageName: node - linkType: hard - "acorn@npm:^8.14.0": version: 8.14.1 resolution: "acorn@npm:8.14.1" @@ -2650,7 +2435,7 @@ __metadata: "@typescript-eslint/eslint-plugin": "npm:^8.30.1" "@typescript-eslint/parser": "npm:^8.30.1" "@use-gesture/vanilla": "npm:^10.3.1" - "@vitest/coverage-istanbul": "npm:^1.6.0" + "@vitest/coverage-istanbul": "npm:^4.1.10" any-date-parser: "npm:^2.2.0" component-emitter: "npm:^1.3.1" compute-scroll-into-view: "npm:^3.1.1" @@ -2691,8 +2476,8 @@ __metadata: vis-data: "npm:^7.1.9" vis-timeline: "npm:^7.7.3" vis-util: "npm:^5.0.7" - vitest: "npm:^1.6.0" - vitest-mock-extended: "npm:^1.3.1" + vitest: "npm:^4.1.10" + vitest-mock-extended: "npm:^5.1.0" web-dialog: "npm:^0.0.11" xss: "npm:^1.0.15" zod: "npm:^4.3.6" @@ -2832,13 +2617,6 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^5.0.0": - version: 5.2.0 - resolution: "ansi-styles@npm:5.2.0" - checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df - languageName: node - linkType: hard - "ansi-styles@npm:^6.1.0": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" @@ -2912,10 +2690,10 @@ __metadata: languageName: node linkType: hard -"assertion-error@npm:^1.1.0": - version: 1.1.0 - resolution: "assertion-error@npm:1.1.0" - checksum: 10c0/25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b +"assertion-error@npm:^2.0.1": + version: 2.0.1 + resolution: "assertion-error@npm:2.0.1" + checksum: 10c0/bbbcb117ac6480138f8c93cf7f535614282dea9dc828f540cdece85e3c665e8f78958b96afac52f29ff883c72638e6a87d469ecc9fe5bc902df03ed24a55dba8 languageName: node linkType: hard @@ -2933,6 +2711,15 @@ __metadata: languageName: node linkType: hard +"baseline-browser-mapping@npm:^2.10.44": + version: 2.11.3 + resolution: "baseline-browser-mapping@npm:2.11.3" + bin: + baseline-browser-mapping: dist/cli.cjs + checksum: 10c0/163c8fd7161133afdd660d21f87b7ec4eb31ae0070dfaffa2f8b8c49929263a205b0667052814b48325fdd940b93bcaa0ce2dff3446413d2ef4ebce452b8edce + languageName: node + linkType: hard + "before-after-hook@npm:^3.0.2": version: 3.0.2 resolution: "before-after-hook@npm:3.0.2" @@ -3033,7 +2820,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.22.2": +"browserslist@npm:^4.0.0": version: 4.23.0 resolution: "browserslist@npm:4.23.0" dependencies: @@ -3061,6 +2848,21 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.24.0": + version: 4.28.7 + resolution: "browserslist@npm:4.28.7" + dependencies: + baseline-browser-mapping: "npm:^2.10.44" + caniuse-lite: "npm:^1.0.30001806" + electron-to-chromium: "npm:^1.5.393" + node-releases: "npm:^2.0.51" + update-browserslist-db: "npm:^1.2.3" + bin: + browserslist: cli.js + checksum: 10c0/dc41922a9ff0d81e5492498bdab2d932e3a3222f4277814ba38ee64f4e51f26e5244a7cce0777b4cac3ceff6eb196f5cadbb2a832620973a7f9c39611f6bc78e + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -3075,13 +2877,6 @@ __metadata: languageName: node linkType: hard -"cac@npm:^6.7.14": - version: 6.7.14 - resolution: "cac@npm:6.7.14" - checksum: 10c0/4ee06aaa7bab8981f0d54e5f5f9d4adcd64058e9697563ce336d8a3878ed018ee18ebe5359b2430eceae87e0758e62ea2019c3f52ae6e211b1bd2e133856cd10 - languageName: node - linkType: hard - "cacache@npm:^18.0.0": version: 18.0.2 resolution: "cacache@npm:18.0.2" @@ -3177,18 +2972,17 @@ __metadata: languageName: node linkType: hard -"chai@npm:^4.3.10": - version: 4.4.1 - resolution: "chai@npm:4.4.1" - dependencies: - assertion-error: "npm:^1.1.0" - check-error: "npm:^1.0.3" - deep-eql: "npm:^4.1.3" - get-func-name: "npm:^2.0.2" - loupe: "npm:^2.3.6" - pathval: "npm:^1.1.1" - type-detect: "npm:^4.0.8" - checksum: 10c0/91590a8fe18bd6235dece04ccb2d5b4ecec49984b50924499bdcd7a95c02cb1fd2a689407c19bb854497bde534ef57525cfad6c7fdd2507100fd802fbc2aefbd +"caniuse-lite@npm:^1.0.30001806": + version: 1.0.30001806 + resolution: "caniuse-lite@npm:1.0.30001806" + checksum: 10c0/9442c8afff0968e9b2ce0104a7340c1ce4a5c09f469ccb9eef10d25712ea0afe542486e5318c697c70dd502f988cfc04eaa1c9438c92ac3bcf4d708a2a17bee1 + languageName: node + linkType: hard + +"chai@npm:^6.2.2": + version: 6.2.2 + resolution: "chai@npm:6.2.2" + checksum: 10c0/e6c69e5f0c11dffe6ea13d0290936ebb68fcc1ad688b8e952e131df6a6d5797d5e860bc55cef1aca2e950c3e1f96daf79e9d5a70fb7dbaab4e46355e2635ed53 languageName: node linkType: hard @@ -3250,15 +3044,6 @@ __metadata: languageName: node linkType: hard -"check-error@npm:^1.0.3": - version: 1.0.3 - resolution: "check-error@npm:1.0.3" - dependencies: - get-func-name: "npm:^2.0.2" - checksum: 10c0/94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841 - languageName: node - linkType: hard - "chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.5.0": version: 3.6.0 resolution: "chokidar@npm:3.6.0" @@ -3533,13 +3318,6 @@ __metadata: languageName: node linkType: hard -"confbox@npm:^0.1.7": - version: 0.1.7 - resolution: "confbox@npm:0.1.7" - checksum: 10c0/18b40c2f652196a833f3f1a5db2326a8a579cd14eacabfe637e4fc8cb9b68d7cf296139a38c5e7c688ce5041bf46f9adce05932d43fde44cf7e012840b5da111 - languageName: node - linkType: hard - "config-chain@npm:^1.1.11": version: 1.1.13 resolution: "config-chain@npm:1.1.13" @@ -3944,7 +3722,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -3998,15 +3776,6 @@ __metadata: languageName: node linkType: hard -"deep-eql@npm:^4.1.3": - version: 4.1.4 - resolution: "deep-eql@npm:4.1.4" - dependencies: - type-detect: "npm:^4.0.0" - checksum: 10c0/264e0613493b43552fc908f4ff87b8b445c0e6e075656649600e1b8a17a57ee03e960156fce7177646e4d2ddaf8e5ee616d76bd79929ff593e5c79e4e5e6c517 - languageName: node - linkType: hard - "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -4070,10 +3839,10 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.6.3": - version: 29.6.3 - resolution: "diff-sequences@npm:29.6.3" - checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 +"detect-libc@npm:^2.0.3": + version: 2.1.2 + resolution: "detect-libc@npm:2.1.2" + checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4 languageName: node linkType: hard @@ -4247,6 +4016,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.393": + version: 1.5.396 + resolution: "electron-to-chromium@npm:1.5.396" + checksum: 10c0/2ac1d007acae6466649c2ada1f147fa205d980fc01bc602da00823b64a88b4286138a71c7b145f67dfa9103f69fd884bf706395a72886358d8f231a7011a39e5 + languageName: node + linkType: hard + "embla-carousel-wheel-gestures@npm:^8.0.1": version: 8.0.1 resolution: "embla-carousel-wheel-gestures@npm:8.0.1" @@ -4368,83 +4144,10 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.19.3": - version: 0.19.12 - resolution: "esbuild@npm:0.19.12" - dependencies: - "@esbuild/aix-ppc64": "npm:0.19.12" - "@esbuild/android-arm": "npm:0.19.12" - "@esbuild/android-arm64": "npm:0.19.12" - "@esbuild/android-x64": "npm:0.19.12" - "@esbuild/darwin-arm64": "npm:0.19.12" - "@esbuild/darwin-x64": "npm:0.19.12" - "@esbuild/freebsd-arm64": "npm:0.19.12" - "@esbuild/freebsd-x64": "npm:0.19.12" - "@esbuild/linux-arm": "npm:0.19.12" - "@esbuild/linux-arm64": "npm:0.19.12" - "@esbuild/linux-ia32": "npm:0.19.12" - "@esbuild/linux-loong64": "npm:0.19.12" - "@esbuild/linux-mips64el": "npm:0.19.12" - "@esbuild/linux-ppc64": "npm:0.19.12" - "@esbuild/linux-riscv64": "npm:0.19.12" - "@esbuild/linux-s390x": "npm:0.19.12" - "@esbuild/linux-x64": "npm:0.19.12" - "@esbuild/netbsd-x64": "npm:0.19.12" - "@esbuild/openbsd-x64": "npm:0.19.12" - "@esbuild/sunos-x64": "npm:0.19.12" - "@esbuild/win32-arm64": "npm:0.19.12" - "@esbuild/win32-ia32": "npm:0.19.12" - "@esbuild/win32-x64": "npm:0.19.12" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c0/0f2d21ffe24ebead64843f87c3aebe2e703a5ed9feb086a0728b24907fac2eb9923e4a79857d3df9059c915739bd7a870dd667972eae325c67f478b592b8582d +"es-module-lexer@npm:^2.0.0": + version: 2.3.1 + resolution: "es-module-lexer@npm:2.3.1" + checksum: 10c0/ada8b222772b5b8ea92eb6054c383233207418621855a07b480fdd36979b658a41414be09e793fcdd8a67a182741475f47830a01ff2ebd4353d7f6965c7c45f9 languageName: node linkType: hard @@ -4455,6 +4158,13 @@ __metadata: languageName: node linkType: hard +"escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + "escape-goat@npm:^2.0.0": version: 2.1.1 resolution: "escape-goat@npm:2.1.1" @@ -4690,7 +4400,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^8.0.0, execa@npm:^8.0.1": +"execa@npm:^8.0.0": version: 8.0.1 resolution: "execa@npm:8.0.1" dependencies: @@ -4727,6 +4437,13 @@ __metadata: languageName: node linkType: hard +"expect-type@npm:^1.3.0": + version: 1.4.0 + resolution: "expect-type@npm:1.4.0" + checksum: 10c0/d40d76b8570695d36587beb3cc28494da2ca3ec8f04e67f5622ed2d372d850e401a9adef19c6835e1a8173903f157c79540b34c7b3fbd7cd8ce726cc903c57b7 + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -5042,13 +4759,6 @@ __metadata: languageName: node linkType: hard -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 - languageName: node - linkType: hard - "fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" @@ -5096,13 +4806,6 @@ __metadata: languageName: node linkType: hard -"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": - version: 2.0.2 - resolution: "get-func-name@npm:2.0.2" - checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df - languageName: node - linkType: hard - "get-port@npm:^5.0.0": version: 5.1.1 resolution: "get-port@npm:5.1.1" @@ -5253,20 +4956,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.4": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.1.1" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe - languageName: node - linkType: hard - "global-dirs@npm:^2.0.1": version: 2.1.0 resolution: "global-dirs@npm:2.1.0" @@ -5276,13 +4965,6 @@ __metadata: languageName: node linkType: hard -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 - languageName: node - linkType: hard - "globals@npm:^14.0.0": version: 14.0.0 resolution: "globals@npm:14.0.0" @@ -5663,17 +5345,7 @@ __metadata: languageName: node linkType: hard -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: "npm:^1.3.0" - wrappy: "npm:1" - checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:~2.0.3": +"inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -5996,26 +5668,13 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0, istanbul-lib-coverage@npm:^3.2.2": +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.2": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b languageName: node linkType: hard -"istanbul-lib-instrument@npm:^6.0.1": - version: 6.0.2 - resolution: "istanbul-lib-instrument@npm:6.0.2" - dependencies: - "@babel/core": "npm:^7.23.9" - "@babel/parser": "npm:^7.23.9" - "@istanbuljs/schema": "npm:^0.1.3" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^7.5.4" - checksum: 10c0/405c6ac037bf8c7ee7495980b0cd5544b2c53078c10534d0c9ceeb92a9ea7dcf8510f58ccfce31336458a8fa6ccef27b570bbb602abaa8c1650f5496a807477c - languageName: node - linkType: hard - "istanbul-lib-report@npm:^3.0.0, istanbul-lib-report@npm:^3.0.1": version: 3.0.1 resolution: "istanbul-lib-report@npm:3.0.1" @@ -6027,24 +5686,13 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-source-maps@npm:^5.0.4": - version: 5.0.4 - resolution: "istanbul-lib-source-maps@npm:5.0.4" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.23" - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - checksum: 10c0/48b48294590675005ba439888a53157fc71a99d78321428f3ce5f64e28cdfb6bc6eb45871333f448437118ef56a0ef371f4958163e2c2d066d3a703415a71b2e - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.1.6": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" +"istanbul-reports@npm:^3.2.0": + version: 3.2.0 + resolution: "istanbul-reports@npm:3.2.0" dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" - checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + checksum: 10c0/d596317cfd9c22e1394f22a8d8ba0303d2074fe2e971887b32d870e4b33f8464b10f8ccbe6847808f7db485f084eba09e6c2ed706b3a978e4b52f07085b8f9bc languageName: node linkType: hard @@ -6097,13 +5745,6 @@ __metadata: languageName: node linkType: hard -"js-tokens@npm:^9.0.0": - version: 9.0.0 - resolution: "js-tokens@npm:9.0.0" - checksum: 10c0/4ad1c12f47b8c8b2a3a99e29ef338c1385c7b7442198a425f3463f3537384dab6032012791bfc2f056ea5ecdb06b1ed4f70e11a3ab3f388d3dcebfe16a52b27d - languageName: node - linkType: hard - "js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" @@ -6172,15 +5813,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 - languageName: node - linkType: hard - "jsesc@npm:^3.0.2": version: 3.1.0 resolution: "jsesc@npm:3.1.0" @@ -6502,6 +6134,126 @@ __metadata: languageName: node linkType: hard +"lightningcss-android-arm64@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-android-arm64@npm:1.33.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-darwin-arm64@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-darwin-arm64@npm:1.33.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-darwin-x64@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-darwin-x64@npm:1.33.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"lightningcss-freebsd-x64@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-freebsd-x64@npm:1.33.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"lightningcss-linux-arm-gnueabihf@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-linux-arm-gnueabihf@npm:1.33.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"lightningcss-linux-arm64-gnu@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-linux-arm64-gnu@npm:1.33.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"lightningcss-linux-arm64-musl@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-linux-arm64-musl@npm:1.33.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"lightningcss-linux-x64-gnu@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-linux-x64-gnu@npm:1.33.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"lightningcss-linux-x64-musl@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-linux-x64-musl@npm:1.33.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"lightningcss-win32-arm64-msvc@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-win32-arm64-msvc@npm:1.33.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-win32-x64-msvc@npm:1.33.0": + version: 1.33.0 + resolution: "lightningcss-win32-x64-msvc@npm:1.33.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"lightningcss@npm:^1.32.0": + version: 1.33.0 + resolution: "lightningcss@npm:1.33.0" + dependencies: + detect-libc: "npm:^2.0.3" + lightningcss-android-arm64: "npm:1.33.0" + lightningcss-darwin-arm64: "npm:1.33.0" + lightningcss-darwin-x64: "npm:1.33.0" + lightningcss-freebsd-x64: "npm:1.33.0" + lightningcss-linux-arm-gnueabihf: "npm:1.33.0" + lightningcss-linux-arm64-gnu: "npm:1.33.0" + lightningcss-linux-arm64-musl: "npm:1.33.0" + lightningcss-linux-x64-gnu: "npm:1.33.0" + lightningcss-linux-x64-musl: "npm:1.33.0" + lightningcss-win32-arm64-msvc: "npm:1.33.0" + lightningcss-win32-x64-msvc: "npm:1.33.0" + dependenciesMeta: + lightningcss-android-arm64: + optional: true + lightningcss-darwin-arm64: + optional: true + lightningcss-darwin-x64: + optional: true + lightningcss-freebsd-x64: + optional: true + lightningcss-linux-arm-gnueabihf: + optional: true + lightningcss-linux-arm64-gnu: + optional: true + lightningcss-linux-arm64-musl: + optional: true + lightningcss-linux-x64-gnu: + optional: true + lightningcss-linux-x64-musl: + optional: true + lightningcss-win32-arm64-msvc: + optional: true + lightningcss-win32-x64-msvc: + optional: true + checksum: 10c0/ce1f8279fbae636dbf37fa6e7385d5f98ed881d72af3362f24afbd4685e19c1fcdfecf17e5dd77f2ebee3d0c23ade276230d85842d07292229a2cffba8ff20a3 + languageName: node + linkType: hard + "lilconfig@npm:^3.1.1": version: 3.1.2 resolution: "lilconfig@npm:3.1.2" @@ -6591,16 +6343,6 @@ __metadata: languageName: node linkType: hard -"local-pkg@npm:^0.5.0": - version: 0.5.0 - resolution: "local-pkg@npm:0.5.0" - dependencies: - mlly: "npm:^1.4.2" - pkg-types: "npm:^1.0.3" - checksum: 10c0/f61cbd00d7689f275558b1a45c7ff2a3ddf8472654123ed880215677b9adfa729f1081e50c27ffb415cdb9fa706fb755fec5e23cdd965be375c8059e87ff1cc9 - languageName: node - linkType: hard - "locate-path@npm:^2.0.0": version: 2.0.0 resolution: "locate-path@npm:2.0.0" @@ -6692,15 +6434,6 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^2.3.6, loupe@npm:^2.3.7": - version: 2.3.7 - resolution: "loupe@npm:2.3.7" - dependencies: - get-func-name: "npm:^2.0.1" - checksum: 10c0/71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4 - languageName: node - linkType: hard - "lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": version: 1.0.1 resolution: "lowercase-keys@npm:1.0.1" @@ -6754,7 +6487,16 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.3, magic-string@npm:^0.30.5": +"magic-string@npm:^0.30.21": + version: 0.30.21 + resolution: "magic-string@npm:0.30.21" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.5" + checksum: 10c0/299378e38f9a270069fc62358522ddfb44e94244baa0d6a8980ab2a9b2490a1d03b236b447eee309e17eb3bddfa482c61259d47960eb018a904f0ded52780c4a + languageName: node + linkType: hard + +"magic-string@npm:^0.30.3": version: 0.30.10 resolution: "magic-string@npm:0.30.10" dependencies: @@ -6763,14 +6505,14 @@ __metadata: languageName: node linkType: hard -"magicast@npm:^0.3.3": - version: 0.3.3 - resolution: "magicast@npm:0.3.3" +"magicast@npm:^0.5.2": + version: 0.5.3 + resolution: "magicast@npm:0.5.3" dependencies: - "@babel/parser": "npm:^7.23.6" - "@babel/types": "npm:^7.23.6" - source-map-js: "npm:^1.0.2" - checksum: 10c0/2eeba19545ac4328433be817bd81fcfa8a517ec67599260541e13ce5ce18b27ff8830f1b87d54a1392d408d1b96e44938bf026920f0110edbdfecc96980919b3 + "@babel/parser": "npm:^7.29.3" + "@babel/types": "npm:^7.29.0" + source-map-js: "npm:^1.2.1" + checksum: 10c0/e288c027ae5f2a794a59148cb114f4b60f1d5c03090de6c60b4d187f12d1de9158779cd7c39cea391609f4f10cd7ea737929f25f7ce44f7a96ba96ec1a477e39 languageName: node linkType: hard @@ -7010,7 +6752,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -7162,18 +6904,6 @@ __metadata: languageName: node linkType: hard -"mlly@npm:^1.4.2, mlly@npm:^1.7.1": - version: 1.7.1 - resolution: "mlly@npm:1.7.1" - dependencies: - acorn: "npm:^8.11.3" - pathe: "npm:^1.1.2" - pkg-types: "npm:^1.1.1" - ufo: "npm:^1.5.3" - checksum: 10c0/d836a7b0adff4d118af41fb93ad4d9e57f80e694a681185280ba220a4607603c19e86c80f9a6c57512b04280567f2599e3386081705c5b5fd74c9ddfd571d0fa - languageName: node - linkType: hard - "moment@npm:^2.30.1": version: 2.30.1 resolution: "moment@npm:2.30.1" @@ -7220,6 +6950,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.16": + version: 3.3.16 + resolution: "nanoid@npm:3.3.16" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/bbf2dcffe22d2b62d16de2711752070b539c0f644c7916f823ad6521986b2078cbe524f2d6240f58c46e9141ea0c7b87a029e100c0f7f175228cacaf30e41bba + languageName: node + linkType: hard + "nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" @@ -7337,6 +7076,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.51": + version: 2.0.51 + resolution: "node-releases@npm:2.0.51" + checksum: 10c0/6cf3fe1f9eabe02ce6de67e9db77b73edc9f5625003791e1f8f239f8e2a851450a5aeb1eff2cc43cfb26312e19b26bfe07626bf428479e6a76f56553fc6148da + languageName: node + linkType: hard + "nopt@npm:^7.0.0": version: 7.2.0 resolution: "nopt@npm:7.2.0" @@ -7618,6 +7364,13 @@ __metadata: languageName: node linkType: hard +"obug@npm:^2.1.1": + version: 2.1.4 + resolution: "obug@npm:2.1.4" + checksum: 10c0/34a0ee97cd88573cfd97d384c2a79f07118ae5680d7e45d1de6e99c74eddefe145e8ca27a2db02195a1ee5fded5aa22b924869c842728c201b9f109a27d0ef19 + languageName: node + linkType: hard + "on-finished@npm:2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" @@ -7636,7 +7389,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": +"once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -7933,15 +7686,6 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^5.0.0": - version: 5.0.0 - resolution: "p-limit@npm:5.0.0" - dependencies: - yocto-queue: "npm:^1.0.0" - checksum: 10c0/574e93b8895a26e8485eb1df7c4b58a1a6e8d8ae41b1750cc2cc440922b3d306044fc6e9a7f74578a883d46802d9db72b30f2e612690fcef838c173261b1ed83 - languageName: node - linkType: hard - "p-locate@npm:^2.0.0": version: 2.0.0 resolution: "p-locate@npm:2.0.0" @@ -8215,13 +7959,6 @@ __metadata: languageName: node linkType: hard -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 - languageName: node - linkType: hard - "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -8277,17 +8014,10 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.1, pathe@npm:^1.1.2": - version: 1.1.2 - resolution: "pathe@npm:1.1.2" - checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 - languageName: node - linkType: hard - -"pathval@npm:^1.1.1": - version: 1.1.1 - resolution: "pathval@npm:1.1.1" - checksum: 10c0/f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc +"pathe@npm:^2.0.3": + version: 2.0.3 + resolution: "pathe@npm:2.0.3" + checksum: 10c0/c118dc5a8b5c4166011b2b70608762e260085180bb9e33e80a50dcdb1e78c010b1624f4280c492c92b05fc276715a4c357d1f9edc570f8f1b3d90b6839ebaca1 languageName: node linkType: hard @@ -8319,7 +8049,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.4, picomatch@npm:^4.0.5": +"picomatch@npm:^4.0.3, picomatch@npm:^4.0.4, picomatch@npm:^4.0.5": version: 4.0.5 resolution: "picomatch@npm:4.0.5" checksum: 10c0/947bc6b6e1ff1e6c5aaf95b107a0839d12802f4f7b867663f67d47accba939ca1cb582cf99dfc30438efa1c4648ac5990967e783e8929c36b03e8440704ef1bd @@ -8343,17 +8073,6 @@ __metadata: languageName: node linkType: hard -"pkg-types@npm:^1.0.3, pkg-types@npm:^1.1.1": - version: 1.1.3 - resolution: "pkg-types@npm:1.1.3" - dependencies: - confbox: "npm:^0.1.7" - mlly: "npm:^1.7.1" - pathe: "npm:^1.1.2" - checksum: 10c0/4cd2c9442dd5e4ae0c61cbd8fdaa92a273939749b081f78150ce9a3f4e625cca0375607386f49f103f0720b239d02369bf181c3ea6c80cf1028a633df03706ad - languageName: node - linkType: hard - "postcss-calc@npm:^9.0.1": version: 9.0.1 resolution: "postcss-calc@npm:9.0.1" @@ -8750,14 +8469,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.35": - version: 8.4.35 - resolution: "postcss@npm:8.4.35" +"postcss@npm:^8.5.17": + version: 8.5.23 + resolution: "postcss@npm:8.5.23" dependencies: - nanoid: "npm:^3.3.7" - picocolors: "npm:^1.0.0" - source-map-js: "npm:^1.0.2" - checksum: 10c0/e8dd04e48001eb5857abc9475365bf08f4e508ddf9bc0b8525449a95d190f10d025acebc5b56ac2e94b3c7146790e4ae78989bb9633cb7ee20d1cc9b7dc909b2 + nanoid: "npm:^3.3.16" + picocolors: "npm:^1.1.1" + source-map-js: "npm:^1.2.1" + checksum: 10c0/ed714e635b330bb42666ecdd0c0b4f30224ded15b0b0052d6bc2b92832f2cf17d1c1141359453f96f0a84f8fbf4c405a74df187f559163b8f31131b2535455aa languageName: node linkType: hard @@ -8784,17 +8503,6 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.7.0": - version: 29.7.0 - resolution: "pretty-format@npm:29.7.0" - dependencies: - "@jest/schemas": "npm:^29.6.3" - ansi-styles: "npm:^5.0.0" - react-is: "npm:^18.0.0" - checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f - languageName: node - linkType: hard - "pretty-ms@npm:^9.0.0": version: 9.1.0 resolution: "pretty-ms@npm:9.1.0" @@ -8999,13 +8707,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.0.0": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 - languageName: node - linkType: hard - "read-cmd-shim@npm:^4.0.0": version: 4.0.0 resolution: "read-cmd-shim@npm:4.0.0" @@ -9212,6 +8913,64 @@ __metadata: languageName: node linkType: hard +"rolldown@npm:~1.1.5": + version: 1.1.5 + resolution: "rolldown@npm:1.1.5" + dependencies: + "@oxc-project/types": "npm:=0.139.0" + "@rolldown/binding-android-arm64": "npm:1.1.5" + "@rolldown/binding-darwin-arm64": "npm:1.1.5" + "@rolldown/binding-darwin-x64": "npm:1.1.5" + "@rolldown/binding-freebsd-x64": "npm:1.1.5" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.1.5" + "@rolldown/binding-linux-arm64-gnu": "npm:1.1.5" + "@rolldown/binding-linux-arm64-musl": "npm:1.1.5" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.1.5" + "@rolldown/binding-linux-s390x-gnu": "npm:1.1.5" + "@rolldown/binding-linux-x64-gnu": "npm:1.1.5" + "@rolldown/binding-linux-x64-musl": "npm:1.1.5" + "@rolldown/binding-openharmony-arm64": "npm:1.1.5" + "@rolldown/binding-wasm32-wasi": "npm:1.1.5" + "@rolldown/binding-win32-arm64-msvc": "npm:1.1.5" + "@rolldown/binding-win32-x64-msvc": "npm:1.1.5" + "@rolldown/pluginutils": "npm:^1.0.0" + dependenciesMeta: + "@rolldown/binding-android-arm64": + optional: true + "@rolldown/binding-darwin-arm64": + optional: true + "@rolldown/binding-darwin-x64": + optional: true + "@rolldown/binding-freebsd-x64": + optional: true + "@rolldown/binding-linux-arm-gnueabihf": + optional: true + "@rolldown/binding-linux-arm64-gnu": + optional: true + "@rolldown/binding-linux-arm64-musl": + optional: true + "@rolldown/binding-linux-ppc64-gnu": + optional: true + "@rolldown/binding-linux-s390x-gnu": + optional: true + "@rolldown/binding-linux-x64-gnu": + optional: true + "@rolldown/binding-linux-x64-musl": + optional: true + "@rolldown/binding-openharmony-arm64": + optional: true + "@rolldown/binding-wasm32-wasi": + optional: true + "@rolldown/binding-win32-arm64-msvc": + optional: true + "@rolldown/binding-win32-x64-msvc": + optional: true + bin: + rolldown: ./bin/cli.mjs + checksum: 10c0/93072aa9d95882f9fa5cd57fe7db6a48efd6f85a25a32137425052ecca02df653651eed0c33a865c33511681bd6a40691d5c88900b8e95ce1334f4f75ba826ff + languageName: node + linkType: hard + "rollup-plugin-git-info@npm:^1.0.0": version: 1.0.0 resolution: "rollup-plugin-git-info@npm:1.0.0" @@ -9292,60 +9051,6 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.2.0": - version: 4.12.0 - resolution: "rollup@npm:4.12.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.12.0" - "@rollup/rollup-android-arm64": "npm:4.12.0" - "@rollup/rollup-darwin-arm64": "npm:4.12.0" - "@rollup/rollup-darwin-x64": "npm:4.12.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.12.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.12.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.12.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.12.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.12.0" - "@rollup/rollup-linux-x64-musl": "npm:4.12.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.12.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.12.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.12.0" - "@types/estree": "npm:1.0.5" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10c0/1650168231ae8e2bd6fb4d82cc232e53b5c0fe67895188fa683370c9bd3f1febaa28e45c6b100cea333e54f8f5fae6f4d0eea7d86256ec2cc3e38212c55796d6 - languageName: node - linkType: hard - "rrweb-cssom@npm:^0.6.0": version: 0.6.0 resolution: "rrweb-cssom@npm:0.6.0" @@ -9518,7 +9223,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": +"semver@npm:^7.3.5, semver@npm:^7.5.3": version: 7.6.0 resolution: "semver@npm:7.6.0" dependencies: @@ -9742,6 +9447,13 @@ __metadata: languageName: node linkType: hard +"source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf + languageName: node + linkType: hard + "source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" @@ -9879,10 +9591,10 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.5.0": - version: 3.7.0 - resolution: "std-env@npm:3.7.0" - checksum: 10c0/60edf2d130a4feb7002974af3d5a5f3343558d1ccf8d9b9934d225c638606884db4a20d2fe6440a09605bca282af6b042ae8070a10490c0800d69e82e478f41e +"std-env@npm:^4.0.0-rc.1": + version: 4.2.0 + resolution: "std-env@npm:4.2.0" + checksum: 10c0/40ac525ce7b7c556abc332a7376f14356eeb1a7f17f6ff9a003eb9f52326ff1f3745d3e1b43452675b1ec6fcc319f1b1d6f3b0d386cf3f91058479ad883cff69 languageName: node linkType: hard @@ -10005,15 +9717,6 @@ __metadata: languageName: node linkType: hard -"strip-literal@npm:^2.0.0": - version: 2.1.0 - resolution: "strip-literal@npm:2.1.0" - dependencies: - js-tokens: "npm:^9.0.0" - checksum: 10c0/bc8b8c8346125ae3c20fcdaf12e10a498ff85baf6f69597b4ab2b5fbf2e58cfd2827f1a44f83606b852da99a5f6c8279770046ddea974c510c17c98934c9cc24 - languageName: node - linkType: hard - "stylehacks@npm:^6.1.1": version: 6.1.1 resolution: "stylehacks@npm:6.1.1" @@ -10177,17 +9880,6 @@ __metadata: languageName: node linkType: hard -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": "npm:^0.1.2" - glob: "npm:^7.1.4" - minimatch: "npm:^3.0.4" - checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 - languageName: node - linkType: hard - "text-table@npm:~0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" @@ -10239,10 +9931,10 @@ __metadata: languageName: node linkType: hard -"tinybench@npm:^2.5.1": - version: 2.8.0 - resolution: "tinybench@npm:2.8.0" - checksum: 10c0/5a9a642351fa3e4955e0cbf38f5674be5f3ba6730fd872fd23a5c953ad6c914234d5aba6ea41ef88820180a81829ceece5bd8d3967c490c5171bca1141c2f24d +"tinybench@npm:^2.9.0": + version: 2.9.0 + resolution: "tinybench@npm:2.9.0" + checksum: 10c0/c3500b0f60d2eb8db65250afe750b66d51623057ee88720b7f064894a6cb7eb93360ca824a60a31ab16dab30c7b1f06efe0795b352e37914a9d4bad86386a20c languageName: node linkType: hard @@ -10253,7 +9945,14 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.17": +"tinyexec@npm:^1.0.2": + version: 1.2.4 + resolution: "tinyexec@npm:1.2.4" + checksum: 10c0/153b8db6b080194b558ff145b9cffc36b80a6e07babd644dcfbe49c807eee668c876049d28bdee90b96304476f883352f2dad91b3f86bc23832532f4363e66ff + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.15, tinyglobby@npm:^0.2.17": version: 0.2.17 resolution: "tinyglobby@npm:0.2.17" dependencies: @@ -10263,24 +9962,10 @@ __metadata: languageName: node linkType: hard -"tinypool@npm:^0.8.3": - version: 0.8.4 - resolution: "tinypool@npm:0.8.4" - checksum: 10c0/779c790adcb0316a45359652f4b025958c1dff5a82460fe49f553c864309b12ad732c8288be52f852973bc76317f5e7b3598878aee0beb8a33322c0e72c4a66c - languageName: node - linkType: hard - -"tinyspy@npm:^2.2.0": - version: 2.2.1 - resolution: "tinyspy@npm:2.2.1" - checksum: 10c0/0b4cfd07c09871e12c592dfa7b91528124dc49a4766a0b23350638c62e6a483d5a2a667de7e6282246c0d4f09996482ddaacbd01f0c05b7ed7e0f79d32409bdc - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 +"tinyrainbow@npm:^3.1.0": + version: 3.1.0 + resolution: "tinyrainbow@npm:3.1.0" + checksum: 10c0/f11cf387a26c5c9255bec141a90ac511b26172981b10c3e50053bc6700ea7d2336edcc4a3a21dbb8412fe7c013477d2ba4d7e4877800f3f8107be5105aad6511 languageName: node linkType: hard @@ -10358,15 +10043,15 @@ __metadata: languageName: node linkType: hard -"ts-essentials@npm:^9.3.2": - version: 9.4.1 - resolution: "ts-essentials@npm:9.4.1" +"ts-essentials@npm:^10.2.1": + version: 10.2.1 + resolution: "ts-essentials@npm:10.2.1" peerDependencies: - typescript: ">=4.1.0" + typescript: ">=4.5.0" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/03f195f1f8935c5e72615e05d5ca160aeb987ba23e1f7ffad2dc4ac47604a6931621bf120279c3325513894a2040cee01070f4df95c1e3bac6435c25339eb519 + checksum: 10c0/2d4c1ca128ae4b112c20067806fd64b559a0c15d9f24d12122865d6212a1e108e20d903a8dbd9ff25c228b434c16db0b8b75dd385863e2c32c4a857a442dac67 languageName: node linkType: hard @@ -10427,13 +10112,6 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:^4.0.0, type-detect@npm:^4.0.8": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd - languageName: node - linkType: hard - "type-fest@npm:^0.8.1": version: 0.8.1 resolution: "type-fest@npm:0.8.1" @@ -10498,13 +10176,6 @@ __metadata: languageName: node linkType: hard -"ufo@npm:^1.5.3": - version: 1.5.4 - resolution: "ufo@npm:1.5.4" - checksum: 10c0/b5dc4dc435c49c9ef8890f1b280a19ee4d0954d1d6f9ab66ce62ce64dd04c7be476781531f952a07c678d51638d02ad4b98e16237be29149295b0f7c09cda765 - languageName: node - linkType: hard - "uglify-js@npm:^3.1.4": version: 3.19.3 resolution: "uglify-js@npm:3.19.3" @@ -10650,6 +10321,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.2.3": + version: 1.2.3 + resolution: "update-browserslist-db@npm:1.2.3" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/13a00355ea822388f68af57410ce3255941d5fb9b7c49342c4709a07c9f230bbef7f7499ae0ca7e0de532e79a82cc0c4edbd125f1a323a1845bf914efddf8bec + languageName: node + linkType: hard + "update-notifier@npm:^4.1.0": version: 4.1.3 resolution: "update-notifier@npm:4.1.3" @@ -10783,110 +10468,128 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:1.6.0": - version: 1.6.0 - resolution: "vite-node@npm:1.6.0" +"vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0": + version: 8.1.5 + resolution: "vite@npm:8.1.5" dependencies: - cac: "npm:^6.7.14" - debug: "npm:^4.3.4" - pathe: "npm:^1.1.1" - picocolors: "npm:^1.0.0" - vite: "npm:^5.0.0" - bin: - vite-node: vite-node.mjs - checksum: 10c0/0807e6501ac7763e0efa2b4bd484ce99fb207e92c98624c9f8999d1f6727ac026e457994260fa7fdb7060d87546d197081e46a705d05b0136a38b6f03715cbc2 - languageName: node - linkType: hard - -"vite@npm:^5.0.0": - version: 5.1.4 - resolution: "vite@npm:5.1.4" - dependencies: - esbuild: "npm:^0.19.3" fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.35" - rollup: "npm:^4.2.0" + lightningcss: "npm:^1.32.0" + picomatch: "npm:^4.0.5" + postcss: "npm:^8.5.17" + rolldown: "npm:~1.1.5" + tinyglobby: "npm:^0.2.17" peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 - less: "*" - lightningcss: ^1.21.0 - sass: "*" - stylus: "*" - sugarss: "*" - terser: ^5.4.0 + "@types/node": ^20.19.0 || >=22.12.0 + "@vitejs/devtools": ^0.3.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: ">=1.21.0" + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: ">=0.54.8" + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 dependenciesMeta: fsevents: optional: true peerDependenciesMeta: "@types/node": optional: true + "@vitejs/devtools": + optional: true + esbuild: + optional: true + jiti: + optional: true less: optional: true - lightningcss: - optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true bin: vite: bin/vite.js - checksum: 10c0/8f04c8bed33f266bde27f432412456a3b893b51fe1857f0b8cd259100b376c1393a7927db1dd6344a4376baed72ed179ec5b0428aef2ae8508f1f28f95acb908 + checksum: 10c0/3231e24dd4394d0bc8b4f0f5d6d6a2eda8737e5053042892b4163564456a03d67f953c4c7498621f9517eebc30a492ea136c728a767a122eb84bf6d7cf60e1e6 languageName: node linkType: hard -"vitest-mock-extended@npm:^1.3.1": - version: 1.3.1 - resolution: "vitest-mock-extended@npm:1.3.1" +"vitest-mock-extended@npm:^5.1.0": + version: 5.1.0 + resolution: "vitest-mock-extended@npm:5.1.0" dependencies: - ts-essentials: "npm:^9.3.2" + ts-essentials: "npm:^10.2.1" peerDependencies: - typescript: 3.x || 4.x || 5.x - vitest: ">=0.31.1" - checksum: 10c0/0d3b5f1b4f53d326b636931573801811a6fe5566ea8ea06a2b9e1037845b3049d045156a33b0916b3ef40b83b9076499142ac4a24490a96bbecf74b9770a780f + typescript: 3.x || 4.x || 5.x || 6.x || 7.x + vitest: ">=4.0.0" + checksum: 10c0/cb298d00eede333ff652ce51d4cfb7f2ba11be10f36e65c3735db24a409f75e940421afd88f5375b1808e4336e35ece722aa26655243f40d9937335e88e76ead languageName: node linkType: hard -"vitest@npm:^1.6.0": - version: 1.6.0 - resolution: "vitest@npm:1.6.0" +"vitest@npm:^4.1.10": + version: 4.1.10 + resolution: "vitest@npm:4.1.10" dependencies: - "@vitest/expect": "npm:1.6.0" - "@vitest/runner": "npm:1.6.0" - "@vitest/snapshot": "npm:1.6.0" - "@vitest/spy": "npm:1.6.0" - "@vitest/utils": "npm:1.6.0" - acorn-walk: "npm:^8.3.2" - chai: "npm:^4.3.10" - debug: "npm:^4.3.4" - execa: "npm:^8.0.1" - local-pkg: "npm:^0.5.0" - magic-string: "npm:^0.30.5" - pathe: "npm:^1.1.1" - picocolors: "npm:^1.0.0" - std-env: "npm:^3.5.0" - strip-literal: "npm:^2.0.0" - tinybench: "npm:^2.5.1" - tinypool: "npm:^0.8.3" - vite: "npm:^5.0.0" - vite-node: "npm:1.6.0" - why-is-node-running: "npm:^2.2.2" + "@vitest/expect": "npm:4.1.10" + "@vitest/mocker": "npm:4.1.10" + "@vitest/pretty-format": "npm:4.1.10" + "@vitest/runner": "npm:4.1.10" + "@vitest/snapshot": "npm:4.1.10" + "@vitest/spy": "npm:4.1.10" + "@vitest/utils": "npm:4.1.10" + es-module-lexer: "npm:^2.0.0" + expect-type: "npm:^1.3.0" + magic-string: "npm:^0.30.21" + obug: "npm:^2.1.1" + pathe: "npm:^2.0.3" + picomatch: "npm:^4.0.3" + std-env: "npm:^4.0.0-rc.1" + tinybench: "npm:^2.9.0" + tinyexec: "npm:^1.0.2" + tinyglobby: "npm:^0.2.15" + tinyrainbow: "npm:^3.1.0" + vite: "npm:^6.0.0 || ^7.0.0 || ^8.0.0" + why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" - "@types/node": ^18.0.0 || >=20.0.0 - "@vitest/browser": 1.6.0 - "@vitest/ui": 1.6.0 + "@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 + "@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 @@ -10894,9 +10597,11 @@ __metadata: optional: true jsdom: optional: true + vite: + optional: false bin: - vitest: vitest.mjs - checksum: 10c0/065da5b8ead51eb174d93dac0cd50042ca9539856dc25e340ea905d668c41961f7e00df3e388e6c76125b2c22091db2e8465f993d0f6944daf9598d549e562e7 + vitest: ./vitest.mjs + checksum: 10c0/ff07294a57f9c62f3b503f7cf88a52ee0753ed26389a49cda430387a3898f39d80af47180b0af19e27acab5bd11ae95706bd4b44ce8befc97d3ae49af6ca4fc1 languageName: node linkType: hard @@ -11018,7 +10723,7 @@ __metadata: languageName: node linkType: hard -"why-is-node-running@npm:^2.2.2": +"why-is-node-running@npm:^2.3.0": version: 2.3.0 resolution: "why-is-node-running@npm:2.3.0" dependencies: @@ -11306,13 +11011,6 @@ __metadata: languageName: node linkType: hard -"yocto-queue@npm:^1.0.0": - version: 1.1.1 - resolution: "yocto-queue@npm:1.1.1" - checksum: 10c0/cb287fe5e6acfa82690acb43c283de34e945c571a78a939774f6eaba7c285bacdf6c90fbc16ce530060863984c906d2b4c6ceb069c94d1e0a06d5f2b458e2a92 - languageName: node - linkType: hard - "yoctocolors@npm:^2.0.0": version: 2.1.1 resolution: "yoctocolors@npm:2.1.1"