From b7902bcb409882a445aa5f9a8675cb1a71696ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0?= Date: Fri, 20 Feb 2026 19:47:58 +0900 Subject: [PATCH 1/6] docs: add warning for clearMocks option in async tests (#9697) Co-authored-by: Vladimir Sheremet --- docs/config/clearmocks.md | 4 ++++ docs/config/mockreset.md | 4 ++++ docs/config/restoremocks.md | 4 ++++ docs/config/unstubenvs.md | 4 ++++ docs/config/unstubglobals.md | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/docs/config/clearmocks.md b/docs/config/clearmocks.md index fff1dbfd0a05..c2bde0b8d336 100644 --- a/docs/config/clearmocks.md +++ b/docs/config/clearmocks.md @@ -21,3 +21,7 @@ export default defineConfig({ }, }) ``` + +::: warning +Be aware that this option may cause problems with async [concurrent tests](/api/test#test-concurrent). If enabled, the completion of one test will clear the mock history for all mocks, including those currently being used by other tests in progress. +::: diff --git a/docs/config/mockreset.md b/docs/config/mockreset.md index fac9b6b7e817..1525929397ad 100644 --- a/docs/config/mockreset.md +++ b/docs/config/mockreset.md @@ -21,3 +21,7 @@ export default defineConfig({ }, }) ``` + +::: warning +Be aware that this option may cause problems with async [concurrent tests](/api/test#test-concurrent). If enabled, the completion of one test will clear the mock history and implementation for all mocks, including those currently being used by other tests in progress. +::: diff --git a/docs/config/restoremocks.md b/docs/config/restoremocks.md index 006380088ce5..818942c1302a 100644 --- a/docs/config/restoremocks.md +++ b/docs/config/restoremocks.md @@ -21,3 +21,7 @@ export default defineConfig({ }, }) ``` + +::: warning +Be aware that this option may cause problems with async [concurrent tests](/api/test#test-concurrent). If enabled, the completion of one test will restore the implementation for all spies, including those currently being used by other tests in progress. +::: diff --git a/docs/config/unstubenvs.md b/docs/config/unstubenvs.md index 9deaabda1322..9a234a381fa9 100644 --- a/docs/config/unstubenvs.md +++ b/docs/config/unstubenvs.md @@ -19,3 +19,7 @@ export default defineConfig({ }, }) ``` + +::: warning +Be aware that this option may cause problems with async [concurrent tests](/api/test#test-concurrent). If enabled, the completion of one test will restore all the values changed with [`vi.stubEnv`](/api/vi#vi-stubenv), including those currently being used by other tests in progress. +::: diff --git a/docs/config/unstubglobals.md b/docs/config/unstubglobals.md index 6c0d984bc0ce..47c8e8eaa3d4 100644 --- a/docs/config/unstubglobals.md +++ b/docs/config/unstubglobals.md @@ -19,3 +19,7 @@ export default defineConfig({ }, }) ``` + +::: warning +Be aware that this option may cause problems with async [concurrent tests](/api/test#test-concurrent). If enabled, the completion of one test will restore all global values that were changed with [`vi.stubGlobal`](/api/vi#vi-stubglobal), including those currently being used by other tests in progress. +::: From c3f37721cdc633e4c59c7014f1dc9014529e35ee Mon Sep 17 00:00:00 2001 From: Vladimir Date: Fri, 20 Feb 2026 12:04:48 +0100 Subject: [PATCH 2/6] feat(browser): add `findElement` and enable strict mode in webdriverio and preview (#9677) --- docs/api/browser/locators.md | 57 +++++++ packages/browser-preview/src/locators.ts | 62 +++++--- packages/browser-preview/src/preview.ts | 14 ++ packages/browser-webdriverio/src/locators.ts | 104 ++++++++++++- .../browser-webdriverio/src/webdriverio.ts | 13 +- packages/browser/context.d.ts | 46 +++++- packages/browser/src/client/tester/context.ts | 18 ++- .../client/tester/expect/toMatchScreenshot.ts | 13 +- .../src/client/tester/locators/index.ts | 145 ++++++++++++++---- .../browser/src/client/tester/tester-utils.ts | 20 +-- .../node/commands/screenshotMatcher/utils.ts | 4 + test/browser/test/findElement.test.ts | 110 +++++++++++++ test/browser/test/userEvent.test.ts | 88 ++++++++++- 13 files changed, 615 insertions(+), 79 deletions(-) create mode 100644 test/browser/test/findElement.test.ts diff --git a/docs/api/browser/locators.md b/docs/api/browser/locators.md index f81e040f8bcc..aea66be97398 100644 --- a/docs/api/browser/locators.md +++ b/docs/api/browser/locators.md @@ -935,6 +935,63 @@ page.getByText('Hello').elements() // ✅ [HTMLElement, HTMLElement] page.getByText('Hello USA').elements() // ✅ [] ``` +### findElement 4.1.0 {#findelement} + +```ts +function findElement( + options?: SelectorOptions +): Promise +``` + +::: danger WARNING +This is an escape hatch for cases where you need the raw DOM element — for example, to pass it to a third-party library like FormKit that doesn't accept Vitest locators. If you are interacting with the element yourself, use other [builtin methods](#methods) instead. +::: + +This method returns an element matching the locator. Unlike [`.element()`](#element), this method will wait and retry until a matching element appears in the DOM, using increasing intervals (0, 20, 50, 100, 100, 500ms). + +If _no element_ is found before the timeout, an error is thrown. By default, the timeout matches the test timeout. + +If _multiple elements_ match the selector and `strict` is `true` (the default), an error is thrown immediately without retrying. Set `strict` to `false` to return the first matching element instead. + +It accepts options: + +- `timeout: number` - How long to wait in milliseconds until at least one element is found. By default, this shares timeout with the test. +- `strict: boolean` - When `true` (default), throws an error if multiple elements match the locator. When `false`, returns the first matching element. + +Consider the following DOM structure: + +```html +
Hello World
+
Hello Germany
+
Hello
+``` + +These locators will resolve successfully: + +```ts +await page.getByText('Hello World').findElement() // ✅ HTMLDivElement +await page.getByText('World').findElement() // ✅ HTMLSpanElement +await page.getByText('Hello Germany').findElement() // ✅ HTMLDivElement +``` + +These locators will throw an error: + +```ts +// multiple elements match, strict mode rejects +await page.getByText('Hello').findElement() // ❌ +await page.getByText(/^Hello/).findElement() // ❌ + +// no matching element before timeout +await page.getByText('Hello USA').findElement() // ❌ +``` + +Using `strict: false` to allow multiple matches: + +```ts +// returns the first matching element instead of throwing +await page.getByText('Hello').findElement({ strict: false }) // ✅ HTMLDivElement +``` + ### all ```ts diff --git a/packages/browser-preview/src/locators.ts b/packages/browser-preview/src/locators.ts index 8217002bbb96..ea1f3859ce2a 100644 --- a/packages/browser-preview/src/locators.ts +++ b/packages/browser-preview/src/locators.ts @@ -1,3 +1,12 @@ +import type { + UserEventClearOptions, + UserEventClickOptions, + UserEventFillOptions, + UserEventHoverOptions, + UserEventSelectOptions, + UserEventUploadOptions, + UserEventWheelOptions, +} from 'vitest/browser' import { convertElementToCssSelector, getByAltTextSelector, @@ -26,40 +35,57 @@ class PreviewLocator extends Locator { return selectors.join(', ') } - click(): Promise { - return userEvent.click(this.element()) + async click(options?: UserEventClickOptions): Promise { + const element = await this.findElement(options) + return userEvent.click(element) } - dblClick(): Promise { - return userEvent.dblClick(this.element()) + async dblClick(options?: UserEventClickOptions): Promise { + const element = await this.findElement(options) + return userEvent.dblClick(element) } - tripleClick(): Promise { - return userEvent.tripleClick(this.element()) + async tripleClick(options?: UserEventClickOptions): Promise { + const element = await this.findElement(options) + return userEvent.tripleClick(element) } - hover(): Promise { - return userEvent.hover(this.element()) + async hover(options?: UserEventHoverOptions): Promise { + const element = await this.findElement(options) + return userEvent.hover(element) } - unhover(): Promise { - return userEvent.unhover(this.element()) + async unhover(options?: UserEventHoverOptions): Promise { + const element = await this.findElement(options) + return userEvent.unhover(element) } - async fill(text: string): Promise { - return userEvent.fill(this.element(), text) + async fill(text: string, options?: UserEventFillOptions): Promise { + const element = await this.findElement(options) + return userEvent.fill(element, text) } - async upload(file: string | string[] | File | File[]): Promise { - return userEvent.upload(this.element(), file) + async upload(file: string | string[] | File | File[], options?: UserEventUploadOptions): Promise { + const element = await this.findElement(options) + return userEvent.upload(element, file) } - selectOptions(options: string | string[] | HTMLElement | HTMLElement[] | Locator | Locator[]): Promise { - return userEvent.selectOptions(this.element(), options) + async wheel(options: UserEventWheelOptions): Promise { + const element = await this.findElement(options) + return userEvent.wheel(element, options) } - clear(): Promise { - return userEvent.clear(this.element()) + async selectOptions( + options: string | string[] | HTMLElement | HTMLElement[] | Locator | Locator[], + settings?: UserEventSelectOptions, + ): Promise { + const element = await this.findElement(settings) + return userEvent.selectOptions(element, options) + } + + async clear(options?: UserEventClearOptions): Promise { + const element = await this.findElement(options) + return userEvent.clear(element) } protected locator(selector: string) { diff --git a/packages/browser-preview/src/preview.ts b/packages/browser-preview/src/preview.ts index 07bd989d66f3..8387140df7b3 100644 --- a/packages/browser-preview/src/preview.ts +++ b/packages/browser-preview/src/preview.ts @@ -1,3 +1,4 @@ +import type { SelectorOptions } from 'vitest/browser' import type { BrowserProvider, BrowserProviderOption, TestProject } from 'vitest/node' import { nextTick } from 'node:process' import { defineBrowserProvider } from '@vitest/browser' @@ -60,3 +61,16 @@ export class PreviewBrowserProvider implements BrowserProvider { async close(): Promise {} } + +declare module 'vitest/browser' { + export interface UserEventClickOptions extends SelectorOptions {} + export interface UserEventHoverOptions extends SelectorOptions {} + export interface UserEventFillOptions extends SelectorOptions {} + export interface UserEventSelectOptions extends SelectorOptions {} + export interface UserEventClearOptions extends SelectorOptions {} + export interface UserEventDoubleClickOptions extends SelectorOptions {} + export interface UserEventTripleClickOptions extends SelectorOptions {} + export interface UserEventUploadOptions extends SelectorOptions {} + export interface UserEventWheelBaseOptions extends SelectorOptions {} + export interface LocatorScreenshotOptions extends SelectorOptions {} +} diff --git a/packages/browser-webdriverio/src/locators.ts b/packages/browser-webdriverio/src/locators.ts index 681304b90929..e7210d1b9b71 100644 --- a/packages/browser-webdriverio/src/locators.ts +++ b/packages/browser-webdriverio/src/locators.ts @@ -1,11 +1,16 @@ import type { + LocatorScreenshotOptions, + UserEventClearOptions, UserEventClickOptions, UserEventDragAndDropOptions, + UserEventFillOptions, UserEventHoverOptions, UserEventSelectOptions, + UserEventWheelOptions, } from 'vitest/browser' import { convertElementToCssSelector, + ensureAwaited, getByAltTextSelector, getByLabelSelector, getByPlaceholderSelector, @@ -16,6 +21,7 @@ import { getIframeScale, Locator, selectorEngine, + triggerCommandWithTrace, } from '@vitest/browser/locators' import { page, server, utils } from 'vitest/browser' import { __INTERNAL } from 'vitest/internal/browser' @@ -25,6 +31,13 @@ class WebdriverIOLocator extends Locator { super() } + // This exists to avoid calling `this.elements` in `this.selector`'s getter in interactive actions + private withElement(element: Element, error: Error | undefined) { + const pwSelector = selectorEngine.generateSelectorSimple(element) + const cssSelector = convertElementToCssSelector(element) + return new ElementWebdriverIOLocator(cssSelector, error, pwSelector, element) + } + override get selector(): string { const selectors = this.elements().map(element => convertElementToCssSelector(element)) if (!selectors.length) { @@ -42,33 +55,85 @@ class WebdriverIOLocator extends Locator { } public override click(options?: UserEventClickOptions): Promise { - return super.click(processClickOptions(options)) + return ensureAwaited(async (error) => { + const element = await this.findElement(options) + return this.withElement(element, error).click(processClickOptions(options)) + }) } public override dblClick(options?: UserEventClickOptions): Promise { - return super.dblClick(processClickOptions(options)) + return ensureAwaited(async (error) => { + const element = await this.findElement(options) + return this.withElement(element, error).dblClick(processClickOptions(options)) + }) } public override tripleClick(options?: UserEventClickOptions): Promise { - return super.tripleClick(processClickOptions(options)) + return ensureAwaited(async (error) => { + const element = await this.findElement(options) + return this.withElement(element, error).tripleClick(processClickOptions(options)) + }) } public selectOptions( value: HTMLElement | HTMLElement[] | Locator | Locator[] | string | string[], options?: UserEventSelectOptions, ): Promise { - const values = getWebdriverioSelectOptions(this.element(), value) - return this.triggerCommand('__vitest_selectOptions', this.selector, values, options) + return ensureAwaited(async (error) => { + const element = await this.findElement(options) + const values = getWebdriverioSelectOptions(element, value) + return triggerCommandWithTrace({ + name: '__vitest_selectOptions', + arguments: [convertElementToCssSelector(element), values, options], + errorSource: error, + }) + }) } public override hover(options?: UserEventHoverOptions): Promise { - return super.hover(processHoverOptions(options)) + return ensureAwaited(async (error) => { + const element = await this.findElement(options) + return this.withElement(element, error).hover(processHoverOptions(options)) + }) } public override dropTo(target: Locator, options?: UserEventDragAndDropOptions): Promise { + // playwright doesn't enforce a single element, it selects the first one, + // so we just follow the behavior return super.dropTo(target, processDragAndDropOptions(options)) } + public override wheel(options: UserEventWheelOptions): Promise { + return ensureAwaited(async (error) => { + const element = await this.findElement(options) + return this.withElement(element, error).wheel(options) + }) + } + + public override clear(options?: UserEventClearOptions): Promise { + return ensureAwaited(async (error) => { + const element = await this.findElement(options) + return this.withElement(element, error).clear(options) + }) + } + + public override fill(text: string, options?: UserEventFillOptions): Promise { + return ensureAwaited(async (error) => { + const element = await this.findElement(options) + return this.withElement(element, error).fill(text, options) + }) + } + + public override screenshot(options?: LocatorScreenshotOptions): Promise { + return ensureAwaited(async (error) => { + const element = await this.findElement(options) + return this.withElement(element, error).screenshot(options) + }) + } + + // playwright doesn't enforce a single element in upload + // public override async upload(): Promise + protected locator(selector: string) { return new WebdriverIOLocator(`${this._pwSelector} >> ${selector}`, this._container) } @@ -78,6 +143,33 @@ class WebdriverIOLocator extends Locator { } } +const kElementLocator = Symbol.for('$$vitest:locator-resolved') + +class ElementWebdriverIOLocator extends Locator { + public [kElementLocator] = true + + constructor( + private _cssSelector: string, + protected _errorSource: Error | undefined, + protected _pwSelector: string, + protected _container: Element, + ) { + super() + } + + override get selector() { + return this._cssSelector + } + + protected locator(_selector: string): Locator { + throw new Error(`should not be called`) + } + + protected elementLocator(_element: Element): Locator { + throw new Error(`should not be called`) + } +} + page.extend({ getByLabelText(text, options) { return new WebdriverIOLocator(getByLabelSelector(text, options)) diff --git a/packages/browser-webdriverio/src/webdriverio.ts b/packages/browser-webdriverio/src/webdriverio.ts index 7f86aa919ca1..467f3ee31369 100644 --- a/packages/browser-webdriverio/src/webdriverio.ts +++ b/packages/browser-webdriverio/src/webdriverio.ts @@ -3,6 +3,7 @@ import type { Capabilities } from '@wdio/types' import type { ScreenshotComparatorRegistry, ScreenshotMatcherOptions, + SelectorOptions, } from 'vitest/browser' import type { BrowserCommand, @@ -288,15 +289,21 @@ export class WebdriverBrowserProvider implements BrowserProvider { } declare module 'vitest/browser' { - export interface UserEventClickOptions extends Partial {} - export interface UserEventHoverOptions extends MoveToOptions {} - + export interface UserEventClickOptions extends Partial, SelectorOptions {} + export interface UserEventHoverOptions extends MoveToOptions, SelectorOptions {} export interface UserEventDragAndDropOptions extends DragAndDropOptions { sourceX?: number sourceY?: number targetX?: number targetY?: number } + export interface UserEventFillOptions extends SelectorOptions {} + export interface UserEventSelectOptions extends SelectorOptions {} + export interface UserEventClearOptions extends SelectorOptions {} + export interface UserEventDoubleClickOptions extends SelectorOptions {} + export interface UserEventTripleClickOptions extends SelectorOptions {} + export interface UserEventWheelBaseOptions extends SelectorOptions {} + export interface LocatorScreenshotOptions extends SelectorOptions {} } declare module 'vitest/node' { diff --git a/packages/browser/context.d.ts b/packages/browser/context.d.ts index c09dd565de9a..094f61e30c24 100644 --- a/packages/browser/context.d.ts +++ b/packages/browser/context.d.ts @@ -21,7 +21,10 @@ export interface CDPSession { // methods are defined by the provider type augmentation } -export interface ScreenshotOptions { +export interface ScreenshotOptions extends SelectorOptions { + /** + * The HTML element to screeshot. + */ element?: Element | Locator /** * Path relative to the current test file. @@ -157,7 +160,7 @@ export interface ScreenshotMatcherOptions< comparatorOptions?: ScreenshotComparatorRegistry[ComparatorName] screenshotOptions?: Omit< ScreenshotOptions, - 'element' | 'base64' | 'path' | 'save' | 'type' + 'element' | 'base64' | 'path' | 'save' | 'type' | 'strict' | 'timeout' > /** * Time to wait until a stable screenshot is found. @@ -168,6 +171,13 @@ export interface ScreenshotMatcherOptions< * @default 5000 */ timeout?: number + /** + * Allow only a single element with the same locator. + * + * If Vitest finds multiple elements, it will throw an error immediately without retrying. + * @default true + */ + strict?: boolean } export interface UserEvent { @@ -522,6 +532,22 @@ export interface LocatorSelectors { export interface FrameLocator extends LocatorSelectors {} +export interface SelectorOptions { + /** + * How long to wait until a single element is found. By default, this has the same timeout as the test. + * + * Vitest will try to find the element in ever increasing intervals: 0, 20, 50, 100, 100, 500. + */ + timeout?: number + /** + * Allow only a single element with the same locator. + * + * If Vitest finds multiple elements, it will throw an error immediately without retrying. + * @default true + */ + strict?: boolean +} + export interface Locator extends LocatorSelectors { /** * Selector string that will be used to locate the element by the browser provider. @@ -689,13 +715,27 @@ export interface Locator extends LocatorSelectors { * @see {@link https://vitest.dev/api/browser/locators#filter} */ filter(options: LocatorOptions): Locator + /** + * This method returns an element matching the locator. + * Unlike [`.element()`](https://vitest.dev/api/browser/locators#element), + * this method will wait and retry until a matching element appears in the DOM, + * using increasing intervals (0, 20, 50, 100, 100, 500ms). + * + * **WARNING:** + * + * This is an escape hatch for library authors and 3d-party APIs that do not support locators directly. + * If you are interacting with the element, use builtin methods instead. + * @since 4.1.0 + * @see {@link https://vitest.dev/api/browser/locators#findelement} + */ + findElement(options?: SelectorOptions): Promise } export interface UserEventTabOptions { shift?: boolean } -export interface UserEventTypeOptions { +export interface UserEventTypeOptions extends SelectorOptions { skipClick?: boolean skipAutoClose?: boolean } diff --git a/packages/browser/src/client/tester/context.ts b/packages/browser/src/client/tester/context.ts index 349dfc890928..17dfbe30ce50 100644 --- a/packages/browser/src/client/tester/context.ts +++ b/packages/browser/src/client/tester/context.ts @@ -102,7 +102,7 @@ export function createUserEvent(__tl_user_event_base__?: TestingLibraryUserEvent // testing-library user-event async type(element, text, options) { return ensureAwaited(async (error) => { - const selector = convertToSelector(element) + const selector = await convertToSelector(element, options) const { unreleased } = await triggerCommand<{ unreleased: string[] }>( '__vitest_type', [ @@ -323,11 +323,15 @@ export const page: BrowserPage = { const name = options.path || `${taskName.replace(/[^a-z0-9]/gi, '-')}-${number}.png` + const [element, ...mask] = await Promise.all([ + options.element ? convertToSelector(options.element, options) : undefined, + ...('mask' in options + ? (options.mask as Array).map(el => convertToSelector(el, options)) + : []), + ]) + const normalizedOptions = 'mask' in options - ? { - ...options, - mask: (options.mask as Array).map(convertToSelector), - } + ? { ...options, mask } : options return ensureAwaited(error => triggerCommand( @@ -336,9 +340,7 @@ export const page: BrowserPage = { name, processTimeoutOptions({ ...normalizedOptions, - element: options.element - ? convertToSelector(options.element) - : undefined, + element, } as any /** TODO */), ], error, diff --git a/packages/browser/src/client/tester/expect/toMatchScreenshot.ts b/packages/browser/src/client/tester/expect/toMatchScreenshot.ts index 64c23efbd762..46980d7e4155 100644 --- a/packages/browser/src/client/tester/expect/toMatchScreenshot.ts +++ b/packages/browser/src/client/tester/expect/toMatchScreenshot.ts @@ -40,14 +40,21 @@ export default async function toMatchScreenshot( ? nameOrOptions : `${this.currentTestName} ${counter.current}` + const [element, ...mask] = await Promise.all([ + convertToSelector(actual, options), + ...options.screenshotOptions && 'mask' in options.screenshotOptions + ? (options.screenshotOptions.mask as Array) + .map(m => convertToSelector(m, options)) + : [], + ]) + const normalizedOptions: Omit = ( options.screenshotOptions && 'mask' in options.screenshotOptions ? { ...options, screenshotOptions: { ...options.screenshotOptions, - mask: (options.screenshotOptions.mask as Array) - .map(convertToSelector), + mask, }, } // TS believes `mask` to still be defined as `ReadonlyArray` @@ -60,7 +67,7 @@ export default async function toMatchScreenshot( name, this.currentTestName, { - element: convertToSelector(actual), + element, ...normalizedOptions, }, ] satisfies ScreenshotMatcherArguments, diff --git a/packages/browser/src/client/tester/locators/index.ts b/packages/browser/src/client/tester/locators/index.ts index ec9a2f9eb4b2..1fd0cd9ad732 100644 --- a/packages/browser/src/client/tester/locators/index.ts +++ b/packages/browser/src/client/tester/locators/index.ts @@ -3,6 +3,7 @@ import type { LocatorByRoleOptions, LocatorOptions, LocatorScreenshotOptions, + SelectorOptions, UserEventClearOptions, UserEventClickOptions, UserEventDragAndDropOptions, @@ -24,10 +25,11 @@ import { Ivya, } from 'ivya' import { page, server, utils } from 'vitest/browser' -import { __INTERNAL } from 'vitest/internal/browser' +import { __INTERNAL, getSafeTimers } from 'vitest/internal/browser' import { ensureAwaited, getBrowserState } from '../../utils' -import { escapeForTextSelector, isLocator, resolveUserEventWheelOptions } from '../tester-utils' +import { escapeForTextSelector, isLocator, processTimeoutOptions, resolveUserEventWheelOptions } from '../tester-utils' +export { ensureAwaited } from '../../utils' export { convertElementToCssSelector, getIframeScale, processTimeoutOptions } from '../tester-utils' export { getByAltTextSelector, @@ -41,6 +43,14 @@ export { __INTERNAL._asLocator = asLocator +const now = Date.now +const waitForIntervals = [0, 20, 50, 100, 100, 500] + +function sleep(ms: number): Promise { + const { setTimeout } = getSafeTimers() + return new Promise(resolve => setTimeout(resolve, ms)) +} + // we prefer using playwright locators because they are more powerful and support Shadow DOM export const selectorEngine: Ivya = Ivya.create({ browser: ((name: string) => { @@ -65,6 +75,7 @@ export abstract class Locator { private _parsedSelector: ParsedSelector | undefined protected _container?: Element | undefined protected _pwSelector?: string | undefined + protected _errorSource?: Error constructor() { Object.defineProperty(this, kLocator, { @@ -88,8 +99,12 @@ export abstract class Locator { } public wheel(options: UserEventWheelOptions): Promise { - return ensureAwaited(async () => { - await this.triggerCommand('__vitest_wheel', this.selector, resolveUserEventWheelOptions(options)) + return ensureAwaited(async (error) => { + await getBrowserState().commands.triggerCommand( + '__vitest_wheel', + [this.selector, resolveUserEventWheelOptions(options)], + error, + ) const browser = getBrowserState().config.browser.name @@ -121,25 +136,31 @@ export abstract class Locator { } public async upload(files: string | string[] | File | File[], options?: UserEventUploadOptions): Promise { - const filesPromise = (Array.isArray(files) ? files : [files]).map(async (file) => { - if (typeof file === 'string') { - return file - } - const bas64String = await new Promise((resolve, reject) => { - const reader = new FileReader() - reader.onload = () => resolve(reader.result as string) - reader.onerror = () => reject(new Error(`Failed to read file: ${file.name}`)) - reader.readAsDataURL(file) - }) + return ensureAwaited(async (error) => { + const filesPromise = (Array.isArray(files) ? files : [files]).map(async (file) => { + if (typeof file === 'string') { + return file + } + const bas64String = await new Promise((resolve, reject) => { + const reader = new FileReader() + reader.onload = () => resolve(reader.result as string) + reader.onerror = () => reject(new Error(`Failed to read file: ${file.name}`)) + reader.readAsDataURL(file) + }) - return { - name: file.name, - mimeType: file.type, - // strip prefix `data:[][;base64],` - base64: bas64String.slice(bas64String.indexOf(',') + 1), - } + return { + name: file.name, + mimeType: file.type, + // strip prefix `data:[][;base64],` + base64: bas64String.slice(bas64String.indexOf(',') + 1), + } + }) + return getBrowserState().commands.triggerCommand( + '__vitest_upload', + [this.selector, await Promise.all(filesPromise), options], + error, + ) }) - return this.triggerCommand('__vitest_upload', this.selector, await Promise.all(filesPromise), options) } public dropTo(target: Locator, options: UserEventDragAndDropOptions = {}): Promise { @@ -293,12 +314,82 @@ export abstract class Locator { return this.selector } + public async findElement(options_: SelectorOptions = {}): Promise { + const options = processTimeoutOptions(options_) + const timeout = options?.timeout + const strict = options?.strict ?? true + const startTime = now() + let intervalIndex = 0 + while (true) { + const elements = this.elements() + if (elements.length === 1) { + return elements[0] + } + if (elements.length > 1) { + if (strict) { + throw createStrictModeViolationError(this._pwSelector || this.selector, elements) + } + return elements[0] + } + const elapsed = now() - startTime + const isLastCall = timeout != null && elapsed >= timeout + if (isLastCall) { + throw utils.getElementError(this._pwSelector || this.selector, this._container || document.body) + } + const interval = waitForIntervals[Math.min(intervalIndex++, waitForIntervals.length - 1)] + const nextInterval = timeout != null + ? Math.min(interval, timeout - elapsed) + : interval + await sleep(nextInterval) + } + } + protected triggerCommand(command: string, ...args: any[]): Promise { - const commands = getBrowserState().commands - return ensureAwaited(error => commands.triggerCommand( - command, - args, - error, - )) + if (this._errorSource) { + return triggerCommandWithTrace({ + name: command, + arguments: args, + errorSource: this._errorSource, + }) + } + return ensureAwaited(error => triggerCommandWithTrace({ + name: command, + arguments: args, + errorSource: error, + })) } } + +export function triggerCommandWithTrace( + options: { + name: string + arguments: unknown[] + errorSource?: Error | undefined + }, +): Promise { + return getBrowserState().commands.triggerCommand( + options.name, + options.arguments, + options.errorSource, + ) +} + +function createStrictModeViolationError( + selector: string, + matches: Element[], +) { + const infos = matches.slice(0, 10).map(m => ({ + preview: selectorEngine.previewNode(m), + selector: selectorEngine.generateSelectorSimple(m), + })) + const lines = infos.map( + (info, i) => + `\n ${i + 1}) ${info.preview} aka ${asLocator('javascript', info.selector)}`, + ) + if (infos.length < matches.length) { + lines.push('\n ...') + } + return new Error( + `strict mode violation: ${asLocator('javascript', selector)} resolved to ${matches.length} elements:${lines.join('')}\n`, + ) +} diff --git a/packages/browser/src/client/tester/tester-utils.ts b/packages/browser/src/client/tester/tester-utils.ts index 2c2e9df2dfc3..1176a2c04f04 100644 --- a/packages/browser/src/client/tester/tester-utils.ts +++ b/packages/browser/src/client/tester/tester-utils.ts @@ -1,9 +1,7 @@ -import type { Locator, UserEventWheelDeltaOptions, UserEventWheelOptions } from 'vitest/browser' +import type { Locator, SelectorOptions, UserEventWheelDeltaOptions, UserEventWheelOptions } from 'vitest/browser' import type { BrowserRPC } from '../client' import { getBrowserState, getWorkerState } from '../utils' -const provider = getBrowserState().provider - /* @__NO_SIDE_EFFECTS__ */ export function convertElementToCssSelector(element: Element): string { if (!element || !(element instanceof Element)) { @@ -130,7 +128,6 @@ export class CommandsManager { () => rpc.triggerCommand(sessionId, command, filepath, args).catch((err) => { // rethrow an error to keep the stack trace in browser - // const clientError = new Error(err.message) clientError.message = err.message clientError.name = err.name clientError.stack = clientError.stack?.replace(clientError.message, err.message) @@ -142,12 +139,10 @@ export class CommandsManager { const now = Date.now -export function processTimeoutOptions(options_?: T): T | undefined { +export function processTimeoutOptions(options_: T | undefined): T | undefined { if ( // if timeout is set, keep it (options_ && options_.timeout != null) - // timeout can only be set for playwright commands - || provider !== 'playwright' ) { return options_ } @@ -209,7 +204,10 @@ export function escapeForTextSelector(text: string | RegExp, exact: boolean): st return `${JSON.stringify(text)}${exact ? 's' : 'i'}` } -export function convertToSelector(elementOrLocator: Element | Locator): string { +const provider = getBrowserState().provider +const kElementLocator = Symbol.for('$$vitest:locator-resolved') + +export async function convertToSelector(elementOrLocator: Element | Locator, options?: SelectorOptions): Promise { if (!elementOrLocator) { throw new Error('Expected element or locator to be defined.') } @@ -217,7 +215,11 @@ export function convertToSelector(elementOrLocator: Element | Locator): string { return convertElementToCssSelector(elementOrLocator) } if (isLocator(elementOrLocator)) { - return elementOrLocator.selector + if (provider === 'playwright' || kElementLocator in elementOrLocator) { + return elementOrLocator.selector + } + const element = await elementOrLocator.findElement(options) + return convertElementToCssSelector(element) } throw new Error('Expected element or locator to be an instance of Element or Locator.') } diff --git a/packages/browser/src/node/commands/screenshotMatcher/utils.ts b/packages/browser/src/node/commands/screenshotMatcher/utils.ts index f70feffc92c2..fb3645ae01a6 100644 --- a/packages/browser/src/node/commands/screenshotMatcher/utils.ts +++ b/packages/browser/src/node/commands/screenshotMatcher/utils.ts @@ -1,3 +1,6 @@ +// Note: this augments `screenshotOptions` types +import type {} from '@vitest/browser-playwright' + import type { BrowserCommandContext, BrowserConfigOptions } from 'vitest/node' import type { ScreenshotMatcherOptions } from '../../../../context' import type { ScreenshotMatcherArguments } from '../../../shared/screenshotMatcher/types' @@ -29,6 +32,7 @@ const defaultOptions = { scale: 'device', }, timeout: 5_000, + strict: true, resolveDiffPath: ({ arg, ext, diff --git a/test/browser/test/findElement.test.ts b/test/browser/test/findElement.test.ts new file mode 100644 index 000000000000..1a211f9d267e --- /dev/null +++ b/test/browser/test/findElement.test.ts @@ -0,0 +1,110 @@ +import { beforeEach, expect, test, vi } from 'vitest' +import { page } from 'vitest/browser' + +beforeEach(() => { + document.body.innerHTML = '' +}) + +test('locator.findElement can find the element if it exists', async () => { + const button = createButton() + + const element = await page.getByRole('button').findElement() + expect(element).toBeInTheDocument() + expect(button).toBe(element) +}) + +test('locator.findElement can find the element if it appears', async () => { + let button: HTMLButtonElement + + setTimeout(() => { + button = createButton() + }, 50) + + const element = await page.getByRole('button').findElement() + expect(element).toBeInTheDocument() + expect(button).toBe(element) +}) + +test('locator.findElement fails if it cannot find the element', async () => { + const locator = page.getByRole('button') + const elementsSpy = vi.spyOn(locator, 'elements') + await expect(() => { + return locator.findElement({ timeout: 100 }) + }).rejects.toThrow('Cannot find element with locator: getByRole(\'button\')') + // Normally it would be 5: + // Immidiate, 0 (next tick), 20, 50, 100 + // But on CI it can be less because resources are limited + expect(elementsSpy.mock.calls.length).toBeGreaterThanOrEqual(3) +}) + +test('locator.findElement fails if there are multiple elements by default', async () => { + createButton() + createButton() + + await expect( + () => page.getByRole('button').findElement(), + ).rejects.toThrowErrorMatchingInlineSnapshot(` + [Error: strict mode violation: getByRole('button') resolved to 2 elements: + 1) aka getByRole('button').first() + 2) aka getByRole('button').nth(1) + ] + `) +}) + +test('locator.findElement fails if there are multiple elements if strict mode is specified', async () => { + createButton() + createButton() + + await expect( + () => page.getByRole('button').findElement({ strict: true }), + ).rejects.toThrowErrorMatchingInlineSnapshot(` + [Error: strict mode violation: getByRole('button') resolved to 2 elements: + 1) aka getByRole('button').first() + 2) aka getByRole('button').nth(1) + ] + `) +}) + +test('locator.findElement fails if multiple elements appear later with strict mode', async () => { + setTimeout(() => { + createButton() + createButton() + }, 50) + + await expect( + () => page.getByRole('button').findElement(), + ).rejects.toThrowErrorMatchingInlineSnapshot(` + [Error: strict mode violation: getByRole('button') resolved to 2 elements: + 1) aka getByRole('button').first() + 2) aka getByRole('button').nth(1) + ] + `) +}) + +test('locator.findElement returns the first button if strict is disabled', async () => { + const button = createButton() + createButton() + + const element = await page.getByRole('button').findElement({ strict: false }) + expect(element).toBeInTheDocument() + expect(button).toBe(element) +}) + +test('locator.findElement returns the first button if strict is disabled after element appears', async () => { + let button: HTMLButtonElement + + setTimeout(() => { + button = createButton() + createButton() + }, 50) + + const element = await page.getByRole('button').findElement({ strict: false }) + expect(element).toBeInTheDocument() + expect(button).toBe(element) +}) + +function createButton() { + const button = document.createElement('button') + document.body.append(button) + return button +} diff --git a/test/browser/test/userEvent.test.ts b/test/browser/test/userEvent.test.ts index 46b8de159fc5..88c692f5c62b 100644 --- a/test/browser/test/userEvent.test.ts +++ b/test/browser/test/userEvent.test.ts @@ -1,5 +1,5 @@ import { beforeEach, describe, expect, test, vi } from 'vitest' -import { userEvent as _uE, server } from 'vitest/browser' +import { userEvent as _uE, page, server } from 'vitest/browser' import '../src/button.css' beforeEach(() => { @@ -157,6 +157,18 @@ describe('userEvent.click', () => { y: expect.closeTo(150, -1), }) }) + + test('click throws an error with multiple elements', async () => { + const button1 = document.createElement('button') + const button2 = document.createElement('button') + document.body.append(button1, button2) + + await expect(() => page.getByRole('button').click()).rejects.toThrow( + `strict mode violation: getByRole('button') resolved to 2 elements:\n` + + ` 1) aka getByRole('button').first()\n` + + ` 2) aka getByRole('button').nth(1)`, + ) + }) }) describe('userEvent.dblClick', () => { @@ -193,6 +205,18 @@ describe('userEvent.dblClick', () => { expect(onClick).not.toHaveBeenCalled() expect(dblClick).not.toHaveBeenCalled() }) + + test('double click throws an error with multiple elements', async () => { + const button1 = document.createElement('button') + const button2 = document.createElement('button') + document.body.append(button1, button2) + + await expect(() => page.getByRole('button').dblClick()).rejects.toThrow( + `strict mode violation: getByRole('button') resolved to 2 elements:\n` + + ` 1) aka getByRole('button').first()\n` + + ` 2) aka getByRole('button').nth(1)`, + ) + }) }) describe('userEvent.tripleClick', () => { @@ -239,6 +263,18 @@ describe('userEvent.tripleClick', () => { expect(dblClick).not.toHaveBeenCalled() expect(tripleClick).not.toHaveBeenCalled() }) + + test('triple click throws an error with multiple elements', async () => { + const button1 = document.createElement('button') + const button2 = document.createElement('button') + document.body.append(button1, button2) + + await expect(() => page.getByRole('button').tripleClick()).rejects.toThrow( + `strict mode violation: getByRole('button') resolved to 2 elements:\n` + + ` 1) aka getByRole('button').first()\n` + + ` 2) aka getByRole('button').nth(1)`, + ) + }) }) describe('userEvent.hover, userEvent.unhover', () => { @@ -276,6 +312,18 @@ describe('userEvent.hover, userEvent.unhover', () => { expect(mouseEntered).toBe(false) }) + test('hover throws an error with multiple elements', async () => { + const button1 = document.createElement('button') + const button2 = document.createElement('button') + document.body.append(button1, button2) + + await expect(() => page.getByRole('button').hover()).rejects.toThrow( + `strict mode violation: getByRole('button') resolved to 2 elements:\n` + + ` 1) aka getByRole('button').first()\n` + + ` 2) aka getByRole('button').nth(1)`, + ) + }) + test.runIf(server.provider === 'playwright')('hover, unhover correctly pass options', async () => { interface ModifiersDetected { shift: boolean; control: boolean } type ModifierKeys = 'Shift' | 'Control' | 'Alt' | 'ControlOrMeta' | 'Meta' @@ -409,6 +457,30 @@ const inputLike = [ }, ] +test('type throws an error with multiple elements', async () => { + const button1 = document.createElement('button') + const button2 = document.createElement('button') + document.body.append(button1, button2) + + await expect(() => userEvent.type(page.getByRole('button'), 'Hello World')).rejects.toThrow( + `strict mode violation: getByRole('button') resolved to 2 elements:\n` + + ` 1) aka getByRole('button').first()\n` + + ` 2) aka getByRole('button').nth(1)`, + ) +}) + +test('fill throws an error with multiple elements', async () => { + const button1 = document.createElement('button') + const button2 = document.createElement('button') + document.body.append(button1, button2) + + await expect(() => page.getByRole('button').fill('Hello World')).rejects.toThrow( + `strict mode violation: getByRole('button') resolved to 2 elements:\n` + + ` 1) aka getByRole('button').first()\n` + + ` 2) aka getByRole('button').nth(1)`, + ) +}) + describe.each(inputLike)('userEvent.type', (getElement) => { test('types into an input', async () => { const { input, keydown, keyup, value } = createTextInput() @@ -814,7 +886,19 @@ describe.each([ // return { select, options: [option1, option2] } // }, // ], -])('selectOptions in "%s" works correctly', (_, createSelect) => { +])('selectOptions in "%s" works correctly', (name, createSelect) => { + test(`${name} throws an error with multiple elements`, async () => { + const button1 = document.createElement('button') + const button2 = document.createElement('button') + document.body.append(button1, button2) + + await expect(() => page.getByRole('button').selectOptions('Hello World')).rejects.toThrow( + `strict mode violation: getByRole('button') resolved to 2 elements:\n` + + ` 1) aka getByRole('button').first()\n` + + ` 2) aka getByRole('button').nth(1)`, + ) + }) + test('can select a single primitive value', async () => { const { select } = createSelect() From 05f1854e24fb96694ca86a7b4bbf384553f2219d Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 20 Feb 2026 20:10:45 +0900 Subject: [PATCH 3/6] feat: support `update: "none"` and add docs about snapshots behavior on CI (#9700) --- docs/config/update.md | 14 +++- docs/guide/cli-generated.md | 2 +- docs/guide/snapshot.md | 6 ++ packages/vitest/src/node/cli/cli-config.ts | 2 +- .../vitest/src/node/config/resolveConfig.ts | 2 +- packages/vitest/src/node/types/config.ts | 2 +- test/cli/test/around-each.test.ts | 23 ++++++ test/cli/test/mocking.test.ts | 82 +++++++------------ test/snapshots/test/ci.test.ts | 54 ++++++++++++ test/snapshots/test/fixtures/ci/.gitignore | 1 + test/snapshots/test/fixtures/ci/basic.test.ts | 5 ++ test/snapshots/test/obsolete.test.ts | 81 ++++++++++++------ test/snapshots/test/test-update.test.ts | 2 +- test/test-utils/index.ts | 14 +++- 14 files changed, 203 insertions(+), 87 deletions(-) create mode 100644 test/snapshots/test/ci.test.ts create mode 100644 test/snapshots/test/fixtures/ci/.gitignore create mode 100644 test/snapshots/test/fixtures/ci/basic.test.ts diff --git a/docs/config/update.md b/docs/config/update.md index a154000bd696..d38ad1ba863c 100644 --- a/docs/config/update.md +++ b/docs/config/update.md @@ -5,11 +5,17 @@ outline: deep # update {#update} -- **Type:** `boolean | 'new' | 'all'` +- **Type:** `boolean | 'new' | 'all' | 'none'` - **Default:** `false` -- **CLI:** `-u`, `--update`, `--update=false`, `--update=new` +- **CLI:** `-u`, `--update`, `--update=false`, `--update=new`, `--update=none` -Update snapshot files. The behaviour depends on the value: +Define snapshot update behavior. -- `true` or `'all'`: updates all changed snapshots and delete obsolete ones +- `true` or `'all'`: updates all changed snapshots and deletes obsolete ones - `new`: generates new snapshots without changing or deleting obsolete ones +- `none`: does not write snapshots and fails on snapshot mismatches, missing snapshots, and obsolete snapshots + +When `update` is `false` (the default), Vitest resolves snapshot update mode by environment: + +- Local runs (non-CI): works same as `new` +- CI runs (`process.env.CI` is truthy): works same as `none` diff --git a/docs/guide/cli-generated.md b/docs/guide/cli-generated.md index 52f67fc9a247..d86486f98517 100644 --- a/docs/guide/cli-generated.md +++ b/docs/guide/cli-generated.md @@ -16,7 +16,7 @@ Path to config file - **CLI:** `-u, --update [type]` - **Config:** [update](/config/update) -Update snapshot (accepts boolean, "new" or "all") +Update snapshot (accepts boolean, "new", "all" or "none") ### watch diff --git a/docs/guide/snapshot.md b/docs/guide/snapshot.md index b9a3ba6405d7..18b0b58a636a 100644 --- a/docs/guide/snapshot.md +++ b/docs/guide/snapshot.md @@ -79,6 +79,12 @@ Or you can use the `--update` or `-u` flag in the CLI to make Vitest update snap vitest -u ``` +### CI behavior + +By default, Vitest does not write snapshots in CI (`process.env.CI` is truthy) and any snapshot mismatches, missing snapshots, and obsolete snapshots fail the run. See [`update`](/config/update) for the details. + +An **obsolete snapshot** is a snapshot entry (or snapshot file) that no longer matches any collected test. This usually happens after removing or renaming tests. + ## File Snapshots When calling `toMatchSnapshot()`, we store all snapshots in a formatted snap file. That means we need to escape some characters (namely the double-quote `"` and backtick `` ` ``) in the snapshot string. Meanwhile, you might lose the syntax highlighting for the snapshot content (if they are in some language). diff --git a/packages/vitest/src/node/cli/cli-config.ts b/packages/vitest/src/node/cli/cli-config.ts index b10a61856685..ddf7641096b2 100644 --- a/packages/vitest/src/node/cli/cli-config.ts +++ b/packages/vitest/src/node/cli/cli-config.ts @@ -84,7 +84,7 @@ export const cliOptionsConfig: VitestCLIOptions = { }, update: { shorthand: 'u', - description: 'Update snapshot (accepts boolean, "new" or "all")', + description: 'Update snapshot (accepts boolean, "new", "all" or "none")', argument: '[type]', }, watch: { diff --git a/packages/vitest/src/node/config/resolveConfig.ts b/packages/vitest/src/node/config/resolveConfig.ts index eb886f865d8e..3c849ea68201 100644 --- a/packages/vitest/src/node/config/resolveConfig.ts +++ b/packages/vitest/src/node/config/resolveConfig.ts @@ -566,7 +566,7 @@ export function resolveConfig( expand: resolved.expandSnapshotDiff ?? false, snapshotFormat: resolved.snapshotFormat || {}, updateSnapshot: - UPDATE_SNAPSHOT === 'all' || UPDATE_SNAPSHOT === 'new' + UPDATE_SNAPSHOT === 'all' || UPDATE_SNAPSHOT === 'new' || UPDATE_SNAPSHOT === 'none' ? UPDATE_SNAPSHOT : isCI && !UPDATE_SNAPSHOT ? 'none' : UPDATE_SNAPSHOT ? 'all' : 'new', resolveSnapshotPath: options.resolveSnapshotPath, diff --git a/packages/vitest/src/node/types/config.ts b/packages/vitest/src/node/types/config.ts index e603e1d4b8d9..29c83bc1108a 100644 --- a/packages/vitest/src/node/types/config.ts +++ b/packages/vitest/src/node/types/config.ts @@ -380,7 +380,7 @@ export interface InlineConfig { * * @default false */ - update?: boolean | 'all' | 'new' + update?: boolean | 'all' | 'new' | 'none' /** * Watch mode diff --git a/test/cli/test/around-each.test.ts b/test/cli/test/around-each.test.ts index 247b64066fce..fff738ef7e12 100644 --- a/test/cli/test/around-each.test.ts +++ b/test/cli/test/around-each.test.ts @@ -1463,6 +1463,9 @@ test('aroundAll throws error when runSuite is not called', async () => { expect(errorTree()).toMatchInlineSnapshot(` { "no-run.test.ts": { + "__module_errors__": [ + "The \`runSuite()\` callback was not called in the \`aroundAll\` hook. Make sure to call \`runSuite()\` to run the suite.", + ], "test": "skipped", }, } @@ -1584,6 +1587,9 @@ test('aroundAll setup phase timeout', async () => { expect(errorTree()).toMatchInlineSnapshot(` { "timeout.test.ts": { + "__module_errors__": [ + "The setup phase of "aroundAll" hook timed out after 10ms.", + ], "test": "skipped", }, } @@ -1635,6 +1641,9 @@ test('aroundAll teardown phase timeout', async () => { expect(errorTree()).toMatchInlineSnapshot(` { "teardown-timeout.test.ts": { + "__module_errors__": [ + "The teardown phase of "aroundAll" hook timed out after 10ms.", + ], "test": "passed", }, } @@ -1974,6 +1983,9 @@ test('tests are skipped when aroundAll setup fails', async () => { expect(errorTree()).toMatchInlineSnapshot(` { "aroundAll-setup-error.test.ts": { + "__module_errors__": [ + "aroundAll setup error", + ], "test should be skipped": "skipped", }, } @@ -2461,6 +2473,9 @@ test('nested aroundAll setup error is not propagated to outer runSuite catch', a expect(errorTree()).toMatchInlineSnapshot(` { "nested-around-all-setup-error.test.ts": { + "__module_errors__": [ + "inner aroundAll setup error", + ], "repro": "skipped", }, } @@ -2524,6 +2539,9 @@ test('nested aroundAll teardown error is not propagated to outer runSuite catch' expect(errorTree()).toMatchInlineSnapshot(` { "nested-around-all-teardown-error.test.ts": { + "__module_errors__": [ + "inner aroundAll teardown error", + ], "repro": "passed", }, } @@ -2712,6 +2730,11 @@ test('three nested aroundAll teardown errors are all reported', async () => { expect(errorTree()).toMatchInlineSnapshot(` { "triple-around-all-teardown-errors.test.ts": { + "__module_errors__": [ + "inner aroundAll teardown error", + "middle aroundAll teardown error", + "outer aroundAll teardown error", + ], "repro": "passed", }, } diff --git a/test/cli/test/mocking.test.ts b/test/cli/test/mocking.test.ts index 16c3dd6935d6..8c0afda75423 100644 --- a/test/cli/test/mocking.test.ts +++ b/test/cli/test/mocking.test.ts @@ -43,26 +43,14 @@ test('spy is not called here', () => { }) test('invalid packages', async () => { - const { results, errorTree } = await runVitest({ + const { stderr, errorTree } = await runVitest({ root: path.join(import.meta.dirname, '../fixtures/invalid-package'), }) - const testModuleErrors = Object.fromEntries( - results.map(testModule => [ - testModule.relativeModuleId, - testModule.errors().map(e => e.message), - ]), - ) // requires Vite 8 for relaxed import analysis validataion // https://github.com/vitejs/vite/pull/21601 if (rolldownVersion) { - expect(testModuleErrors).toMatchInlineSnapshot(` - { - "mock-bad-dep.test.ts": [], - "mock-wrapper-and-bad-dep.test.ts": [], - "mock-wrapper.test.ts": [], - } - `) + expect(stderr).toMatchInlineSnapshot(`""`) expect(errorTree()).toMatchInlineSnapshot(` { "mock-bad-dep.test.ts": { @@ -78,32 +66,31 @@ test('invalid packages', async () => { `) } else { - expect(testModuleErrors).toMatchInlineSnapshot(` + expect(errorTree()).toMatchInlineSnapshot(` { - "mock-bad-dep.test.ts": [ - "Failed to resolve entry for package "test-dep-invalid". The package may have incorrect main/module/exports specified in its package.json.", - ], - "mock-wrapper-and-bad-dep.test.ts": [ - "Failed to resolve entry for package "test-dep-invalid". The package may have incorrect main/module/exports specified in its package.json.", - ], - "mock-wrapper.test.ts": [ - "Failed to resolve entry for package "test-dep-invalid". The package may have incorrect main/module/exports specified in its package.json.", - ], + "mock-bad-dep.test.ts": { + "__module_errors__": [ + "Failed to resolve entry for package "test-dep-invalid". The package may have incorrect main/module/exports specified in its package.json.", + ], + }, + "mock-wrapper-and-bad-dep.test.ts": { + "__module_errors__": [ + "Failed to resolve entry for package "test-dep-invalid". The package may have incorrect main/module/exports specified in its package.json.", + ], + }, + "mock-wrapper.test.ts": { + "__module_errors__": [ + "Failed to resolve entry for package "test-dep-invalid". The package may have incorrect main/module/exports specified in its package.json.", + ], + }, } `) - expect(errorTree()).toMatchInlineSnapshot(` - { - "mock-bad-dep.test.ts": {}, - "mock-wrapper-and-bad-dep.test.ts": {}, - "mock-wrapper.test.ts": {}, - } - `) } }) test('mocking modules with syntax error', async () => { // TODO: manual mocked module still gets transformed so this is not supported yet. - const { errorTree, results } = await runInlineTests({ + const { errorTree } = await runInlineTests({ './syntax-error.js': `syntax error`, './basic.test.js': /* ts */ ` import * as dep from './syntax-error.js' @@ -118,38 +105,31 @@ test('can mock invalid module', () => { `, }) - const testModuleErrors = Object.fromEntries( - results.map(testModule => [ - testModule.relativeModuleId, - testModule.errors().map(e => e.message), - ]), - ) if (rolldownVersion) { - expect(testModuleErrors).toMatchInlineSnapshot(` + expect(errorTree()).toMatchInlineSnapshot(` { - "basic.test.js": [ - "Parse failure: Parse failed with 1 error: + "basic.test.js": { + "__module_errors__": [ + "Parse failure: Parse failed with 1 error: Expected a semicolon or an implicit semicolon after a statement, but found none 1: syntax error ^ At file: /syntax-error.js:1:6", - ], + ], + }, } `) } else { - expect(testModuleErrors).toMatchInlineSnapshot(` + expect(errorTree()).toMatchInlineSnapshot(` { - "basic.test.js": [ - "Parse failure: Expected ';', '}' or + "basic.test.js": { + "__module_errors__": [ + "Parse failure: Expected ';', '}' or At file: /syntax-error.js:1:7", - ], + ], + }, } `) } - expect(errorTree()).toMatchInlineSnapshot(` - { - "basic.test.js": {}, - } - `) }) diff --git a/test/snapshots/test/ci.test.ts b/test/snapshots/test/ci.test.ts new file mode 100644 index 000000000000..37eec75015cc --- /dev/null +++ b/test/snapshots/test/ci.test.ts @@ -0,0 +1,54 @@ +import fs from 'node:fs' +import path from 'node:path' +import { expect, test } from 'vitest' +import { runVitestCli } from '../../test-utils' + +test('CI behavior', async () => { + // cleanup snapshot + const root = path.join(import.meta.dirname, 'fixtures/ci') + fs.rmSync(path.join(root, '__snapshots__'), { recursive: true, force: true }) + + // snapshot fails with CI + let result = await runVitestCli({ + nodeOptions: { + env: { + CI: 'true', + GITHUB_ACTIONS: 'true', + }, + }, + }, '--root', root) + expect(result.stderr).toMatchInlineSnapshot(` + " + ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL basic.test.ts > basic + Error: Snapshot \`basic 1\` mismatched + ❯ basic.test.ts:4:16 + 2| + 3| test("basic", () => { + 4| expect("ok").toMatchSnapshot() + | ^ + 5| }) + 6| + + ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + " + `) + + // snapshot created without CI + result = await runVitestCli( + { + nodeOptions: { + env: { + CI: '', + GITHUB_ACTIONS: '', + }, + }, + }, + '--root', + root, + ) + expect(result.stderr).toMatchInlineSnapshot(`""`) + expect(result.stdout).toContain('Snapshots 1 written') +}) diff --git a/test/snapshots/test/fixtures/ci/.gitignore b/test/snapshots/test/fixtures/ci/.gitignore new file mode 100644 index 000000000000..b05c2dfa7007 --- /dev/null +++ b/test/snapshots/test/fixtures/ci/.gitignore @@ -0,0 +1 @@ +__snapshots__ diff --git a/test/snapshots/test/fixtures/ci/basic.test.ts b/test/snapshots/test/fixtures/ci/basic.test.ts new file mode 100644 index 000000000000..9727e71ae6f2 --- /dev/null +++ b/test/snapshots/test/fixtures/ci/basic.test.ts @@ -0,0 +1,5 @@ +import { test, expect } from "vitest" + +test("basic", () => { + expect("ok").toMatchSnapshot() +}) diff --git a/test/snapshots/test/obsolete.test.ts b/test/snapshots/test/obsolete.test.ts index 8e66f3583174..a6992ccc4adc 100644 --- a/test/snapshots/test/obsolete.test.ts +++ b/test/snapshots/test/obsolete.test.ts @@ -1,39 +1,68 @@ import fs from 'node:fs' import path from 'node:path' import { expect, test } from 'vitest' -import { runVitestCli } from '../../test-utils' +import { runVitest } from '../../test-utils' -test('obsolete snapshot fails CI', async () => { +test('obsolete snapshot fails with update:none', async () => { // cleanup snapshot const root = path.join(import.meta.dirname, 'fixtures/obsolete') fs.rmSync(path.join(root, 'src/__snapshots__'), { recursive: true, force: true }) // initial run to write snapshot - let vitest = await runVitestCli('--root', root, '--update') - expect(vitest.stdout).toContain('Snapshots 5 written') - expect(vitest.stderr).toBe('') + let result = await runVitest({ root, update: true }) + expect(result.stderr).toBe('') + expect(result.errorTree()).toMatchInlineSnapshot(` + Object { + "src/test1.test.ts": Object { + "bar": "passed", + "foo": "passed", + "fuu": "passed", + }, + "src/test2.test.ts": Object { + "bar": "passed", + "foo": "passed", + }, + } + `) // test fails with obsolete snapshots - // (use cli to test `updateSnapshot: 'none'`) - vitest = await runVitestCli( - { - nodeOptions: { - env: { - CI: 'true', - TEST_OBSOLETE: 'true', - }, - }, - }, - '--root', + result = await runVitest({ root, - ) - expect(vitest.stdout).toContain('2 obsolete') - expect(vitest.stdout).toContain('Test Files 1 failed | 1 passed') - expect(vitest.stdout).toContain('Tests 5 passed') - expect(vitest.stderr).toContain(` -Error: Obsolete snapshots found when no snapshot update is expected. -· foo 1 -· fuu 1 -`) - expect(vitest.exitCode).toBe(1) + update: 'none', + env: { + TEST_OBSOLETE: 'true', + }, + }) + expect(result.stderr).toMatchInlineSnapshot(` + " + ⎯⎯⎯⎯⎯⎯ Failed Suites 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL src/test1.test.ts [ src/test1.test.ts ] + Error: Obsolete snapshots found when no snapshot update is expected. + · foo 1 + · fuu 1 + + ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + " + `) + expect(result.errorTree()).toMatchInlineSnapshot(` + Object { + "src/test1.test.ts": Object { + "__module_errors__": Array [ + "Obsolete snapshots found when no snapshot update is expected. + · foo 1 + · fuu 1 + ", + ], + "bar": "passed", + "foo": "passed", + "fuu": "passed", + }, + "src/test2.test.ts": Object { + "bar": "passed", + "foo": "passed", + }, + } + `) }) diff --git a/test/snapshots/test/test-update.test.ts b/test/snapshots/test/test-update.test.ts index 5df1f63fc2e3..272b502d1f20 100644 --- a/test/snapshots/test/test-update.test.ts +++ b/test/snapshots/test/test-update.test.ts @@ -67,7 +67,7 @@ test('test update', async () => { `) // re-run without update and files are unchanged - const result2 = await runVitest({ root: dstDir, update: false }) + const result2 = await runVitest({ root: dstDir, update: 'none' }) expect(result2.stderr).toMatchInlineSnapshot(`""`) expect(result2.errorTree()).toEqual(result.errorTree()) expect(readFiles(dstDir)).toEqual(resultFiles) diff --git a/test/test-utils/index.ts b/test/test-utils/index.ts index 5b2d3a1828b2..738239854376 100644 --- a/test/test-utils/index.ts +++ b/test/test-utils/index.ts @@ -575,6 +575,16 @@ export function buildErrorTree(testModules: TestModule[]) { } return suiteChildren }, + (testModule, moduleChildren) => { + const errors = testModule.errors().map(error => error.message) + if (errors.length > 0) { + return { + ...moduleChildren, + __module_errors__: errors, + } + } + return moduleChildren + }, ) } @@ -582,6 +592,7 @@ export function buildTestTree( testModules: TestModule[], onTestCase?: (result: TestCase) => unknown, onTestSuite?: (testSuite: TestSuite, suiteChildren: Record) => unknown, + onTestModule?: (testModule: TestModule, moduleChildren: Record) => unknown, ) { type TestTree = Record @@ -613,7 +624,8 @@ export function buildTestTree( for (const module of testModules) { // Use relative module ID for cleaner output const key = module.relativeModuleId - tree[key] = walkCollection(module.children) + const moduleChildren = walkCollection(module.children) + tree[key] = onTestModule ? onTestModule(module, moduleChildren) : moduleChildren } return tree From f0ff1b2a0011f4f6c0ac544549115593c4947788 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 20 Feb 2026 20:26:35 +0900 Subject: [PATCH 4/6] feat: support playwright `launchOptions` with `connectOptions` (#9702) --- docs/config/browser/playwright.md | 4 +- packages/browser-playwright/src/playwright.ts | 35 +++++---- pnpm-lock.yaml | 6 ++ pnpm-workspace.yaml | 1 + test/browser/docker-compose.yaml | 15 ++++ .../fixtures/playwright-connect/basic.test.js | 4 + test/browser/package.json | 1 + test/browser/specs/playwright-connect.test.ts | 75 +++++++++---------- 8 files changed, 86 insertions(+), 55 deletions(-) diff --git a/docs/config/browser/playwright.md b/docs/config/browser/playwright.md index 7e36ded22b56..19d557ddd622 100644 --- a/docs/config/browser/playwright.md +++ b/docs/config/browser/playwright.md @@ -74,7 +74,9 @@ These options are directly passed down to `playwright[browser].connect` command. Use `connectOptions.wsEndpoint` to connect to an existing Playwright server instead of launching browsers locally. This is useful for running browsers in Docker, in CI, or on a remote machine. ::: warning -Since this command connects to an existing Playwright server, any `launch` options will be ignored. + +Vitest forwards `launchOptions` to Playwright server via the `x-playwright-launch-options` header. This works only if the remote Playwright server supports this header, for example when using the `playwright run-server` CLI. + ::: ::: details Example: Running a Playwright Server in Docker diff --git a/packages/browser-playwright/src/playwright.ts b/packages/browser-playwright/src/playwright.ts index c0d6ebd49a21..678156abfa37 100644 --- a/packages/browser-playwright/src/playwright.ts +++ b/packages/browser-playwright/src/playwright.ts @@ -169,20 +169,6 @@ export class PlaywrightBrowserProvider implements BrowserProvider { const playwright = await import('playwright') - if (this.options.connectOptions) { - if (this.options.launchOptions) { - this.project.vitest.logger.warn( - c.yellow(`Found both ${c.bold(c.italic(c.yellow('connect')))} and ${c.bold(c.italic(c.yellow('launch')))} options in browser instance configuration. - Ignoring ${c.bold(c.italic(c.yellow('launch')))} options and using ${c.bold(c.italic(c.yellow('connect')))} mode. - You probably want to remove one of the two options and keep only the one you want to use.`), - ) - } - const browser = await playwright[this.browserName].connect(this.options.connectOptions.wsEndpoint, this.options.connectOptions) - this.browser = browser - this.browserPromise = null - return this.browser - } - const launchOptions: LaunchOptions = { ...this.options.launchOptions, headless: options.headless, @@ -216,6 +202,27 @@ export class PlaywrightBrowserProvider implements BrowserProvider { } debug?.('[%s] initializing the browser with launch options: %O', this.browserName, launchOptions) + + if (this.options.connectOptions) { + let { wsEndpoint, headers = {}, ...connectOptions } = this.options.connectOptions + if ('x-playwright-launch-options' in headers) { + this.project.vitest.logger.warn( + c.yellow( + 'Detected "x-playwright-launch-options" in connectOptions.headers. Provider config launchOptions is ignored.', + ), + ) + } + else { + headers = { ...headers, 'x-playwright-launch-options': JSON.stringify(launchOptions) } + } + this.browser = await playwright[this.browserName].connect(wsEndpoint, { + ...connectOptions, + headers, + }) + this.browserPromise = null + return this.browser + } + let persistentContextOption = this.options.persistentContext if (persistentContextOption && openBrowserOptions.parallel) { persistentContextOption = false diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f626ac513716..9cdfe6e7376f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -105,6 +105,9 @@ catalogs: strip-literal: specifier: ^3.1.0 version: 3.1.0 + tinyexec: + specifier: ^1.0.2 + version: 1.0.2 tinyglobby: specifier: ^0.2.15 version: 0.2.15 @@ -1206,6 +1209,9 @@ importers: react-dom: specifier: ^19.2.4 version: 19.2.4(react@19.2.4) + tinyexec: + specifier: 'catalog:' + version: 1.0.2 url: specifier: ^0.11.4 version: 0.11.4 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e09518e9a6e1..aa8dc45f38d9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -79,6 +79,7 @@ catalog: sirv: ^3.0.2 std-env: ^3.10.0 strip-literal: ^3.1.0 + tinyexec: ^1.0.2 tinyglobby: ^0.2.15 tinyhighlight: ^0.3.2 tinyrainbow: ^3.0.3 diff --git a/test/browser/docker-compose.yaml b/test/browser/docker-compose.yaml index d36ac0675e04..909338991c3b 100644 --- a/test/browser/docker-compose.yaml +++ b/test/browser/docker-compose.yaml @@ -7,3 +7,18 @@ services: user: pwuser ports: - '6677:6677' + + # This setup employs simpler and robust `network_mode: host` instead of port mapping. + # This supports debug inspector, which can only bind to 127.0.0.1. + # `connectOptions.exposeNetwork: ''` is also not needed for this setup. + # Note that `network_mode: host` is supported only on Linux Docker. + # Run it by: + # pnpm run docker up playwright-host + playwright-host: + image: mcr.microsoft.com/playwright:v1.58.1-noble + command: /bin/sh -c "npx -y playwright@1.58.1 run-server --port 6677" + init: true + ipc: host + user: pwuser + network_mode: host + profiles: [host] diff --git a/test/browser/fixtures/playwright-connect/basic.test.js b/test/browser/fixtures/playwright-connect/basic.test.js index 107d7cee9cf4..c140443a98df 100644 --- a/test/browser/fixtures/playwright-connect/basic.test.js +++ b/test/browser/fixtures/playwright-connect/basic.test.js @@ -10,3 +10,7 @@ test('[playwright] Run browser-only test in browser via connect mode', () => { expect(element instanceof HTMLElement).toBe(true) expect(element instanceof HTMLInputElement).not.toBe(true) }) + +test('[playwright] applies launch options from connect header', () => { + expect(navigator.userAgent).toContain('VitestLaunchOptionsTester') +}) diff --git a/test/browser/package.json b/test/browser/package.json index 8e95a5e69b29..4796390c9305 100644 --- a/test/browser/package.json +++ b/test/browser/package.json @@ -41,6 +41,7 @@ "playwright": "^1.58.1", "react": "^19.2.4", "react-dom": "^19.2.4", + "tinyexec": "catalog:", "url": "^0.11.4", "vitest": "workspace:*", "vitest-browser-react": "^2.0.5", diff --git a/test/browser/specs/playwright-connect.test.ts b/test/browser/specs/playwright-connect.test.ts index 97318ca4768b..95c3ce4fca2a 100644 --- a/test/browser/specs/playwright-connect.test.ts +++ b/test/browser/specs/playwright-connect.test.ts @@ -1,42 +1,30 @@ +import { fileURLToPath } from 'node:url' import { playwright } from '@vitest/browser-playwright' -import { chromium } from 'playwright' +import { x } from 'tinyexec' import { expect, test } from 'vitest' +import { Cli } from '../../test-utils/cli' import { provider } from '../settings' import { runBrowserTests } from './utils' -test.runIf(provider.name === 'playwright')('[playwright] runs in connect mode', async () => { - const browserServer = await chromium.launchServer() - const wsEndpoint = browserServer.wsEndpoint() - - const { stdout, exitCode, stderr } = await runBrowserTests({ - root: './fixtures/playwright-connect', - browser: { - instances: [ - { - browser: 'chromium', - name: 'chromium', - provider: playwright({ - connectOptions: { - wsEndpoint, - }, - }), - }, - ], - }, +test.runIf(provider.name === 'playwright')('[playwright] runs in connect mode', async ({ onTestFinished }) => { + const cliPath = fileURLToPath(new URL('./cli.js', import.meta.resolve('@playwright/test'))) + const subprocess = x(process.execPath, [cliPath, 'run-server', '--port', '9898']).process + const cli = new Cli({ + stdin: subprocess.stdin, + stdout: subprocess.stdout, + stderr: subprocess.stderr, + }) + let setDone: (value?: unknown) => void + const isDone = new Promise(resolve => (setDone = resolve)) + subprocess.on('exit', () => setDone()) + onTestFinished(async () => { + subprocess.kill('SIGILL') + await isDone }) - await browserServer.close() - - expect(stderr).toBe('') - expect(stdout).toContain('Tests 2 passed') - expect(exitCode).toBe(0) -}) - -test.runIf(provider.name === 'playwright')('[playwright] warns if both connect and launch mode are configured', async () => { - const browserServer = await chromium.launchServer() - const wsEndpoint = browserServer.wsEndpoint() + await cli.waitForStdout('Listening on ws://localhost:9898') - const { stdout, exitCode, stderr } = await runBrowserTests({ + const result = await runBrowserTests({ root: './fixtures/playwright-connect', browser: { instances: [ @@ -45,18 +33,25 @@ test.runIf(provider.name === 'playwright')('[playwright] warns if both connect a name: 'chromium', provider: playwright({ connectOptions: { - wsEndpoint, + wsEndpoint: 'ws://localhost:9898', + }, + launchOptions: { + args: [`--user-agent=VitestLaunchOptionsTester`], }, - launchOptions: {}, }), }, ], }, - }) - - await browserServer.close() - - expect(stderr).toContain('Found both connect and launch options in browser instance configuration.') - expect(stdout).toContain('Tests 2 passed') - expect(exitCode).toBe(0) + }, ['basic.test.js']) + + expect(result.stderr).toMatchInlineSnapshot(`""`) + expect(result.errorTree()).toMatchInlineSnapshot(` + { + "basic.test.js": { + "[playwright] Run basic test in browser via connect mode": "passed", + "[playwright] Run browser-only test in browser via connect mode": "passed", + "[playwright] applies launch options from connect header": "passed", + }, + } + `) }) From 50727a09294f5b086b8728e0497a94fbabac802b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 12:27:18 +0100 Subject: [PATCH 5/6] chore(deps): update all non-major dependencies (#9614) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/issue-close-require.yml | 2 +- .github/workflows/issue-labeled.yml | 2 +- docs/package.json | 4 +- examples/lit/package.json | 2 +- examples/opentelemetry/docker-compose.yaml | 2 +- examples/opentelemetry/package.json | 10 +- examples/projects/package.json | 4 +- examples/typecheck/package.json | 2 +- package.json | 12 +- packages/browser-playwright/package.json | 2 +- packages/browser-webdriverio/package.json | 2 +- packages/ui/package.json | 6 +- packages/vitest/package.json | 6 +- pnpm-lock.yaml | 1773 +++++++++-------- pnpm-workspace.yaml | 12 +- test/browser/docker-compose.yaml | 2 +- test/browser/package.json | 4 +- .../fixtures/no-module-runner/package.json | 2 +- test/cli/package.json | 4 +- test/core/package.json | 4 +- test/coverage-test/package.json | 2 +- 22 files changed, 1013 insertions(+), 848 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 840ca6bf1bf7..7322937bdd0b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,7 +70,7 @@ jobs: - name: Get changed files id: changed-files - uses: tj-actions/changed-files@e0021407031f5be11a464abee9a0776171c79891 # v47.0.1 + uses: tj-actions/changed-files@7dee1b0c1557f278e5c7dc244927139d78c0e22a # v47.0.4 with: files: | docs/** diff --git a/.github/workflows/issue-close-require.yml b/.github/workflows/issue-close-require.yml index 292cdfb20f7f..cb2f11853766 100644 --- a/.github/workflows/issue-close-require.yml +++ b/.github/workflows/issue-close-require.yml @@ -11,7 +11,7 @@ jobs: issues: write # for actions-cool/issues-helper to update issues steps: - name: needs reproduction - uses: actions-cool/issues-helper@e2ff99831a4f13625d35064e2b3dfe65c07a0396 # v3.7.5 + uses: actions-cool/issues-helper@71b62d7da76e59ff7b193904feb6e77d4dbb2777 # v3.7.6 with: actions: close-issues token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/issue-labeled.yml b/.github/workflows/issue-labeled.yml index 86f90125d60f..b2ab19ce5af1 100644 --- a/.github/workflows/issue-labeled.yml +++ b/.github/workflows/issue-labeled.yml @@ -12,7 +12,7 @@ jobs: steps: - name: needs reproduction if: github.event.label.name == 'needs reproduction' - uses: actions-cool/issues-helper@e2ff99831a4f13625d35064e2b3dfe65c07a0396 # v3.7.5 + uses: actions-cool/issues-helper@71b62d7da76e59ff7b193904feb6e77d4dbb2777 # v3.7.6 with: actions: create-comment token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/package.json b/docs/package.json index af9edc962ca7..61687004529a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -27,7 +27,7 @@ "@vite-pwa/assets-generator": "^1.0.2", "@vite-pwa/vitepress": "^1.1.0", "@vitejs/plugin-vue": "catalog:", - "@voidzero-dev/vitepress-theme": "^4.4.2", + "@voidzero-dev/vitepress-theme": "^4.5.0", "https-localhost": "^4.7.1", "tinyglobby": "catalog:", "unocss": "catalog:", @@ -35,7 +35,7 @@ "vite-plugin-pwa": "^1.2.0", "vitepress": "2.0.0-alpha.16", "vitepress-plugin-group-icons": "^1.7.1", - "vitepress-plugin-llms": "^1.10.0", + "vitepress-plugin-llms": "^1.11.0", "vitepress-plugin-tabs": "^0.7.3", "workbox-window": "^7.4.0" } diff --git a/examples/lit/package.json b/examples/lit/package.json index 95b9a5a0820e..833fccf70f7d 100644 --- a/examples/lit/package.json +++ b/examples/lit/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@vitest/browser-playwright": "latest", "jsdom": "latest", - "playwright": "^1.58.1", + "playwright": "^1.58.2", "vite": "latest", "vitest": "latest" }, diff --git a/examples/opentelemetry/docker-compose.yaml b/examples/opentelemetry/docker-compose.yaml index 3477d858291b..1ecba015053a 100644 --- a/examples/opentelemetry/docker-compose.yaml +++ b/examples/opentelemetry/docker-compose.yaml @@ -2,7 +2,7 @@ services: # for testing open-telemetry integration locally # https://www.jaegertracing.io/docs/2.12/getting-started/ jaeger: - image: cr.jaegertracing.io/jaegertracing/jaeger:2.14.1 + image: cr.jaegertracing.io/jaegertracing/jaeger:2.15.1 # Assign ports for Jaeger UI and OTLP receiver ports: # UI http://localhost:16686 diff --git a/examples/opentelemetry/package.json b/examples/opentelemetry/package.json index 0be7ef0aa480..24b655dd785a 100644 --- a/examples/opentelemetry/package.json +++ b/examples/opentelemetry/package.json @@ -9,11 +9,11 @@ }, "devDependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-zone": "^2.5.0", - "@opentelemetry/exporter-trace-otlp-proto": "^0.211.0", - "@opentelemetry/resources": "^2.5.0", - "@opentelemetry/sdk-node": "^0.211.0", - "@opentelemetry/sdk-trace-web": "^2.5.0", + "@opentelemetry/context-zone": "^2.5.1", + "@opentelemetry/exporter-trace-otlp-proto": "^0.212.0", + "@opentelemetry/resources": "^2.5.1", + "@opentelemetry/sdk-node": "^0.212.0", + "@opentelemetry/sdk-trace-web": "^2.5.1", "@vitest/browser-playwright": "latest", "vite": "latest", "vitest": "latest" diff --git a/examples/projects/package.json b/examples/projects/package.json index 6e6811f945c5..c6bfecbc49d7 100644 --- a/examples/projects/package.json +++ b/examples/projects/package.json @@ -12,8 +12,8 @@ "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", - "@types/react": "^19.2.10", - "@vitejs/plugin-react": "^5.1.3", + "@types/react": "^19.2.14", + "@vitejs/plugin-react": "^5.1.4", "@vitest/ui": "latest", "fastify": "^5.7.2", "jsdom": "^27.4.0", diff --git a/examples/typecheck/package.json b/examples/typecheck/package.json index cd26c33ca09c..c4bda11d6b86 100644 --- a/examples/typecheck/package.json +++ b/examples/typecheck/package.json @@ -10,7 +10,7 @@ "test:run": "vitest run" }, "devDependencies": { - "@types/node": "^24.10.9", + "@types/node": "^24.10.13", "@vitest/ui": "latest", "typescript": "^5.9.3", "vite": "latest", diff --git a/package.json b/package.json index fdb3e274d959..bd4ea1638f2a 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "type": "module", "version": "4.1.0-beta.4", "private": true, - "packageManager": "pnpm@10.28.2", + "packageManager": "pnpm@10.30.1", "description": "Next generation testing framework powered by Vite", "engines": { "node": "^20.0.0 || ^22.0.0 || >=24.0.0" @@ -41,26 +41,26 @@ "devDependencies": { "@antfu/eslint-config": "^7.2.0", "@antfu/ni": "^28.2.0", - "@playwright/test": "^1.58.1", + "@playwright/test": "^1.58.2", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.3", - "@types/node": "24.10.9", + "@types/node": "24.10.13", "@types/ws": "catalog:", "@vitest/browser": "workspace:*", "@vitest/coverage-istanbul": "workspace:*", "@vitest/coverage-v8": "workspace:*", "@vitest/ui": "workspace:*", - "bumpp": "^10.4.0", + "bumpp": "^10.4.1", "changelogithub": "^14.0.0", - "esbuild": "^0.27.2", + "esbuild": "^0.27.3", "eslint": "^9.39.2", "magic-string": "^0.30.21", "pathe": "^2.0.3", "premove": "^4.0.0", "rollup": "^4.57.1", "rollup-plugin-dts": "^6.3.0", - "rollup-plugin-license": "^3.6.0", + "rollup-plugin-license": "^3.7.0", "tinyglobby": "catalog:", "tsx": "^4.21.0", "typescript": "^5.9.3", diff --git a/packages/browser-playwright/package.json b/packages/browser-playwright/package.json index 81de474c4a3f..51b3cb9f9df8 100644 --- a/packages/browser-playwright/package.json +++ b/packages/browser-playwright/package.json @@ -59,7 +59,7 @@ "tinyrainbow": "catalog:" }, "devDependencies": { - "playwright": "^1.58.1", + "playwright": "^1.58.2", "vitest": "workspace:*" } } diff --git a/packages/browser-webdriverio/package.json b/packages/browser-webdriverio/package.json index b7f94e29f27c..ab9c62cb9627 100644 --- a/packages/browser-webdriverio/package.json +++ b/packages/browser-webdriverio/package.json @@ -58,7 +58,7 @@ "@vitest/browser": "workspace:*" }, "devDependencies": { - "@wdio/types": "^9.23.3", + "@wdio/types": "^9.24.0", "vitest": "workspace:*", "webdriverio": "^9.20.0" } diff --git a/packages/ui/package.json b/packages/ui/package.json index da0e221df920..04bf6075f215 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -57,7 +57,7 @@ "tinyrainbow": "catalog:" }, "devDependencies": { - "@faker-js/faker": "^10.2.0", + "@faker-js/faker": "^10.3.0", "@iconify-json/carbon": "catalog:", "@iconify-json/logos": "catalog:", "@types/codemirror": "^5.60.17", @@ -83,10 +83,10 @@ "typescript": "^5.9.3", "unocss": "catalog:", "vite": "^5.0.0", - "vite-plugin-pages": "^0.33.2", + "vite-plugin-pages": "^0.33.3", "vitest-browser-vue": "2.0.2", "vue": "catalog:", - "vue-router": "^5.0.2", + "vue-router": "^5.0.3", "vue-tsc": "^3.2.4", "vue-virtual-scroller": "2.0.0-beta.8" } diff --git a/packages/vitest/package.json b/packages/vitest/package.json index 2cf642948255..213600198642 100644 --- a/packages/vitest/package.json +++ b/packages/vitest/package.json @@ -197,7 +197,7 @@ }, "devDependencies": { "@antfu/install-pkg": "^1.1.0", - "@bomb.sh/tab": "^0.0.12", + "@bomb.sh/tab": "^0.0.14", "@edge-runtime/vm": "^5.0.0", "@jridgewell/trace-mapping": "catalog:", "@opentelemetry/api": "^1.9.0", @@ -207,7 +207,7 @@ "@types/istanbul-lib-coverage": "catalog:", "@types/istanbul-reports": "catalog:", "@types/jsdom": "^27.0.0", - "@types/node": "^24.10.9", + "@types/node": "^24.10.13", "@types/picomatch": "^4.0.2", "@types/prompts": "^2.4.9", "@types/sinonjs__fake-timers": "^15.0.1", @@ -218,7 +218,7 @@ "convert-source-map": "^2.0.0", "empathic": "^2.0.0", "flatted": "catalog:", - "happy-dom": "^20.4.0", + "happy-dom": "^20.6.3", "jsdom": "^27.4.0", "local-pkg": "^1.1.2", "mime": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9cdfe6e7376f..9abecc6d4035 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,11 +49,11 @@ catalogs: specifier: ^6.0.4 version: 6.0.4 '@vueuse/core': - specifier: ^14.2.0 - version: 14.2.0 + specifier: ^14.2.1 + version: 14.2.1 acorn-walk: - specifier: ^8.3.4 - version: 8.3.4 + specifier: ^8.3.5 + version: 8.3.5 birpc: specifier: ^4.0.0 version: 4.0.0 @@ -82,11 +82,11 @@ catalogs: specifier: ^0.30.21 version: 0.30.21 magicast: - specifier: ^0.5.1 - version: 0.5.1 + specifier: ^0.5.2 + version: 0.5.2 msw: - specifier: ^2.12.7 - version: 2.12.7 + specifier: ^2.12.10 + version: 2.12.10 obug: specifier: ^2.1.1 version: 2.1.1 @@ -94,8 +94,8 @@ catalogs: specifier: ^2.0.3 version: 2.0.3 playwright: - specifier: ^1.58.1 - version: 1.58.1 + specifier: ^1.58.2 + version: 1.58.2 sirv: specifier: ^3.0.2 version: 3.0.2 @@ -130,14 +130,14 @@ catalogs: specifier: 3.0.0 version: 3.0.0 vue: - specifier: ^3.5.27 - version: 3.5.27 + specifier: ^3.5.28 + version: 3.5.28 ws: specifier: ^8.19.0 version: 8.19.0 overrides: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@vitest/browser': workspace:* '@vitest/browser-playwright': workspace:* '@vitest/browser-preview': workspace:* @@ -172,13 +172,13 @@ importers: devDependencies: '@antfu/eslint-config': specifier: ^7.2.0 - version: 7.2.0(@vue/compiler-sfc@3.5.27)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(vitest@packages+vitest) + version: 7.2.0(@vue/compiler-sfc@3.5.28)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(vitest@packages+vitest) '@antfu/ni': specifier: ^28.2.0 version: 28.2.0 '@playwright/test': - specifier: ^1.58.1 - version: 1.58.1 + specifier: ^1.58.2 + version: 1.58.2 '@rollup/plugin-commonjs': specifier: ^29.0.0 version: 29.0.0(rollup@4.57.1) @@ -189,8 +189,8 @@ importers: specifier: ^16.0.3 version: 16.0.3(rollup@4.57.1) '@types/node': - specifier: 24.10.9 - version: 24.10.9 + specifier: 24.10.13 + version: 24.10.13 '@types/ws': specifier: 'catalog:' version: 8.18.1 @@ -207,14 +207,14 @@ importers: specifier: workspace:* version: link:packages/ui bumpp: - specifier: ^10.4.0 - version: 10.4.0(magicast@0.3.5) + specifier: ^10.4.1 + version: 10.4.1(magicast@0.3.5) changelogithub: specifier: ^14.0.0 version: 14.0.0(magicast@0.3.5) esbuild: - specifier: ^0.27.2 - version: 0.27.2 + specifier: ^0.27.3 + version: 0.27.3 eslint: specifier: ^9.39.2 version: 9.39.2(jiti@2.6.1) @@ -234,8 +234,8 @@ importers: specifier: ^6.3.0 version: 6.3.0(rollup@4.57.1)(typescript@5.9.3) rollup-plugin-license: - specifier: ^3.6.0 - version: 3.6.0(picomatch@4.0.3)(rollup@4.57.1) + specifier: ^3.7.0 + version: 3.7.0(picomatch@4.0.3)(rollup@4.57.1) tinyglobby: specifier: 'catalog:' version: 0.2.15 @@ -253,7 +253,7 @@ importers: version: 0.5.7 vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:packages/vitest @@ -265,10 +265,10 @@ importers: dependencies: '@vueuse/core': specifier: 'catalog:' - version: 14.2.0(vue@3.5.27(typescript@5.9.3)) + version: 14.2.1(vue@3.5.28(typescript@5.9.3)) vue: specifier: 'catalog:' - version: 3.5.27(typescript@5.9.3) + version: 3.5.28(typescript@5.9.3) devDependencies: '@iconify-json/carbon': specifier: 'catalog:' @@ -278,7 +278,7 @@ importers: version: 1.2.10 '@iconify/vue': specifier: 'catalog:' - version: 5.0.0(vue@3.5.27(typescript@5.9.3)) + version: 5.0.0(vue@3.5.28(typescript@5.9.3)) '@shikijs/transformers': specifier: ^3.22.0 version: 3.22.0 @@ -293,13 +293,13 @@ importers: version: 1.0.2 '@vite-pwa/vitepress': specifier: ^1.1.0 - version: 1.1.0(@vite-pwa/assets-generator@1.0.2)(vite-plugin-pwa@1.2.0(@vite-pwa/assets-generator@1.0.2)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.4.0)) + version: 1.1.0(@vite-pwa/assets-generator@1.0.2)(vite-plugin-pwa@1.2.0(@vite-pwa/assets-generator@1.0.2)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.4.0)) '@vitejs/plugin-vue': specifier: 'catalog:' - version: 6.0.4(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) + version: 6.0.4(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@voidzero-dev/vitepress-theme': - specifier: ^4.4.2 - version: 4.4.2(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(typescript@5.9.3)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitepress@2.0.0-alpha.16(@types/node@24.10.9)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) + specifier: ^4.5.0 + version: 4.5.0(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(typescript@5.9.3)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitepress@2.0.0-alpha.16(@types/node@24.10.13)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) https-localhost: specifier: ^4.7.1 version: 4.7.1 @@ -308,25 +308,25 @@ importers: version: 0.2.15 unocss: specifier: 'catalog:' - version: 66.6.0(postcss@8.5.6)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 66.6.0(postcss@8.5.6)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-pwa: specifier: ^1.2.0 - version: 1.2.0(@vite-pwa/assets-generator@1.0.2)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) + version: 1.2.0(@vite-pwa/assets-generator@1.0.2)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) vitepress: specifier: 2.0.0-alpha.16 - version: 2.0.0-alpha.16(@types/node@24.10.9)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + version: 2.0.0-alpha.16(@types/node@24.10.13)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) vitepress-plugin-group-icons: specifier: ^1.7.1 - version: 1.7.1(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 1.7.1(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) vitepress-plugin-llms: - specifier: ^1.10.0 - version: 1.10.0 + specifier: ^1.11.0 + version: 1.11.0 vitepress-plugin-tabs: specifier: ^0.7.3 - version: 0.7.3(vitepress@2.0.0-alpha.16(@types/node@24.10.9)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) + version: 0.7.3(vitepress@2.0.0-alpha.16(@types/node@24.10.13)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) workbox-window: specifier: ^7.4.0 version: 7.4.0 @@ -338,7 +338,7 @@ importers: version: link:../../packages/ui vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -359,7 +359,7 @@ importers: version: 4.21.0 vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -384,13 +384,13 @@ importers: version: link:../../packages/browser-playwright jsdom: specifier: latest - version: 28.0.0(@noble/hashes@1.8.0) + version: 28.1.0(@noble/hashes@1.8.0) playwright: - specifier: ^1.58.1 - version: 1.58.1 + specifier: ^1.58.2 + version: 1.58.2 vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -401,26 +401,26 @@ importers: specifier: ^1.9.0 version: 1.9.0 '@opentelemetry/context-zone': - specifier: ^2.5.0 - version: 2.5.0(@opentelemetry/api@1.9.0) + specifier: ^2.5.1 + version: 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/exporter-trace-otlp-proto': - specifier: ^0.211.0 - version: 0.211.0(@opentelemetry/api@1.9.0) + specifier: ^0.212.0 + version: 0.212.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': - specifier: ^2.5.0 - version: 2.5.0(@opentelemetry/api@1.9.0) + specifier: ^2.5.1 + version: 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-node': - specifier: ^0.211.0 - version: 0.211.0(@opentelemetry/api@1.9.0) + specifier: ^0.212.0 + version: 0.212.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-web': - specifier: ^2.5.0 - version: 2.5.0(@opentelemetry/api@1.9.0) + specifier: ^2.5.1 + version: 2.5.1(@opentelemetry/api@1.9.0) '@vitest/browser-playwright': specifier: workspace:* version: link:../../packages/browser-playwright vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -429,7 +429,7 @@ importers: devDependencies: vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -441,16 +441,16 @@ importers: version: 6.9.1 '@testing-library/react': specifier: ^16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@18.2.14)(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@18.2.14)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@testing-library/user-event': specifier: ^14.6.1 version: 14.6.1(@testing-library/dom@10.4.1) '@types/react': - specifier: ^19.2.10 - version: 19.2.10 + specifier: ^19.2.14 + version: 19.2.14 '@vitejs/plugin-react': - specifier: ^5.1.3 - version: 5.1.3(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^5.1.4 + version: 5.1.4(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/ui': specifier: workspace:* version: link:../../packages/ui @@ -471,7 +471,7 @@ importers: version: 4.21.0 vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -479,8 +479,8 @@ importers: examples/typecheck: devDependencies: '@types/node': - specifier: 24.10.9 - version: 24.10.9 + specifier: 24.10.13 + version: 24.10.13 '@vitest/ui': specifier: workspace:* version: link:../../packages/ui @@ -489,7 +489,7 @@ importers: version: 5.9.3 vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -568,8 +568,8 @@ importers: version: 3.0.3 devDependencies: playwright: - specifier: ^1.58.1 - version: 1.58.1 + specifier: ^1.58.2 + version: 1.58.2 vitest: specifier: workspace:* version: link:../vitest @@ -597,8 +597,8 @@ importers: version: link:../browser devDependencies: '@wdio/types': - specifier: ^9.23.3 - version: 9.23.3 + specifier: ^9.24.0 + version: 9.24.0 vitest: specifier: workspace:* version: link:../vitest @@ -631,7 +631,7 @@ importers: version: 3.2.0 magicast: specifier: 'catalog:' - version: 0.5.1 + version: 0.5.2 obug: specifier: 'catalog:' version: 2.1.1 @@ -689,7 +689,7 @@ importers: version: 3.2.0 magicast: specifier: 'catalog:' - version: 0.5.1 + version: 0.5.2 obug: specifier: 'catalog:' version: 2.1.1 @@ -764,7 +764,7 @@ importers: version: link:../utils acorn-walk: specifier: 'catalog:' - version: 8.3.4 + version: 8.3.5 cjs-module-lexer: specifier: ^2.2.0 version: 2.2.0 @@ -773,13 +773,13 @@ importers: version: 2.0.0 msw: specifier: 'catalog:' - version: 2.12.7(@types/node@24.10.9)(typescript@5.9.3) + version: 2.12.10(@types/node@24.10.13)(typescript@5.9.3) pathe: specifier: 'catalog:' version: 2.0.3 vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/pretty-format: dependencies: @@ -858,8 +858,8 @@ importers: version: link:../vitest devDependencies: '@faker-js/faker': - specifier: ^10.2.0 - version: 10.2.0 + specifier: ^10.3.0 + version: 10.3.0 '@iconify-json/carbon': specifier: 'catalog:' version: 1.2.18 @@ -883,7 +883,7 @@ importers: version: 66.6.0 '@vitejs/plugin-vue': specifier: 'catalog:' - version: 6.0.4(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) + version: 6.0.4(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vitest/browser-playwright': specifier: workspace:* version: link:../browser-playwright @@ -898,7 +898,7 @@ importers: version: 2.4.6 '@vueuse/core': specifier: 'catalog:' - version: 14.2.0(vue@3.5.27(typescript@5.9.3)) + version: 14.2.1(vue@3.5.28(typescript@5.9.3)) ansi-to-html: specifier: ^0.7.2 version: 0.7.2 @@ -916,7 +916,7 @@ importers: version: 3.1.7 floating-vue: specifier: ^5.2.2 - version: 5.2.2(vue@3.5.27(typescript@5.9.3)) + version: 5.2.2(vue@3.5.28(typescript@5.9.3)) mime: specifier: ^4.1.0 version: 4.1.0 @@ -925,34 +925,34 @@ importers: version: 4.57.1 splitpanes: specifier: ^4.0.4 - version: 4.0.4(vue@3.5.27(typescript@5.9.3)) + version: 4.0.4(vue@3.5.28(typescript@5.9.3)) typescript: specifier: ^5.9.3 version: 5.9.3 unocss: specifier: 'catalog:' - version: 66.6.0(postcss@8.5.6)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 66.6.0(postcss@8.5.6)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-pages: - specifier: ^0.33.2 - version: 0.33.2(@vue/compiler-sfc@3.5.27)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-router@5.0.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3))) + specifier: ^0.33.3 + version: 0.33.3(@vue/compiler-sfc@3.5.28)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-router@5.0.3(@vue/compiler-sfc@3.5.28)(vue@3.5.28(typescript@5.9.3))) vitest-browser-vue: specifier: 2.0.2 - version: 2.0.2(vitest@packages+vitest)(vue@3.5.27(typescript@5.9.3)) + version: 2.0.2(vitest@packages+vitest)(vue@3.5.28(typescript@5.9.3)) vue: specifier: 'catalog:' - version: 3.5.27(typescript@5.9.3) + version: 3.5.28(typescript@5.9.3) vue-router: - specifier: ^5.0.2 - version: 5.0.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3)) + specifier: ^5.0.3 + version: 5.0.3(@vue/compiler-sfc@3.5.28)(vue@3.5.28(typescript@5.9.3)) vue-tsc: specifier: ^3.2.4 version: 3.2.4(typescript@5.9.3) vue-virtual-scroller: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(vue@3.5.27(typescript@5.9.3)) + version: 2.0.0-beta.8(vue@3.5.28(typescript@5.9.3)) packages/utils: dependencies: @@ -1046,7 +1046,7 @@ importers: version: 3.0.3 vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: specifier: ^2.3.0 version: 2.3.0 @@ -1055,8 +1055,8 @@ importers: specifier: ^1.1.0 version: 1.1.0 '@bomb.sh/tab': - specifier: ^0.0.12 - version: 0.0.12(cac@6.7.14(patch_hash=a8f0f3517a47ce716ed90c0cfe6ae382ab763b021a664ada2a608477d0621588))(citty@0.1.6) + specifier: ^0.0.14 + version: 0.0.14(cac@6.7.14(patch_hash=a8f0f3517a47ce716ed90c0cfe6ae382ab763b021a664ada2a608477d0621588))(citty@0.1.6) '@edge-runtime/vm': specifier: ^5.0.0 version: 5.0.0 @@ -1085,8 +1085,8 @@ importers: specifier: ^27.0.0 version: 27.0.0 '@types/node': - specifier: 24.10.9 - version: 24.10.9 + specifier: 24.10.13 + version: 24.10.13 '@types/picomatch': specifier: ^4.0.2 version: 4.0.2 @@ -1101,7 +1101,7 @@ importers: version: 8.11.3(patch_hash=62f89b815dbd769c8a4d5b19b1f6852f28922ecb581d876c8a8377d05c2483c4) acorn-walk: specifier: 'catalog:' - version: 8.3.4 + version: 8.3.5 birpc: specifier: 'catalog:' version: 4.0.0 @@ -1118,8 +1118,8 @@ importers: specifier: 'catalog:' version: 3.3.3 happy-dom: - specifier: ^20.4.0 - version: 20.4.0 + specifier: ^20.6.3 + version: 20.6.3 jsdom: specifier: ^27.4.0 version: 27.4.0(@noble/hashes@1.8.0) @@ -1177,11 +1177,11 @@ importers: test/browser: devDependencies: '@types/react': - specifier: ^19.2.10 - version: 19.2.10 + specifier: ^19.2.14 + version: 19.2.14 '@vitejs/plugin-basic-ssl': specifier: ^2.1.4 - version: 2.1.4(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.4(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/browser': specifier: workspace:* version: link:../../packages/browser @@ -1201,8 +1201,8 @@ importers: specifier: link:./cjs-lib version: link:cjs-lib playwright: - specifier: ^1.58.1 - version: 1.58.1 + specifier: ^1.58.2 + version: 1.58.2 react: specifier: ^19.2.4 version: 19.2.4 @@ -1220,7 +1220,7 @@ importers: version: link:../../packages/vitest vitest-browser-react: specifier: ^2.0.5 - version: 2.0.5(@types/react-dom@18.2.14)(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@packages+vitest) + version: 2.0.5(@types/react-dom@18.2.14)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@packages+vitest) ws: specifier: 'catalog:' version: 8.19.0 @@ -1231,11 +1231,11 @@ importers: specifier: ^1.9.0 version: 1.9.0 '@opentelemetry/sdk-node': - specifier: ^0.211.0 - version: 0.211.0(@opentelemetry/api@1.9.0) + specifier: ^0.212.0 + version: 0.212.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-web': - specifier: ^2.5.0 - version: 2.5.0(@opentelemetry/api@1.9.0) + specifier: ^2.5.1 + version: 2.5.1(@opentelemetry/api@1.9.0) '@test/pkg-reporter': specifier: link:./deps/pkg-reporter version: link:deps/pkg-reporter @@ -1253,7 +1253,7 @@ importers: version: 8.18.1 '@vitejs/plugin-basic-ssl': specifier: ^2.1.4 - version: 2.1.4(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.4(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/browser-playwright': specifier: workspace:* version: link:../../packages/browser-playwright @@ -1280,7 +1280,7 @@ importers: version: 2.1.1 playwright: specifier: 'catalog:' - version: 1.58.1 + version: 1.58.2 test-dep-invalid: specifier: link:./deps/dep-invalid version: link:deps/dep-invalid @@ -1295,7 +1295,7 @@ importers: version: 1.5.9(@swc/core@1.4.1(@swc/helpers@0.5.17))(rollup@4.57.1) vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -1376,7 +1376,7 @@ importers: version: 1.0.2 vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -1432,8 +1432,8 @@ importers: specifier: workspace:^ version: link:../../packages/web-worker '@vueuse/integrations': - specifier: ^14.2.0 - version: 14.2.0(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(vue@3.5.27(typescript@5.9.3)) + specifier: ^14.2.1 + version: 14.2.1(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(vue@3.5.28(typescript@5.9.3)) axios: specifier: ^1.13.4 version: 1.13.4 @@ -1471,11 +1471,11 @@ importers: specifier: file:./vitest-environment-custom version: file:test/core/vitest-environment-custom vitest-package-exports: - specifier: ^1.1.2 - version: 1.1.2 + specifier: ^1.2.0 + version: 1.2.0 vue: specifier: 'catalog:' - version: 3.5.27(typescript@5.9.3) + version: 3.5.28(typescript@5.9.3) test/coverage-test: devDependencies: @@ -1490,7 +1490,7 @@ importers: version: 3.0.3 '@vitejs/plugin-vue': specifier: latest - version: 6.0.4(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) + version: 6.0.4(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vitest/browser-playwright': specifier: workspace:* version: link:../../packages/browser-playwright @@ -1514,7 +1514,7 @@ importers: version: 2.4.6 happy-dom: specifier: latest - version: 20.6.0 + version: 20.6.3 istanbul-lib-coverage: specifier: 'catalog:' version: 3.2.2 @@ -1525,8 +1525,8 @@ importers: specifier: ^0.30.21 version: 0.30.21 magicast: - specifier: ^0.5.1 - version: 0.5.1 + specifier: ^0.5.2 + version: 0.5.2 sass-embedded: specifier: ^1.97.3 version: 1.97.3 @@ -1535,13 +1535,13 @@ importers: version: 1.5.9(@swc/core@1.4.1(@swc/helpers@0.5.17))(rollup@4.57.1) vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest vue: specifier: 'catalog:' - version: 3.5.27(typescript@5.9.3) + version: 3.5.28(typescript@5.9.3) test/node-runner: {} @@ -1565,7 +1565,7 @@ importers: version: 3.0.3 vite: specifier: 7.1.5 - version: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + version: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -1593,7 +1593,7 @@ importers: version: link:../../packages/browser-playwright happy-dom: specifier: latest - version: 20.6.0 + version: 20.6.3 vitest: specifier: workspace:* version: link:../../packages/vitest @@ -1611,7 +1611,7 @@ importers: version: 3.2.2 jsdom: specifier: latest - version: 28.0.0(@noble/hashes@1.8.0) + version: 28.1.0(@noble/hashes@1.8.0) vitest: specifier: workspace:* version: link:../../packages/vitest @@ -1712,9 +1712,15 @@ packages: '@asamuzakjp/css-color@4.1.1': resolution: {integrity: sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==} + '@asamuzakjp/css-color@4.1.2': + resolution: {integrity: sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==} + '@asamuzakjp/dom-selector@6.7.6': resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} + '@asamuzakjp/dom-selector@6.8.1': + resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} + '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -1843,16 +1849,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.28.6': - resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.0': resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} @@ -2261,14 +2257,6 @@ packages: resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.6': - resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} @@ -2280,12 +2268,12 @@ packages: '@blazediff/core@1.9.1': resolution: {integrity: sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==} - '@bomb.sh/tab@0.0.12': - resolution: {integrity: sha512-dYRwg4MqfHR5/BcTy285XOGRhjQFmNpaJBZ0tl2oU+RY595MQ5ApTF6j3OvauPAooHL6cfoOZMySQrOQztT8RQ==} + '@bomb.sh/tab@0.0.14': + resolution: {integrity: sha512-cHMk2LI430MVoX1unTt9oK1iZzQS4CYDz97MSxKLNErW69T43Z2QLFTpdS/3jVOIKrIADWfuxQ+nQNJkNV7E4w==} hasBin: true peerDependencies: cac: ^6.7.14 - citty: ^0.1.6 + citty: ^0.1.6 || ^0.2.0 commander: ^13.1.0 peerDependenciesMeta: cac: @@ -2295,6 +2283,10 @@ packages: commander: optional: true + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + '@bufbuild/protobuf@2.5.2': resolution: {integrity: sha512-foZ7qr0IsUBjzWIq+SuBLfdQCpJ1j8cTuNNT4owngTHoN5KsJb8L9t65fzz7SCeSWzescoOil/0ldqiL041ABg==} @@ -2311,6 +2303,10 @@ packages: resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} + '@csstools/color-helpers@6.0.1': + resolution: {integrity: sha512-NmXRccUJMk2AWA5A7e5a//3bCIMyOu2hAtdRYrhPPHjDxINuCwX1w6rnIZ4xjLcp0ayv6h8Pc3X0eJUGiAAXHQ==} + engines: {node: '>=20.19.0'} + '@csstools/css-calc@2.1.4': resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} engines: {node: '>=18'} @@ -2318,6 +2314,13 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-calc@3.1.1': + resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-color-parser@3.1.0': resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} @@ -2325,35 +2328,58 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-color-parser@4.0.1': + resolution: {integrity: sha512-vYwO15eRBEkeF6xjAno/KQ61HacNhfQuuU/eGwH67DplL0zD5ZixUa563phQvUelA07yDczIXdtmYojCphKJcw==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-parser-algorithms@3.0.5': resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-syntax-patches-for-csstree@1.0.22': resolution: {integrity: sha512-qBcx6zYlhleiFfdtzkRgwNC7VVoAwfK76Vmsw5t+PbvtdknO9StgRk7ROvq9so1iqbdW4uLIDAsXRsTfUrIoOw==} engines: {node: '>=18'} + '@csstools/css-syntax-patches-for-csstree@1.0.27': + resolution: {integrity: sha512-sxP33Jwg1bviSUXAV43cVYdmjt2TLnLXNqCWl9xmxHawWVjGz/kEbdkr7F9pxJNBN2Mh+dq0crgItbW6tQvyow==} + '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@docsearch/css@4.3.2': - resolution: {integrity: sha512-K3Yhay9MgkBjJJ0WEL5MxnACModX9xuNt3UlQQkDEDZJZ0+aeWKtOkxHNndMRkMBnHdYvQjxkm6mdlneOtU1IQ==} + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} '@docsearch/css@4.5.3': resolution: {integrity: sha512-kUpHaxn0AgI3LQfyzTYkNUuaFY4uEz/Ym9/N/FvyDE+PzSgZsCyDH9jE49B6N6f1eLCm9Yp64J9wENd6vypdxA==} - '@docsearch/js@4.3.2': - resolution: {integrity: sha512-xdfpPXMgKRY9EW7U1vtY7gLKbLZFa9ed+t0Dacquq8zXBqAlH9HlUf0h4Mhxm0xatsVeMaIR2wr/u6g0GsZyQw==} + '@docsearch/css@4.6.0': + resolution: {integrity: sha512-YlcAimkXclvqta47g47efzCM5CFxDwv2ClkDfEs/fC/Ak0OxPH2b3czwa4o8O1TRBf+ujFF2RiUwszz2fPVNJQ==} '@docsearch/js@4.5.3': resolution: {integrity: sha512-rcBiUMCXbZLqrLIT6F6FDcrG/tyvM2WM0zum6NPbIiQNDQxbSgmNc+/bToS0rxBsXaxiU64esiWoS02WqrWLsg==} + '@docsearch/js@4.6.0': + resolution: {integrity: sha512-9/rbgkm/BgTq46cwxIohvSAz3koOFjnPpg0mwkJItAfzKbQIj+310PvwtgUY1YITDuGCag6yOL50GW2DBkaaBw==} + '@docsearch/sidepanel-js@4.5.3': resolution: {integrity: sha512-DmcZYc1ZMMcabtKrCU2RIf1z09LwazKCyoPFU/ijJiBg2LdqMLmkyDKHGy1OIYEyUx4ok5RIbkVGaRfD55BqZQ==} + '@docsearch/sidepanel-js@4.6.0': + resolution: {integrity: sha512-lFT5KLwlzUmpoGArCScNoK41l9a22JYsEPwBzMrz+/ILVR5Ax87UphCuiyDFQWEvEmbwzn/kJx5W/O5BUlN1Rw==} + '@edge-runtime/primitives@6.0.0': resolution: {integrity: sha512-FqoxaBT+prPBHBwE1WXS1ocnu/VLTQyZ6NMUBAdbP7N2hsFTTxMC/jMu2D/8GAlMQfxeuppcPuCUk/HO3fpIvA==} engines: {node: '>=18'} @@ -2398,8 +2424,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.2': - resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -2416,8 +2442,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.2': - resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -2434,8 +2460,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.2': - resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -2452,8 +2478,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.2': - resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -2470,8 +2496,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.2': - resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -2488,8 +2514,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.2': - resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -2506,8 +2532,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.2': - resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -2524,8 +2550,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.2': - resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -2542,8 +2568,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.2': - resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -2560,8 +2586,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.2': - resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -2578,8 +2604,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.2': - resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -2596,8 +2622,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.2': - resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -2614,8 +2640,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.2': - resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -2632,8 +2658,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.2': - resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -2650,8 +2676,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.2': - resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -2668,8 +2694,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.2': - resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -2686,8 +2712,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.2': - resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -2704,8 +2730,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.2': - resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -2722,8 +2748,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.2': - resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -2740,8 +2766,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.2': - resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -2758,8 +2784,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.2': - resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -2776,8 +2802,8 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.2': - resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -2794,8 +2820,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.2': - resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -2812,8 +2838,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.2': - resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -2830,8 +2856,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.2': - resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -2848,8 +2874,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.2': - resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -2951,8 +2977,8 @@ packages: '@exodus/crypto': optional: true - '@faker-js/faker@10.2.0': - resolution: {integrity: sha512-rTXwAsIxpCqzUnZvrxVh3L0QA0NzToqWBLAhV+zDV3MIIwiQhAZHMdPCIaj5n/yADu/tyk12wIPgL6YHGXJP+g==} + '@faker-js/faker@10.3.0': + resolution: {integrity: sha512-It0Sne6P3szg7JIi6CgKbvTZoMjxBZhcv91ZrqrNuaZQfB5WoqYYbzCUOq89YR+VY8juY9M1vDWmDDa2TzfXCw==} engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'} '@fastify/ajv-compiler@4.0.5': @@ -2988,8 +3014,8 @@ packages: '@floating-ui/vue@1.1.9': resolution: {integrity: sha512-BfNqNW6KA83Nexspgb9DZuz578R7HT8MZw1CfK9I6Ah4QReNWEJsXWHN+SdmOVLNGmTPDi+fDT535Df5PzMLbQ==} - '@grpc/grpc-js@1.14.1': - resolution: {integrity: sha512-sPxgEWtPUR3EnRJCEtbGZG2iX8LQDUls2wUS3o27jg07KqJFMq6YDeWvMo1wfpmy3rqRdS0rivpLwhqQtEyCuQ==} + '@grpc/grpc-js@1.14.3': + resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.8.0': @@ -3165,7 +3191,7 @@ packages: resolution: {integrity: sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==} engines: {node: '>=18'} peerDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 peerDependenciesMeta: '@types/node': optional: true @@ -3174,7 +3200,7 @@ packages: resolution: {integrity: sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==} engines: {node: '>=18'} peerDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 peerDependenciesMeta: '@types/node': optional: true @@ -3187,7 +3213,7 @@ packages: resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==} engines: {node: '>=18'} peerDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 peerDependenciesMeta: '@types/node': optional: true @@ -3362,8 +3388,8 @@ packages: '@lit/reactive-element@2.1.0': resolution: {integrity: sha512-L2qyoZSQClcBmq0qajBVbhYEcG6iK0XfLn66ifLe/RfC0/ihpc+pl0Wdn8bJ8o+hj38cG0fGXRgSS20MuXn7qA==} - '@mswjs/interceptors@0.40.0': - resolution: {integrity: sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==} + '@mswjs/interceptors@0.41.3': + resolution: {integrity: sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==} engines: {node: '>=18'} '@napi-rs/wasm-runtime@1.1.1': @@ -3385,183 +3411,183 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@opentelemetry/api-logs@0.211.0': - resolution: {integrity: sha512-swFdZq8MCdmdR22jTVGQDhwqDzcI4M10nhjXkLr1EsIzXgZBqm4ZlmmcWsg3TSNf+3mzgOiqveXmBLZuDi2Lgg==} + '@opentelemetry/api-logs@0.212.0': + resolution: {integrity: sha512-TEEVrLbNROUkYY51sBJGk7lO/OLjuepch8+hmpM6ffMJQ2z/KVCjdHuCFX6fJj8OkJP2zckPjrJzQtXU3IAsFg==} engines: {node: '>=8.0.0'} '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@opentelemetry/configuration@0.211.0': - resolution: {integrity: sha512-PNsCkzsYQKyv8wiUIsH+loC4RYyblOaDnVASBtKS22hK55ToWs2UP6IsrcfSWWn54wWTvVe2gnfwz67Pvrxf2Q==} + '@opentelemetry/configuration@0.212.0': + resolution: {integrity: sha512-D8sAY6RbqMa1W8lCeiaSL2eMCW2MF87QI3y+I6DQE1j+5GrDMwiKPLdzpa/2/+Zl9v1//74LmooCTCJBvWR8Iw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.9.0 - '@opentelemetry/context-async-hooks@2.5.0': - resolution: {integrity: sha512-uOXpVX0ZjO7heSVjhheW2XEPrhQAWr2BScDPoZ9UDycl5iuHG+Usyc3AIfG6kZeC1GyLpMInpQ6X5+9n69yOFw==} + '@opentelemetry/context-async-hooks@2.5.1': + resolution: {integrity: sha512-MHbu8XxCHcBn6RwvCt2Vpn1WnLMNECfNKYB14LI5XypcgH4IE0/DiVifVR9tAkwPMyLXN8dOoPJfya3IryLQVw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/context-zone-peer-dep@2.5.0': - resolution: {integrity: sha512-ZCBtCkfiHzKsUXutg2BhZzz4p7APCnWK+NZ6pjet+SmnwvKjGN8KqgH1Z+3hIMhbzbWGhkOxO6PQcYjIiqLvSQ==} + '@opentelemetry/context-zone-peer-dep@2.5.1': + resolution: {integrity: sha512-xyBDA9BIjlAeawNawFZtwJp4BUznGrR5Sm7ldK/94qWtYde9+1y61tAqBep0/5B46WpbEadZGbpa2MCKAZwvxA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' zone.js: ^0.10.2 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0 || ^0.16.0 - '@opentelemetry/context-zone@2.5.0': - resolution: {integrity: sha512-wevPtv5up7I22YHg0rioRkniAiyN/smHA3Thol3nwC7769bqf6gUgIb5fI4c0gyAlzMZLQLSkG5woPInTdJVKw==} + '@opentelemetry/context-zone@2.5.1': + resolution: {integrity: sha512-v4HORgtvdnDAdFsP43H5P2fTSzCE/22UrxszSeDyEJmKldpEh2Dyp6tT/5GXYBBVFaTnFvkGv81U0pXV4z41Jg==} engines: {node: ^18.19.0 || >=20.6.0} - '@opentelemetry/core@2.5.0': - resolution: {integrity: sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==} + '@opentelemetry/core@2.5.1': + resolution: {integrity: sha512-Dwlc+3HAZqpgTYq0MUyZABjFkcrKTePwuiFVLjahGD8cx3enqihmpAmdgNFO1R4m/sIe5afjJrA25Prqy4NXlA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/exporter-logs-otlp-grpc@0.211.0': - resolution: {integrity: sha512-UhOoWENNqyaAMP/dL1YXLkXt6ZBtovkDDs1p4rxto9YwJX1+wMjwg+Obfyg2kwpcMoaiIFT3KQIcLNW8nNGNfQ==} + '@opentelemetry/exporter-logs-otlp-grpc@0.212.0': + resolution: {integrity: sha512-/0bk6fQG+eSFZ4L6NlckGTgUous/ib5+OVdg0x4OdwYeHzV3lTEo3it1HgnPY6UKpmX7ki+hJvxjsOql8rCeZA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-logs-otlp-http@0.211.0': - resolution: {integrity: sha512-c118Awf1kZirHkqxdcF+rF5qqWwNjJh+BB1CmQvN9AQHC/DUIldy6dIkJn3EKlQnQ3HmuNRKc/nHHt5IusN7mA==} + '@opentelemetry/exporter-logs-otlp-http@0.212.0': + resolution: {integrity: sha512-JidJasLwG/7M9RTxV/64xotDKmFAUSBc9SNlxI32QYuUMK5rVKhHNWMPDzC7E0pCAL3cu+FyiKvsTwLi2KqPYw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-logs-otlp-proto@0.211.0': - resolution: {integrity: sha512-kMvfKMtY5vJDXeLnwhrZMEwhZ2PN8sROXmzacFU/Fnl4Z79CMrOaL7OE+5X3SObRYlDUa7zVqaXp9ZetYCxfDQ==} + '@opentelemetry/exporter-logs-otlp-proto@0.212.0': + resolution: {integrity: sha512-RpKB5UVfxc7c6Ta1UaCrxXDTQ0OD7BCGT66a97Q5zR1x3+9fw4dSaiqMXT/6FAWj2HyFbem6Rcu1UzPZikGTWQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-grpc@0.211.0': - resolution: {integrity: sha512-D/U3G8L4PzZp8ot5hX9wpgbTymgtLZCiwR7heMe4LsbGV4OdctS1nfyvaQHLT6CiGZ6FjKc1Vk9s6kbo9SWLXQ==} + '@opentelemetry/exporter-metrics-otlp-grpc@0.212.0': + resolution: {integrity: sha512-/6Gqf9wpBq22XsomR1i0iPGnbQtCq2Vwnrq5oiDPjYSqveBdK1jtQbhGfmpK2mLLxk4cPDtD1ZEYdIou5K8EaA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-http@0.211.0': - resolution: {integrity: sha512-lfHXElPAoDSPpPO59DJdN5FLUnwi1wxluLTWQDayqrSPfWRnluzxRhD+g7rF8wbj1qCz0sdqABl//ug1IZyWvA==} + '@opentelemetry/exporter-metrics-otlp-http@0.212.0': + resolution: {integrity: sha512-8hgBw3aTTRpSTkU4b9MLf/2YVLnfWp+hfnLq/1Fa2cky+vx6HqTodo+Zv1GTIrAKMOOwgysOjufy0gTxngqeBg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-proto@0.211.0': - resolution: {integrity: sha512-61iNbffEpyZv/abHaz3BQM3zUtA2kVIDBM+0dS9RK68ML0QFLRGYa50xVMn2PYMToyfszEPEgFC3ypGae2z8FA==} + '@opentelemetry/exporter-metrics-otlp-proto@0.212.0': + resolution: {integrity: sha512-C7I4WN+ghn3g7SnxXm2RK3/sRD0k/BYcXaK6lGU3yPjiM7a1M25MLuM6zY3PeVPPzzTZPfuS7+wgn/tHk768Xw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-prometheus@0.211.0': - resolution: {integrity: sha512-cD0WleEL3TPqJbvxwz5MVdVJ82H8jl8mvMad4bNU24cB5SH2mRW5aMLDTuV4614ll46R//R3RMmci26mc2L99g==} + '@opentelemetry/exporter-prometheus@0.212.0': + resolution: {integrity: sha512-hJFLhCJba5MW5QHexZMHZdMhBfNqNItxOsN0AZojwD1W2kU9xM+BEICowFGJFo/vNV+I2BJvTtmuKafeDSAo7Q==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-trace-otlp-grpc@0.211.0': - resolution: {integrity: sha512-eFwx4Gvu6LaEiE1rOd4ypgAiWEdZu7Qzm2QNN2nJqPW1XDeAVH1eNwVcVQl+QK9HR/JCDZ78PZgD7xD/DBDqbw==} + '@opentelemetry/exporter-trace-otlp-grpc@0.212.0': + resolution: {integrity: sha512-9xTuYWp8ClBhljDGAoa0NSsJcsxJsC9zCFKMSZJp1Osb9pjXCMRdA6fwXtlubyqe7w8FH16EWtQNKx/FWi+Ghw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-trace-otlp-http@0.211.0': - resolution: {integrity: sha512-F1Rv3JeMkgS//xdVjbQMrI3+26e5SXC7vXA6trx8SWEA0OUhw4JHB+qeHtH0fJn46eFItrYbL5m8j4qi9Sfaxw==} + '@opentelemetry/exporter-trace-otlp-http@0.212.0': + resolution: {integrity: sha512-v/0wMozNoiEPRolzC4YoPo4rAT0q8r7aqdnRw3Nu7IDN0CGFzNQazkfAlBJ6N5y0FYJkban7Aw5WnN73//6YlA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-trace-otlp-proto@0.211.0': - resolution: {integrity: sha512-DkjXwbPiqpcPlycUojzG2RmR0/SIK8Gi9qWO9znNvSqgzrnAIE9x2n6yPfpZ+kWHZGafvsvA1lVXucTyyQa5Kg==} + '@opentelemetry/exporter-trace-otlp-proto@0.212.0': + resolution: {integrity: sha512-d1ivqPT0V+i0IVOOdzGaLqonjtlk5jYrW7ItutWzXL/Mk+PiYb59dymy/i2reot9dDnBFWfrsvxyqdutGF5Vig==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-zipkin@2.5.0': - resolution: {integrity: sha512-bk9VJgFgUAzkZzU8ZyXBSWiUGLOM3mZEgKJ1+jsZclhRnAoDNf+YBdq+G9R3cP0+TKjjWad+vVrY/bE/vRR9lA==} + '@opentelemetry/exporter-zipkin@2.5.1': + resolution: {integrity: sha512-Me6JVO7WqXGXsgr4+7o+B7qwKJQbt0c8WamFnxpkR43avgG9k/niTntwCaXiXUTjonWy0+61ZuX6CGzj9nn8CQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.0.0 - '@opentelemetry/instrumentation@0.211.0': - resolution: {integrity: sha512-h0nrZEC/zvI994nhg7EgQ8URIHt0uDTwN90r3qQUdZORS455bbx+YebnGeEuFghUT0HlJSrLF4iHw67f+odY+Q==} + '@opentelemetry/instrumentation@0.212.0': + resolution: {integrity: sha512-IyXmpNnifNouMOe0I/gX7ENfv2ZCNdYTF0FpCsoBcpbIHzk81Ww9rQTYTnvghszCg7qGrIhNvWC8dhEifgX9Jg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-exporter-base@0.211.0': - resolution: {integrity: sha512-bp1+63V8WPV+bRI9EQG6E9YID1LIHYSZVbp7f+44g9tRzCq+rtw/o4fpL5PC31adcUsFiz/oN0MdLISSrZDdrg==} + '@opentelemetry/otlp-exporter-base@0.212.0': + resolution: {integrity: sha512-HoMv5pQlzbuxiMS0hN7oiUtg8RsJR5T7EhZccumIWxYfNo/f4wFc7LPDfFK6oHdG2JF/+qTocfqIHoom+7kLpw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-grpc-exporter-base@0.211.0': - resolution: {integrity: sha512-mR5X+N4SuphJeb7/K7y0JNMC8N1mB6gEtjyTLv+TSAhl0ZxNQzpSKP8S5Opk90fhAqVYD4R0SQSAirEBlH1KSA==} + '@opentelemetry/otlp-grpc-exporter-base@0.212.0': + resolution: {integrity: sha512-YidOSlzpsun9uw0iyIWrQp6HxpMtBlECE3tiHGAsnpEqJWbAUWcMnIffvIuvTtTQ1OyRtwwaE79dWSQ8+eiB7g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-transformer@0.211.0': - resolution: {integrity: sha512-julhCJ9dXwkOg9svuuYqqjXLhVaUgyUvO2hWbTxwjvLXX2rG3VtAaB0SzxMnGTuoCZizBT7Xqqm2V7+ggrfCXA==} + '@opentelemetry/otlp-transformer@0.212.0': + resolution: {integrity: sha512-bj7zYFOg6Db7NUwsRZQ/WoVXpAf41WY2gsd3kShSfdpZQDRKHWJiRZIg7A8HvWsf97wb05rMFzPbmSHyjEl9tw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/propagator-b3@2.5.0': - resolution: {integrity: sha512-g10m4KD73RjHrSvUge+sUxUl8m4VlgnGc6OKvo68a4uMfaLjdFU+AULfvMQE/APq38k92oGUxEzBsAZ8RN/YHg==} + '@opentelemetry/propagator-b3@2.5.1': + resolution: {integrity: sha512-AU6sZgunZrZv/LTeHP+9IQsSSH5p3PtOfDPe8VTdwYH69nZCfvvvXehhzu+9fMW2mgJMh5RVpiH8M9xuYOu5Dg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/propagator-jaeger@2.5.0': - resolution: {integrity: sha512-t70ErZCncAR/zz5AcGkL0TF25mJiK1FfDPEQCgreyAHZ+mRJ/bNUiCnImIBDlP3mSDXy6N09DbUEKq0ktW98Hg==} + '@opentelemetry/propagator-jaeger@2.5.1': + resolution: {integrity: sha512-8+SB94/aSIOVGDUPRFSBRHVUm2A8ye1vC6/qcf/D+TF4qat7PC6rbJhRxiUGDXZtMtKEPM/glgv5cBGSJQymSg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/resources@2.5.0': - resolution: {integrity: sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==} + '@opentelemetry/resources@2.5.1': + resolution: {integrity: sha512-BViBCdE/GuXRlp9k7nS1w6wJvY5fnFX5XvuEtWsTAOQFIO89Eru7lGW3WbfbxtCuZ/GbrJfAziXG0w0dpxL7eQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-logs@0.211.0': - resolution: {integrity: sha512-O5nPwzgg2JHzo59kpQTPUOTzFi0Nv5LxryG27QoXBciX3zWM3z83g+SNOHhiQVYRWFSxoWn1JM2TGD5iNjOwdA==} + '@opentelemetry/sdk-logs@0.212.0': + resolution: {integrity: sha512-qglb5cqTf0mOC1sDdZ7nfrPjgmAqs2OxkzOPIf2+Rqx8yKBK0pS7wRtB1xH30rqahBIut9QJDbDePyvtyqvH/Q==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.4.0 <1.10.0' - '@opentelemetry/sdk-metrics@2.5.0': - resolution: {integrity: sha512-BeJLtU+f5Gf905cJX9vXFQorAr6TAfK3SPvTFqP+scfIpDQEJfRaGJWta7sJgP+m4dNtBf9y3yvBKVAZZtJQVA==} + '@opentelemetry/sdk-metrics@2.5.1': + resolution: {integrity: sha512-RKMn3QKi8nE71ULUo0g/MBvq1N4icEBo7cQSKnL3URZT16/YH3nSVgWegOjwx7FRBTrjOIkMJkCUn/ZFIEfn4A==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.9.0 <1.10.0' - '@opentelemetry/sdk-node@0.211.0': - resolution: {integrity: sha512-+s1eGjoqmPCMptNxcJJD4IxbWJKNLOQFNKhpwkzi2gLkEbCj6LzSHJNhPcLeBrBlBLtlSpibM+FuS7fjZ8SSFQ==} + '@opentelemetry/sdk-node@0.212.0': + resolution: {integrity: sha512-tJzVDk4Lo44MdgJLlP+gdYdMnjxSNsjC/IiTxj5CFSnsjzpHXwifgl3BpUX67Ty3KcdubNVfedeBc/TlqHXwwg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.5.0': - resolution: {integrity: sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ==} + '@opentelemetry/sdk-trace-base@2.5.1': + resolution: {integrity: sha512-iZH3Gw8cxQn0gjpOjJMmKLd9GIaNh/E3v3ST67vyzLSxHBs14HsG4dy7jMYyC5WXGdBVEcM7U/XTF5hCQxjDMw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-node@2.5.0': - resolution: {integrity: sha512-O6N/ejzburFm2C84aKNrwJVPpt6HSTSq8T0ZUMq3xT2XmqT4cwxUItcL5UWGThYuq8RTcbH8u1sfj6dmRci0Ow==} + '@opentelemetry/sdk-trace-node@2.5.1': + resolution: {integrity: sha512-9lopQ6ZoElETOEN0csgmtEV5/9C7BMfA7VtF4Jape3i954b6sTY2k3Xw3CxUTKreDck/vpAuJM+EDo4zheUw+A==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace-web@2.5.0': - resolution: {integrity: sha512-xWibakHs+xbx6vxH7Q8TbFS6zjf812o/kIS4xBDB32qSL9wF+Z5IZl2ZAGu4rtmPBQ7coZcOd684DobMhf8dKw==} + '@opentelemetry/sdk-trace-web@2.5.1': + resolution: {integrity: sha512-4PWFtMJ5nqWMP2YqgKjcMlQlUeN1imUYSXdhy6Xl/3bnO0/Ryo5Y3/kWG8T66uMHo2RpTQLloZjoQACKdbHbxg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -4164,8 +4190,8 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.58.1': - resolution: {integrity: sha512-6LdVIUERWxQMmUSSQi0I53GgCBYgM2RpGngCPY7hSeju+VrKjq3lvs7HpJoPbDiY5QM5EYRtRX5fvrinnMAz3w==} + '@playwright/test@1.58.2': + resolution: {integrity: sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==} engines: {node: '>=18'} hasBin: true @@ -4222,6 +4248,9 @@ packages: '@rolldown/pluginutils@1.0.0-rc.2': resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} + '@rolldown/pluginutils@1.0.0-rc.3': + resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rollup/plugin-babel@5.3.1': resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} @@ -4841,8 +4870,8 @@ packages: '@types/natural-compare@1.4.3': resolution: {integrity: sha512-XCAxy+Gg6+S6VagwzcknnvCKujj/bVv1q+GFuCrFEelqaZPqJoC+FeXLwc2dp+oLP7qDZQ4ZfQiTJQ9sIUmlLw==} - '@types/node@24.10.9': - resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} + '@types/node@24.10.13': + resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==} '@types/picomatch@4.0.2': resolution: {integrity: sha512-qHHxQ+P9PysNEGbALT8f8YOSHW0KJu6l2xU8DYY0fu/EmGxXdVnuTLvFUvBgPJMSqXq29SYHveejeAha+4AYgA==} @@ -4859,8 +4888,8 @@ packages: '@types/react-is@19.2.0': resolution: {integrity: sha512-NP2xtcjZfORsOa4g2JwdseyEnF+wUCx25fTdG/J/HIY6yKga6+NozRBg2xR2gyh7kKYyd6DXndbq0YbQuTJ7Ew==} - '@types/react@19.2.10': - resolution: {integrity: sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==} + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -5081,8 +5110,8 @@ packages: peerDependencies: vite: 7.1.5 - '@vitejs/plugin-react@5.1.3': - resolution: {integrity: sha512-NVUnA6gQCl8jfoYqKqQU5Clv0aPw14KkZYCsX6T9Lfu9slI0LOU10OTwFHS/WmptsMMpshNd/1tuWsHQ2Uk+cg==} + '@vitejs/plugin-react@5.1.4': + resolution: {integrity: sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: 7.1.5 @@ -5140,10 +5169,10 @@ packages: '@vitest/test-fn@file:test/core/deps/dep-fn': resolution: {directory: test/core/deps/dep-fn, type: directory} - '@voidzero-dev/vitepress-theme@4.4.2': - resolution: {integrity: sha512-BUinVWLy+QQOuXsBfutG3ulZfTDFr6gsoESXTcsIre5PUZEKXAjjvW1hlC7D9MX6Bc6uG6tFzk0nNS4DBt1LDA==} + '@voidzero-dev/vitepress-theme@4.5.0': + resolution: {integrity: sha512-jY6VprjFeIjBAPWIh0FJUSwU3GwKrHmf8u91HkLxHvzilXbyuu9sJCfF7FnjG2hYH07nF86xnnm+KGZxvFxthg==} peerDependencies: - vitepress: ^2.0.0-alpha.15 + vitepress: ^2.0.0-alpha.16 vue: ^3.5.0 '@volar/language-core@2.4.27': @@ -5167,44 +5196,68 @@ packages: '@vue/compiler-core@3.5.27': resolution: {integrity: sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==} + '@vue/compiler-core@3.5.28': + resolution: {integrity: sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ==} + '@vue/compiler-dom@3.5.27': resolution: {integrity: sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==} + '@vue/compiler-dom@3.5.28': + resolution: {integrity: sha512-/1ZepxAb159jKR1btkefDP+J2xuWL5V3WtleRmxaT+K2Aqiek/Ab/+Ebrw2pPj0sdHO8ViAyyJWfhXXOP/+LQA==} + '@vue/compiler-sfc@3.5.27': resolution: {integrity: sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==} + '@vue/compiler-sfc@3.5.28': + resolution: {integrity: sha512-6TnKMiNkd6u6VeVDhZn/07KhEZuBSn43Wd2No5zaP5s3xm8IqFTHBj84HJah4UepSUJTro5SoqqlOY22FKY96g==} + '@vue/compiler-ssr@3.5.27': resolution: {integrity: sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==} + '@vue/compiler-ssr@3.5.28': + resolution: {integrity: sha512-JCq//9w1qmC6UGLWJX7RXzrGpKkroubey/ZFqTpvEIDJEKGgntuDMqkuWiZvzTzTA5h2qZvFBFHY7fAAa9475g==} + '@vue/devtools-api@8.0.5': resolution: {integrity: sha512-DgVcW8H/Nral7LgZEecYFFYXnAvGuN9C3L3DtWekAncFBedBczpNW8iHKExfaM559Zm8wQWrwtYZ9lXthEHtDw==} + '@vue/devtools-api@8.0.6': + resolution: {integrity: sha512-+lGBI+WTvJmnU2FZqHhEB8J1DXcvNlDeEalz77iYgOdY1jTj1ipSBaKj3sRhYcy+kqA8v/BSuvOz1XJucfQmUA==} + '@vue/devtools-kit@8.0.5': resolution: {integrity: sha512-q2VV6x1U3KJMTQPUlRMyWEKVbcHuxhqJdSr6Jtjz5uAThAIrfJ6WVZdGZm5cuO63ZnSUz0RCsVwiUUb0mDV0Yg==} + '@vue/devtools-kit@8.0.6': + resolution: {integrity: sha512-9zXZPTJW72OteDXeSa5RVML3zWDCRcO5t77aJqSs228mdopYj5AiTpihozbsfFJ0IodfNs7pSgOGO3qfCuxDtw==} + '@vue/devtools-shared@8.0.5': resolution: {integrity: sha512-bRLn6/spxpmgLk+iwOrR29KrYnJjG9DGpHGkDFG82UM21ZpJ39ztUT9OXX3g+usW7/b2z+h46I9ZiYyB07XMXg==} + '@vue/devtools-shared@8.0.6': + resolution: {integrity: sha512-Pp1JylTqlgMJvxW6MGyfTF8vGvlBSCAvMFaDCYa82Mgw7TT5eE5kkHgDvmOGHWeJE4zIDfCpCxHapsK2LtIAJg==} + '@vue/language-core@3.2.4': resolution: {integrity: sha512-bqBGuSG4KZM45KKTXzGtoCl9cWju5jsaBKaJJe3h5hRAAWpZUuj5G+L+eI01sPIkm4H6setKRlw7E85wLdDNew==} - '@vue/reactivity@3.5.27': - resolution: {integrity: sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==} + '@vue/reactivity@3.5.28': + resolution: {integrity: sha512-gr5hEsxvn+RNyu9/9o1WtdYdwDjg5FgjUSBEkZWqgTKlo/fvwZ2+8W6AfKsc9YN2k/+iHYdS9vZYAhpi10kNaw==} - '@vue/runtime-core@3.5.27': - resolution: {integrity: sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==} + '@vue/runtime-core@3.5.28': + resolution: {integrity: sha512-POVHTdbgnrBBIpnbYU4y7pOMNlPn2QVxVzkvEA2pEgvzbelQq4ZOUxbp2oiyo+BOtiYlm8Q44wShHJoBvDPAjQ==} - '@vue/runtime-dom@3.5.27': - resolution: {integrity: sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==} + '@vue/runtime-dom@3.5.28': + resolution: {integrity: sha512-4SXxSF8SXYMuhAIkT+eBRqOkWEfPu6nhccrzrkioA6l0boiq7sp18HCOov9qWJA5HML61kW8p/cB4MmBiG9dSA==} - '@vue/server-renderer@3.5.27': - resolution: {integrity: sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==} + '@vue/server-renderer@3.5.28': + resolution: {integrity: sha512-pf+5ECKGj8fX95bNincbzJ6yp6nyzuLDhYZCeFxUNp8EBrQpPpQaLX3nNCp49+UbgbPun3CeVE+5CXVV1Xydfg==} peerDependencies: - vue: 3.5.27 + vue: 3.5.28 '@vue/shared@3.5.27': resolution: {integrity: sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==} + '@vue/shared@3.5.28': + resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==} + '@vue/test-utils@2.4.6': resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} @@ -5216,6 +5269,11 @@ packages: peerDependencies: vue: ^3.5.0 + '@vueuse/core@14.2.1': + resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} + peerDependencies: + vue: ^3.5.0 + '@vueuse/integrations@14.2.0': resolution: {integrity: sha512-Yuo5XbIi6XkfSXOYKd5SBZwyBEyO3Hd41eeG2555hDbE0Maz/P0BfPJDYhgDXjS9xI0jkWUUp1Zh5lXHOgkwLw==} peerDependencies: @@ -5258,22 +5316,67 @@ packages: universal-cookie: optional: true + '@vueuse/integrations@14.2.1': + resolution: {integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 || ^8 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 || ^8 + vue: ^3.5.0 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + '@vueuse/metadata@12.8.2': resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} '@vueuse/metadata@14.2.0': resolution: {integrity: sha512-i3axTGjU8b13FtyR4Keeama+43iD+BwX9C2TmzBVKqjSHArF03hjkp2SBZ1m72Jk2UtrX0aYCugBq2R1fhkuAQ==} + '@vueuse/metadata@14.2.1': + resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} + '@vueuse/shared@12.8.2': resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} - '@vueuse/shared@14.1.0': - resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} + '@vueuse/shared@14.2.0': + resolution: {integrity: sha512-Z0bmluZTlAXgUcJ4uAFaML16JcD8V0QG00Db3quR642I99JXIDRa2MI2LGxiLVhcBjVnL1jOzIvT5TT2lqJlkA==} peerDependencies: vue: ^3.5.0 - '@vueuse/shared@14.2.0': - resolution: {integrity: sha512-Z0bmluZTlAXgUcJ4uAFaML16JcD8V0QG00Db3quR642I99JXIDRa2MI2LGxiLVhcBjVnL1jOzIvT5TT2lqJlkA==} + '@vueuse/shared@14.2.1': + resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} peerDependencies: vue: ^3.5.0 @@ -5296,8 +5399,8 @@ packages: resolution: {integrity: sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==} engines: {node: '>=18.20.0'} - '@wdio/types@9.23.3': - resolution: {integrity: sha512-Ufjh06DAD7cGTMORUkq5MTZLw1nAgBSr2y8OyiNNuAfPGCwHEU3EwEfhG/y0V7S7xT5pBxliqWi7AjRrCgGcIA==} + '@wdio/types@9.24.0': + resolution: {integrity: sha512-PYYunNl8Uq1r8YMJAK6ReRy/V/XIrCSyj5cpCtR5EqCL6heETOORFj7gt4uPnzidfgbtMBcCru0LgjjlMiH1UQ==} engines: {node: '>=18.20.0'} '@wdio/utils@9.20.0': @@ -5336,8 +5439,8 @@ packages: peerDependencies: acorn: 8.11.3 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + acorn-walk@8.3.5: + resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} engines: {node: '>=0.4.0'} acorn@8.11.3: @@ -5589,8 +5692,8 @@ packages: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} - bumpp@10.4.0: - resolution: {integrity: sha512-VzJhB4iyZ04w99HreEvXJY/lxzApnE/PRbcFY4cKnOUSRVbRbAf0AIU0DeavrkffW+mclJlkmnQYn9NdwcBk1g==} + bumpp@10.4.1: + resolution: {integrity: sha512-X/bwWs5Gbb/D7rN4aHLB7zdjiA6nGdjckM1sTHhI9oovIbEw2L5pw5S4xzk8ZTeOZ8EnwU/Ze4SoZ6/Vr3pM2Q==} engines: {node: '>=18'} hasBin: true @@ -5719,9 +5822,6 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - cjs-module-lexer@1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - cjs-module-lexer@2.2.0: resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==} @@ -5926,8 +6026,8 @@ packages: resolution: {integrity: sha512-GlsEptulso7Jg0VaOZ8BXQi3AkYM5BOJKEO/rjMidSCq70FkIC5y0eawrCXeYzxgt3OCf4Ls+eoxN+/05vN0Ag==} engines: {node: '>=20'} - cssstyle@5.3.7: - resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} + cssstyle@6.0.1: + resolution: {integrity: sha512-IoJs7La+oFp/AB033wBStxNOJt4+9hHMxsXUPANcoXL2b3W4DZKghlJ2cI/eyeRZIQ9ysvYEorVhjrcYctWbog==} engines: {node: '>=20'} csstype@3.2.3: @@ -6229,6 +6329,10 @@ packages: resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==} engines: {node: '>=0.12'} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + es-abstract@1.24.1: resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} @@ -6266,8 +6370,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.27.2: - resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} engines: {node: '>=18'} hasBin: true @@ -6607,14 +6711,6 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.4: - resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -6915,12 +7011,8 @@ packages: handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - happy-dom@20.4.0: - resolution: {integrity: sha512-RDeQm3dT9n0A5f/TszjUmNCLEuPnMGv3Tv4BmNINebz/h17PA6LMBcxJ5FrcqltNBMh9jA/8ufgDdBYUdBt+eg==} - engines: {node: '>=20.0.0'} - - happy-dom@20.6.0: - resolution: {integrity: sha512-a+Sz2bPai3rajDuE82Y4B0OxlXJ19ckUjyfWDmeCAs8ZbEbnqtwzV9d4CVhQjWIuOBTOw8rhlxNeaSCHeknXRQ==} + happy-dom@20.6.3: + resolution: {integrity: sha512-QAMY7d228dHs8gb9NG4SJ3OxQo4r+NGN8pOXGZ3SGfQf/XYuuYubrtZ25QVY2WoUQdskhRXSXb4R4mcRk+hV1w==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -6965,9 +7057,6 @@ packages: hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - htm@3.1.1: - resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} - html-encoding-sniffer@6.0.0: resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -7050,8 +7139,8 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - import-in-the-middle@2.0.0: - resolution: {integrity: sha512-yNZhyQYqXpkT0AKq3F3KLasUSK4fHvebNH5hOsKQw2dhGSALvQ4U0BqUc5suziKvydO5u5hgN2hy1RJaho8U5A==} + import-in-the-middle@2.0.6: + resolution: {integrity: sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==} import-meta-resolve@4.0.0: resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} @@ -7393,8 +7482,8 @@ packages: canvas: optional: true - jsdom@28.0.0: - resolution: {integrity: sha512-KDYJgZ6T2TKdU8yBfYueq5EPG/EylMsBvCaenWMJb2OXmjgczzwveRCoJ+Hgj1lXPDyasvrgneSn4GBuR1hYyA==} + jsdom@28.1.0: + resolution: {integrity: sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -7702,6 +7791,10 @@ packages: resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} engines: {node: 20 || >=22} + lru-cache@11.2.6: + resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -7726,8 +7819,8 @@ packages: magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - magicast@0.5.1: - resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} @@ -8016,8 +8109,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.12.7: - resolution: {integrity: sha512-retd5i3xCZDVWMYjHEVuKTmhqY8lSsxujjVrZiGbbdoxxIBg5S7rCuYy/YQpfrTYIxpd/o0Kyb/3H+1udBMoYg==} + msw@2.12.10: + resolution: {integrity: sha512-G3VUymSE0/iegFnuipujpwyTM2GuZAKXNeerUSrG2+Eg391wW63xFs5ixWsK9MWzr1AGoSkYGmyAzNgbR3+urw==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -8337,13 +8430,13 @@ packages: pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - playwright-core@1.58.1: - resolution: {integrity: sha512-bcWzOaTxcW+VOOGBCQgnaKToLJ65d6AqfLVKEWvexyS3AS6rbXl+xdpYRMGSRBClPvyj44njOWoxjNdL/H9UNg==} + playwright-core@1.58.2: + resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==} engines: {node: '>=18'} hasBin: true - playwright@1.58.1: - resolution: {integrity: sha512-+2uTZHxSCcxjvGc5C891LrS1/NlxglGxzrC4seZiVjcYVQfUa87wBL6rTDqzGjuoWNjnBzRqKmF6zRYGMvQUaQ==} + playwright@1.58.2: + resolution: {integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==} engines: {node: '>=18'} hasBin: true @@ -8675,8 +8768,8 @@ packages: resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} engines: {node: '>=10'} - rettime@0.7.0: - resolution: {integrity: sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==} + rettime@0.10.1: + resolution: {integrity: sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==} reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -8695,8 +8788,8 @@ packages: rollup: ^4.57.1 typescript: ^4.5 || ^5.0 - rollup-plugin-license@3.6.0: - resolution: {integrity: sha512-1ieLxTCaigI5xokIfszVDRoy6c/Wmlot1fDEnea7Q/WXSR8AqOjYljHDLObAx7nFxHC2mbxT3QnTSPhaic2IYw==} + rollup-plugin-license@3.7.0: + resolution: {integrity: sha512-RvvOIF+GH3fBR3wffgc/vmjQn6qOn72WjppWVDp/v+CLpT0BbcRBdSkPeeIOL6U5XccdYgSIMjUyXgxlKEEFcw==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^4.57.1 @@ -9042,9 +9135,6 @@ packages: spdx-compare@1.0.0: resolution: {integrity: sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==} - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - spdx-exceptions@2.5.0: resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} @@ -9057,9 +9147,6 @@ packages: spdx-expression-validate@2.0.0: resolution: {integrity: sha512-b3wydZLM+Tc6CFvaRDBOF9d76oGIHNCLYFeHbftFXUWjnfZWganmDmvtM5sm1cRwJc/VDBMLyGGrsLFd1vOxbg==} - spdx-license-ids@3.0.12: - resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} - spdx-license-ids@3.0.22: resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} @@ -9511,8 +9598,8 @@ packages: resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} engines: {node: '>=18.17'} - undici@7.20.0: - resolution: {integrity: sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==} + undici@7.22.0: + resolution: {integrity: sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==} engines: {node: '>=20.18.1'} unicode-canonical-property-names-ecmascript@2.0.1: @@ -9672,8 +9759,8 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - vite-plugin-pages@0.33.2: - resolution: {integrity: sha512-tuWrpIXCMjbCXyOvpMSXiQ+m72Tgl7wmQnwzAV9T6Q0OpEAnxKv8ZPG5yBiBljp+zVcRq/2b1IqmJHPpsE/LFg==} + vite-plugin-pages@0.33.3: + resolution: {integrity: sha512-k97CAlVN7VUD5CIkRaose8Ty1xjtpuSeJQngFxsinPyM7PCtAIp23QdnkygNRdoo4gjX21TORYdEAAN/lGtCIA==} peerDependencies: '@solidjs/router': '*' '@vue/compiler-sfc': ^2.7.0 || ^3.0.0 @@ -9707,7 +9794,7 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 jiti: '>=1.21.0' less: ^4.0.0 lightningcss: ^1.21.0 @@ -9750,8 +9837,8 @@ packages: vite: optional: true - vitepress-plugin-llms@1.10.0: - resolution: {integrity: sha512-dgD5KV8D9vXlQtAf/KUjSgr3QymH1fHT7XkQ/UuIqvIjnKdzZI+0gT3puGxUBuqgvlFjYWA6f8k80tXl6gwWkw==} + vitepress-plugin-llms@1.11.0: + resolution: {integrity: sha512-n6fjWzBNKy40p8cij+d2cHiC2asNW1eQKdmc06gX9VAv7vWppIoVLH/f7Ht1bK0vSpGzzW2QimvNfbfv1oCdJw==} vitepress-plugin-tabs@0.7.3: resolution: {integrity: sha512-CkUz49UrTLcVOszuiHIA7ZBvfsg9RluRkFjRG1KvCg/NwuOTLZwcBRv7vBB3vMlDp0bWXIFOIwdI7bE93cV3Hw==} @@ -9797,8 +9884,8 @@ packages: vitest-environment-custom@file:test/core/vitest-environment-custom: resolution: {directory: test/core/vitest-environment-custom, type: directory} - vitest-package-exports@1.1.2: - resolution: {integrity: sha512-895iRrbcsZIDMhJSftGcQkuOPZcbCbHEQHXG0MnPKsSkpJhMRYuVtjA8dcjokyygJd/IQDDO8gyKo01AIkudHQ==} + vitest-package-exports@1.2.0: + resolution: {integrity: sha512-eSpazGhRMgGfUdaWgMeLM3v4l5P/1wFDA6gTe43Q+wT/r1jn/k8Ft9tsVleMU+gjzLXlwaPHSpt1/5+JMsnPWw==} vitest-sonar-reporter@3.0.0: resolution: {integrity: sha512-QRT5m9Z/3Kt0WVDVcFHm5LC9Ba89yDP4twlX2QUAJ9PdqfJBkLAh/kXj7m6U3i0k6GxnIEiwCc295bmAYokmZg==} @@ -9842,8 +9929,8 @@ packages: peerDependencies: vue: ^3.0.0 - vue-router@5.0.2: - resolution: {integrity: sha512-YFhwaE5c5JcJpNB1arpkl4/GnO32wiUWRB+OEj1T0DlDxEZoOfbltl2xEwktNU/9o1sGcGburIXSpbLpPFe/6w==} + vue-router@5.0.3: + resolution: {integrity: sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw==} peerDependencies: '@pinia/colada': '>=0.21.2' '@vue/compiler-sfc': ^3.5.17 @@ -9868,8 +9955,8 @@ packages: peerDependencies: vue: ^3.2.0 - vue@3.5.27: - resolution: {integrity: sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==} + vue@3.5.28: + resolution: {integrity: sha512-BRdrNfeoccSoIZeIhyPBfvWSLFP4q8J3u8Ju8Ug5vu3LdD+yTM13Sg4sKtljxozbnuMu1NB1X5HBHRYUzFocKg==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -10150,7 +10237,7 @@ snapshots: '@adobe/css-tools@4.4.0': {} - '@antfu/eslint-config@7.2.0(@vue/compiler-sfc@3.5.27)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(vitest@packages+vitest)': + '@antfu/eslint-config@7.2.0(@vue/compiler-sfc@3.5.28)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(vitest@packages+vitest)': dependencies: '@antfu/install-pkg': 1.1.0 '@clack/prompts': 0.11.0 @@ -10181,7 +10268,7 @@ snapshots: eslint-plugin-unused-imports: 4.3.0(@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-vue: 10.7.0(@stylistic/eslint-plugin@5.7.1(eslint@9.39.2(jiti@2.6.1)))(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.2(jiti@2.6.1))) eslint-plugin-yml: 3.0.0(eslint@9.39.2(jiti@2.6.1)) - eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.27)(eslint@9.39.2(jiti@2.6.1)) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.28)(eslint@9.39.2(jiti@2.6.1)) globals: 17.1.0 jsonc-eslint-parser: 2.4.2 local-pkg: 1.1.2 @@ -10224,6 +10311,14 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 11.2.4 + '@asamuzakjp/css-color@4.1.2': + dependencies: + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.2.6 + '@asamuzakjp/dom-selector@6.7.6': dependencies: '@asamuzakjp/nwsapi': 2.3.9 @@ -10232,6 +10327,14 @@ snapshots: is-potential-custom-element-name: 1.0.1 lru-cache: 11.2.4 + '@asamuzakjp/dom-selector@6.8.1': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.1.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.6 + '@asamuzakjp/nwsapi@2.3.9': {} '@babel/code-frame@7.27.1': @@ -10404,19 +10507,11 @@ snapshots: '@babel/parser@7.27.2': dependencies: - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 '@babel/parser@7.27.7': dependencies: - '@babel/types': 7.28.6 - - '@babel/parser@7.28.5': - dependencies: - '@babel/types': 7.28.6 - - '@babel/parser@7.28.6': - dependencies: - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 '@babel/parser@7.29.0': dependencies: @@ -10919,9 +11014,9 @@ snapshots: dependencies: '@babel/code-frame': 7.28.6 '@babel/generator': 7.29.0 - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 '@babel/template': 7.28.6 - '@babel/types': 7.28.6 + '@babel/types': 7.29.0 debug: 4.4.3 globals: 11.12.0 transitivePeerDependencies: @@ -10939,16 +11034,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.28.5': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@babel/types@7.28.6': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -10958,11 +11043,15 @@ snapshots: '@blazediff/core@1.9.1': {} - '@bomb.sh/tab@0.0.12(cac@6.7.14(patch_hash=a8f0f3517a47ce716ed90c0cfe6ae382ab763b021a664ada2a608477d0621588))(citty@0.1.6)': + '@bomb.sh/tab@0.0.14(cac@6.7.14(patch_hash=a8f0f3517a47ce716ed90c0cfe6ae382ab763b021a664ada2a608477d0621588))(citty@0.1.6)': optionalDependencies: cac: 6.7.14(patch_hash=a8f0f3517a47ce716ed90c0cfe6ae382ab763b021a664ada2a608477d0621588) citty: 0.1.6 + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.1.0 + '@bufbuild/protobuf@2.5.2': {} '@canvas/image-data@1.0.0': {} @@ -10980,11 +11069,18 @@ snapshots: '@csstools/color-helpers@5.1.0': {} + '@csstools/color-helpers@6.0.1': {} + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/color-helpers': 5.1.0 @@ -10992,26 +11088,41 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-color-parser@4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.0.1 + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-syntax-patches-for-csstree@1.0.22': {} + '@csstools/css-syntax-patches-for-csstree@1.0.27': {} + '@csstools/css-tokenizer@3.0.4': {} - '@docsearch/css@4.3.2': {} + '@csstools/css-tokenizer@4.0.0': {} '@docsearch/css@4.5.3': {} - '@docsearch/js@4.3.2': - dependencies: - htm: 3.1.1 + '@docsearch/css@4.6.0': {} '@docsearch/js@4.5.3': {} + '@docsearch/js@4.6.0': {} + '@docsearch/sidepanel-js@4.5.3': {} + '@docsearch/sidepanel-js@4.6.0': {} + '@edge-runtime/primitives@6.0.0': {} '@edge-runtime/vm@5.0.0': @@ -11063,7 +11174,7 @@ snapshots: '@esbuild/aix-ppc64@0.27.0': optional: true - '@esbuild/aix-ppc64@0.27.2': + '@esbuild/aix-ppc64@0.27.3': optional: true '@esbuild/android-arm64@0.25.12': @@ -11072,7 +11183,7 @@ snapshots: '@esbuild/android-arm64@0.27.0': optional: true - '@esbuild/android-arm64@0.27.2': + '@esbuild/android-arm64@0.27.3': optional: true '@esbuild/android-arm@0.25.12': @@ -11081,7 +11192,7 @@ snapshots: '@esbuild/android-arm@0.27.0': optional: true - '@esbuild/android-arm@0.27.2': + '@esbuild/android-arm@0.27.3': optional: true '@esbuild/android-x64@0.25.12': @@ -11090,7 +11201,7 @@ snapshots: '@esbuild/android-x64@0.27.0': optional: true - '@esbuild/android-x64@0.27.2': + '@esbuild/android-x64@0.27.3': optional: true '@esbuild/darwin-arm64@0.25.12': @@ -11099,7 +11210,7 @@ snapshots: '@esbuild/darwin-arm64@0.27.0': optional: true - '@esbuild/darwin-arm64@0.27.2': + '@esbuild/darwin-arm64@0.27.3': optional: true '@esbuild/darwin-x64@0.25.12': @@ -11108,7 +11219,7 @@ snapshots: '@esbuild/darwin-x64@0.27.0': optional: true - '@esbuild/darwin-x64@0.27.2': + '@esbuild/darwin-x64@0.27.3': optional: true '@esbuild/freebsd-arm64@0.25.12': @@ -11117,7 +11228,7 @@ snapshots: '@esbuild/freebsd-arm64@0.27.0': optional: true - '@esbuild/freebsd-arm64@0.27.2': + '@esbuild/freebsd-arm64@0.27.3': optional: true '@esbuild/freebsd-x64@0.25.12': @@ -11126,7 +11237,7 @@ snapshots: '@esbuild/freebsd-x64@0.27.0': optional: true - '@esbuild/freebsd-x64@0.27.2': + '@esbuild/freebsd-x64@0.27.3': optional: true '@esbuild/linux-arm64@0.25.12': @@ -11135,7 +11246,7 @@ snapshots: '@esbuild/linux-arm64@0.27.0': optional: true - '@esbuild/linux-arm64@0.27.2': + '@esbuild/linux-arm64@0.27.3': optional: true '@esbuild/linux-arm@0.25.12': @@ -11144,7 +11255,7 @@ snapshots: '@esbuild/linux-arm@0.27.0': optional: true - '@esbuild/linux-arm@0.27.2': + '@esbuild/linux-arm@0.27.3': optional: true '@esbuild/linux-ia32@0.25.12': @@ -11153,7 +11264,7 @@ snapshots: '@esbuild/linux-ia32@0.27.0': optional: true - '@esbuild/linux-ia32@0.27.2': + '@esbuild/linux-ia32@0.27.3': optional: true '@esbuild/linux-loong64@0.25.12': @@ -11162,7 +11273,7 @@ snapshots: '@esbuild/linux-loong64@0.27.0': optional: true - '@esbuild/linux-loong64@0.27.2': + '@esbuild/linux-loong64@0.27.3': optional: true '@esbuild/linux-mips64el@0.25.12': @@ -11171,7 +11282,7 @@ snapshots: '@esbuild/linux-mips64el@0.27.0': optional: true - '@esbuild/linux-mips64el@0.27.2': + '@esbuild/linux-mips64el@0.27.3': optional: true '@esbuild/linux-ppc64@0.25.12': @@ -11180,7 +11291,7 @@ snapshots: '@esbuild/linux-ppc64@0.27.0': optional: true - '@esbuild/linux-ppc64@0.27.2': + '@esbuild/linux-ppc64@0.27.3': optional: true '@esbuild/linux-riscv64@0.25.12': @@ -11189,7 +11300,7 @@ snapshots: '@esbuild/linux-riscv64@0.27.0': optional: true - '@esbuild/linux-riscv64@0.27.2': + '@esbuild/linux-riscv64@0.27.3': optional: true '@esbuild/linux-s390x@0.25.12': @@ -11198,7 +11309,7 @@ snapshots: '@esbuild/linux-s390x@0.27.0': optional: true - '@esbuild/linux-s390x@0.27.2': + '@esbuild/linux-s390x@0.27.3': optional: true '@esbuild/linux-x64@0.25.12': @@ -11207,7 +11318,7 @@ snapshots: '@esbuild/linux-x64@0.27.0': optional: true - '@esbuild/linux-x64@0.27.2': + '@esbuild/linux-x64@0.27.3': optional: true '@esbuild/netbsd-arm64@0.25.12': @@ -11216,7 +11327,7 @@ snapshots: '@esbuild/netbsd-arm64@0.27.0': optional: true - '@esbuild/netbsd-arm64@0.27.2': + '@esbuild/netbsd-arm64@0.27.3': optional: true '@esbuild/netbsd-x64@0.25.12': @@ -11225,7 +11336,7 @@ snapshots: '@esbuild/netbsd-x64@0.27.0': optional: true - '@esbuild/netbsd-x64@0.27.2': + '@esbuild/netbsd-x64@0.27.3': optional: true '@esbuild/openbsd-arm64@0.25.12': @@ -11234,7 +11345,7 @@ snapshots: '@esbuild/openbsd-arm64@0.27.0': optional: true - '@esbuild/openbsd-arm64@0.27.2': + '@esbuild/openbsd-arm64@0.27.3': optional: true '@esbuild/openbsd-x64@0.25.12': @@ -11243,7 +11354,7 @@ snapshots: '@esbuild/openbsd-x64@0.27.0': optional: true - '@esbuild/openbsd-x64@0.27.2': + '@esbuild/openbsd-x64@0.27.3': optional: true '@esbuild/openharmony-arm64@0.25.12': @@ -11252,7 +11363,7 @@ snapshots: '@esbuild/openharmony-arm64@0.27.0': optional: true - '@esbuild/openharmony-arm64@0.27.2': + '@esbuild/openharmony-arm64@0.27.3': optional: true '@esbuild/sunos-x64@0.25.12': @@ -11261,7 +11372,7 @@ snapshots: '@esbuild/sunos-x64@0.27.0': optional: true - '@esbuild/sunos-x64@0.27.2': + '@esbuild/sunos-x64@0.27.3': optional: true '@esbuild/win32-arm64@0.25.12': @@ -11270,7 +11381,7 @@ snapshots: '@esbuild/win32-arm64@0.27.0': optional: true - '@esbuild/win32-arm64@0.27.2': + '@esbuild/win32-arm64@0.27.3': optional: true '@esbuild/win32-ia32@0.25.12': @@ -11279,7 +11390,7 @@ snapshots: '@esbuild/win32-ia32@0.27.0': optional: true - '@esbuild/win32-ia32@0.27.2': + '@esbuild/win32-ia32@0.27.3': optional: true '@esbuild/win32-x64@0.25.12': @@ -11288,7 +11399,7 @@ snapshots: '@esbuild/win32-x64@0.27.0': optional: true - '@esbuild/win32-x64@0.27.2': + '@esbuild/win32-x64@0.27.3': optional: true '@eslint-community/eslint-plugin-eslint-comments@4.6.0(eslint@9.39.2(jiti@2.6.1))': @@ -11389,7 +11500,7 @@ snapshots: '@exodus/bytes@1.7.0': {} - '@faker-js/faker@10.2.0': {} + '@faker-js/faker@10.3.0': {} '@fastify/ajv-compiler@4.0.5': dependencies: @@ -11429,16 +11540,16 @@ snapshots: '@floating-ui/utils@0.2.10': {} - '@floating-ui/vue@1.1.9(vue@3.5.27(typescript@5.9.3))': + '@floating-ui/vue@1.1.9(vue@3.5.28(typescript@5.9.3))': dependencies: '@floating-ui/dom': 1.7.4 '@floating-ui/utils': 0.2.10 - vue-demi: 0.14.10(vue@3.5.27(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.28(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@grpc/grpc-js@1.14.1': + '@grpc/grpc-js@1.14.3': dependencies: '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 @@ -11487,10 +11598,10 @@ snapshots: '@iconify/types': 2.0.0 mlly: 1.8.0 - '@iconify/vue@5.0.0(vue@3.5.27(typescript@5.9.3))': + '@iconify/vue@5.0.0(vue@3.5.28(typescript@5.9.3))': dependencies: '@iconify/types': 2.0.0 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: @@ -11569,31 +11680,31 @@ snapshots: '@inquirer/ansi@1.0.0': {} - '@inquirer/confirm@5.1.18(@types/node@24.10.9)': + '@inquirer/confirm@5.1.18(@types/node@24.10.13)': dependencies: - '@inquirer/core': 10.2.2(@types/node@24.10.9) - '@inquirer/type': 3.0.8(@types/node@24.10.9) + '@inquirer/core': 10.2.2(@types/node@24.10.13) + '@inquirer/type': 3.0.8(@types/node@24.10.13) optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 - '@inquirer/core@10.2.2(@types/node@24.10.9)': + '@inquirer/core@10.2.2(@types/node@24.10.13)': dependencies: '@inquirer/ansi': 1.0.0 '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.10.9) + '@inquirer/type': 3.0.8(@types/node@24.10.13) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@inquirer/figures@1.0.13': {} - '@inquirer/type@3.0.8(@types/node@24.10.9)': + '@inquirer/type@3.0.8(@types/node@24.10.13)': optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@internationalized/date@3.10.1': dependencies: @@ -11778,7 +11889,7 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.3.0 - '@mswjs/interceptors@0.40.0': + '@mswjs/interceptors@0.41.3': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -11807,256 +11918,257 @@ snapshots: '@open-draft/until@2.1.0': {} - '@opentelemetry/api-logs@0.211.0': + '@opentelemetry/api-logs@0.212.0': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api@1.9.0': {} - '@opentelemetry/configuration@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/configuration@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) yaml: 2.8.2 - '@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/context-async-hooks@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-zone-peer-dep@2.5.0(@opentelemetry/api@1.9.0)(zone.js@0.15.1)': + '@opentelemetry/context-zone-peer-dep@2.5.1(@opentelemetry/api@1.9.0)(zone.js@0.15.1)': dependencies: '@opentelemetry/api': 1.9.0 zone.js: 0.15.1 - '@opentelemetry/context-zone@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/context-zone@2.5.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/context-zone-peer-dep': 2.5.0(@opentelemetry/api@1.9.0)(zone.js@0.15.1) + '@opentelemetry/context-zone-peer-dep': 2.5.1(@opentelemetry/api@1.9.0)(zone.js@0.15.1) zone.js: 0.15.1 transitivePeerDependencies: - '@opentelemetry/api' - '@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.38.0 - '@opentelemetry/exporter-logs-otlp-grpc@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-logs-otlp-grpc@0.212.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.14.1 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.212.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-http@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-logs-otlp-http@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.212.0 + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.212.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-proto@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-logs-otlp-proto@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.212.0 + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-grpc@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-metrics-otlp-grpc@0.212.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.14.1 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-metrics-otlp-http@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-proto@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-metrics-otlp-proto@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-prometheus@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-prometheus@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.38.0 - '@opentelemetry/exporter-trace-otlp-grpc@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-grpc@0.212.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.14.1 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-http@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-http@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-proto@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-proto@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-zipkin@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-zipkin@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 - '@opentelemetry/instrumentation@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - import-in-the-middle: 2.0.0 + '@opentelemetry/api-logs': 0.212.0 + import-in-the-middle: 2.0.6 require-in-the-middle: 8.0.1 transitivePeerDependencies: - supports-color - '@opentelemetry/otlp-exporter-base@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-exporter-base@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-grpc-exporter-base@0.212.0(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.14.1 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.211.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.212.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-transformer@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.212.0 + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) protobufjs: 8.0.0 - '@opentelemetry/propagator-b3@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/propagator-b3@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-jaeger@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/propagator-jaeger@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/resources@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 - '@opentelemetry/sdk-logs@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-logs@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.212.0 + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-metrics@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-node@0.211.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-node@0.212.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.211.0 - '@opentelemetry/configuration': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-grpc': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-http': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-proto': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-grpc': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-proto': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-prometheus': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-grpc': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-http': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-proto': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-zipkin': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-b3': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-jaeger': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.211.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-node': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.212.0 + '@opentelemetry/configuration': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/context-async-hooks': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-grpc': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-http': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-proto': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-grpc': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-proto': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-prometheus': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-zipkin': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-b3': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-jaeger': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.212.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color - '@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-base@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 - '@opentelemetry/sdk-trace-node@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-node@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/context-async-hooks': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-web@2.5.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-web@2.5.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.5.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.5.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions@1.38.0': {} @@ -12382,9 +12494,9 @@ snapshots: '@pkgr/core@0.2.9': {} - '@playwright/test@1.58.1': + '@playwright/test@1.58.2': dependencies: - playwright: 1.58.1 + playwright: 1.58.2 '@polka/url@1.0.0-next.24': {} @@ -12439,6 +12551,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.2': {} + '@rolldown/pluginutils@1.0.0-rc.3': {} + '@rollup/plugin-babel@5.3.1(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.57.1)': dependencies: '@babel/core': 7.29.0 @@ -12681,7 +12795,7 @@ snapshots: '@shikijs/vitepress-twoslash@3.22.0(typescript@5.9.3)': dependencies: '@shikijs/twoslash': 3.22.0(typescript@5.9.3) - floating-vue: 5.2.2(vue@3.5.27(typescript@5.9.3)) + floating-vue: 5.2.2(vue@3.5.28(typescript@5.9.3)) lz-string: 1.5.0 magic-string: 0.30.21 markdown-it: 14.1.0 @@ -12692,7 +12806,7 @@ snapshots: shiki: 3.22.0 twoslash: 0.3.6(typescript@5.9.3) twoslash-vue: 0.3.6(typescript@5.9.3) - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) transitivePeerDependencies: - '@nuxt/kit' - supports-color @@ -12854,19 +12968,19 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 4.1.18 - '@tailwindcss/vite@4.1.18(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@tailwindcss/vite@4.1.18(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@tailwindcss/node': 4.1.18 '@tailwindcss/oxide': 4.1.18 tailwindcss: 4.1.18 - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@tanstack/virtual-core@3.13.13': {} - '@tanstack/vue-virtual@3.13.13(vue@3.5.27(typescript@5.9.3))': + '@tanstack/vue-virtual@3.13.13(vue@3.5.28(typescript@5.9.3))': dependencies: '@tanstack/virtual-core': 3.13.13 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) '@test/test-dep-error@file:test/cli/deps/error': {} @@ -12890,14 +13004,14 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@18.2.14)(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@18.2.14)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.4 '@testing-library/dom': 10.4.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) optionalDependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.14 '@types/react-dom': 18.2.14 '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': @@ -12921,8 +13035,8 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__generator': 7.6.6 '@types/babel__template': 7.4.3 '@types/babel__traverse': 7.20.3 @@ -12992,7 +13106,7 @@ snapshots: '@types/jsdom@27.0.0': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 @@ -13015,7 +13129,7 @@ snapshots: '@types/natural-compare@1.4.3': {} - '@types/node@24.10.9': + '@types/node@24.10.13': dependencies: undici-types: 7.16.0 @@ -13023,23 +13137,23 @@ snapshots: '@types/pngjs@6.0.5': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@types/prompts@2.4.9': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 kleur: 3.0.3 '@types/react-dom@18.2.14': dependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.14 optional: true '@types/react-is@19.2.0': dependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.14 - '@types/react@19.2.10': + '@types/react@19.2.14': dependencies: csstype: 3.2.3 @@ -13071,11 +13185,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@types/yauzl@2.10.3': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 optional: true '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': @@ -13180,13 +13294,13 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@unocss/astro@66.6.0(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@unocss/astro@66.6.0(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@unocss/core': 66.6.0 '@unocss/reset': 66.6.0 - '@unocss/vite': 66.6.0(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@unocss/vite': 66.6.0(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) optionalDependencies: - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@unocss/cli@66.6.0': dependencies: @@ -13316,7 +13430,7 @@ snapshots: dependencies: '@unocss/core': 66.6.0 - '@unocss/vite@66.6.0(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@unocss/vite@66.6.0(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@jridgewell/remapping': 2.3.5 '@unocss/config': 66.6.0 @@ -13327,7 +13441,7 @@ snapshots: pathe: 2.0.3 tinyglobby: 0.2.15 unplugin-utils: 0.3.1 - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vite-pwa/assets-generator@1.0.2': dependencies: @@ -13338,33 +13452,33 @@ snapshots: sharp-ico: 0.1.5 unconfig: 7.3.3 - '@vite-pwa/vitepress@1.1.0(@vite-pwa/assets-generator@1.0.2)(vite-plugin-pwa@1.2.0(@vite-pwa/assets-generator@1.0.2)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.4.0))': + '@vite-pwa/vitepress@1.1.0(@vite-pwa/assets-generator@1.0.2)(vite-plugin-pwa@1.2.0(@vite-pwa/assets-generator@1.0.2)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.4.0))': dependencies: - vite-plugin-pwa: 1.2.0(@vite-pwa/assets-generator@1.0.2)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) + vite-plugin-pwa: 1.2.0(@vite-pwa/assets-generator@1.0.2)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.4.0) optionalDependencies: '@vite-pwa/assets-generator': 1.0.2 - '@vitejs/plugin-basic-ssl@2.1.4(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitejs/plugin-react@5.1.3(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@5.1.4(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-rc.2 + '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.4(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.4(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vue: 3.5.27(typescript@5.9.3) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vue: 3.5.28(typescript@5.9.3) '@vitejs/test-dep-virtual@file:test/config/deps/test-dep-virtual': {} @@ -13403,23 +13517,24 @@ snapshots: '@vitest/test-fn@file:test/core/deps/dep-fn': {} - '@voidzero-dev/vitepress-theme@4.4.2(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(typescript@5.9.3)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitepress@2.0.0-alpha.16(@types/node@24.10.9)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3))': + '@voidzero-dev/vitepress-theme@4.5.0(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(typescript@5.9.3)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitepress@2.0.0-alpha.16(@types/node@24.10.13)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': dependencies: - '@docsearch/css': 4.3.2 - '@docsearch/js': 4.3.2 + '@docsearch/css': 4.6.0 + '@docsearch/js': 4.6.0 + '@docsearch/sidepanel-js': 4.6.0 '@rive-app/canvas-lite': 2.33.3 '@tailwindcss/typography': 0.5.19(tailwindcss@4.1.18) - '@tailwindcss/vite': 4.1.18(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@tailwindcss/vite': 4.1.18(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vue/shared': 3.5.27 - '@vueuse/core': 14.2.0(vue@3.5.27(typescript@5.9.3)) - '@vueuse/integrations': 14.2.0(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(vue@3.5.27(typescript@5.9.3)) - '@vueuse/shared': 14.1.0(vue@3.5.27(typescript@5.9.3)) + '@vueuse/core': 14.2.1(vue@3.5.28(typescript@5.9.3)) + '@vueuse/integrations': 14.2.1(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(vue@3.5.28(typescript@5.9.3)) + '@vueuse/shared': 14.2.0(vue@3.5.28(typescript@5.9.3)) mark.js: 8.11.1 minisearch: 7.2.0 - reka-ui: 2.7.0(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)) + reka-ui: 2.7.0(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) tailwindcss: 4.1.18 - vitepress: 2.0.0-alpha.16(@types/node@24.10.9)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) - vue: 3.5.27(typescript@5.9.3) + vitepress: 2.0.0-alpha.16(@types/node@24.10.13)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + vue: 3.5.28(typescript@5.9.3) transitivePeerDependencies: - '@vue/composition-api' - async-validator @@ -13449,7 +13564,7 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue-macros/common@3.1.2(vue@3.5.27(typescript@5.9.3))': + '@vue-macros/common@3.1.2(vue@3.5.28(typescript@5.9.3))': dependencies: '@vue/compiler-sfc': 3.5.27 ast-kit: 2.2.0 @@ -13457,24 +13572,37 @@ snapshots: magic-string-ast: 1.0.3 unplugin-utils: 0.3.1 optionalDependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) '@vue/compiler-core@3.5.27': dependencies: - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 '@vue/shared': 3.5.27 entities: 7.0.0 estree-walker: 2.0.2 source-map-js: 1.2.1 + '@vue/compiler-core@3.5.28': + dependencies: + '@babel/parser': 7.29.0 + '@vue/shared': 3.5.28 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + '@vue/compiler-dom@3.5.27': dependencies: '@vue/compiler-core': 3.5.27 '@vue/shared': 3.5.27 + '@vue/compiler-dom@3.5.28': + dependencies: + '@vue/compiler-core': 3.5.28 + '@vue/shared': 3.5.28 + '@vue/compiler-sfc@3.5.27': dependencies: - '@babel/parser': 7.28.6 + '@babel/parser': 7.29.0 '@vue/compiler-core': 3.5.27 '@vue/compiler-dom': 3.5.27 '@vue/compiler-ssr': 3.5.27 @@ -13484,15 +13612,36 @@ snapshots: postcss: 8.5.6 source-map-js: 1.2.1 + '@vue/compiler-sfc@3.5.28': + dependencies: + '@babel/parser': 7.29.0 + '@vue/compiler-core': 3.5.28 + '@vue/compiler-dom': 3.5.28 + '@vue/compiler-ssr': 3.5.28 + '@vue/shared': 3.5.28 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.6 + source-map-js: 1.2.1 + '@vue/compiler-ssr@3.5.27': dependencies: '@vue/compiler-dom': 3.5.27 '@vue/shared': 3.5.27 + '@vue/compiler-ssr@3.5.28': + dependencies: + '@vue/compiler-dom': 3.5.28 + '@vue/shared': 3.5.28 + '@vue/devtools-api@8.0.5': dependencies: '@vue/devtools-kit': 8.0.5 + '@vue/devtools-api@8.0.6': + dependencies: + '@vue/devtools-kit': 8.0.6 + '@vue/devtools-kit@8.0.5': dependencies: '@vue/devtools-shared': 8.0.5 @@ -13503,10 +13652,24 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.2 + '@vue/devtools-kit@8.0.6': + dependencies: + '@vue/devtools-shared': 8.0.6 + birpc: 2.8.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 2.0.0 + speakingurl: 14.0.1 + superjson: 2.2.2 + '@vue/devtools-shared@8.0.5': dependencies: rfdc: 1.4.1 + '@vue/devtools-shared@8.0.6': + dependencies: + rfdc: 1.4.1 + '@vue/language-core@3.2.4': dependencies: '@volar/language-core': 2.4.27 @@ -13517,30 +13680,32 @@ snapshots: path-browserify: 1.0.1 picomatch: 4.0.3 - '@vue/reactivity@3.5.27': + '@vue/reactivity@3.5.28': dependencies: - '@vue/shared': 3.5.27 + '@vue/shared': 3.5.28 - '@vue/runtime-core@3.5.27': + '@vue/runtime-core@3.5.28': dependencies: - '@vue/reactivity': 3.5.27 - '@vue/shared': 3.5.27 + '@vue/reactivity': 3.5.28 + '@vue/shared': 3.5.28 - '@vue/runtime-dom@3.5.27': + '@vue/runtime-dom@3.5.28': dependencies: - '@vue/reactivity': 3.5.27 - '@vue/runtime-core': 3.5.27 - '@vue/shared': 3.5.27 + '@vue/reactivity': 3.5.28 + '@vue/runtime-core': 3.5.28 + '@vue/shared': 3.5.28 csstype: 3.2.3 - '@vue/server-renderer@3.5.27(vue@3.5.27(typescript@5.9.3))': + '@vue/server-renderer@3.5.28(vue@3.5.28(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.27 - '@vue/shared': 3.5.27 - vue: 3.5.27(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.28 + '@vue/shared': 3.5.28 + vue: 3.5.28(typescript@5.9.3) '@vue/shared@3.5.27': {} + '@vue/shared@3.5.28': {} + '@vue/test-utils@2.4.6': dependencies: js-beautify: 1.15.1 @@ -13551,22 +13716,39 @@ snapshots: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 '@vueuse/shared': 12.8.2(typescript@5.9.3) - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) transitivePeerDependencies: - typescript - '@vueuse/core@14.2.0(vue@3.5.27(typescript@5.9.3))': + '@vueuse/core@14.2.0(vue@3.5.28(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.2.0 - '@vueuse/shared': 14.2.0(vue@3.5.27(typescript@5.9.3)) - vue: 3.5.27(typescript@5.9.3) + '@vueuse/shared': 14.2.0(vue@3.5.28(typescript@5.9.3)) + vue: 3.5.28(typescript@5.9.3) + + '@vueuse/core@14.2.1(vue@3.5.28(typescript@5.9.3))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.2.1 + '@vueuse/shared': 14.2.1(vue@3.5.28(typescript@5.9.3)) + vue: 3.5.28(typescript@5.9.3) - '@vueuse/integrations@14.2.0(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(vue@3.5.27(typescript@5.9.3))': + '@vueuse/integrations@14.2.0(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(vue@3.5.28(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.2.0(vue@3.5.27(typescript@5.9.3)) - '@vueuse/shared': 14.2.0(vue@3.5.27(typescript@5.9.3)) - vue: 3.5.27(typescript@5.9.3) + '@vueuse/core': 14.2.0(vue@3.5.28(typescript@5.9.3)) + '@vueuse/shared': 14.2.0(vue@3.5.28(typescript@5.9.3)) + vue: 3.5.28(typescript@5.9.3) + optionalDependencies: + axios: 1.13.4 + change-case: 5.4.4 + focus-trap: 7.8.0 + + '@vueuse/integrations@14.2.1(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(vue@3.5.28(typescript@5.9.3))': + dependencies: + '@vueuse/core': 14.2.1(vue@3.5.28(typescript@5.9.3)) + '@vueuse/shared': 14.2.1(vue@3.5.28(typescript@5.9.3)) + vue: 3.5.28(typescript@5.9.3) optionalDependencies: axios: 1.13.4 change-case: 5.4.4 @@ -13576,19 +13758,21 @@ snapshots: '@vueuse/metadata@14.2.0': {} + '@vueuse/metadata@14.2.1': {} + '@vueuse/shared@12.8.2(typescript@5.9.3)': dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) transitivePeerDependencies: - typescript - '@vueuse/shared@14.1.0(vue@3.5.27(typescript@5.9.3))': + '@vueuse/shared@14.2.0(vue@3.5.28(typescript@5.9.3))': dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) - '@vueuse/shared@14.2.0(vue@3.5.27(typescript@5.9.3))': + '@vueuse/shared@14.2.1(vue@3.5.28(typescript@5.9.3))': dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) '@wdio/config@9.20.0': dependencies: @@ -13614,15 +13798,15 @@ snapshots: '@wdio/repl@9.16.2': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@wdio/types@9.20.0': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 - '@wdio/types@9.23.3': + '@wdio/types@9.24.0': dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@wdio/utils@9.20.0': dependencies: @@ -13668,7 +13852,7 @@ snapshots: dependencies: acorn: 8.11.3(patch_hash=62f89b815dbd769c8a4d5b19b1f6852f28922ecb581d876c8a8377d05c2483c4) - acorn-walk@8.3.4: + acorn-walk@8.3.5: dependencies: acorn: 8.11.3(patch_hash=62f89b815dbd769c8a4d5b19b1f6852f28922ecb581d876c8a8377d05c2483c4) @@ -13942,7 +14126,7 @@ snapshots: builtin-modules@5.0.0: {} - bumpp@10.4.0(magicast@0.3.5): + bumpp@10.4.1(magicast@0.3.5): dependencies: ansis: 4.2.0 args-tokenizer: 0.3.0 @@ -14143,8 +14327,6 @@ snapshots: dependencies: consola: 3.4.2 - cjs-module-lexer@1.4.3: {} - cjs-module-lexer@2.2.0: {} clean-regexp@1.0.0: @@ -14325,12 +14507,12 @@ snapshots: '@csstools/css-syntax-patches-for-csstree': 1.0.22 css-tree: 3.1.0 - cssstyle@5.3.7: + cssstyle@6.0.1: dependencies: - '@asamuzakjp/css-color': 4.1.1 - '@csstools/css-syntax-patches-for-csstree': 1.0.22 + '@asamuzakjp/css-color': 4.1.2 + '@csstools/css-syntax-patches-for-csstree': 1.0.27 css-tree: 3.1.0 - lru-cache: 11.2.4 + lru-cache: 11.2.6 csstype@3.2.3: {} @@ -14613,6 +14795,8 @@ snapshots: entities@7.0.0: {} + entities@7.0.1: {} + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 @@ -14751,34 +14935,34 @@ snapshots: '@esbuild/win32-ia32': 0.27.0 '@esbuild/win32-x64': 0.27.0 - esbuild@0.27.2: + esbuild@0.27.3: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.2 - '@esbuild/android-arm': 0.27.2 - '@esbuild/android-arm64': 0.27.2 - '@esbuild/android-x64': 0.27.2 - '@esbuild/darwin-arm64': 0.27.2 - '@esbuild/darwin-x64': 0.27.2 - '@esbuild/freebsd-arm64': 0.27.2 - '@esbuild/freebsd-x64': 0.27.2 - '@esbuild/linux-arm': 0.27.2 - '@esbuild/linux-arm64': 0.27.2 - '@esbuild/linux-ia32': 0.27.2 - '@esbuild/linux-loong64': 0.27.2 - '@esbuild/linux-mips64el': 0.27.2 - '@esbuild/linux-ppc64': 0.27.2 - '@esbuild/linux-riscv64': 0.27.2 - '@esbuild/linux-s390x': 0.27.2 - '@esbuild/linux-x64': 0.27.2 - '@esbuild/netbsd-arm64': 0.27.2 - '@esbuild/netbsd-x64': 0.27.2 - '@esbuild/openbsd-arm64': 0.27.2 - '@esbuild/openbsd-x64': 0.27.2 - '@esbuild/openharmony-arm64': 0.27.2 - '@esbuild/sunos-x64': 0.27.2 - '@esbuild/win32-arm64': 0.27.2 - '@esbuild/win32-ia32': 0.27.2 - '@esbuild/win32-x64': 0.27.2 + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 escalade@3.2.0: {} @@ -14996,9 +15180,9 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.27)(eslint@9.39.2(jiti@2.6.1)): + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.28)(eslint@9.39.2(jiti@2.6.1)): dependencies: - '@vue/compiler-sfc': 3.5.27 + '@vue/compiler-sfc': 3.5.28 eslint: 9.39.2(jiti@2.6.1) eslint-scope@8.4.0: @@ -15258,10 +15442,6 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.4.4(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -15321,11 +15501,11 @@ snapshots: flatted@3.3.3: {} - floating-vue@5.2.2(vue@3.5.27(typescript@5.9.3)): + floating-vue@5.2.2(vue@3.5.28(typescript@5.9.3)): dependencies: '@floating-ui/dom': 1.1.1 - vue: 3.5.27(typescript@5.9.3) - vue-resize: 2.0.0-alpha.1(vue@3.5.27(typescript@5.9.3)) + vue: 3.5.28(typescript@5.9.3) + vue-resize: 2.0.0-alpha.1(vue@3.5.28(typescript@5.9.3)) focus-trap@7.8.0: dependencies: @@ -15576,24 +15756,12 @@ snapshots: handle-thing@2.0.1: {} - happy-dom@20.4.0: + happy-dom@20.6.3: dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@types/whatwg-mimetype': 3.0.2 '@types/ws': 8.18.1 - entities: 4.5.0 - whatwg-mimetype: 3.0.0 - ws: 8.19.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - happy-dom@20.6.0: - dependencies: - '@types/node': 24.10.9 - '@types/whatwg-mimetype': 3.0.2 - '@types/ws': 8.18.1 - entities: 6.0.1 + entities: 7.0.1 whatwg-mimetype: 3.0.0 ws: 8.19.0 transitivePeerDependencies: @@ -15651,8 +15819,6 @@ snapshots: readable-stream: 2.3.7 wbuf: 1.7.3 - htm@3.1.1: {} - html-encoding-sniffer@6.0.0(@noble/hashes@1.8.0): dependencies: '@exodus/bytes': 1.11.0(@noble/hashes@1.8.0) @@ -15740,11 +15906,11 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-in-the-middle@2.0.0: + import-in-the-middle@2.0.6: dependencies: acorn: 8.11.3(patch_hash=62f89b815dbd769c8a4d5b19b1f6852f28922ecb581d876c8a8377d05c2483c4) acorn-import-attributes: 1.9.5(acorn@8.11.3(patch_hash=62f89b815dbd769c8a4d5b19b1f6852f28922ecb581d876c8a8377d05c2483c4)) - cjs-module-lexer: 1.4.3 + cjs-module-lexer: 2.2.0 module-details-from-path: 1.0.4 import-meta-resolve@4.0.0: {} @@ -16072,12 +16238,13 @@ snapshots: - supports-color - utf-8-validate - jsdom@28.0.0(@noble/hashes@1.8.0): + jsdom@28.1.0(@noble/hashes@1.8.0): dependencies: '@acemir/cssom': 0.9.31 - '@asamuzakjp/dom-selector': 6.7.6 + '@asamuzakjp/dom-selector': 6.8.1 + '@bramus/specificity': 2.4.2 '@exodus/bytes': 1.11.0(@noble/hashes@1.8.0) - cssstyle: 5.3.7 + cssstyle: 6.0.1 data-urls: 7.0.0(@noble/hashes@1.8.0) decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0(@noble/hashes@1.8.0) @@ -16088,7 +16255,7 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.0 - undici: 7.20.0 + undici: 7.22.0 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 @@ -16342,6 +16509,8 @@ snapshots: lru-cache@11.2.4: {} + lru-cache@11.2.6: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -16369,10 +16538,10 @@ snapshots: source-map-js: 1.2.1 optional: true - magicast@0.5.1: + magicast@0.5.2: dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 source-map-js: 1.2.1 make-dir@4.0.0: @@ -16834,10 +17003,10 @@ snapshots: ms@2.1.3: {} - msw@2.12.7(@types/node@24.10.9)(typescript@5.9.3): + msw@2.12.10(@types/node@24.10.13)(typescript@5.9.3): dependencies: - '@inquirer/confirm': 5.1.18(@types/node@24.10.9) - '@mswjs/interceptors': 0.40.0 + '@inquirer/confirm': 5.1.18(@types/node@24.10.13) + '@mswjs/interceptors': 0.41.3 '@open-draft/deferred-promise': 2.2.0 '@types/statuses': 2.0.6 cookie: 1.0.2 @@ -16847,7 +17016,7 @@ snapshots: outvariant: 1.4.3 path-to-regexp: 6.3.0 picocolors: 1.1.1 - rettime: 0.7.0 + rettime: 0.10.1 statuses: 2.0.2 strict-event-emitter: 0.5.1 tough-cookie: 6.0.0 @@ -17240,11 +17409,11 @@ snapshots: exsolve: 1.0.7 pathe: 2.0.3 - playwright-core@1.58.1: {} + playwright-core@1.58.2: {} - playwright@1.58.1: + playwright@1.58.2: dependencies: - playwright-core: 1.58.1 + playwright-core: 1.58.2 optionalDependencies: fsevents: 2.3.2 @@ -17327,7 +17496,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.10.9 + '@types/node': 24.10.13 long: 5.3.2 protobufjs@8.0.0: @@ -17342,7 +17511,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.10.9 + '@types/node': 24.10.13 long: 5.3.2 proxy-addr@2.0.7: @@ -17538,19 +17707,19 @@ snapshots: dependencies: jsesc: 3.1.0 - reka-ui@2.7.0(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3)): + reka-ui@2.7.0(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)): dependencies: '@floating-ui/dom': 1.7.4 - '@floating-ui/vue': 1.1.9(vue@3.5.27(typescript@5.9.3)) + '@floating-ui/vue': 1.1.9(vue@3.5.28(typescript@5.9.3)) '@internationalized/date': 3.10.1 '@internationalized/number': 3.6.5 - '@tanstack/vue-virtual': 3.13.13(vue@3.5.27(typescript@5.9.3)) + '@tanstack/vue-virtual': 3.13.13(vue@3.5.28(typescript@5.9.3)) '@vueuse/core': 12.8.2(typescript@5.9.3) '@vueuse/shared': 12.8.2(typescript@5.9.3) aria-hidden: 1.2.6 defu: 6.1.4 ohash: 2.0.11 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) transitivePeerDependencies: - '@vue/composition-api' - typescript @@ -17623,7 +17792,7 @@ snapshots: ret@0.5.0: {} - rettime@0.7.0: {} + rettime@0.10.1: {} reusify@1.0.4: {} @@ -17639,10 +17808,10 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-license@3.6.0(picomatch@4.0.3)(rollup@4.57.1): + rollup-plugin-license@3.7.0(picomatch@4.0.3)(rollup@4.57.1): dependencies: commenting: 1.1.0 - fdir: 6.4.4(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.3) lodash: 4.17.21 magic-string: 0.30.21 moment: 2.30.1 @@ -18061,14 +18230,12 @@ snapshots: spdx-expression-parse: 3.0.1 spdx-ranges: 2.1.1 - spdx-exceptions@2.3.0: {} - spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.12 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.22 spdx-expression-parse@4.0.0: dependencies: @@ -18079,8 +18246,6 @@ snapshots: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids@3.0.12: {} - spdx-license-ids@3.0.22: {} spdx-ranges@2.1.1: {} @@ -18116,9 +18281,9 @@ snapshots: split2@4.2.0: {} - splitpanes@4.0.4(vue@3.5.27(typescript@5.9.3)): + splitpanes@4.0.4(vue@3.5.28(typescript@5.9.3)): dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) sprintf-js@1.0.3: {} @@ -18570,7 +18735,7 @@ snapshots: undici@6.21.3: {} - undici@7.20.0: {} + undici@7.22.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -18632,9 +18797,9 @@ snapshots: universalify@2.0.1: {} - unocss@66.6.0(postcss@8.5.6)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): + unocss@66.6.0(postcss@8.5.6)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: - '@unocss/astro': 66.6.0(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@unocss/astro': 66.6.0(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@unocss/cli': 66.6.0 '@unocss/core': 66.6.0 '@unocss/postcss': 66.6.0(postcss@8.5.6) @@ -18652,9 +18817,9 @@ snapshots: '@unocss/transformer-compile-class': 66.6.0 '@unocss/transformer-directives': 66.6.0 '@unocss/transformer-variant-group': 66.6.0 - '@unocss/vite': 66.6.0(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@unocss/vite': 66.6.0(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) optionalDependencies: - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - postcss - supports-color @@ -18750,7 +18915,7 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-plugin-pages@0.33.2(@vue/compiler-sfc@3.5.27)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-router@5.0.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3))): + vite-plugin-pages@0.33.3(@vue/compiler-sfc@3.5.28)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-router@5.0.3(@vue/compiler-sfc@3.5.28)(vue@3.5.28(typescript@5.9.3))): dependencies: '@types/debug': 4.1.12 debug: 4.4.3 @@ -18761,20 +18926,20 @@ snapshots: micromatch: 4.0.8 picocolors: 1.1.1 tinyglobby: 0.2.15 - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) yaml: 2.8.2 optionalDependencies: - '@vue/compiler-sfc': 3.5.27 - vue-router: 5.0.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3)) + '@vue/compiler-sfc': 3.5.28 + vue-router: 5.0.3(@vue/compiler-sfc@3.5.28)(vue@3.5.28(typescript@5.9.3)) transitivePeerDependencies: - supports-color - vite-plugin-pwa@1.2.0(@vite-pwa/assets-generator@1.0.2)(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.4.0): + vite-plugin-pwa@1.2.0(@vite-pwa/assets-generator@1.0.2)(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.4.0): dependencies: debug: 4.4.3 pretty-bytes: 6.1.1 tinyglobby: 0.2.15 - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) workbox-build: 7.1.0(@types/babel__core@7.20.5) workbox-window: 7.4.0 optionalDependencies: @@ -18782,7 +18947,7 @@ snapshots: transitivePeerDependencies: - supports-color - vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -18791,7 +18956,7 @@ snapshots: rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.31.1 @@ -18801,15 +18966,15 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitepress-plugin-group-icons@1.7.1(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): + vitepress-plugin-group-icons@1.7.1(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@iconify-json/logos': 1.2.10 '@iconify-json/vscode-icons': 1.2.40 '@iconify/utils': 3.1.0 optionalDependencies: - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitepress-plugin-llms@1.10.0: + vitepress-plugin-llms@1.11.0: dependencies: gray-matter: 4.0.3 markdown-it: 14.1.0 @@ -18828,12 +18993,12 @@ snapshots: transitivePeerDependencies: - supports-color - vitepress-plugin-tabs@0.7.3(vitepress@2.0.0-alpha.16(@types/node@24.10.9)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)): + vitepress-plugin-tabs@0.7.3(vitepress@2.0.0-alpha.16(@types/node@24.10.13)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)): dependencies: - vitepress: 2.0.0-alpha.16(@types/node@24.10.9)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) - vue: 3.5.27(typescript@5.9.3) + vitepress: 2.0.0-alpha.16(@types/node@24.10.13)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + vue: 3.5.28(typescript@5.9.3) - vitepress@2.0.0-alpha.16(@types/node@24.10.9)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): + vitepress@2.0.0-alpha.16(@types/node@24.10.13)(axios@1.13.4)(change-case@5.4.4)(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.108.0)(postcss@8.5.6)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): dependencies: '@docsearch/css': 4.5.3 '@docsearch/js': 4.5.3 @@ -18843,17 +19008,17 @@ snapshots: '@shikijs/transformers': 3.22.0 '@shikijs/types': 3.21.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 6.0.4(vite@7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) + '@vitejs/plugin-vue': 6.0.4(vite@7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vue/devtools-api': 8.0.5 '@vue/shared': 3.5.27 - '@vueuse/core': 14.2.0(vue@3.5.27(typescript@5.9.3)) - '@vueuse/integrations': 14.2.0(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(vue@3.5.27(typescript@5.9.3)) + '@vueuse/core': 14.2.1(vue@3.5.28(typescript@5.9.3)) + '@vueuse/integrations': 14.2.0(axios@1.13.4)(change-case@5.4.4)(focus-trap@7.8.0)(vue@3.5.28(typescript@5.9.3)) focus-trap: 7.8.0 mark.js: 8.11.1 minisearch: 7.2.0 shiki: 3.21.0 - vite: 7.1.5(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vue: 3.5.27(typescript@5.9.3) + vite: 7.1.5(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vue: 3.5.28(typescript@5.9.3) optionalDependencies: oxc-minify: 0.108.0 postcss: 8.5.6 @@ -18882,24 +19047,24 @@ snapshots: - universal-cookie - yaml - vitest-browser-react@2.0.5(@types/react-dom@18.2.14)(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@packages+vitest): + vitest-browser-react@2.0.5(@types/react-dom@18.2.14)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@packages+vitest): dependencies: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) vitest: link:packages/vitest optionalDependencies: - '@types/react': 19.2.10 + '@types/react': 19.2.14 '@types/react-dom': 18.2.14 - vitest-browser-vue@2.0.2(vitest@packages+vitest)(vue@3.5.27(typescript@5.9.3)): + vitest-browser-vue@2.0.2(vitest@packages+vitest)(vue@3.5.28(typescript@5.9.3)): dependencies: '@vue/test-utils': 2.4.6 vitest: link:packages/vitest - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) vitest-environment-custom@file:test/core/vitest-environment-custom: {} - vitest-package-exports@1.1.2: + vitest-package-exports@1.2.0: dependencies: find-up-simple: 1.0.1 pathe: 2.0.3 @@ -18912,9 +19077,9 @@ snapshots: vue-component-type-helpers@2.0.17: {} - vue-demi@0.14.10(vue@3.5.27(typescript@5.9.3)): + vue-demi@0.14.10(vue@3.5.28(typescript@5.9.3)): dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) vue-eslint-parser@10.2.0(eslint@9.39.2(jiti@2.6.1)): dependencies: @@ -18930,19 +19095,19 @@ snapshots: vue-flow-layout@0.2.0: {} - vue-observe-visibility@2.0.0-alpha.1(vue@3.5.27(typescript@5.9.3)): + vue-observe-visibility@2.0.0-alpha.1(vue@3.5.28(typescript@5.9.3)): dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) - vue-resize@2.0.0-alpha.1(vue@3.5.27(typescript@5.9.3)): + vue-resize@2.0.0-alpha.1(vue@3.5.28(typescript@5.9.3)): dependencies: - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) - vue-router@5.0.2(@vue/compiler-sfc@3.5.27)(vue@3.5.27(typescript@5.9.3)): + vue-router@5.0.3(@vue/compiler-sfc@3.5.28)(vue@3.5.28(typescript@5.9.3)): dependencies: '@babel/generator': 7.29.0 - '@vue-macros/common': 3.1.2(vue@3.5.27(typescript@5.9.3)) - '@vue/devtools-api': 8.0.5 + '@vue-macros/common': 3.1.2(vue@3.5.28(typescript@5.9.3)) + '@vue/devtools-api': 8.0.6 ast-walker-scope: 0.8.3 chokidar: 5.0.0 json5: 2.2.3 @@ -18956,10 +19121,10 @@ snapshots: tinyglobby: 0.2.15 unplugin: 3.0.0 unplugin-utils: 0.3.1 - vue: 3.5.27(typescript@5.9.3) + vue: 3.5.28(typescript@5.9.3) yaml: 2.8.2 optionalDependencies: - '@vue/compiler-sfc': 3.5.27 + '@vue/compiler-sfc': 3.5.28 vue-tsc@3.2.4(typescript@5.9.3): dependencies: @@ -18967,20 +19132,20 @@ snapshots: '@vue/language-core': 3.2.4 typescript: 5.9.3 - vue-virtual-scroller@2.0.0-beta.8(vue@3.5.27(typescript@5.9.3)): + vue-virtual-scroller@2.0.0-beta.8(vue@3.5.28(typescript@5.9.3)): dependencies: mitt: 2.1.0 - vue: 3.5.27(typescript@5.9.3) - vue-observe-visibility: 2.0.0-alpha.1(vue@3.5.27(typescript@5.9.3)) - vue-resize: 2.0.0-alpha.1(vue@3.5.27(typescript@5.9.3)) + vue: 3.5.28(typescript@5.9.3) + vue-observe-visibility: 2.0.0-alpha.1(vue@3.5.28(typescript@5.9.3)) + vue-resize: 2.0.0-alpha.1(vue@3.5.28(typescript@5.9.3)) - vue@3.5.27(typescript@5.9.3): + vue@3.5.28(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.27 - '@vue/compiler-sfc': 3.5.27 - '@vue/runtime-dom': 3.5.27 - '@vue/server-renderer': 3.5.27(vue@3.5.27(typescript@5.9.3)) - '@vue/shared': 3.5.27 + '@vue/compiler-dom': 3.5.28 + '@vue/compiler-sfc': 3.5.28 + '@vue/runtime-dom': 3.5.28 + '@vue/server-renderer': 3.5.28(vue@3.5.28(typescript@5.9.3)) + '@vue/shared': 3.5.28 optionalDependencies: typescript: 5.9.3 @@ -19004,7 +19169,7 @@ snapshots: webdriver@9.20.0: dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@types/ws': 8.18.1 '@wdio/config': 9.20.0 '@wdio/logger': 9.18.0 @@ -19022,7 +19187,7 @@ snapshots: webdriverio@9.20.0: dependencies: - '@types/node': 24.10.9 + '@types/node': 24.10.13 '@types/sinonjs__fake-timers': 8.1.5 '@wdio/config': 9.20.0 '@wdio/logger': 9.18.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index aa8dc45f38d9..90279ad32be1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -60,8 +60,8 @@ catalog: '@types/ws': ^8.18.1 '@unocss/reset': ^66.6.0 '@vitejs/plugin-vue': ^6.0.4 - '@vueuse/core': ^14.2.0 - acorn-walk: ^8.3.4 + '@vueuse/core': ^14.2.1 + acorn-walk: ^8.3.5 birpc: ^4.0.0 cac: ^6.7.14 chai: ^6.2.2 @@ -71,11 +71,11 @@ catalog: istanbul-lib-source-maps: ^5.0.6 istanbul-reports: ^3.2.0 magic-string: ^0.30.21 - magicast: ^0.5.1 - msw: ^2.12.7 + magicast: ^0.5.2 + msw: ^2.12.10 obug: ^2.1.1 pathe: ^2.0.3 - playwright: ^1.58.1 + playwright: ^1.58.2 sirv: ^3.0.2 std-env: ^3.10.0 strip-literal: ^3.1.0 @@ -87,7 +87,7 @@ catalog: typescript: ^5.9.3 unocss: ^66.6.0 vitest-sonar-reporter: 3.0.0 - vue: ^3.5.27 + vue: ^3.5.28 ws: ^8.19.0 onlyBuiltDependencies: - '@sveltejs/kit' diff --git a/test/browser/docker-compose.yaml b/test/browser/docker-compose.yaml index 909338991c3b..6ccc142be7e0 100644 --- a/test/browser/docker-compose.yaml +++ b/test/browser/docker-compose.yaml @@ -1,6 +1,6 @@ services: playwright: - image: mcr.microsoft.com/playwright:v1.58.1-noble + image: mcr.microsoft.com/playwright:v1.58.2-noble command: /bin/sh -c "npx -y playwright@1.58.1 run-server --port 6677 --host 0.0.0.0" init: true ipc: host diff --git a/test/browser/package.json b/test/browser/package.json index 4796390c9305..815016d24ddb 100644 --- a/test/browser/package.json +++ b/test/browser/package.json @@ -30,7 +30,7 @@ "docker": "docker compose" }, "devDependencies": { - "@types/react": "^19.2.10", + "@types/react": "^19.2.14", "@vitejs/plugin-basic-ssl": "^2.1.4", "@vitest/browser": "workspace:*", "@vitest/browser-playwright": "workspace:*", @@ -38,7 +38,7 @@ "@vitest/browser-webdriverio": "workspace:*", "@vitest/bundled-lib": "link:./bundled-lib", "@vitest/cjs-lib": "link:./cjs-lib", - "playwright": "^1.58.1", + "playwright": "^1.58.2", "react": "^19.2.4", "react-dom": "^19.2.4", "tinyexec": "catalog:", diff --git a/test/cli/fixtures/no-module-runner/package.json b/test/cli/fixtures/no-module-runner/package.json index fdc6ec2f6916..6bbc6a4ecc3f 100644 --- a/test/cli/fixtures/no-module-runner/package.json +++ b/test/cli/fixtures/no-module-runner/package.json @@ -10,7 +10,7 @@ "test:run": "vitest run" }, "devDependencies": { - "@types/node": "^24.10.9", + "@types/node": "^24.10.13", "@vitest/ui": "latest", "tinyspy": "^4.0.4", "vite": "latest", diff --git a/test/cli/package.json b/test/cli/package.json index 5b386348343e..20946fae28a3 100644 --- a/test/cli/package.json +++ b/test/cli/package.json @@ -12,8 +12,8 @@ }, "devDependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/sdk-node": "^0.211.0", - "@opentelemetry/sdk-trace-web": "^2.5.0", + "@opentelemetry/sdk-node": "^0.212.0", + "@opentelemetry/sdk-trace-web": "^2.5.1", "@test/pkg-reporter": "link:./deps/pkg-reporter", "@test/test-dep-error": "file:./deps/error", "@test/test-dep-linked": "link:./deps/linked", diff --git a/test/core/package.json b/test/core/package.json index 5b393964b946..dcf74bdfafb9 100644 --- a/test/core/package.json +++ b/test/core/package.json @@ -27,7 +27,7 @@ "@vitest/test-fn": "file:./deps/dep-fn", "@vitest/utils": "workspace:*", "@vitest/web-worker": "workspace:^", - "@vueuse/integrations": "^14.2.0", + "@vueuse/integrations": "^14.2.1", "axios": "^1.13.4", "immutable": "5.1.4", "memfs": "^4.56.10", @@ -40,7 +40,7 @@ "url": "^0.11.4", "vitest": "workspace:*", "vitest-environment-custom": "file:./vitest-environment-custom", - "vitest-package-exports": "^1.1.2", + "vitest-package-exports": "^1.2.0", "vue": "catalog:" } } diff --git a/test/coverage-test/package.json b/test/coverage-test/package.json index 88a0727b0b35..7199f204ab5e 100644 --- a/test/coverage-test/package.json +++ b/test/coverage-test/package.json @@ -21,7 +21,7 @@ "istanbul-lib-coverage": "catalog:", "istanbul-lib-report": "catalog:", "magic-string": "^0.30.21", - "magicast": "^0.5.1", + "magicast": "^0.5.2", "sass-embedded": "^1.97.3", "unplugin-swc": "^1.5.9", "vite": "latest", From 395d1a29e82dbb866383fe95b1977e72de202860 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 20 Feb 2026 20:52:05 +0900 Subject: [PATCH 6/6] fix: remove trailing spaces from diff error log (#9680) Co-authored-by: Vladimir --- packages/expect/src/jest-expect.ts | 4 +- .../components/views/ViewReport.spec.ts | 2 +- packages/utils/src/diff/index.ts | 4 +- test/cli/test/stacktraces.test.ts | 8 +-- .../__snapshots__/jest-expect.test.ts.snap | 72 +++++++++---------- .../test/__snapshots__/mocked.test.ts.snap | 6 +- test/core/test/expect.test.ts | 8 +-- 7 files changed, 52 insertions(+), 52 deletions(-) diff --git a/packages/expect/src/jest-expect.ts b/packages/expect/src/jest-expect.ts index e483676f1062..eaddfe063b04 100644 --- a/packages/expect/src/jest-expect.ts +++ b/packages/expect/src/jest-expect.ts @@ -1235,7 +1235,7 @@ function ordinalOf(i: number) { function formatCalls(spy: MockInstance, msg: string, showActualCall?: any) { if (spy.mock.calls.length) { msg += c.gray( - `\n\nReceived: \n\n${spy.mock.calls + `\n\nReceived:\n\n${spy.mock.calls .map((callArg, i) => { let methodCall = c.bold( ` ${ordinalOf(i + 1)} ${spy.getMockName()} call:\n\n`, @@ -1272,7 +1272,7 @@ function formatReturns( ) { if (results.length) { msg += c.gray( - `\n\nReceived: \n\n${results + `\n\nReceived:\n\n${results .map((callReturn, i) => { let methodCall = c.bold( ` ${ordinalOf(i + 1)} ${spy.getMockName()} call return:\n\n`, diff --git a/packages/ui/client/components/views/ViewReport.spec.ts b/packages/ui/client/components/views/ViewReport.spec.ts index bbb609754c7c..117983888ca4 100644 --- a/packages/ui/client/components/views/ViewReport.spec.ts +++ b/packages/ui/client/components/views/ViewReport.spec.ts @@ -27,7 +27,7 @@ const textStacks = Array.from({ length: 5 }, makeTextStack) const diff = ` \x1B[32m- Expected\x1B[39m \x1B[31m+ Received\x1B[39m - + \x1B[2m Object {\x1B[22m \x1B[2m "a": 1,\x1B[22m \x1B[32m- "b": 2,\x1B[39m diff --git a/packages/utils/src/diff/index.ts b/packages/utils/src/diff/index.ts index 6887e55537b4..4fd6ac9b2078 100644 --- a/packages/utils/src/diff/index.ts +++ b/packages/utils/src/diff/index.ts @@ -110,8 +110,8 @@ export function diff(a: any, b: any, options?: DiffOptions): string | undefined } aDisplay = truncate(aDisplay) bDisplay = truncate(bDisplay) - const aDiff = `${aColor(`${aIndicator} ${aAnnotation}:`)} \n${aDisplay}` - const bDiff = `${bColor(`${bIndicator} ${bAnnotation}:`)} \n${bDisplay}` + const aDiff = `${aColor(`${aIndicator} ${aAnnotation}:`)}\n${aDisplay}` + const bDiff = `${bColor(`${bIndicator} ${bAnnotation}:`)}\n${bDisplay}` return `${aDiff}\n\n${bDiff}` } diff --git a/test/cli/test/stacktraces.test.ts b/test/cli/test/stacktraces.test.ts index c2817e28ac56..4bdcd83960c2 100644 --- a/test/cli/test/stacktraces.test.ts +++ b/test/cli/test/stacktraces.test.ts @@ -264,12 +264,12 @@ it('resolves/rejects', async () => { FAIL repro.test.ts > rejects: resolves when rejection expected AssertionError: promise resolved "3" instead of rejecting - - Expected: + - Expected: Error { "message": "rejected promise", } - + Received: + + Received: 3 ❯ repro.test.ts:13:41 @@ -343,12 +343,12 @@ it('resolves/rejects', async () => { FAIL repro.test.ts > rejects: resolves when rejection expected AssertionError: promise resolved "3" instead of rejecting - - Expected: + - Expected: Error { "message": "rejected promise", } - + Received: + + Received: 3 ❯ repro.test.ts:13:40 diff --git a/test/core/test/__snapshots__/jest-expect.test.ts.snap b/test/core/test/__snapshots__/jest-expect.test.ts.snap index 5fb6d4f82793..5aec9b6bc32a 100644 --- a/test/core/test/__snapshots__/jest-expect.test.ts.snap +++ b/test/core/test/__snapshots__/jest-expect.test.ts.snap @@ -59,10 +59,10 @@ exports[`asymmetric matcher error 4`] = ` exports[`asymmetric matcher error 5`] = ` { "actual": "hello", - "diff": "- Expected: + "diff": "- Expected: stringContainingCustom<"xx"> -+ Received: ++ Received: "hello"", "expected": "stringContainingCustom<"xx">", "message": "expected 'hello' to deeply equal stringContainingCustom<"xx">", @@ -72,10 +72,10 @@ stringContainingCustom<"xx"> exports[`asymmetric matcher error 6`] = ` { "actual": "hello", - "diff": "- Expected: + "diff": "- Expected: not.stringContainingCustom<"ll"> -+ Received: ++ Received: "hello"", "expected": "not.stringContainingCustom<"ll">", "message": "expected 'hello' to deeply equal not.stringContainingCustom<"ll">", @@ -141,12 +141,12 @@ exports[`asymmetric matcher error 10`] = ` exports[`asymmetric matcher error 11`] = ` { "actual": "hello", - "diff": "- Expected: + "diff": "- Expected: testComplexMatcher -+ Received: ++ Received: "hello"", "expected": "testComplexMatcher -+ Received: ++ Received: "foo"", "expected": "toBeOneOf, null, undefined, ]> -+ Received: ++ Received: 0", "expected": "toBeOneOf, @@ -272,7 +272,7 @@ exports[`asymmetric matcher error 18`] = ` "k": "v", "k2": "v2", }", - "diff": "- Expected: + "diff": "- Expected: toBeOneOf -+ Received: ++ Received: { "k": "v", "k2": "v2", @@ -320,10 +320,10 @@ exports[`asymmetric matcher error 20`] = ` exports[`asymmetric matcher error 21`] = ` { "actual": "hello", - "diff": "- Expected: + "diff": "- Expected: stringContainingCustom<"xx"> -+ Received: ++ Received: "hello"", "expected": "stringContainingCustom<"xx">", "message": "expected error to match asymmetric matcher", @@ -342,10 +342,10 @@ exports[`asymmetric matcher error 22`] = ` exports[`asymmetric matcher error 23`] = ` { "actual": "hello", - "diff": "- Expected: + "diff": "- Expected: stringContainingCustom<"ll"> -+ Received: ++ Received: "hello"", "expected": "stringContainingCustom<"ll">", "message": "expected error not to match asymmetric matcher", @@ -355,10 +355,10 @@ stringContainingCustom<"ll"> exports[`asymmetric matcher error 24`] = ` { "actual": "[Error: hello]", - "diff": "- Expected: + "diff": "- Expected: StringContaining "ll" -+ Received: ++ Received: Error { "message": "hello", }", @@ -370,10 +370,10 @@ Error { exports[`asymmetric matcher error 25`] = ` { "actual": "[Error: hello]", - "diff": "- Expected: + "diff": "- Expected: stringContainingCustom<"ll"> -+ Received: ++ Received: Error { "message": "hello", }", @@ -385,10 +385,10 @@ Error { exports[`asymmetric matcher error 26`] = ` { "actual": "[Error: hello]", - "diff": "- Expected: + "diff": "- Expected: [Function MyError1] -+ Received: ++ Received: MyError2 { "message": "hello", }", @@ -400,10 +400,10 @@ MyError2 { exports[`diff 1`] = ` { "actual": "undefined", - "diff": "- Expected: + "diff": "- Expected: true -+ Received: ++ Received: undefined", "expected": "true", "message": "expected undefined to be truthy", @@ -415,10 +415,10 @@ exports[`diff 2`] = ` "actual": "Object { "hello": "world", }", - "diff": "- Expected: + "diff": "- Expected: false -+ Received: ++ Received: { "hello": "world", }", @@ -432,10 +432,10 @@ exports[`diff 3`] = ` "actual": "Object { "hello": "world", }", - "diff": "- Expected: + "diff": "- Expected: NaN -+ Received: ++ Received: { "hello": "world", }", @@ -449,10 +449,10 @@ exports[`diff 4`] = ` "actual": "Object { "hello": "world", }", - "diff": "- Expected: + "diff": "- Expected: undefined -+ Received: ++ Received: { "hello": "world", }", @@ -466,10 +466,10 @@ exports[`diff 5`] = ` "actual": "Object { "hello": "world", }", - "diff": "- Expected: + "diff": "- Expected: null -+ Received: ++ Received: { "hello": "world", }", @@ -747,7 +747,7 @@ exports[`toBeOneOf() > error message 3`] = ` "actual": "Object { "a": 0, }", - "diff": "- Expected: + "diff": "- Expected: toBeOneOf -+ Received: ++ Received: { "a": 0, }", @@ -851,10 +851,10 @@ Received: "hellohellohellohellohellohellohellohellohellohellohellohellohellohell exports[`toMatch/toContain diff 3`] = ` { "actual": "hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello", - "diff": "- Expected: + "diff": "- Expected: /world/ -+ Received: ++ Received: "hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello"", "expected": "/world/", "message": "expected 'hellohellohellohellohellohellohellohe…' to match /world/", diff --git a/test/core/test/__snapshots__/mocked.test.ts.snap b/test/core/test/__snapshots__/mocked.test.ts.snap index 808a273cd11a..31a7826e1ee0 100644 --- a/test/core/test/__snapshots__/mocked.test.ts.snap +++ b/test/core/test/__snapshots__/mocked.test.ts.snap @@ -3,7 +3,7 @@ exports[`mocked function which fails on toReturnWith > just one call 1`] = ` "expected "vi.fn()" to return with: 2 at least once -Received: +Received: 1st vi.fn() call return: @@ -18,7 +18,7 @@ Number of calls: 1 exports[`mocked function which fails on toReturnWith > multi calls 1`] = ` "expected "vi.fn()" to return with: 2 at least once -Received: +Received: 1st vi.fn() call return: @@ -43,7 +43,7 @@ Number of calls: 3 exports[`mocked function which fails on toReturnWith > oject type 1`] = ` "expected "vi.fn()" to return with: { a: '4' } at least once -Received: +Received: 1st vi.fn() call return: diff --git a/test/core/test/expect.test.ts b/test/core/test/expect.test.ts index 998a7e5ec40c..f7db869cd890 100644 --- a/test/core/test/expect.test.ts +++ b/test/core/test/expect.test.ts @@ -535,7 +535,7 @@ describe('Standard Schema', () => { const error = processError(err) const diff = stripVTControlCharacters(error.diff!) expect(diff).toMatchInlineSnapshot(` - "- Expected: + "- Expected: SchemaMatching { "issues": [ { @@ -544,7 +544,7 @@ describe('Standard Schema', () => { ], } - + Received: + + Received: 123" `) } @@ -673,10 +673,10 @@ describe('Standard Schema', () => { const error = processError(err) const diff = stripVTControlCharacters(error.diff!) expect(diff).toMatchInlineSnapshot(` - "- Expected: + "- Expected: SchemaMatching - + Received: + + Received: "hello"" `) }