diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/dev.mjs b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/dev.mjs index 3cf79b82a..8f62e8337 100644 --- a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/dev.mjs +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/dev.mjs @@ -1,9 +1,9 @@ // Programmatic Vite dev server bring-up: middleware mode skips the HTTP // listen entirely (Windows runners refuse the 127.0.0.1 bind with -// `listen UNKNOWN`), but `_createServer` still calls `disableCache()` -// via `@voidzero-dev/vite-task-client` on its first line — so even -// though this process exits 0 the runner is told not to store the run -// and the next invocation must miss. +// `listen UNKNOWN`), but the default dev watcher still calls `disableCache()` +// via `@voidzero-dev/vite-task-client` immediately before observing the +// filesystem. Even though this process exits 0, the runner is told not to +// store the run and the next invocation must miss. import { createServer } from 'vite'; const server = await createServer({ diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/snapshots.toml b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/snapshots.toml index efd50410e..e3d48e1ad 100644 --- a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/snapshots.toml +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/snapshots.toml @@ -1,7 +1,7 @@ [[e2e]] name = "vite_dev_disables_cache" comment = """ -`vt run --cache dev` brings up a Vite dev server programmatically on an ephemeral port and closes it immediately. Vite's `_createServer` calls `disableCache()` via `@voidzero-dev/vite-task-client`, so this run is never stored — the next invocation re-executes (cache miss / NotFound). +`vt run --cache dev` brings up a Vite dev server programmatically in middleware mode and closes it immediately. Middleware mode skips the port listen, but the default Vite dev watcher calls `disableCache()` via `@voidzero-dev/vite-task-client`, so this run is never stored — the next invocation re-executes (cache miss / NotFound). """ ignore = true steps = [ @@ -10,7 +10,7 @@ steps = [ "run", "--cache", "dev", - ], comment = "first run — Vite dev start calls disableCache" }, + ], comment = "first run — Vite dev watcher calls disableCache" }, { argv = [ "vt", "run", diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/snapshots/vite_dev_disables_cache.md b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/snapshots/vite_dev_disables_cache.md index 9f5e07491..b62e98a15 100644 --- a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/snapshots/vite_dev_disables_cache.md +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vite_dev_disable_cache/snapshots/vite_dev_disables_cache.md @@ -1,10 +1,10 @@ # vite_dev_disables_cache -`vt run --cache dev` brings up a Vite dev server programmatically on an ephemeral port and closes it immediately. Vite's `_createServer` calls `disableCache()` via `@voidzero-dev/vite-task-client`, so this run is never stored — the next invocation re-executes (cache miss / NotFound). +`vt run --cache dev` brings up a Vite dev server programmatically in middleware mode and closes it immediately. Middleware mode skips the port listen, but the default Vite dev watcher calls `disableCache()` via `@voidzero-dev/vite-task-client`, so this run is never stored — the next invocation re-executes (cache miss / NotFound). ## `vt run --cache dev` -first run — Vite dev start calls disableCache +first run — Vite dev watcher calls disableCache ``` $ node dev.mjs diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/package.json b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/package.json new file mode 100644 index 000000000..c5f66c698 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/package.json @@ -0,0 +1,5 @@ +{ + "name": "vitest-cache-modes-fixture", + "private": true, + "type": "module" +} diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/quiet-reporter.mjs b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/quiet-reporter.mjs new file mode 100644 index 000000000..7a3c0f60d --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/quiet-reporter.mjs @@ -0,0 +1,7 @@ +export default class QuietReporter { + onTestRunEnd() { + if (process.env.VITEST_EXIT_AFTER_RUN) { + setTimeout(() => process.exit(0), 0); + } + } +} diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/sample.test.js b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/sample.test.js new file mode 100644 index 000000000..6f72ad949 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/sample.test.js @@ -0,0 +1,5 @@ +import { expect, test } from 'vitest'; + +test('passes through Vite transforms', () => { + expect(1 + 1).toBe(2); +}); diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots.toml b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots.toml new file mode 100644 index 000000000..64845d665 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots.toml @@ -0,0 +1,87 @@ +[[e2e]] +name = "vitest_run_caches" +comment = """ +`vitest run` creates a Vite server for transforms, but it does not listen on a port and Vitest sets `server.watch = null` in run mode. Vitest's own result cache is disabled so this fixture isolates Vite's task-cache signal; the task should stay cacheable. +""" +ignore = true +steps = [ + { argv = [ + "vt", + "run", + "--cache", + "vitest-run", + ], comment = "first run: Vitest uses Vite as a non-watching transform server" }, + { argv = [ + "vt", + "run", + "--cache", + "vitest-run", + ], comment = "cache hit: no port listen or filesystem watcher opted out" }, + { argv = [ + "vt", + "run", + "--last-details", + ], comment = "summary shows the cached replay" }, +] + +[[e2e]] +name = "vitest_api_disables_cache" +comment = """ +`vitest --api` binds a Vite/Vitest API server port. Binding the port should call `disableCache()` immediately before listening, so completed API runs are not stored. +""" +ignore = true +steps = [ + { argv = [ + "vt", + "run", + "--cache", + "vitest-api", + ], comment = "first run: --api listens on a port and opts out" }, + { argv = [ + "vt", + "run", + "--cache", + "vitest-api", + ], comment = "re-executes because the API run was not cached" }, + { argv = [ + "vt", + "run", + "--last-details", + ], comment = "summary names the port-listen opt-out" }, +] + +[[e2e]] +name = "vitest_watch_disables_cache" +comment = """ +`vitest watch` starts Vite's filesystem watcher. Vitest's own result cache is disabled so this fixture isolates Vite's task-cache signal. The custom reporter exits after the first completed test run so the e2e can assert that the completed watch-mode task still opted out of caching. +""" +ignore = true +steps = [ + { argv = [ + "vt", + "run", + "--cache", + "vitest-watch", + ], envs = [ + [ + "VITEST_EXIT_AFTER_RUN", + "1", + ], + ], comment = "first run: watch mode observes the filesystem and opts out" }, + { argv = [ + "vt", + "run", + "--cache", + "vitest-watch", + ], envs = [ + [ + "VITEST_EXIT_AFTER_RUN", + "1", + ], + ], comment = "re-executes because the watch run was not cached" }, + { argv = [ + "vt", + "run", + "--last-details", + ], comment = "summary names the watcher opt-out" }, +] diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots/vitest_api_disables_cache.md b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots/vitest_api_disables_cache.md new file mode 100644 index 000000000..e90150251 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots/vitest_api_disables_cache.md @@ -0,0 +1,39 @@ +# vitest_api_disables_cache + +`vitest --api` binds a Vite/Vitest API server port. Binding the port should call `disableCache()` immediately before listening, so completed API runs are not stored. + +## `vt run --cache vitest-api` + +first run: --api listens on a port and opts out + +``` +$ vitest --api=51289 --run --no-cache --reporter=./quiet-reporter.mjs +``` + +## `vt run --cache vitest-api` + +re-executes because the API run was not cached + +``` +$ vitest --api=51289 --run --no-cache --reporter=./quiet-reporter.mjs +``` + +## `vt run --last-details` + +summary names the port-listen opt-out + +``` + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + Vite+ Task Runner • Execution Summary +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +Statistics: 1 tasks • 0 cache hits • 1 cache misses +Performance: 0% cache hit rate + +Task Details: +──────────────────────────────────────────────── + [1] vitest-cache-modes-fixture#vitest-api: $ vitest --api=51289 --run --no-cache --reporter=./quiet-reporter.mjs ✓ + → Not cached: the task opted out of caching +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots/vitest_run_caches.md b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots/vitest_run_caches.md new file mode 100644 index 000000000..1ae8fa196 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots/vitest_run_caches.md @@ -0,0 +1,42 @@ +# vitest_run_caches + +`vitest run` creates a Vite server for transforms, but it does not listen on a port and Vitest sets `server.watch = null` in run mode. Vitest's own result cache is disabled so this fixture isolates Vite's task-cache signal; the task should stay cacheable. + +## `vt run --cache vitest-run` + +first run: Vitest uses Vite as a non-watching transform server + +``` +$ vitest run --no-cache --reporter=./quiet-reporter.mjs +``` + +## `vt run --cache vitest-run` + +cache hit: no port listen or filesystem watcher opted out + +``` +$ vitest run --no-cache --reporter=./quiet-reporter.mjs ◉ cache hit, replaying + +--- +vt run: cache hit. +``` + +## `vt run --last-details` + +summary shows the cached replay + +``` + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + Vite+ Task Runner • Execution Summary +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +Statistics: 1 tasks • 1 cache hits • 0 cache misses +Performance: 100% cache hit rate + +Task Details: +──────────────────────────────────────────────── + [1] vitest-cache-modes-fixture#vitest-run: $ vitest run --no-cache --reporter=./quiet-reporter.mjs ✓ + → Cache hit - output replayed - +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots/vitest_watch_disables_cache.md b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots/vitest_watch_disables_cache.md new file mode 100644 index 000000000..d41b99995 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/snapshots/vitest_watch_disables_cache.md @@ -0,0 +1,39 @@ +# vitest_watch_disables_cache + +`vitest watch` starts Vite's filesystem watcher. Vitest's own result cache is disabled so this fixture isolates Vite's task-cache signal. The custom reporter exits after the first completed test run so the e2e can assert that the completed watch-mode task still opted out of caching. + +## `VITEST_EXIT_AFTER_RUN=1 vt run --cache vitest-watch` + +first run: watch mode observes the filesystem and opts out + +``` +$ vitest watch --no-cache --reporter=./quiet-reporter.mjs +``` + +## `VITEST_EXIT_AFTER_RUN=1 vt run --cache vitest-watch` + +re-executes because the watch run was not cached + +``` +$ vitest watch --no-cache --reporter=./quiet-reporter.mjs +``` + +## `vt run --last-details` + +summary names the watcher opt-out + +``` + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + Vite+ Task Runner • Execution Summary +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +Statistics: 1 tasks • 0 cache hits • 1 cache misses +Performance: 0% cache hit rate + +Task Details: +──────────────────────────────────────────────── + [1] vitest-cache-modes-fixture#vitest-watch: $ vitest watch --no-cache --reporter=./quiet-reporter.mjs ✓ + → Not cached: the task opted out of caching +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` diff --git a/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/vite-task.json b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/vite-task.json new file mode 100644 index 000000000..a3df4a9d9 --- /dev/null +++ b/crates/vite_task_bin/tests/e2e_snapshots/fixtures/vitest_cache_modes/vite-task.json @@ -0,0 +1,17 @@ +{ + "tasks": { + "vitest-run": { + "command": "vitest run --no-cache --reporter=./quiet-reporter.mjs", + "cache": true + }, + "vitest-api": { + "command": "vitest --api=51289 --run --no-cache --reporter=./quiet-reporter.mjs", + "cache": true + }, + "vitest-watch": { + "command": "vitest watch --no-cache --reporter=./quiet-reporter.mjs", + "cache": true, + "env": ["VITEST_EXIT_AFTER_RUN"] + } + } +} diff --git a/packages/tools/package.json b/packages/tools/package.json index c5b659197..ec65ccdbd 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -8,6 +8,7 @@ "oxfmt": "catalog:", "oxlint": "catalog:", "oxlint-tsgolint": "catalog:", - "vite": "catalog:" + "vite": "catalog:", + "vitest": "catalog:" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26166edc3..8b79d26c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,6 +30,9 @@ catalogs: vite-plus: specifier: 0.2.1 version: 0.2.1 + vitest: + specifier: 4.1.9 + version: 4.1.9 overrides: vite: npm:@voidzero-dev/vite-plus-core@0.2.1 @@ -75,6 +78,9 @@ importers: vite: specifier: https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68 version: https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3) + vitest: + specifier: 'catalog:' + version: 4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)) packages/vite-task-client: {} @@ -1390,12 +1396,12 @@ snapshots: - utf-8-validate - vite - '@vitest/browser-preview@4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3)))': + '@vitest/browser-preview@4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9)': dependencies: '@testing-library/dom': 10.4.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) - '@vitest/browser': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3))) - vitest: 4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3)) + '@vitest/browser': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9) + vitest: 4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)) transitivePeerDependencies: - bufferutil - msw @@ -1420,7 +1426,7 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3)))': + '@vitest/browser@4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9)': dependencies: '@blazediff/core': 1.9.1 '@vitest/mocker': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)) @@ -1429,7 +1435,7 @@ snapshots: pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3)) + vitest: 4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)) ws: 8.21.0 transitivePeerDependencies: - bufferutil @@ -1462,7 +1468,6 @@ snapshots: magic-string: 0.30.21 optionalDependencies: vite: https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3) - optional: true '@vitest/pretty-format@4.1.9': dependencies: @@ -1894,8 +1899,8 @@ snapshots: dependencies: '@oxc-project/types': 0.136.0 '@oxlint/plugins': 1.68.0 - '@vitest/browser': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3))) - '@vitest/browser-preview': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3))) + '@vitest/browser': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9) + '@vitest/browser-preview': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9) '@vitest/expect': 4.1.9 '@vitest/mocker': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)) '@vitest/pretty-format': 4.1.9 @@ -1907,7 +1912,7 @@ snapshots: oxfmt: 0.55.0(vite-plus@0.2.1(@types/node@25.0.3)(typescript@6.0.3)(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))) oxlint: 1.70.0(oxlint-tsgolint@0.23.0)(vite-plus@0.2.1(@types/node@25.0.3)(typescript@6.0.3)(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))) oxlint-tsgolint: 0.23.0 - vitest: 4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3))(vitest@4.1.9))(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)) + vitest: 4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)) optionalDependencies: '@voidzero-dev/vite-plus-darwin-arm64': 0.2.1 '@voidzero-dev/vite-plus-darwin-x64': 0.2.1 @@ -1963,10 +1968,10 @@ snapshots: '@types/node': 25.0.3 fsevents: 2.3.3 - vitest@4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3))(vitest@4.1.9))(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)): + vitest@4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3)): dependencies: '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)) + '@vitest/mocker': 4.1.9(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3)) '@vitest/pretty-format': 4.1.9 '@vitest/runner': 4.1.9 '@vitest/snapshot': 4.1.9 @@ -1983,19 +1988,18 @@ snapshots: tinyexec: 1.1.2 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3) + vite: '@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3)' why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.0.3 '@vitest/browser-preview': 4.1.9(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3))(vitest@4.1.9) transitivePeerDependencies: - msw - optional: true - vitest@4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3)): + vitest@4.1.9(@types/node@25.0.3)(@vitest/browser-preview@4.1.9)(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)): dependencies: '@vitest/expect': 4.1.9 - '@vitest/mocker': 4.1.9(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3)) + '@vitest/mocker': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3)) '@vitest/pretty-format': 4.1.9 '@vitest/runner': 4.1.9 '@vitest/snapshot': 4.1.9 @@ -2012,11 +2016,11 @@ snapshots: tinyexec: 1.1.2 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: '@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3)' + vite: https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.0.3 - '@vitest/browser-preview': 4.1.9(@voidzero-dev/vite-plus-core@0.2.1(@types/node@25.0.3)(typescript@6.0.3))(vitest@4.1.9) + '@vitest/browser-preview': 4.1.9(vite@https://pkg.pr.new/vite@1298951ebc5e5a94164c21f142fe748ca37eea68(@types/node@25.0.3))(vitest@4.1.9) transitivePeerDependencies: - msw diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b11c05e4e..5c7fed247 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -15,6 +15,7 @@ catalog: typescript: ^6.0.3 vite: npm:@voidzero-dev/vite-plus-core@0.2.1 vite-plus: 0.2.1 + vitest: 4.1.9 catalogMode: prefer overrides: