diff --git a/README.md b/README.md index 4d3abc62..9c93bbab 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,7 @@ These options are resolved relative to the [workspace file](https://code.visuals - `vitest.debuggerPort`: Port that the debugger will be attached to. By default uses 9229 or tries to find a free port if it's not available. - `vitest.debuggerAddress`: TCP/IP address of process to be debugged. Default: localhost - `vitest.cliArguments`: Additional arguments to pass to the Vitest CLI. Note that some arguments will be ignored: `watch`, `reporter`, `api`, and `ui`. Example: `--mode=staging` +- `vitest.showImportsDuration`: Show how long it took to import and transform the modules. When hovering, the extension provides more diagnostics. > 💡 The `vitest.nodeExecutable` and `vitest.nodeExecArgs` settings are used as `execPath` and `execArgv` when spawning a new `child_process`, and as `runtimeExecutable` and `runtimeArgs` when [debugging a test](https://github.com/microsoft/vscode-js-debug/blob/main/OPTIONS.md). > The `vitest.terminalShellPath` and `vitest.terminalShellArgs` settings are used as `shellPath` and `shellArgs` when creating a new [terminal](https://code.visualstudio.com/api/references/vscode-api#Terminal) @@ -111,6 +112,16 @@ You can also type the same command in the quick picker while the file is open. ![Reveal test in explorer](./img/reveal-in-picker.png "Reveal test in explorer") +### Import Breakdown + +If you use Vitest 4.0.15 or higher, the extension will show how long it took to load the module on the same line where the import is defined. This number includes transform time and evaluation time, including static imports. + +If you hover over it, you can get a more detailed diagnostic. + +![Import breakdown example](./img/import-breakdown.png "Import breakdown example") + +You can disable this feature by turning off `vitest.showImportsDuration`. + ### Experimental If the extension hangs, consider enabling `vitest.experimentalStaticAstCollect` option to use static analysis instead of actually running the test file every time you make a change which can cause visible hangs if it takes a long time to setup the test. diff --git a/img/import-breakdown.png b/img/import-breakdown.png new file mode 100644 index 00000000..941ac297 Binary files /dev/null and b/img/import-breakdown.png differ diff --git a/package.json b/package.json index 6c7a4889..6c92879c 100644 --- a/package.json +++ b/package.json @@ -262,6 +262,11 @@ "description": "Show a squiggly line where the error was thrown. This also enables the error count in the File Tab.", "type": "boolean", "default": true + }, + "vitest.showImportsDuration": { + "description": "Show how long it took to import the module during the last test run. If multiple isolated tests imported the module, the times will be aggregated.", + "type": "boolean", + "default": true } } } diff --git a/packages/extension/src/api.ts b/packages/extension/src/api.ts index 94430f99..1bfa30e8 100644 --- a/packages/extension/src/api.ts +++ b/packages/extension/src/api.ts @@ -1,4 +1,4 @@ -import type { ExtensionTestSpecification } from 'vitest-vscode-shared' +import type { ExtensionTestSpecification, ModuleDefinitionDurationsDiagnostic } from 'vitest-vscode-shared' import type { VitestPackage } from './api/pkg' import type { ExtensionWorkerEvents, VitestExtensionRPC } from './api/rpc' import type { ExtensionWorkerProcess } from './api/types' @@ -44,6 +44,45 @@ export class VitestAPI { return this.api.forEach(callback) } + async getSourceModuleDiagnostic(moduleId: string) { + const allDiagnostic = await Promise.all( + this.folderAPIs.map(api => api.getSourceModuleDiagnostic(moduleId)), + ) + const modules = allDiagnostic[0]?.modules || [] + const untrackedModules = allDiagnostic[0]?.untrackedModules || [] + + type TimeDiagnostic = Pick + const aggregateModules = (aggregatedModule: TimeDiagnostic, currentMod: TimeDiagnostic) => { + if (aggregatedModule.resolvedId === currentMod.resolvedId) { + aggregatedModule.selfTime += currentMod.selfTime + aggregatedModule.totalTime += currentMod.totalTime + if (aggregatedModule.transformTime != null && currentMod.transformTime != null) { + aggregatedModule.transformTime += currentMod.transformTime + } + } + } + + // aggregate time from _other_ diagnostics that could've potentially imported this file + for (let i = 1; i < allDiagnostic.length; i++) { + const currentDiagnostic = allDiagnostic[i] + currentDiagnostic.modules.forEach((mod, index) => { + const aggregatedModule = modules[index] + + aggregateModules(aggregatedModule, mod) + }) + currentDiagnostic.untrackedModules.forEach((mod, index) => { + const aggregatedModule = untrackedModules[index] + + aggregateModules(aggregatedModule, mod) + }) + } + + return { + modules, + untrackedModules, + } + } + getModuleEnvironments(moduleId: string) { return Promise.all( this.api.map(async (api) => { @@ -127,6 +166,10 @@ export class VitestFolderAPI { return this.meta.rpc.getTransformedModule(project, environment, moduleId) } + getSourceModuleDiagnostic(moduleId: string) { + return this.meta.rpc.getSourceModuleDiagnostic(moduleId) + } + async getModuleEnvironments(moduleId: string) { return this.meta.rpc.getModuleEnvironments(moduleId) } diff --git a/packages/extension/src/config.ts b/packages/extension/src/config.ts index 659c2df8..dcc14e6f 100644 --- a/packages/extension/src/config.ts +++ b/packages/extension/src/config.ts @@ -97,6 +97,7 @@ export function getConfig(workspaceFolder?: WorkspaceFolder) { debuggerPort: get('debuggerPort') || undefined, debuggerAddress: get('debuggerAddress', undefined) || undefined, logLevel, + showImportsDuration: get('showImportsDuration', true) ?? true, } } diff --git a/packages/extension/src/debug.ts b/packages/extension/src/debug.ts index 144a5c29..2d2809f4 100644 --- a/packages/extension/src/debug.ts +++ b/packages/extension/src/debug.ts @@ -2,6 +2,7 @@ import type { VitestPackage } from './api/pkg' import type { ExtensionWorkerProcess } from './api/types' import type { WsConnectionMetadata } from './api/ws' import type { ExtensionDiagnostic } from './diagnostic' +import type { ImportsBreakdownProvider } from './importsBreakdownProvider' import type { TestTree } from './testTree' import crypto from 'node:crypto' import { createServer } from 'node:http' @@ -26,6 +27,7 @@ export async function debugTests( tree: TestTree, pkg: VitestPackage, diagnostic: ExtensionDiagnostic | undefined, + importsBreakdown: ImportsBreakdownProvider, request: vscode.TestRunRequest, token: vscode.CancellationToken, @@ -152,6 +154,7 @@ export async function debugTests( tree, api, diagnostic, + importsBreakdown, ) disposables.push(api, runner) diff --git a/packages/extension/src/extension.ts b/packages/extension/src/extension.ts index c8254185..2a29d402 100644 --- a/packages/extension/src/extension.ts +++ b/packages/extension/src/extension.ts @@ -10,6 +10,7 @@ import { configGlob, workspaceGlob } from './constants' import { coverageContext } from './coverage' import { DebugManager, debugTests } from './debug' import { ExtensionDiagnostic } from './diagnostic' +import { ImportsBreakdownProvider } from './importsBreakdownProvider' import { log } from './log' import { TestRunner } from './runner' import { SchemaProvider } from './schemaProvider' @@ -43,6 +44,7 @@ class VitestExtension { private diagnostic: ExtensionDiagnostic | undefined private debugManager: DebugManager private schemaProvider: SchemaProvider + private importsBreakdownProvider: ImportsBreakdownProvider /** @internal */ _debugDisposable: vscode.Disposable | undefined @@ -66,6 +68,12 @@ class VitestExtension { this.testTree = new TestTree(this.testController, this.loadingTestItem, this.schemaProvider) this.tagsManager = new TagsManager(this.testTree) this.debugManager = new DebugManager() + this.importsBreakdownProvider = new ImportsBreakdownProvider( + async (moduleId: string) => this.api?.getSourceModuleDiagnostic(moduleId) || { + modules: [], + untrackedModules: [], + }, + ) } private _defineTestProfilePromise: Promise | undefined @@ -158,6 +166,7 @@ class VitestExtension { this.testTree, api, this.diagnostic, + this.importsBreakdownProvider, ) this.runners.push(runner) @@ -200,6 +209,7 @@ class VitestExtension { this.testTree, api.package, this.diagnostic, + this.importsBreakdownProvider, request, token, @@ -483,6 +493,7 @@ class VitestExtension { this.tagsManager.dispose() this.testController.dispose() this.schemaProvider.dispose() + this.importsBreakdownProvider.dispose() this.runProfiles.forEach(profile => profile.dispose()) this.runProfiles.clear() this.disposables.forEach(d => d.dispose()) diff --git a/packages/extension/src/importsBreakdownProvider.ts b/packages/extension/src/importsBreakdownProvider.ts new file mode 100644 index 00000000..ab329edc --- /dev/null +++ b/packages/extension/src/importsBreakdownProvider.ts @@ -0,0 +1,163 @@ +import type { SourceModuleDiagnostic } from 'vitest-vscode-shared' +import { relative } from 'node:path' +import { pathToFileURL } from 'node:url' +import * as vscode from 'vscode' +import { getConfig } from './config' +import { log } from './log' + +export class ImportsBreakdownProvider { + private disposables: vscode.Disposable[] = [] + private decorationType: vscode.TextEditorDecorationType + + private _decorations = new Map() + + private showDecorations = getConfig().showImportsDuration + + constructor( + private getSourceModuleDiagnostic: (moduleId: string) => Promise, + ) { + // Create a decoration type with gray color + this.decorationType = vscode.window.createTextEditorDecorationType({ + after: { + color: '#808080', + margin: '0 0 0 0.5em', + }, + }) + + // Update decorations when the active editor changes + this.disposables.push( + vscode.window.onDidChangeActiveTextEditor((editor) => { + if (editor) { + this.updateDecorations(editor) + } + }), + ) + + // Update decorations when the document changes + this.disposables.push( + vscode.workspace.onDidChangeTextDocument((event) => { + const editor = vscode.window.activeTextEditor + if (editor && event.document === editor.document) { + this.updateDecorations(editor) + } + }), + ) + + this.disposables.push( + vscode.workspace.onDidChangeConfiguration((event) => { + if (event.affectsConfiguration('vitest.showImportsDuration')) { + this.showDecorations = getConfig().showImportsDuration + + this.refreshCurrentDecorations() + } + }), + ) + + // Update decorations for the currently active editor + if (vscode.window.activeTextEditor) { + this.updateDecorations(vscode.window.activeTextEditor) + } + } + + public refreshCurrentDecorations() { + log.info('[DECOR] Reset all decorations.') + this._decorations.clear() + + // Update decorations for the currently active editor + if (vscode.window.activeTextEditor) { + this.updateDecorations(vscode.window.activeTextEditor) + } + } + + private async updateDecorations(editor: vscode.TextEditor) { + const document = editor.document + if (!this.showDecorations || document.uri.scheme !== 'file' || !document.lineCount) { + editor.setDecorations(this.decorationType, []) + return + } + const fsPath = document.uri.fsPath + if (this._decorations.has(fsPath)) { + log.info('[DECOR] Decorations for', fsPath, 'are already cached. Displaying them.') + editor.setDecorations(this.decorationType, this._decorations.get(fsPath)!) + return + } + + const diagnostic = await this.getSourceModuleDiagnostic(fsPath).catch(() => null) + if (!diagnostic || !diagnostic.modules) { + editor.setDecorations(this.decorationType, []) + return + } + + const decorations: vscode.DecorationOptions[] = [] + + // TODO: untracked modules somehow? + diagnostic.modules.forEach((diagnostic) => { + const range = new vscode.Range( + diagnostic.start.line - 1, + diagnostic.start.column, + diagnostic.end.line - 1, + diagnostic.end.column, + ) + + const overallTime = diagnostic.totalTime + (diagnostic.transformTime || 0) + let color: string | undefined + if (overallTime >= 500) { + color = 'rgb(248 113 113 / 0.8)' + } + else if (overallTime >= 100) { + color = 'rgb(251 146 60 / 0.8)' + } + + let diagnosticMessage = ` +### VITEST DIAGNOSTIC +- It took **${formatPreciseTime(diagnostic.totalTime)}** to import this module, including static imports. +- It took **${formatPreciseTime(diagnostic.selfTime)}** to import this modules, excluding static imports. +- It took **${formatPreciseTime(diagnostic.transformTime || 0)}** to transform this module.` + + if (diagnostic.external) { + diagnosticMessage += `\n- This module was **externalized** to [${diagnostic.resolvedUrl}](${pathToFileURL(diagnostic.resolvedId).toString()})` + } + if (diagnostic.importer && document.fileName !== diagnostic.importer) { + diagnosticMessage += `\n- This module was originally imported by [${relative(document.fileName, diagnostic.importer)}](${pathToFileURL(diagnostic.importer)})` + } + + diagnosticMessage += `\n\nYou can disable diagnostic by setting [\`vitest.showImportsDuration\`](command:workbench.action.openSettings?%5B%22vitest.showImportsDuration%22%5D) option in your VSCode settings to \`false\`.` + const ms = new vscode.MarkdownString(diagnosticMessage) + ms.isTrusted = true + + decorations.push({ + range, + hoverMessage: ms, + renderOptions: { + after: { + color, + contentText: formatTime(overallTime), + }, + }, + }) + }) + + this._decorations.set(fsPath, decorations) + + editor.setDecorations(this.decorationType, decorations) + } + + dispose() { + this.decorationType.dispose() + this.disposables.forEach(d => d.dispose()) + } +} + +function formatTime(time: number): string { + if (time > 1000) { + return `${(time / 1000).toFixed(2)}s` + } + return `${Math.round(time)}ms` +} + +function formatPreciseTime(time: number): string { + if (time > 1000) { + return `${(time / 1000).toFixed(2)}s` + } + return `${time.toFixed(2)}ms` +} diff --git a/packages/extension/src/runner.ts b/packages/extension/src/runner.ts index a6267549..4b03cd8b 100644 --- a/packages/extension/src/runner.ts +++ b/packages/extension/src/runner.ts @@ -2,6 +2,7 @@ import type { ParsedStack, RunnerTaskResult, TestError } from 'vitest' import type { ExtensionTestSpecification } from 'vitest-vscode-shared' import type { VitestFolderAPI } from './api' import type { ExtensionDiagnostic } from './diagnostic' +import type { ImportsBreakdownProvider } from './importsBreakdownProvider' import type { TestTree } from './testTree' import { rm } from 'node:fs/promises' import path from 'node:path' @@ -34,6 +35,7 @@ export class TestRunner extends vscode.Disposable { private readonly tree: TestTree, private readonly api: VitestFolderAPI, private readonly diagnostic: ExtensionDiagnostic | undefined, + private readonly importsBreakdown: ImportsBreakdownProvider, ) { super(() => { log.verbose?.('Disposing test runner') @@ -94,6 +96,8 @@ export class TestRunner extends vscode.Disposable { if (collecting) return + this.importsBreakdown.refreshCurrentDecorations() + getTasks(file).forEach((task) => { const test = this.tree.getTestItemByTask(task) if (!test) { diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index b34770ec..ed890107 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -55,6 +55,7 @@ export interface ExtensionWorkerTransport { watchTests: (filesOrDirectories?: ExtensionTestSpecification[] | string[], testNamePattern?: string) => void unwatchTests: () => void + getSourceModuleDiagnostic: (moduleId: string) => Promise invalidateIstanbulTestModules: (modules: string[] | null) => Promise enableCoverage: () => void @@ -82,6 +83,44 @@ export interface ExtensionWorkerEvents { onProcessLog: (type: 'stdout' | 'stderr', log: string) => void } +// todo@vitest4 when supporting only vitest 4, import from vitest +interface ModuleDefinitionLocation { + line: number + column: number +} +export interface ModuleDefinitionDiagnostic { + start: ModuleDefinitionLocation + end: ModuleDefinitionLocation + startIndex: number + endIndex: number + rawUrl: string + resolvedUrl: string + resolvedId: string +} + +export interface ModuleDefinitionDurationsDiagnostic extends ModuleDefinitionDiagnostic { + selfTime: number + totalTime: number + transformTime?: number + external?: boolean + importer?: string +} + +export interface UntrackedModuleDefinitionDiagnostic { + url: string + resolvedId: string + resolvedUrl: string + selfTime: number + totalTime: number + transformTime?: number + external?: boolean + importer?: string +} +export interface SourceModuleDiagnostic { + modules: ModuleDefinitionDurationsDiagnostic[] + untrackedModules: UntrackedModuleDefinitionDiagnostic[] +} + export type VitestExtensionRPC = BirpcReturn export type VitestWorkerRPC = BirpcReturn diff --git a/packages/worker-legacy/src/worker.ts b/packages/worker-legacy/src/worker.ts index 5aa21336..8dee3a1d 100644 --- a/packages/worker-legacy/src/worker.ts +++ b/packages/worker-legacy/src/worker.ts @@ -434,4 +434,11 @@ export class ExtensionWorker implements ExtensionWorkerTransport { getTransformedModule() { return null } + + async getSourceModuleDiagnostic(_moduleId: string) { + return { + modules: [], + untrackedModules: [], + } + } } diff --git a/packages/worker/src/index.ts b/packages/worker/src/index.ts index ec08aa31..a3414fb3 100644 --- a/packages/worker/src/index.ts +++ b/packages/worker/src/index.ts @@ -46,14 +46,6 @@ export async function initVitest( globalThis.console = new Console(stdout, stderr) } - const pnpExecArgv = meta.pnpApi && meta.pnpLoader - ? [ - '--require', - meta.pnpApi, - '--experimental-loader', - meta.pnpLoader, - ] - : undefined const args = meta.arguments ? vitestModule.parseCLI(meta.arguments, { allowUnknownOptions: false, @@ -78,22 +70,14 @@ export async function initVitest( reporters: [reporter], ui: false, includeTaskLocation: true, - poolOptions: meta.pnpApi && meta.pnpLoader - ? { - threads: { - execArgv: pnpExecArgv, - }, - forks: { - execArgv: pnpExecArgv, - }, - vmForks: { - execArgv: pnpExecArgv, - }, - vmThreads: { - execArgv: pnpExecArgv, - }, - } - : {}, + execArgv: meta.pnpApi && meta.pnpLoader + ? [ + '--require', + meta.pnpApi, + '--experimental-loader', + meta.pnpLoader, + ] + : [], } const vitest = await vitestModule.createVitest( 'test', @@ -151,6 +135,13 @@ export async function initVitest( context.project.config.inspector = context.vitest.config.inspector } }, + api: { + vitest: { + experimental: { + ignoreFsModuleCache: true, + }, + }, + }, }, ], }, diff --git a/packages/worker/src/reporter.ts b/packages/worker/src/reporter.ts index 79aa664a..8d6a7631 100644 --- a/packages/worker/src/reporter.ts +++ b/packages/worker/src/reporter.ts @@ -113,6 +113,7 @@ export class VSCodeReporter implements Reporter { onTestRunStart(specifications: ReadonlyArray) { const files = specifications.map(spec => spec.moduleId) this.rpc.onTestRunStart(Array.from(new Set(files)), false) + this.vitest.state.filesMap.clear() } onTestRunEnd(testModules: ReadonlyArray, unhandledErrors: ReadonlyArray) { diff --git a/packages/worker/src/worker.ts b/packages/worker/src/worker.ts index 086ec99a..6cf0fa82 100644 --- a/packages/worker/src/worker.ts +++ b/packages/worker/src/worker.ts @@ -136,6 +136,16 @@ export class ExtensionWorker implements ExtensionWorkerTransport { return files.values().next().value?.transformResult?.code ?? null } + async getSourceModuleDiagnostic(moduleId: string) { + if (!this.vitest.experimental_getSourceModuleDiagnostic) { + return { + modules: [], + untrackedModules: [], + } + } + return await this.vitest.experimental_getSourceModuleDiagnostic(moduleId) + } + onBrowserDebug(fulfilled: boolean) { ExtensionWorker.emitter.emit('onBrowserDebug', fulfilled) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f063aed1..ea7bcb3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,23 +7,23 @@ settings: catalogs: latest: '@vitest/browser': - specifier: ^4.0.14 - version: 4.0.14 + specifier: ^4.0.15 + version: 4.0.15 '@vitest/browser-playwright': - specifier: ^4.0.14 - version: 4.0.14 + specifier: ^4.0.15 + version: 4.0.15 '@vitest/coverage-v8': - specifier: ^4.0.14 - version: 4.0.14 + specifier: ^4.0.15 + version: 4.0.15 '@vitest/utils': - specifier: ^4.0.14 - version: 4.0.14 + specifier: ^4.0.15 + version: 4.0.15 vite: specifier: ^7.2.6 version: 7.2.6 vitest: - specifier: ^4.0.14 - version: 4.0.14 + specifier: ^4.0.15 + version: 4.0.15 v3: '@vitest/browser': specifier: ^3.2.4 @@ -44,7 +44,7 @@ importers: devDependencies: '@antfu/eslint-config': specifier: ^4.14.1 - version: 4.19.0(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.14) + version: 4.19.0(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.15) '@playwright/test': specifier: ^1.42.1 version: 1.57.0 @@ -152,7 +152,7 @@ importers: version: 5.9.3 vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) which: specifier: ^4.0.0 version: 4.0.0 @@ -188,10 +188,10 @@ importers: devDependencies: '@vitest/utils': specifier: catalog:latest - version: 4.0.14 + version: 4.0.15 vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) vitest-vscode-shared: specifier: workspace:* version: link:../shared @@ -219,13 +219,13 @@ importers: devDependencies: '@vitest/coverage-v8': specifier: catalog:latest - version: 4.0.14(@vitest/browser@4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14))(vitest@4.0.14) + version: 4.0.15(@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15) vite: specifier: catalog:latest version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/basic: dependencies: @@ -235,28 +235,28 @@ importers: devDependencies: '@vitest/coverage-v8': specifier: catalog:latest - version: 4.0.14(@vitest/browser@4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14))(vitest@4.0.14) + version: 4.0.15(@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15) vite: specifier: catalog:latest version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/basic-v4: devDependencies: '@vitest/browser': specifier: catalog:latest - version: 4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14) + version: 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) '@vitest/coverage-v8': specifier: catalog:latest - version: 4.0.14(@vitest/browser@4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14))(vitest@4.0.14) + version: 4.0.15(@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15) vite: specifier: catalog:latest version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/browser: dependencies: @@ -266,13 +266,13 @@ importers: devDependencies: '@vitest/browser': specifier: catalog:latest - version: 4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14) + version: 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) '@vitest/browser-playwright': specifier: catalog:latest - version: 4.0.14(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14) + version: 4.0.15(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) '@vitest/coverage-v8': specifier: catalog:latest - version: 4.0.14(@vitest/browser@4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14))(vitest@4.0.14) + version: 4.0.15(@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15) playwright: specifier: ^1.47.0 version: 1.57.0 @@ -281,19 +281,19 @@ importers: version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/continuous: devDependencies: vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/e2e: devDependencies: vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/imba: devDependencies: @@ -305,7 +305,7 @@ importers: version: 6.9.1 imba: specifier: ^2.0.0-alpha.235 - version: 2.0.0-alpha.247(@testing-library/dom@9.3.4)(@testing-library/jest-dom@6.9.1)(picomatch@4.0.3)(vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14) + version: 2.0.0-alpha.247(@testing-library/dom@9.3.4)(@testing-library/jest-dom@6.9.1)(picomatch@4.0.3)(vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) jsdom: specifier: ^24.0.0 version: 24.1.3 @@ -314,13 +314,13 @@ importers: version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-imba: specifier: ^0.10.3 - version: 0.10.3(imba@2.0.0-alpha.247(@testing-library/dom@9.3.4)(@testing-library/jest-dom@6.9.1)(picomatch@4.0.3)(vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 0.10.3(imba@2.0.0-alpha.247(@testing-library/dom@9.3.4)(@testing-library/jest-dom@6.9.1)(picomatch@4.0.3)(vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@24.1.3)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@24.1.3)(tsx@4.21.0)(yaml@2.8.2) vitest-github-actions-reporter-temp: specifier: ^0.8.3 - version: 0.8.3(vitest@4.0.14) + version: 0.8.3(vitest@4.0.15) samples/in-source: devDependencies: @@ -329,19 +329,19 @@ importers: version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/monorepo-vitest-workspace: devDependencies: '@vitest/coverage-v8': specifier: catalog:latest - version: 4.0.14(@vitest/browser@4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14))(vitest@4.0.14) + version: 4.0.15(@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15) happy-dom: specifier: ^15.7.4 version: 15.11.7 vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/monorepo-vitest-workspace/packages/react: dependencies: @@ -397,19 +397,19 @@ importers: dependencies: vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/no-config: devDependencies: vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/readme: devDependencies: vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) samples/vue: dependencies: @@ -422,7 +422,7 @@ importers: version: 6.0.2(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) '@vitest/coverage-v8': specifier: catalog:latest - version: 4.0.14(@vitest/browser@4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14))(vitest@4.0.14) + version: 4.0.15(@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15) '@vue/test-utils': specifier: ^2.4.5 version: 2.4.6 @@ -434,7 +434,7 @@ importers: version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: catalog:latest - version: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@14.7.1)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@14.7.1)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) packages: @@ -1589,11 +1589,11 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 vue: ^3.2.25 - '@vitest/browser-playwright@4.0.14': - resolution: {integrity: sha512-rUvyz6wX6wDjcYzf/7fgXYfca2bAu0Axoq/v9LYdELzcBSS9UKjnZ7MaMY4UDP78HHHCdmdtceuSao1s51ON8A==} + '@vitest/browser-playwright@4.0.15': + resolution: {integrity: sha512-94yVpDbb+ykiT7mK6ToonGnq2GIHEQGBTZTAzGxBGQXcVNCh54YKC2/WkfaDzxy0m6Kgw05kq3FYHKHu+wRdIA==} peerDependencies: playwright: '*' - vitest: 4.0.14 + vitest: 4.0.15 '@vitest/browser@3.2.4': resolution: {integrity: sha512-tJxiPrWmzH8a+w9nLKlQMzAKX/7VjFs50MWgcAj7p9XQ7AQ9/35fByFYptgPELyLw+0aixTnC4pUWV+APcZ/kw==} @@ -1610,16 +1610,16 @@ packages: webdriverio: optional: true - '@vitest/browser@4.0.14': - resolution: {integrity: sha512-vO0uqR8SnPTd8ykp14yaIuUyMZ9HEBYuoZrVdUp7RrEp76VEnkrX9fDkGnK0NyBdfWXB6cqp7BmqVekd8yKHFQ==} + '@vitest/browser@4.0.15': + resolution: {integrity: sha512-zedtczX688KehaIaAv7m25CeDLb0gBtAOa2Oi1G1cqvSO5aLSVfH6lpZMJLW8BKYuWMxLQc9/5GYoM+jgvGIrw==} peerDependencies: - vitest: 4.0.14 + vitest: 4.0.15 - '@vitest/coverage-v8@4.0.14': - resolution: {integrity: sha512-EYHLqN/BY6b47qHH7gtMxAg++saoGmsjWmAq9MlXxAz4M0NcHh9iOyKhBZyU4yxZqOd8Xnqp80/5saeitz4Cng==} + '@vitest/coverage-v8@4.0.15': + resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==} peerDependencies: - '@vitest/browser': 4.0.14 - vitest: 4.0.14 + '@vitest/browser': 4.0.15 + vitest: 4.0.15 peerDependenciesMeta: '@vitest/browser': optional: true @@ -1640,8 +1640,8 @@ packages: '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/expect@4.0.14': - resolution: {integrity: sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw==} + '@vitest/expect@4.0.15': + resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} '@vitest/mocker@3.2.4': resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} @@ -1654,8 +1654,8 @@ packages: vite: optional: true - '@vitest/mocker@4.0.14': - resolution: {integrity: sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg==} + '@vitest/mocker@4.0.15': + resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -1668,32 +1668,32 @@ packages: '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/pretty-format@4.0.14': - resolution: {integrity: sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ==} + '@vitest/pretty-format@4.0.15': + resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} '@vitest/runner@3.2.4': resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} - '@vitest/runner@4.0.14': - resolution: {integrity: sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw==} + '@vitest/runner@4.0.15': + resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} '@vitest/snapshot@3.2.4': resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} - '@vitest/snapshot@4.0.14': - resolution: {integrity: sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag==} + '@vitest/snapshot@4.0.15': + resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} '@vitest/spy@3.2.4': resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/spy@4.0.14': - resolution: {integrity: sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg==} + '@vitest/spy@4.0.15': + resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vitest/utils@4.0.14': - resolution: {integrity: sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw==} + '@vitest/utils@4.0.15': + resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} '@vscode/test-cli@0.0.6': resolution: {integrity: sha512-4i61OUv5PQr3GxhHOuUgHdgBDfIO/kXTPCsEyFiMaY4SOqQTgkTmyZLagHehjOgCfsXdcrJa3zgQ7zoc+Dh6hQ==} @@ -5064,18 +5064,18 @@ packages: jsdom: optional: true - vitest@4.0.14: - resolution: {integrity: sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==} + vitest@4.0.15: + resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.14 - '@vitest/browser-preview': 4.0.14 - '@vitest/browser-webdriverio': 4.0.14 - '@vitest/ui': 4.0.14 + '@vitest/browser-playwright': 4.0.15 + '@vitest/browser-preview': 4.0.15 + '@vitest/browser-webdriverio': 4.0.15 + '@vitest/ui': 4.0.15 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5319,7 +5319,7 @@ snapshots: '@adobe/css-tools@4.4.4': {} - '@antfu/eslint-config@4.19.0(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.14)': + '@antfu/eslint-config@4.19.0(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.15)': dependencies: '@antfu/install-pkg': 1.1.0 '@clack/prompts': 0.11.0 @@ -5328,7 +5328,7 @@ snapshots: '@stylistic/eslint-plugin': 5.6.1(eslint@9.39.1(jiti@2.6.1)) '@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@vitest/eslint-plugin': 1.5.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.14) + '@vitest/eslint-plugin': 1.5.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.15) ansis: 4.2.0 cac: 6.7.14 eslint: 9.39.1(jiti@2.6.1) @@ -6435,13 +6435,13 @@ snapshots: vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vue: 3.5.25(typescript@5.9.3) - '@vitest/browser-playwright@4.0.14(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14)': + '@vitest/browser-playwright@4.0.15(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15)': dependencies: - '@vitest/browser': 4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14) - '@vitest/mocker': 4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/browser': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) playwright: 1.57.0 tinyrainbow: 3.0.3 - vitest: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - bufferutil - msw @@ -6467,16 +6467,16 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14)': + '@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15)': dependencies: - '@vitest/mocker': 4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/utils': 4.0.14 + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/utils': 4.0.15 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) ws: 8.18.3 transitivePeerDependencies: - bufferutil @@ -6484,10 +6484,10 @@ snapshots: - utf-8-validate - vite - '@vitest/coverage-v8@4.0.14(@vitest/browser@4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14))(vitest@4.0.14)': + '@vitest/coverage-v8@4.0.15(@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.14 + '@vitest/utils': 4.0.15 ast-v8-to-istanbul: 0.3.8 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -6497,20 +6497,20 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: - '@vitest/browser': 4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14) + '@vitest/browser': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.5.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.14)': + '@vitest/eslint-plugin@1.5.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.15)': dependencies: '@typescript-eslint/scope-manager': 8.48.0 '@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) optionalDependencies: typescript: 5.9.3 - vitest: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -6522,12 +6522,12 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/expect@4.0.14': + '@vitest/expect@4.0.15': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.14 - '@vitest/utils': 4.0.14 + '@vitest/spy': 4.0.15 + '@vitest/utils': 4.0.15 chai: 6.2.1 tinyrainbow: 3.0.3 @@ -6539,9 +6539,9 @@ snapshots: optionalDependencies: vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 4.0.14 + '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: @@ -6551,7 +6551,7 @@ snapshots: dependencies: tinyrainbow: 2.0.0 - '@vitest/pretty-format@4.0.14': + '@vitest/pretty-format@4.0.15': dependencies: tinyrainbow: 3.0.3 @@ -6561,9 +6561,9 @@ snapshots: pathe: 2.0.3 strip-literal: 3.1.0 - '@vitest/runner@4.0.14': + '@vitest/runner@4.0.15': dependencies: - '@vitest/utils': 4.0.14 + '@vitest/utils': 4.0.15 pathe: 2.0.3 '@vitest/snapshot@3.2.4': @@ -6572,9 +6572,9 @@ snapshots: magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/snapshot@4.0.14': + '@vitest/snapshot@4.0.15': dependencies: - '@vitest/pretty-format': 4.0.14 + '@vitest/pretty-format': 4.0.15 magic-string: 0.30.21 pathe: 2.0.3 @@ -6582,7 +6582,7 @@ snapshots: dependencies: tinyspy: 4.0.4 - '@vitest/spy@4.0.14': {} + '@vitest/spy@4.0.15': {} '@vitest/utils@3.2.4': dependencies: @@ -6590,9 +6590,9 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vitest/utils@4.0.14': + '@vitest/utils@4.0.15': dependencies: - '@vitest/pretty-format': 4.0.14 + '@vitest/pretty-format': 4.0.15 tinyrainbow: 3.0.3 '@vscode/test-cli@0.0.6': @@ -8300,7 +8300,7 @@ snapshots: ignore@7.0.5: {} - imba@2.0.0-alpha.247(@testing-library/dom@9.3.4)(@testing-library/jest-dom@6.9.1)(picomatch@4.0.3)(vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14): + imba@2.0.0-alpha.247(@testing-library/dom@9.3.4)(@testing-library/jest-dom@6.9.1)(picomatch@4.0.3)(vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15): dependencies: '@antfu/install-pkg': 0.1.1 chokidar: 3.6.0 @@ -8320,7 +8320,7 @@ snapshots: '@testing-library/jest-dom': 6.9.1 vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vite-node: 3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) - vitest: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@24.1.3)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@24.1.3)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - picomatch - supports-color @@ -10377,14 +10377,14 @@ snapshots: - tsx - yaml - vite-plugin-imba@0.10.3(imba@2.0.0-alpha.247(@testing-library/dom@9.3.4)(@testing-library/jest-dom@6.9.1)(picomatch@4.0.3)(vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-imba@0.10.3(imba@2.0.0-alpha.247(@testing-library/dom@9.3.4)(@testing-library/jest-dom@6.9.1)(picomatch@4.0.3)(vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@rollup/pluginutils': 4.2.1 cross-env: 7.0.3 debug: 4.4.3(supports-color@8.1.1) deepmerge: 4.3.1 diff: 5.2.0 - imba: 2.0.0-alpha.247(@testing-library/dom@9.3.4)(@testing-library/jest-dom@6.9.1)(picomatch@4.0.3)(vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14) + imba: 2.0.0-alpha.247(@testing-library/dom@9.3.4)(@testing-library/jest-dom@6.9.1)(picomatch@4.0.3)(vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) kleur: 4.1.5 magic-string: 0.26.7 vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) @@ -10406,11 +10406,11 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitest-github-actions-reporter-temp@0.8.3(vitest@4.0.14): + vitest-github-actions-reporter-temp@0.8.3(vitest@4.0.15): dependencies: '@actions/core': 1.11.1 source-map-js: 1.2.1 - vitest: 4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@24.1.3)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@24.1.3)(tsx@4.21.0)(yaml@2.8.2) vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser@3.2.4)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: @@ -10457,15 +10457,15 @@ snapshots: - tsx - yaml - vitest@4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@14.7.1)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@14.7.1)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: - '@vitest/expect': 4.0.14 - '@vitest/mocker': 4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.0.14 - '@vitest/runner': 4.0.14 - '@vitest/snapshot': 4.0.14 - '@vitest/spy': 4.0.14 - '@vitest/utils': 4.0.14 + '@vitest/expect': 4.0.15 + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.15 + '@vitest/runner': 4.0.15 + '@vitest/snapshot': 4.0.15 + '@vitest/spy': 4.0.15 + '@vitest/utils': 4.0.15 es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.21 @@ -10474,14 +10474,14 @@ snapshots: picomatch: 4.0.3 std-env: 3.10.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.1 - '@vitest/browser-playwright': 4.0.14(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14) + '@vitest/browser-playwright': 4.0.15(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) happy-dom: 14.7.1 jsdom: 27.2.0 transitivePeerDependencies: @@ -10497,15 +10497,15 @@ snapshots: - tsx - yaml - vitest@4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@24.1.3)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@24.1.3)(tsx@4.21.0)(yaml@2.8.2): dependencies: - '@vitest/expect': 4.0.14 - '@vitest/mocker': 4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.0.14 - '@vitest/runner': 4.0.14 - '@vitest/snapshot': 4.0.14 - '@vitest/spy': 4.0.14 - '@vitest/utils': 4.0.14 + '@vitest/expect': 4.0.15 + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.15 + '@vitest/runner': 4.0.15 + '@vitest/snapshot': 4.0.15 + '@vitest/spy': 4.0.15 + '@vitest/utils': 4.0.15 es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.21 @@ -10514,14 +10514,14 @@ snapshots: picomatch: 4.0.3 std-env: 3.10.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.1 - '@vitest/browser-playwright': 4.0.14(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14) + '@vitest/browser-playwright': 4.0.15(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) happy-dom: 15.11.7 jsdom: 24.1.3 transitivePeerDependencies: @@ -10537,15 +10537,15 @@ snapshots: - tsx - yaml - vitest@4.0.14(@types/node@24.10.1)(@vitest/browser-playwright@4.0.14)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@27.2.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: - '@vitest/expect': 4.0.14 - '@vitest/mocker': 4.0.14(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.0.14 - '@vitest/runner': 4.0.14 - '@vitest/snapshot': 4.0.14 - '@vitest/spy': 4.0.14 - '@vitest/utils': 4.0.14 + '@vitest/expect': 4.0.15 + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.15 + '@vitest/runner': 4.0.15 + '@vitest/snapshot': 4.0.15 + '@vitest/spy': 4.0.15 + '@vitest/utils': 4.0.15 es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.21 @@ -10554,14 +10554,14 @@ snapshots: picomatch: 4.0.3 std-env: 3.10.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.1 - '@vitest/browser-playwright': 4.0.14(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.14) + '@vitest/browser-playwright': 4.0.15(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.15) happy-dom: 15.11.7 jsdom: 27.2.0 transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 9f1726e3..4a6f835a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,14 +6,14 @@ packages: catalogs: latest: - '@vitest/browser': ^4.0.14 - '@vitest/browser-playwright': ^4.0.14 - '@vitest/coverage-istanbul': ^4.0.14 - '@vitest/coverage-v8': ^4.0.14 - '@vitest/runner': ^4.0.14 - '@vitest/utils': ^4.0.14 + '@vitest/browser': ^4.0.15 + '@vitest/browser-playwright': ^4.0.15 + '@vitest/coverage-istanbul': ^4.0.15 + '@vitest/coverage-v8': ^4.0.15 + '@vitest/runner': ^4.0.15 + '@vitest/utils': ^4.0.15 vite: ^7.2.6 - vitest: ^4.0.14 + vitest: ^4.0.15 v3: '@vitest/browser': ^3.2.4 diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo index 5b010563..ca451d25 100644 --- a/tsconfig.tsbuildinfo +++ b/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"root":["./debug-shims.d.ts","./packages/extension/src/api.ts","./packages/extension/src/config.ts","./packages/extension/src/constants.ts","./packages/extension/src/coverage.ts","./packages/extension/src/debug.ts","./packages/extension/src/diagnostic.ts","./packages/extension/src/extension.ts","./packages/extension/src/log.ts","./packages/extension/src/polyfills.ts","./packages/extension/src/runner.ts","./packages/extension/src/schemaprovider.ts","./packages/extension/src/tagsmanager.ts","./packages/extension/src/testtree.ts","./packages/extension/src/testtreedata.ts","./packages/extension/src/utils.ts","./packages/extension/src/watcher.ts","./packages/extension/src/api/child_process.ts","./packages/extension/src/api/pkg.ts","./packages/extension/src/api/resolve.ts","./packages/extension/src/api/rpc.ts","./packages/extension/src/api/terminal.ts","./packages/extension/src/api/types.ts","./packages/extension/src/api/ws.ts","./packages/extension/src/worker/browsersetupfile.ts","./packages/extension/src/worker/index.ts","./packages/shared/src/emitter.ts","./packages/shared/src/index.ts","./packages/shared/src/rpc.ts","./packages/shared/src/utils.ts","./packages/worker/src/coverage.ts","./packages/worker/src/index.ts","./packages/worker/src/reporter.ts","./packages/worker/src/runner.ts","./packages/worker/src/watcher.ts","./packages/worker/src/worker.ts","./packages/worker-legacy/src/collect.ts","./packages/worker-legacy/src/coverage.ts","./packages/worker-legacy/src/index.ts","./packages/worker-legacy/src/reporter.ts","./packages/worker-legacy/src/setupfile.ts","./packages/worker-legacy/src/types.ts","./packages/worker-legacy/src/watcher.ts","./packages/worker-legacy/src/worker.ts"],"version":"5.9.3"} \ No newline at end of file +{"root":["./debug-shims.d.ts","./packages/extension/src/api.ts","./packages/extension/src/config.ts","./packages/extension/src/constants.ts","./packages/extension/src/coverage.ts","./packages/extension/src/debug.ts","./packages/extension/src/diagnostic.ts","./packages/extension/src/extension.ts","./packages/extension/src/importsbreakdownprovider.ts","./packages/extension/src/log.ts","./packages/extension/src/polyfills.ts","./packages/extension/src/runner.ts","./packages/extension/src/schemaprovider.ts","./packages/extension/src/tagsmanager.ts","./packages/extension/src/testtree.ts","./packages/extension/src/testtreedata.ts","./packages/extension/src/utils.ts","./packages/extension/src/watcher.ts","./packages/extension/src/api/child_process.ts","./packages/extension/src/api/pkg.ts","./packages/extension/src/api/resolve.ts","./packages/extension/src/api/rpc.ts","./packages/extension/src/api/terminal.ts","./packages/extension/src/api/types.ts","./packages/extension/src/api/ws.ts","./packages/extension/src/worker/browsersetupfile.ts","./packages/extension/src/worker/index.ts","./packages/shared/src/emitter.ts","./packages/shared/src/index.ts","./packages/shared/src/rpc.ts","./packages/shared/src/utils.ts","./packages/worker/src/coverage.ts","./packages/worker/src/index.ts","./packages/worker/src/reporter.ts","./packages/worker/src/runner.ts","./packages/worker/src/watcher.ts","./packages/worker/src/worker.ts","./packages/worker-legacy/src/collect.ts","./packages/worker-legacy/src/coverage.ts","./packages/worker-legacy/src/index.ts","./packages/worker-legacy/src/reporter.ts","./packages/worker-legacy/src/setupfile.ts","./packages/worker-legacy/src/types.ts","./packages/worker-legacy/src/watcher.ts","./packages/worker-legacy/src/worker.ts"],"errors":true,"version":"5.9.3"} \ No newline at end of file