From ef41dde8aeb4745c9a02cfb17a38e21c48dfebb2 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 5 Feb 2026 16:37:41 +0100 Subject: [PATCH] fix: track test file after it's created (#723) * fix: track test file after it's created * choe: use v3 in basic example --- packages/extension/package.json | 2 + packages/extension/src/api.ts | 50 +++- packages/extension/src/api/terminal.ts | 2 +- packages/extension/src/api/ws.ts | 2 +- packages/extension/src/watcher.ts | 8 +- packages/extension/src/worker/index.ts | 4 +- packages/shared/src/emitter.ts | 6 +- packages/shared/src/index.ts | 18 +- packages/worker-legacy/src/index.ts | 33 ++- packages/worker/src/index.ts | 30 +- pnpm-lock.yaml | 372 ++++++++++++++++++------- pnpm-workspace.yaml | 3 + samples/basic/package.json | 6 +- 13 files changed, 407 insertions(+), 129 deletions(-) diff --git a/packages/extension/package.json b/packages/extension/package.json index 3d2f27a..ac1042f 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -3,8 +3,10 @@ "version": "0.0.0", "private": true, "dependencies": { + "@types/picomatch": "catalog:latest", "@vitest/browser": "catalog:v3", "@vitest/runner": "catalog:v3", + "picomatch": "catalog:latest", "vitest": "catalog:v3", "vitest-vscode-shared": "workspace:*" } diff --git a/packages/extension/src/api.ts b/packages/extension/src/api.ts index 6959c00..1067b4f 100644 --- a/packages/extension/src/api.ts +++ b/packages/extension/src/api.ts @@ -1,9 +1,12 @@ -import type { ExtensionTestSpecification, ModuleDefinitionDurationsDiagnostic } from 'vitest-vscode-shared' +import type { ExtensionTestSpecification, ModuleDefinitionDurationsDiagnostic, SerializedProject } from 'vitest-vscode-shared' import type { VitestPackage } from './api/pkg' import type { ExtensionWorkerEvents, VitestExtensionRPC } from './api/rpc' import type { ExtensionWorkerProcess } from './api/types' +import type { TestFileMetadata } from './testTreeData' +import { readFileSync } from 'node:fs' import { dirname, isAbsolute } from 'node:path' import { normalize, relative } from 'pathe' +import pm from 'picomatch' import { createQueuedHandler } from 'vitest-vscode-shared' import * as vscode from 'vscode' import { createVitestProcess } from './api/child_process' @@ -147,7 +150,7 @@ export class VitestFolderAPI { } get configs() { - return this.meta.configs + return this.meta.projects.map(p => p.config).filter(n => n != null) } get workspaceSource() { @@ -186,6 +189,41 @@ export class VitestFolderAPI { return this.meta.rpc.getFiles() } + getPotentialTestFileMetadata(file: string): TestFileMetadata[] { + const metadata: TestFileMetadata[] = [] + let fileContent: string + for (const project of this.meta.projects) { + if (this.matchesTestGlob(project, file, () => (fileContent ??= readFileSync(file, 'utf-8')))) { + metadata.push({ + pool: project.pool, + project: project.name, + browser: project.browser, + }) + } + } + return metadata + } + + matchesTestGlob(project: SerializedProject, moduleId: string, source: () => string) { + const relativeId = relative(project.dir || project.root, moduleId) + if (pm.isMatch(relativeId, project.exclude)) { + return false + } + if (pm.isMatch(relativeId, project.include)) { + return true + } + if ( + project.includeSource?.length + && pm.isMatch(relativeId, project.includeSource) + ) { + const code = source() + if (code.includes('import.meta.vitest')) { + return true + } + } + return false + } + onFileCreated = createQueuedHandler(async (files: string[]) => { if (this.process.closed) { return @@ -436,8 +474,10 @@ async function createVitestFolderAPI(usedConfigs: Set, pkg: VitestPackag const vitest = config.shellType === 'terminal' ? await createVitestTerminalProcess(pkg) : await createVitestProcess(pkg) - vitest.configs.forEach((config) => { - usedConfigs.add(config) + vitest.projects.forEach((project) => { + if (project.config) { + usedConfigs.add(project.config) + } }) return new VitestFolderAPI(pkg, vitest) } @@ -447,7 +487,7 @@ export interface ResolvedMeta { process: ExtensionWorkerProcess workspaceSource: string | false pkg: VitestPackage - configs: string[] + projects: SerializedProject[] handlers: { onProcessLog: (listener: ExtensionWorkerEvents['onProcessLog']) => void onConsoleLog: (listener: ExtensionWorkerEvents['onConsoleLog']) => void diff --git a/packages/extension/src/api/terminal.ts b/packages/extension/src/api/terminal.ts index 770f0d4..c1223d7 100644 --- a/packages/extension/src/api/terminal.ts +++ b/packages/extension/src/api/terminal.ts @@ -135,7 +135,7 @@ export async function createVitestTerminalProcess(pkg: VitestPackage): Promise api.onFileCreated(path)) + apis.forEach((api) => { + const metadata = api.getPotentialTestFileMetadata(path) + metadata.forEach((meta) => { + this.testTree.getOrCreateFileTestItem(api, meta, path) + }) + api.onFileCreated(path) + }) }) } diff --git a/packages/extension/src/worker/index.ts b/packages/extension/src/worker/index.ts index 4320c01..086f42f 100644 --- a/packages/extension/src/worker/index.ts +++ b/packages/extension/src/worker/index.ts @@ -30,7 +30,7 @@ emitter.on('message', async function onMessage(message: any) { const workerPath = pathToFileURL(join(__dirname, workerName)) const initModule = await import(workerPath.toString()) - const { createWorker, reporter, configs, workspaceSource } = await initModule.initVitest( + const { createWorker, reporter, projects, workspaceSource } = await initModule.initVitest( vitestModule, data, emitter, @@ -53,7 +53,7 @@ emitter.on('message', async function onMessage(message: any) { ) worker.initRpc(rpc) reporter.initRpc(rpc) - emitter.ready(configs, workspaceSource, isLegacy) + emitter.ready(projects, workspaceSource, isLegacy) } catch (err: any) { emitter.error(err) diff --git a/packages/shared/src/emitter.ts b/packages/shared/src/emitter.ts index 186e5c1..cb59f78 100644 --- a/packages/shared/src/emitter.ts +++ b/packages/shared/src/emitter.ts @@ -1,4 +1,4 @@ -import type { WorkerEvent } from 'vitest-vscode-shared' +import type { SerializedProject, WorkerEvent } from 'vitest-vscode-shared' import type WebSocket from 'ws' abstract class WorkerEventEmitter { @@ -8,8 +8,8 @@ abstract class WorkerEventEmitter { abstract on(event: string, listener: (...args: any[]) => void): void abstract off(event: string, listener: (...args: any[]) => void): void - ready(configs: string[], workspaceSource: string | false, legacy: boolean) { - this.sendWorkerEvent({ type: 'ready', configs, workspaceSource, legacy }) + ready(projects: SerializedProject[], workspaceSource: string | false, legacy: boolean) { + this.sendWorkerEvent({ type: 'ready', projects, workspaceSource, legacy }) } error(err: any) { diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index e773ce5..0796c43 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -156,9 +156,25 @@ export interface WorkerRunnerOptions { astCollect: boolean } +export interface SerializedProject { + config: string | undefined + root: string + pool: string + name: string + dir?: string + include: string[] + exclude: string[] + includeSource: string[] + browser?: { + provider: string + name: string + webRoot: string + } +} + export interface EventReady { type: 'ready' - configs: string[] + projects: SerializedProject[] workspaceSource: string | false legacy: boolean } diff --git a/packages/worker-legacy/src/index.ts b/packages/worker-legacy/src/index.ts index 1022e18..761114b 100644 --- a/packages/worker-legacy/src/index.ts +++ b/packages/worker-legacy/src/index.ts @@ -1,5 +1,5 @@ -import type { WorkerRunnerOptions, WorkerWSEventEmitter } from 'vitest-vscode-shared' -import type { UserConfig, WorkspaceProject } from 'vitest/node' +import type { SerializedProject, WorkerRunnerOptions, WorkerWSEventEmitter } from 'vitest-vscode-shared' +import type { UserConfig } from 'vitest/node' import { VSCodeReporter } from './reporter' import { ExtensionWorker } from './worker' @@ -119,11 +119,28 @@ export async function initVitest( }, ) await (vitest as any).report('onInit', vitest) - const configs = ([ - // @ts-expect-error -- getRootProject in Vitest 3.0 - 'getRootProject' in vitest ? vitest.getRootProject() : vitest.getCoreWorkspaceProject(), - ...vitest.projects, - ] as WorkspaceProject[]).map(p => p.server.config.configFile).filter(c => c != null) + + const projects: SerializedProject[] = vitest.projects.map((project) => { + const config = project.config + return { + config: project.vite.config.configFile, + root: config.root, + dir: config.dir, + include: config.include, + exclude: config.exclude, + includeSource: config.includeSource, + pool: project.config.browser?.enabled ? 'browser' : config.pool, + name: project.name, + browser: project.config.browser?.enabled + ? { + provider: config.browser.provider || 'preview', + name: config.browser.name, + webRoot: config.root, + } + : undefined, + } + }) + const workspaceSource: string | false = meta.workspaceFile ? meta.workspaceFile : (vitest.config.workspace != null || vitest.config.projects != null) @@ -133,7 +150,7 @@ export async function initVitest( vitest, reporter, workspaceSource, - configs: Array.from(new Set(configs)), + projects, meta, createWorker() { return new ExtensionWorker( diff --git a/packages/worker/src/index.ts b/packages/worker/src/index.ts index 1fe27ab..8f921fb 100644 --- a/packages/worker/src/index.ts +++ b/packages/worker/src/index.ts @@ -1,4 +1,4 @@ -import type { WorkerRunnerOptions, WorkerWSEventEmitter } from 'vitest-vscode-shared' +import type { SerializedProject, WorkerRunnerOptions, WorkerWSEventEmitter } from 'vitest-vscode-shared' import type { CoverageIstanbulOptions, TestUserConfig } from 'vitest/node' import { Console } from 'node:console' import { randomUUID } from 'node:crypto' @@ -147,10 +147,28 @@ export async function initVitest( }, ) await (vitest as any).report('onInit', vitest) - const configs = [ - vitest.getRootProject(), - ...vitest.projects, - ].map(p => p.vite.config.configFile).filter(c => c != null) + + const projects: SerializedProject[] = vitest.projects.map((project) => { + const config = project.config + return { + config: project.vite.config.configFile, + root: config.root, + dir: config.dir, + include: config.include, + exclude: config.exclude, + includeSource: config.includeSource, + pool: project.isBrowserEnabled() ? 'browser' : config.pool, + name: project.name, + browser: project.isBrowserEnabled() + ? { + provider: config.browser.provider?.name || 'preview', + name: config.browser.name, + webRoot: config.root, + } + : undefined, + } + }) + const workspaceSource: string | false = (vitest.config.projects != null) ? vitest.vite.config.configFile || false : false @@ -158,7 +176,7 @@ export async function initVitest( vitest, reporter, workspaceSource, - configs: Array.from(new Set(configs)), + projects, meta, createWorker() { return new ExtensionWorker( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea7bcb3..581fd77 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,9 @@ settings: catalogs: latest: + '@types/picomatch': + specifier: ^4.0.2 + version: 4.0.2 '@vitest/browser': specifier: ^4.0.15 version: 4.0.15 @@ -18,6 +21,9 @@ catalogs: '@vitest/utils': specifier: ^4.0.15 version: 4.0.15 + picomatch: + specifier: ^4.0.3 + version: 4.0.3 vite: specifier: ^7.2.6 version: 7.2.6 @@ -28,12 +34,18 @@ catalogs: '@vitest/browser': specifier: ^3.2.4 version: 3.2.4 + '@vitest/coverage-v8': + specifier: ^3.2.4 + version: 3.2.4 '@vitest/runner': specifier: ^3.2.4 version: 3.2.4 '@vitest/utils': specifier: ^3.2.4 version: 3.2.4 + vite: + specifier: ^7.2.6 + version: 7.2.6 vitest: specifier: ^3.2.4 version: 3.2.4 @@ -98,13 +110,13 @@ importers: version: 2.4.0 bumpp: specifier: ^10.1.1 - version: 10.3.2 + version: 10.3.2(magicast@0.3.5) chai: specifier: ^5.1.0 version: 5.3.3 changelogithub: specifier: ^13.15.0 - version: 13.16.1 + version: 13.16.1(magicast@0.3.5) eslint: specifier: ^9.7.0 version: 9.39.1(jiti@2.6.1) @@ -152,7 +164,7 @@ importers: version: 5.9.3 vitest: specifier: catalog:latest - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) which: specifier: ^4.0.0 version: 4.0.0 @@ -162,15 +174,21 @@ importers: packages/extension: dependencies: + '@types/picomatch': + specifier: catalog:latest + version: 4.0.2 '@vitest/browser': specifier: catalog:v3 version: 3.2.4(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@3.2.4) '@vitest/runner': specifier: catalog:v3 version: 3.2.4 + picomatch: + specifier: catalog:latest + version: 4.0.3 vitest: specifier: catalog:v3 - version: 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) + version: 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) vitest-vscode-shared: specifier: workspace:* version: link:../shared @@ -182,7 +200,7 @@ importers: version: 2.4.0 vitest: specifier: catalog:v3 - version: 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) + version: 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) packages/worker: devDependencies: @@ -191,7 +209,7 @@ importers: version: 4.0.15 vitest: specifier: catalog:latest - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) vitest-vscode-shared: specifier: workspace:* version: link:../shared @@ -206,7 +224,7 @@ importers: version: 3.2.4 vitest: specifier: catalog:v3 - version: 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) + version: 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) vitest-vscode-shared: specifier: workspace:* version: link:../shared @@ -225,7 +243,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.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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/basic: dependencies: @@ -234,14 +252,14 @@ importers: version: 0.2.19 devDependencies: '@vitest/coverage-v8': - specifier: catalog:latest - 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) + specifier: catalog:v3 + version: 3.2.4(@vitest/browser@3.2.4)(vitest@3.2.4) vite: - specifier: catalog:latest + specifier: catalog:v3 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.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) + specifier: catalog:v3 + version: 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/basic-v4: devDependencies: @@ -256,7 +274,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.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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/browser: dependencies: @@ -281,19 +299,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.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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/continuous: devDependencies: vitest: specifier: catalog:latest - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/e2e: devDependencies: vitest: specifier: catalog:latest - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/imba: devDependencies: @@ -329,7 +347,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.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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/monorepo-vitest-workspace: devDependencies: @@ -341,7 +359,7 @@ importers: version: 15.11.7 vitest: specifier: catalog:latest - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/monorepo-vitest-workspace/packages/react: dependencies: @@ -363,7 +381,7 @@ importers: version: 2.55.0 jsdom: specifier: latest - version: 27.2.0 + version: 28.0.0 react-test-renderer: specifier: 17.0.2 version: 17.0.2(react@17.0.2) @@ -388,7 +406,7 @@ importers: version: 2.55.0 jsdom: specifier: latest - version: 27.2.0 + version: 28.0.0 react-test-renderer: specifier: 17.0.2 version: 17.0.2(react@17.0.2) @@ -397,19 +415,19 @@ importers: dependencies: vitest: specifier: catalog:latest - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/no-config: devDependencies: vitest: specifier: catalog:latest - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/readme: devDependencies: vitest: specifier: catalog:latest - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) samples/vue: dependencies: @@ -434,12 +452,12 @@ 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.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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) packages: - '@acemir/cssom@0.9.24': - resolution: {integrity: sha512-5YjgMmAiT2rjJZU7XK1SNI7iqTy92DpaYVgG6x63FxkJ11UpYfLndHJATtinWJClAXiOlW9XWaUyAQf8pMrQPg==} + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} '@actions/core@1.11.1': resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} @@ -456,6 +474,10 @@ packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + '@antfu/eslint-config@4.19.0': resolution: {integrity: sha512-IQlML0cc7qNA1Uk55raMRZjOmh26rkX3bi2MFYjhO+VOtTQt8Mz2ngxBlIwpTgZFgfuYjle6JPuOuALnEZHDFw==} hasBin: true @@ -517,11 +539,11 @@ packages: '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} - '@asamuzakjp/css-color@4.1.0': - resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==} + '@asamuzakjp/css-color@4.1.2': + resolution: {integrity: sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==} - '@asamuzakjp/dom-selector@6.7.5': - resolution: {integrity: sha512-Eks6dY8zau4m4wNRQjRVaKQRTalNcPcBvU1ZQ35w5kKRk1gUeNCkVLsRiATurjASTp3TKM4H10wsI50nx3NZdw==} + '@asamuzakjp/dom-selector@6.7.8': + resolution: {integrity: sha512-stisC1nULNc9oH5lakAj8MH88ZxeGxzyWNDfbdCxvJSJIvDsHNZqYvscGTgy/ysgXWLJPt6K/4t0/GjvtKcFJQ==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -702,6 +724,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'} @@ -709,6 +735,13 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-calc@3.0.0': + resolution: {integrity: sha512-q4d82GTl8BIlh/dTnVsWmxnbWJeb3kiU8eUH71UxlxnS+WIaALmtzTL8gR15PkYOexMQYVk0CO4qIG93C1IvPA==} + 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'} @@ -716,20 +749,36 @@ 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-syntax-patches-for-csstree@1.0.20': - resolution: {integrity: sha512-8BHsjXfSciZxjmHQOuVdW2b8WLUPts9a+mfL13/PzEviufUEW2xnvQuOlKs9dRBHgRqJ53SF/DUoK9+MZk72oQ==} - engines: {node: '>=18'} + '@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.26': + resolution: {integrity: sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==} '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + '@es-joy/jsdoccomment@0.50.2': resolution: {integrity: sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==} engines: {node: '>=18'} @@ -1127,6 +1176,15 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@exodus/bytes@1.11.0': + resolution: {integrity: sha512-wO3vd8nsEHdumsXrjGO/v4p6irbg7hy9kvIeR6i2AwylZSk4HJdWgL0FNaVquW1+AweJcdvU1IEpuIWk/WaPnA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + '@fastify/busboy@2.1.1': resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} @@ -1479,6 +1537,9 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/picomatch@4.0.2': + resolution: {integrity: sha512-qHHxQ+P9PysNEGbALT8f8YOSHW0KJu6l2xU8DYY0fu/EmGxXdVnuTLvFUvBgPJMSqXq29SYHveejeAha+4AYgA==} + '@types/prompts@2.4.9': resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} @@ -1615,6 +1676,15 @@ packages: peerDependencies: vitest: 4.0.15 + '@vitest/coverage-v8@3.2.4': + resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} + peerDependencies: + '@vitest/browser': 3.2.4 + vitest: 3.2.4 + peerDependenciesMeta: + '@vitest/browser': + optional: true + '@vitest/coverage-v8@4.0.15': resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==} peerDependencies: @@ -2229,8 +2299,8 @@ packages: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} - cssstyle@5.3.3: - resolution: {integrity: sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==} + cssstyle@5.3.7: + resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} engines: {node: '>=20'} csstype@3.2.3: @@ -2240,9 +2310,9 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} - data-urls@6.0.0: - resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} - engines: {node: '>=20'} + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -3113,6 +3183,10 @@ packages: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -3456,8 +3530,8 @@ packages: canvas: optional: true - jsdom@27.2.0: - resolution: {integrity: sha512-454TI39PeRDW1LgpyLPyURtB4Zx1tklSr6+OFOipsxGUH1WMTvk6C65JQdrj455+DP2uJ1+veBEHTGFKWVLFoA==} + jsdom@28.0.0: + resolution: {integrity: sha512-KDYJgZ6T2TKdU8yBfYueq5EPG/EylMsBvCaenWMJb2OXmjgczzwveRCoJ+Hgj1lXPDyasvrgneSn4GBuR1hYyA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -3628,6 +3702,10 @@ packages: resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} engines: {node: 20 || >=22} + lru-cache@11.2.5: + resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -3646,6 +3724,9 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.5.1: resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} @@ -4732,6 +4813,10 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -4913,6 +4998,10 @@ packages: resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} engines: {node: '>=20.18.1'} + undici@7.20.0: + resolution: {integrity: sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==} + engines: {node: '>=20.18.1'} + unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} @@ -5126,8 +5215,8 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - webidl-conversions@8.0.0: - resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} whatwg-encoding@2.0.0: @@ -5146,13 +5235,17 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + whatwg-url@14.2.0: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} - whatwg-url@15.1.0: - resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} - engines: {node: '>=20'} + whatwg-url@16.0.0: + resolution: {integrity: sha512-9CcxtEKsf53UFwkSUZjG+9vydAsFO4lFHBpJUtjBcoJOCJpKnSJNwCw813zrYJHpCJ7sgfbtOe0V5Ku7Pa1XMQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -5299,7 +5392,7 @@ packages: snapshots: - '@acemir/cssom@0.9.24': {} + '@acemir/cssom@0.9.31': {} '@actions/core@1.11.1': dependencies: @@ -5319,6 +5412,11 @@ snapshots: '@adobe/css-tools@4.4.4': {} + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@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 @@ -5383,21 +5481,21 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 - '@asamuzakjp/css-color@4.1.0': + '@asamuzakjp/css-color@4.1.2': dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - lru-cache: 11.2.4 + '@csstools/css-calc': 3.0.0(@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.5 - '@asamuzakjp/dom-selector@6.7.5': + '@asamuzakjp/dom-selector@6.7.8': 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.4 + lru-cache: 11.2.5 '@asamuzakjp/nwsapi@2.3.9': {} @@ -5648,11 +5746,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.0.0(@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 @@ -5660,14 +5765,27 @@ 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.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': 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-syntax-patches-for-csstree@1.0.20': {} + '@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.26': {} '@csstools/css-tokenizer@3.0.4': {} + '@csstools/css-tokenizer@4.0.0': {} + '@es-joy/jsdoccomment@0.50.2': dependencies: '@types/estree': 1.0.8 @@ -5927,6 +6045,8 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@exodus/bytes@1.11.0': {} + '@fastify/busboy@2.1.1': {} '@humanfs/core@0.19.1': {} @@ -6281,6 +6401,8 @@ snapshots: '@types/normalize-package-data@2.4.4': {} + '@types/picomatch@4.0.2': {} + '@types/prompts@2.4.9': dependencies: '@types/node': 24.10.1 @@ -6441,7 +6563,7 @@ snapshots: '@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.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: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(happy-dom@15.11.7)(jiti@2.6.1)(jsdom@28.0.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - bufferutil - msw @@ -6457,7 +6579,7 @@ snapshots: magic-string: 0.30.21 sirv: 3.0.2 tinyrainbow: 2.0.0 - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) ws: 8.18.3 optionalDependencies: playwright: 1.57.0 @@ -6476,7 +6598,7 @@ snapshots: pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) ws: 8.18.3 transitivePeerDependencies: - bufferutil @@ -6484,6 +6606,27 @@ snapshots: - utf-8-validate - vite + '@vitest/coverage-v8@3.2.4(@vitest/browser@3.2.4)(vitest@3.2.4)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 1.0.2 + ast-v8-to-istanbul: 0.3.8 + debug: 4.4.3(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.2.0 + magic-string: 0.30.21 + magicast: 0.3.5 + std-env: 3.10.0 + test-exclude: 7.0.1 + tinyrainbow: 2.0.0 + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) + optionalDependencies: + '@vitest/browser': 3.2.4(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@3.2.4) + transitivePeerDependencies: + - supports-color + '@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 @@ -6497,7 +6640,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: '@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: @@ -6510,7 +6653,7 @@ snapshots: eslint: 9.39.1(jiti@2.6.1) optionalDependencies: typescript: 5.9.3 - 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) + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -6923,11 +7066,11 @@ snapshots: builtin-modules@5.0.0: {} - bumpp@10.3.2: + bumpp@10.3.2(magicast@0.3.5): dependencies: ansis: 4.2.0 args-tokenizer: 0.3.0 - c12: 3.3.2 + c12: 3.3.2(magicast@0.3.5) cac: 6.7.14 escalade: 3.2.0 jsonc-parser: 3.3.1 @@ -6948,7 +7091,7 @@ snapshots: esbuild: 0.27.0 load-tsconfig: 0.2.5 - c12@1.11.2: + c12@1.11.2(magicast@0.3.5): dependencies: chokidar: 3.6.0 confbox: 0.1.8 @@ -6962,8 +7105,10 @@ snapshots: perfect-debounce: 1.0.0 pkg-types: 1.3.1 rc9: 2.1.2 + optionalDependencies: + magicast: 0.3.5 - c12@3.3.2: + c12@3.3.2(magicast@0.3.5): dependencies: chokidar: 4.0.3 confbox: 0.2.2 @@ -6977,6 +7122,8 @@ snapshots: perfect-debounce: 2.0.0 pkg-types: 2.3.0 rc9: 2.1.2 + optionalDependencies: + magicast: 0.3.5 c8@9.1.0: dependencies: @@ -7040,9 +7187,9 @@ snapshots: change-case@5.4.4: {} - changelogen@0.5.7: + changelogen@0.5.7(magicast@0.3.5): dependencies: - c12: 1.11.2 + c12: 1.11.2(magicast@0.3.5) colorette: 2.0.20 consola: 3.4.2 convert-gitmoji: 0.1.5 @@ -7059,12 +7206,12 @@ snapshots: transitivePeerDependencies: - magicast - changelogithub@13.16.1: + changelogithub@13.16.1(magicast@0.3.5): dependencies: ansis: 4.2.0 - c12: 3.3.2 + c12: 3.3.2(magicast@0.3.5) cac: 6.7.14 - changelogen: 0.5.7 + changelogen: 0.5.7(magicast@0.3.5) convert-gitmoji: 0.1.5 execa: 9.6.1 ofetch: 1.5.1 @@ -7237,11 +7384,12 @@ snapshots: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 - cssstyle@5.3.3: + cssstyle@5.3.7: dependencies: - '@asamuzakjp/css-color': 4.1.0 - '@csstools/css-syntax-patches-for-csstree': 1.0.20 + '@asamuzakjp/css-color': 4.1.2 + '@csstools/css-syntax-patches-for-csstree': 1.0.26 css-tree: 3.1.0 + lru-cache: 11.2.4 csstype@3.2.3: {} @@ -7250,10 +7398,12 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - data-urls@6.0.0: + data-urls@7.0.0: dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 15.1.0 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.0 + transitivePeerDependencies: + - '@noble/hashes' debug@4.4.3(supports-color@8.1.1): dependencies: @@ -8249,6 +8399,12 @@ snapshots: dependencies: whatwg-encoding: 3.1.1 + html-encoding-sniffer@6.0.0: + dependencies: + '@exodus/bytes': 1.11.0 + transitivePeerDependencies: + - '@noble/hashes' + html-escaper@2.0.2: {} htmlparser2@10.0.0: @@ -8582,14 +8738,15 @@ snapshots: - supports-color - utf-8-validate - jsdom@27.2.0: + jsdom@28.0.0: dependencies: - '@acemir/cssom': 0.9.24 - '@asamuzakjp/dom-selector': 6.7.5 - cssstyle: 5.3.3 - data-urls: 6.0.0 + '@acemir/cssom': 0.9.31 + '@asamuzakjp/dom-selector': 6.7.8 + '@exodus/bytes': 1.11.0 + cssstyle: 5.3.7 + data-urls: 7.0.0 decimal.js: 10.6.0 - html-encoding-sniffer: 4.0.0 + html-encoding-sniffer: 6.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 @@ -8597,17 +8754,15 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.0 + undici: 7.20.0 w3c-xmlserializer: 5.0.0 - webidl-conversions: 8.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 15.1.0 - ws: 8.18.3 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - - bufferutil + - '@noble/hashes' - supports-color - - utf-8-validate jsesc@3.0.2: {} @@ -8764,6 +8919,8 @@ snapshots: lru-cache@11.2.4: {} + lru-cache@11.2.5: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -8782,6 +8939,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + magicast@0.3.5: + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + source-map-js: 1.2.1 + magicast@0.5.1: dependencies: '@babel/parser': 7.28.5 @@ -10122,6 +10285,12 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.5.0 + minimatch: 9.0.5 + text-table@0.2.0: {} textextensions@6.11.0: @@ -10295,6 +10464,8 @@ snapshots: undici@7.16.0: {} + undici@7.20.0: {} + unicorn-magic@0.1.0: {} unicorn-magic@0.3.0: {} @@ -10412,7 +10583,7 @@ snapshots: source-map-js: 1.2.1 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): + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 @@ -10442,7 +10613,7 @@ snapshots: '@types/node': 24.10.1 '@vitest/browser': 3.2.4(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@3.2.4) happy-dom: 15.11.7 - jsdom: 27.2.0 + jsdom: 28.0.0 transitivePeerDependencies: - jiti - less @@ -10457,7 +10628,7 @@ snapshots: - tsx - yaml - 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): + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@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)) @@ -10483,7 +10654,7 @@ snapshots: '@types/node': 24.10.1 '@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 + jsdom: 28.0.0 transitivePeerDependencies: - jiti - less @@ -10537,7 +10708,7 @@ snapshots: - tsx - yaml - 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): + 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@28.0.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@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)) @@ -10563,7 +10734,7 @@ snapshots: '@types/node': 24.10.1 '@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 + jsdom: 28.0.0 transitivePeerDependencies: - jiti - less @@ -10609,7 +10780,7 @@ snapshots: webidl-conversions@7.0.0: {} - webidl-conversions@8.0.0: {} + webidl-conversions@8.0.1: {} whatwg-encoding@2.0.0: dependencies: @@ -10623,15 +10794,20 @@ snapshots: whatwg-mimetype@4.0.0: {} + whatwg-mimetype@5.0.0: {} + whatwg-url@14.2.0: dependencies: tr46: 5.1.1 webidl-conversions: 7.0.0 - whatwg-url@15.1.0: + whatwg-url@16.0.0: dependencies: + '@exodus/bytes': 1.11.0 tr46: 6.0.0 - webidl-conversions: 8.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' whatwg-url@5.0.0: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 4a6f835..dd5ef94 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,12 +6,14 @@ packages: catalogs: latest: + '@types/picomatch': ^4.0.2 '@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 + picomatch: ^4.0.3 vite: ^7.2.6 vitest: ^4.0.15 @@ -21,4 +23,5 @@ catalogs: '@vitest/coverage-v8': ^3.2.4 '@vitest/runner': ^3.2.4 '@vitest/utils': ^3.2.4 + vite: ^7.2.6 vitest: ^3.2.4 diff --git a/samples/basic/package.json b/samples/basic/package.json index b24c05e..1972fdf 100644 --- a/samples/basic/package.json +++ b/samples/basic/package.json @@ -12,8 +12,8 @@ "birpc": "^0.2.2" }, "devDependencies": { - "@vitest/coverage-v8": "catalog:latest", - "vite": "catalog:latest", - "vitest": "catalog:latest" + "@vitest/coverage-v8": "catalog:v3", + "vite": "catalog:v3", + "vitest": "catalog:v3" } } -- 2.51.2