vitest 4.0.0-beta.1 → 4.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/LICENSE.md +2 -2
  2. package/dist/browser.d.ts +13 -14
  3. package/dist/browser.js +6 -5
  4. package/dist/chunks/base.Cjha6usc.js +129 -0
  5. package/dist/chunks/{benchmark.CYdenmiT.js → benchmark.CJUa-Hsa.js} +6 -8
  6. package/dist/chunks/{benchmark.d.BwvBVTda.d.ts → benchmark.d.DAaHLpsq.d.ts} +4 -4
  7. package/dist/chunks/{browser.d.q8Z0P0q1.d.ts → browser.d.yFAklsD1.d.ts} +5 -5
  8. package/dist/chunks/{cac.D3EzDDZd.js → cac.DCxo_nSu.js} +70 -152
  9. package/dist/chunks/{cli-api.Dn5gKePv.js → cli-api.BJJXh9BV.js} +1330 -1677
  10. package/dist/chunks/{config.d.HJdfX-8k.d.ts → config.d.B_LthbQq.d.ts} +58 -63
  11. package/dist/chunks/{console.CtFJOzRO.js → console.7h5kHUIf.js} +34 -70
  12. package/dist/chunks/{constants.DnKduX2e.js → constants.D_Q9UYh-.js} +1 -9
  13. package/dist/chunks/{coverage.Cwa-XhJt.js → coverage.BCU-r2QL.js} +515 -781
  14. package/dist/chunks/{coverage.DVF1vEu8.js → coverage.D_JHT54q.js} +2 -2
  15. package/dist/chunks/{coverage.d.S9RMNXIe.d.ts → coverage.d.BZtK59WP.d.ts} +10 -8
  16. package/dist/chunks/{creator.GK6I-cL4.js → creator.08Gi-vCA.js} +93 -77
  17. package/dist/chunks/{date.Bq6ZW5rf.js → date.-jtEtIeV.js} +6 -17
  18. package/dist/chunks/{environment.d.CUq4cUgQ.d.ts → environment.d.BsToaxti.d.ts} +27 -6
  19. package/dist/chunks/{git.BVQ8w_Sw.js → git.BFNcloKD.js} +1 -2
  20. package/dist/chunks/{global.d.CVbXEflG.d.ts → global.d.BK3X7FW1.d.ts} +2 -5
  21. package/dist/chunks/{globals.Cxal6MLI.js → globals.DG-S3xFe.js} +8 -8
  22. package/dist/chunks/{index.CZI_8rVt.js → index.BIP7prJq.js} +289 -608
  23. package/dist/chunks/{index.B521nVV-.js → index.Bgo3tNWt.js} +23 -4
  24. package/dist/chunks/{index.TfbsX-3I.js → index.BjKEiSn0.js} +14 -24
  25. package/dist/chunks/{index.BWf_gE5n.js → index.CMfqw92x.js} +7 -6
  26. package/dist/chunks/{index.CmSc2RE5.js → index.DIWhzsUh.js} +72 -118
  27. package/dist/chunks/{inspector.C914Efll.js → inspector.CvQD-Nie.js} +10 -25
  28. package/dist/chunks/moduleRunner.d.D9nBoC4p.d.ts +201 -0
  29. package/dist/chunks/moduleTransport.I-bgQy0S.js +19 -0
  30. package/dist/chunks/{node.fjCdwEIl.js → node.CyipiPvJ.js} +1 -1
  31. package/dist/chunks/{plugin.d.C2EcJUjo.d.ts → plugin.d.BMVSnsGV.d.ts} +1 -1
  32. package/dist/chunks/{reporters.d.DxZg19fy.d.ts → reporters.d.BUWjmRYq.d.ts} +1226 -1291
  33. package/dist/chunks/resolveSnapshotEnvironment.Bkht6Yor.js +81 -0
  34. package/dist/chunks/resolver.Bx6lE0iq.js +119 -0
  35. package/dist/chunks/rpc.BKr6mtxz.js +65 -0
  36. package/dist/chunks/{setup-common.D7ZqXFx-.js → setup-common.uiMcU3cv.js} +17 -29
  37. package/dist/chunks/startModuleRunner.p67gbNo9.js +665 -0
  38. package/dist/chunks/{suite.d.FvehnV49.d.ts → suite.d.BJWk38HB.d.ts} +1 -1
  39. package/dist/chunks/test.BiqSKISg.js +214 -0
  40. package/dist/chunks/{typechecker.CVytUJuF.js → typechecker.DB-fIMaH.js} +144 -213
  41. package/dist/chunks/{utils.CAioKnHs.js → utils.C2YI6McM.js} +5 -14
  42. package/dist/chunks/{utils.XdZDrNZV.js → utils.D2R2NiOH.js} +8 -27
  43. package/dist/chunks/{vi.bdSIJ99Y.js → vi.ZPgvtBao.js} +156 -305
  44. package/dist/chunks/{vm.BThCzidc.js → vm.Ca0Y0W5f.js} +116 -226
  45. package/dist/chunks/{worker.d.DoNjFAiv.d.ts → worker.d.BDsXGkwh.d.ts} +28 -22
  46. package/dist/chunks/{worker.d.CmvJfRGs.d.ts → worker.d.BNcX_2mH.d.ts} +1 -1
  47. package/dist/cli.js +4 -4
  48. package/dist/config.cjs +3 -9
  49. package/dist/config.d.ts +49 -54
  50. package/dist/config.js +1 -1
  51. package/dist/coverage.d.ts +27 -26
  52. package/dist/coverage.js +6 -7
  53. package/dist/environments.d.ts +9 -13
  54. package/dist/environments.js +1 -1
  55. package/dist/index.d.ts +38 -45
  56. package/dist/index.js +7 -9
  57. package/dist/module-evaluator.d.ts +13 -0
  58. package/dist/module-evaluator.js +276 -0
  59. package/dist/module-runner.js +15 -0
  60. package/dist/node.d.ts +40 -41
  61. package/dist/node.js +23 -33
  62. package/dist/reporters.d.ts +12 -13
  63. package/dist/reporters.js +3 -3
  64. package/dist/runners.d.ts +3 -3
  65. package/dist/runners.js +13 -232
  66. package/dist/snapshot.js +2 -2
  67. package/dist/suite.d.ts +2 -2
  68. package/dist/suite.js +2 -2
  69. package/dist/worker.js +90 -47
  70. package/dist/workers/forks.js +34 -10
  71. package/dist/workers/runVmTests.js +36 -56
  72. package/dist/workers/threads.js +34 -10
  73. package/dist/workers/vmForks.js +11 -10
  74. package/dist/workers/vmThreads.js +11 -10
  75. package/dist/workers.d.ts +5 -4
  76. package/dist/workers.js +35 -17
  77. package/globals.d.ts +17 -17
  78. package/package.json +32 -31
  79. package/dist/chunks/base.Bj3pWTr1.js +0 -38
  80. package/dist/chunks/execute.B7h3T_Hc.js +0 -708
  81. package/dist/chunks/index.D-VkfKhf.js +0 -105
  82. package/dist/chunks/rpc.CsFtxqeq.js +0 -83
  83. package/dist/chunks/runBaseTests.BC7ZIH5L.js +0 -129
  84. package/dist/execute.d.ts +0 -148
  85. package/dist/execute.js +0 -13
package/dist/worker.js CHANGED
@@ -1,50 +1,69 @@
1
1
  import { pathToFileURL } from 'node:url';
2
2
  import { createStackString, parseStacktrace } from '@vitest/utils/source-map';
3
- import { workerId } from 'tinypool';
4
- import { ViteNodeRunner, ModuleCacheMap } from 'vite-node/client';
3
+ import { ModuleRunner, EvaluatedModules } from 'vite/module-runner';
5
4
  import { readFileSync } from 'node:fs';
6
- import { resolve, normalize } from 'pathe';
7
- import { e as environments } from './chunks/index.CmSc2RE5.js';
8
- import { s as setupInspect } from './chunks/inspector.C914Efll.js';
9
- import { c as createRuntimeRpc, a as rpcDone } from './chunks/rpc.CsFtxqeq.js';
10
- import { i as isChildProcess, s as setProcessTitle } from './chunks/utils.XdZDrNZV.js';
11
- import { d as disposeInternalListeners } from './chunks/utils.CAioKnHs.js';
5
+ import { isBuiltin } from 'node:module';
6
+ import { resolve } from 'pathe';
7
+ import { V as VitestTransport } from './chunks/moduleTransport.I-bgQy0S.js';
8
+ import { e as environments } from './chunks/index.DIWhzsUh.js';
9
+ import { s as setupInspect } from './chunks/inspector.CvQD-Nie.js';
10
+ import { c as createRuntimeRpc, a as rpcDone } from './chunks/rpc.BKr6mtxz.js';
11
+ import { i as isChildProcess } from './chunks/utils.D2R2NiOH.js';
12
+ import { d as disposeInternalListeners } from './chunks/utils.C2YI6McM.js';
12
13
  import 'node:console';
13
- import 'node:module';
14
14
  import '@vitest/utils';
15
- import './chunks/index.B521nVV-.js';
15
+ import './chunks/index.Bgo3tNWt.js';
16
16
 
17
17
  function isBuiltinEnvironment(env) {
18
18
  return env in environments;
19
19
  }
20
- const _loaders = /* @__PURE__ */ new Map();
21
- async function createEnvironmentLoader(options) {
22
- if (!_loaders.has(options.root)) {
23
- const loader = new ViteNodeRunner(options);
24
- await loader.executeId("/@vite/env");
25
- _loaders.set(options.root, loader);
20
+ const isWindows = process.platform === "win32", _loaders = /* @__PURE__ */ new Map();
21
+ async function createEnvironmentLoader(root, rpc) {
22
+ const cachedLoader = _loaders.get(root);
23
+ if (!cachedLoader || cachedLoader.isClosed()) {
24
+ _loaders.delete(root);
25
+ const moduleRunner = new ModuleRunner({
26
+ hmr: false,
27
+ sourcemapInterceptor: "prepareStackTrace",
28
+ transport: new VitestTransport({
29
+ async fetchModule(id, importer, options) {
30
+ const result = await rpc.fetch(id, importer, "__vitest__", options);
31
+ if ("cached" in result) {
32
+ const code = readFileSync(result.tmp, "utf-8");
33
+ return {
34
+ code,
35
+ ...result
36
+ };
37
+ }
38
+ if (isWindows && "externalize" in result)
39
+ // TODO: vitest returns paths for external modules, but Vite returns file://
40
+ // https://github.com/vitejs/vite/pull/20449
41
+ result.externalize = isBuiltin(id) || /^(?:node:|data:|http:|https:|file:)/.test(id) ? result.externalize : pathToFileURL(result.externalize).toString();
42
+ return result;
43
+ },
44
+ async resolveId(id, importer) {
45
+ return rpc.resolve(id, importer, "__vitest__");
46
+ }
47
+ })
48
+ });
49
+ _loaders.set(root, moduleRunner), await moduleRunner.import("/@vite/env");
26
50
  }
27
- return _loaders.get(options.root);
51
+ return _loaders.get(root);
28
52
  }
29
53
  async function loadEnvironment(ctx, rpc) {
30
54
  const name = ctx.environment.name;
31
- if (isBuiltinEnvironment(name)) return environments[name];
32
- const loader = await createEnvironmentLoader({
33
- root: ctx.config.root,
34
- fetchModule: async (id) => {
35
- const result = await rpc.fetch(id, "ssr");
36
- if (result.id) return { code: readFileSync(result.id, "utf-8") };
37
- return result;
38
- },
39
- resolveId: (id, importer) => rpc.resolveId(id, importer, "ssr")
40
- });
41
- const root = loader.root;
42
- const packageId = name[0] === "." || name[0] === "/" ? resolve(root, name) : (await rpc.resolveId(`vitest-environment-${name}`, void 0, "ssr"))?.id ?? resolve(root, name);
43
- const pkg = await loader.executeId(normalize(packageId));
55
+ if (isBuiltinEnvironment(name)) return { environment: environments[name] };
56
+ const root = ctx.config.root, loader = await createEnvironmentLoader(root, rpc), packageId = name[0] === "." || name[0] === "/" ? resolve(root, name) : (await rpc.resolve(`vitest-environment-${name}`, void 0, "__vitest__"))?.id ?? resolve(root, name), pkg = await loader.import(packageId);
44
57
  if (!pkg || !pkg.default || typeof pkg.default !== "object") throw new TypeError(`Environment "${name}" is not a valid environment. Path "${packageId}" should export default object with a "setup" or/and "setupVM" method.`);
45
58
  const environment = pkg.default;
46
- if (environment.transformMode !== "web" && environment.transformMode !== "ssr") throw new TypeError(`Environment "${name}" is not a valid environment. Path "${packageId}" should export default object with a "transformMode" method equal to "ssr" or "web".`);
47
- return environment;
59
+ if (environment.transformMode != null && environment.transformMode !== "web" && environment.transformMode !== "ssr") throw new TypeError(`Environment "${name}" is not a valid environment. Path "${packageId}" should export default object with a "transformMode" method equal to "ssr" or "web", received "${environment.transformMode}".`);
60
+ if (environment.transformMode)
61
+ // keep for backwards compat
62
+ console.warn(`The Vitest environment ${environment.name} defines the "transformMode". This options was deprecated in Vitest 4 and will be removed in the next major version. Please, use "viteEnvironment" instead.`), environment.viteEnvironment ??= environment.transformMode === "ssr" ? "ssr" : "client";
63
+ return {
64
+ environment,
65
+ loader
66
+ };
48
67
  }
49
68
 
50
69
  const listeners = /* @__PURE__ */ new Set();
@@ -57,7 +76,6 @@ async function cleanup() {
57
76
  }
58
77
 
59
78
  if (isChildProcess()) {
60
- setProcessTitle(`vitest ${workerId}`);
61
79
  const isProfiling = process.execArgv.some((execArg) => execArg.startsWith("--prof") || execArg.startsWith("--cpu-prof") || execArg.startsWith("--heap-prof") || execArg.startsWith("--diagnostic-dir"));
62
80
  if (isProfiling)
63
81
  // Work-around for nodejs/node#55094
@@ -65,29 +83,36 @@ if (isChildProcess()) {
65
83
  process.exit();
66
84
  });
67
85
  }
86
+ const resolvingModules = /* @__PURE__ */ new Set();
68
87
  // this is what every pool executes when running tests
69
88
  async function execute(method, ctx) {
70
89
  disposeInternalListeners();
71
- const prepareStart = performance.now();
72
- const inspectorCleanup = setupInspect(ctx);
90
+ const prepareStart = performance.now(), cleanups = [setupInspect(ctx)];
73
91
  process.env.VITEST_WORKER_ID = String(ctx.workerId);
74
- process.env.VITEST_POOL_ID = String(workerId);
92
+ const poolId = process.__tinypool_state__?.workerId;
93
+ process.env.VITEST_POOL_ID = String(poolId);
94
+ let environmentLoader;
75
95
  try {
76
96
  // worker is a filepath or URL to a file that exposes a default export with "getRpcOptions" and "runTests" methods
77
97
  if (ctx.worker[0] === ".") throw new Error(`Path to the test runner cannot be relative, received "${ctx.worker}"`);
78
- const file = ctx.worker.startsWith("file:") ? ctx.worker : pathToFileURL(ctx.worker).toString();
79
- const testRunnerModule = await import(file);
98
+ const file = ctx.worker.startsWith("file:") ? ctx.worker : pathToFileURL(ctx.worker).toString(), testRunnerModule = await import(file);
80
99
  if (!testRunnerModule.default || typeof testRunnerModule.default !== "object") throw new TypeError(`Test worker object should be exposed as a default export. Received "${typeof testRunnerModule.default}"`);
81
100
  const worker = testRunnerModule.default;
82
101
  if (!worker.getRpcOptions || typeof worker.getRpcOptions !== "function") throw new TypeError(`Test worker should expose "getRpcOptions" method. Received "${typeof worker.getRpcOptions}".`);
83
102
  // RPC is used to communicate between worker (be it a thread worker or child process or a custom implementation) and the main thread
84
103
  const { rpc, onCancel } = createRuntimeRpc(worker.getRpcOptions(ctx));
85
- const beforeEnvironmentTime = performance.now();
86
- const environment = await loadEnvironment(ctx, rpc);
87
- if (ctx.environment.transformMode) environment.transformMode = ctx.environment.transformMode;
104
+ // do not close the RPC channel so that we can get the error messages sent to the main thread
105
+ cleanups.push(async () => {
106
+ await Promise.all(rpc.$rejectPendingCalls(({ method, reject }) => {
107
+ reject(/* @__PURE__ */ new Error(`[vitest-worker]: Closing rpc while "${method}" was pending`));
108
+ }));
109
+ });
110
+ const beforeEnvironmentTime = performance.now(), { environment, loader } = await loadEnvironment(ctx, rpc);
111
+ environmentLoader = loader;
88
112
  const state = {
89
113
  ctx,
90
- moduleCache: new ModuleCacheMap(),
114
+ evaluatedModules: new EvaluatedModules(),
115
+ resolvingModules,
91
116
  moduleExecutionInfo: /* @__PURE__ */ new Map(),
92
117
  config: ctx.config,
93
118
  onCancel,
@@ -101,14 +126,13 @@ async function execute(method, ctx) {
101
126
  providedContext: ctx.providedContext,
102
127
  onFilterStackTrace(stack) {
103
128
  return createStackString(parseStacktrace(stack));
104
- }
105
- };
106
- const methodName = method === "collect" ? "collectTests" : "runTests";
129
+ },
130
+ metaEnv: createImportMetaEnvProxy()
131
+ }, methodName = method === "collect" ? "collectTests" : "runTests";
107
132
  if (!worker[methodName] || typeof worker[methodName] !== "function") throw new TypeError(`Test worker should expose "runTests" method. Received "${typeof worker.runTests}".`);
108
133
  await worker[methodName](state);
109
134
  } finally {
110
- await rpcDone().catch(() => {});
111
- inspectorCleanup();
135
+ await Promise.all(cleanups.map((fn) => fn())), await rpcDone().catch(() => {}), environmentLoader?.close();
112
136
  }
113
137
  }
114
138
  function run(ctx) {
@@ -120,5 +144,24 @@ function collect(ctx) {
120
144
  async function teardown() {
121
145
  return cleanup();
122
146
  }
147
+ function createImportMetaEnvProxy() {
148
+ // packages/vitest/src/node/plugins/index.ts:146
149
+ const booleanKeys = [
150
+ "DEV",
151
+ "PROD",
152
+ "SSR"
153
+ ];
154
+ return new Proxy(process.env, {
155
+ get(_, key) {
156
+ return typeof key === "string" ? booleanKeys.includes(key) ? !!process.env[key] : process.env[key] : void 0;
157
+ },
158
+ set(_, key, value) {
159
+ if (typeof key !== "string") return true;
160
+ if (booleanKeys.includes(key)) process.env[key] = value ? "1" : "";
161
+ else process.env[key] = value;
162
+ return true;
163
+ }
164
+ });
165
+ }
123
166
 
124
167
  export { collect, run, teardown };
@@ -1,20 +1,44 @@
1
1
  import v8 from 'node:v8';
2
- import { r as runBaseTests } from '../chunks/base.Bj3pWTr1.js';
3
- import { c as createForksRpcOptions, u as unwrapSerializableConfig } from '../chunks/utils.CAioKnHs.js';
4
- import 'vite-node/client';
5
- import '../chunks/execute.B7h3T_Hc.js';
2
+ import { r as runBaseTests } from '../chunks/base.Cjha6usc.js';
3
+ import { c as createForksRpcOptions, u as unwrapSerializableConfig } from '../chunks/utils.C2YI6McM.js';
4
+ import 'node:vm';
5
+ import '@vitest/spy';
6
+ import 'vite/module-runner';
7
+ import '../chunks/startModuleRunner.p67gbNo9.js';
6
8
  import 'node:fs';
9
+ import 'node:module';
10
+ import '@vitest/utils';
7
11
  import 'node:url';
8
- import 'node:vm';
9
- import '@vitest/utils/error';
10
12
  import 'pathe';
11
- import 'vite-node/utils';
12
13
  import '../path.js';
13
14
  import 'node:path';
15
+ import '@vitest/utils/error';
16
+ import '../module-evaluator.js';
14
17
  import '@vitest/mocker';
15
- import 'node:module';
16
- import '@vitest/utils';
17
- import '../chunks/utils.XdZDrNZV.js';
18
+ import '../chunks/moduleTransport.I-bgQy0S.js';
19
+ import 'node:perf_hooks';
20
+ import '@vitest/runner';
21
+ import '../chunks/resolveSnapshotEnvironment.Bkht6Yor.js';
22
+ import '@vitest/expect';
23
+ import '../chunks/setup-common.uiMcU3cv.js';
24
+ import '../chunks/coverage.D_JHT54q.js';
25
+ import '@vitest/snapshot';
26
+ import '../chunks/utils.D2R2NiOH.js';
27
+ import '../chunks/rpc.BKr6mtxz.js';
28
+ import '../chunks/index.Bgo3tNWt.js';
29
+ import '../chunks/test.BiqSKISg.js';
30
+ import '../chunks/benchmark.CJUa-Hsa.js';
31
+ import '@vitest/runner/utils';
32
+ import '../chunks/vi.ZPgvtBao.js';
33
+ import '../chunks/_commonjsHelpers.BFTU3MAI.js';
34
+ import '@vitest/utils/source-map';
35
+ import '../chunks/date.-jtEtIeV.js';
36
+ import '../chunks/inspector.CvQD-Nie.js';
37
+ import 'node:timers';
38
+ import 'node:timers/promises';
39
+ import 'node:util';
40
+ import '../chunks/index.CMfqw92x.js';
41
+ import 'expect-type';
18
42
 
19
43
  class ForksBaseWorker {
20
44
  getRpcOptions() {
@@ -4,81 +4,61 @@ import timers from 'node:timers';
4
4
  import timersPromises from 'node:timers/promises';
5
5
  import util from 'node:util';
6
6
  import { startTests, collectTests } from '@vitest/runner';
7
- import { KNOWN_ASSET_TYPES } from 'vite-node/constants';
8
- import { installSourcemapsSupport } from 'vite-node/source-map';
9
- import { s as setupChaiConfig, r as resolveTestRunner, a as resolveSnapshotEnvironment } from '../chunks/index.D-VkfKhf.js';
10
- import { c as setupCommonEnv, s as startCoverageInsideWorker, a as stopCoverageInsideWorker } from '../chunks/setup-common.D7ZqXFx-.js';
11
- import { V as VitestIndex } from '../chunks/index.BWf_gE5n.js';
12
- import { c as closeInspector } from '../chunks/inspector.C914Efll.js';
13
- import { g as getWorkerState } from '../chunks/utils.XdZDrNZV.js';
14
- import 'chai';
15
- import 'node:path';
16
- import '../path.js';
17
- import 'node:url';
18
- import '../chunks/rpc.CsFtxqeq.js';
19
- import '@vitest/utils';
20
- import '../chunks/index.B521nVV-.js';
21
- import '../chunks/coverage.DVF1vEu8.js';
22
- import '@vitest/snapshot';
23
- import '../chunks/vi.bdSIJ99Y.js';
7
+ import { KNOWN_ASSET_TYPES } from '@vitest/utils';
8
+ import { s as setupChaiConfig, r as resolveTestRunner, a as resolveSnapshotEnvironment } from '../chunks/resolveSnapshotEnvironment.Bkht6Yor.js';
9
+ import { c as setupCommonEnv, s as startCoverageInsideWorker, a as stopCoverageInsideWorker } from '../chunks/setup-common.uiMcU3cv.js';
10
+ import { i as index } from '../chunks/index.CMfqw92x.js';
11
+ import { c as closeInspector } from '../chunks/inspector.CvQD-Nie.js';
12
+ import { g as getWorkerState } from '../chunks/utils.D2R2NiOH.js';
13
+ import { g as globalExpect } from '../chunks/vi.ZPgvtBao.js';
24
14
  import '@vitest/expect';
15
+ import '../chunks/rpc.BKr6mtxz.js';
16
+ import '../chunks/index.Bgo3tNWt.js';
17
+ import '../chunks/test.BiqSKISg.js';
18
+ import '../chunks/benchmark.CJUa-Hsa.js';
25
19
  import '@vitest/runner/utils';
26
- import '../chunks/_commonjsHelpers.BFTU3MAI.js';
27
20
  import '@vitest/utils/error';
21
+ import 'pathe';
22
+ import '../chunks/coverage.D_JHT54q.js';
23
+ import '@vitest/snapshot';
24
+ import 'expect-type';
25
+ import 'vite/module-runner';
26
+ import 'node:url';
27
+ import '../chunks/_commonjsHelpers.BFTU3MAI.js';
28
28
  import '@vitest/spy';
29
29
  import '@vitest/utils/source-map';
30
- import '../chunks/date.Bq6ZW5rf.js';
31
- import '../chunks/benchmark.CYdenmiT.js';
32
- import 'expect-type';
30
+ import '../chunks/date.-jtEtIeV.js';
33
31
 
34
- async function run(method, files, config, executor) {
32
+ async function run(method, files, config, moduleRunner) {
35
33
  const workerState = getWorkerState();
36
- await setupCommonEnv(config);
37
- Object.defineProperty(globalThis, "__vitest_index__", {
38
- value: VitestIndex,
34
+ await setupCommonEnv(config), Object.defineProperty(globalThis, "__vitest_index__", {
35
+ value: index,
39
36
  enumerable: false
40
37
  });
41
- if (workerState.environment.transformMode === "web") {
38
+ const viteEnvironment = workerState.environment.viteEnvironment || workerState.environment.name;
39
+ if (globalExpect.setState({ environment: workerState.environment.name }), viteEnvironment === "client") {
42
40
  const _require = createRequire(import.meta.url);
43
- // always mock "required" `css` files, because we cannot process them
44
- _require.extensions[".css"] = resolveCss;
45
- _require.extensions[".scss"] = resolveCss;
46
- _require.extensions[".sass"] = resolveCss;
47
- _require.extensions[".less"] = resolveCss;
48
- // since we are using Vite, we can assume how these will be resolved
49
- KNOWN_ASSET_TYPES.forEach((type) => {
41
+ _require.extensions[".css"] = resolveCss, _require.extensions[".scss"] = resolveCss, _require.extensions[".sass"] = resolveCss, _require.extensions[".less"] = resolveCss, KNOWN_ASSET_TYPES.forEach((type) => {
50
42
  _require.extensions[`.${type}`] = resolveAsset;
51
- });
52
- process.env.SSR = "";
43
+ }), process.env.SSR = "";
53
44
  } else process.env.SSR = "1";
54
- // @ts-expect-error not typed global for patched timers
55
- globalThis.__vitest_required__ = {
45
+ if (globalThis.__vitest_required__ = {
56
46
  util,
57
47
  timers,
58
48
  timersPromises
59
- };
60
- installSourcemapsSupport({ getSourceMap: (source) => workerState.moduleCache.getSourceMap(source) });
61
- await startCoverageInsideWorker(config.coverage, executor, { isolate: false });
62
- if (config.chaiConfig) setupChaiConfig(config.chaiConfig);
63
- const [runner, snapshotEnvironment] = await Promise.all([resolveTestRunner(config, executor), resolveSnapshotEnvironment(config, executor)]);
64
- config.snapshotOptions.snapshotEnvironment = snapshotEnvironment;
65
- runner.getWorkerContext = void 0;
66
- workerState.onCancel.then((reason) => {
67
- closeInspector(config);
68
- runner.cancel?.(reason);
69
- });
70
- workerState.durations.prepare = performance.now() - workerState.durations.prepare;
71
- const { vi } = VitestIndex;
49
+ }, await startCoverageInsideWorker(config.coverage, moduleRunner, { isolate: false }), config.chaiConfig) setupChaiConfig(config.chaiConfig);
50
+ const [runner, snapshotEnvironment] = await Promise.all([resolveTestRunner(config, moduleRunner), resolveSnapshotEnvironment(config, moduleRunner)]);
51
+ config.snapshotOptions.snapshotEnvironment = snapshotEnvironment, runner.getWorkerContext = void 0, workerState.onCancel.then((reason) => {
52
+ closeInspector(config), runner.cancel?.(reason);
53
+ }), workerState.durations.prepare = performance.now() - workerState.durations.prepare;
54
+ const { vi } = index;
72
55
  for (const file of files) {
73
- workerState.filepath = file.filepath;
74
- if (method === "run") await startTests([file], runner);
56
+ if (workerState.filepath = file.filepath, method === "run") await startTests([file], runner);
75
57
  else await collectTests([file], runner);
76
- // reset after tests, because user might call `vi.setConfig` in setupFile
77
- vi.resetConfig();
78
58
  // mocks should not affect different files
79
- vi.restoreAllMocks();
59
+ vi.resetConfig(), vi.restoreAllMocks();
80
60
  }
81
- await stopCoverageInsideWorker(config.coverage, executor, { isolate: false });
61
+ await stopCoverageInsideWorker(config.coverage, moduleRunner, { isolate: false });
82
62
  }
83
63
  function resolveCss(mod) {
84
64
  mod.exports = "";
@@ -1,19 +1,43 @@
1
- import { r as runBaseTests } from '../chunks/base.Bj3pWTr1.js';
2
- import { a as createThreadsRpcOptions } from '../chunks/utils.CAioKnHs.js';
3
- import 'vite-node/client';
4
- import '../chunks/execute.B7h3T_Hc.js';
1
+ import { r as runBaseTests } from '../chunks/base.Cjha6usc.js';
2
+ import { a as createThreadsRpcOptions } from '../chunks/utils.C2YI6McM.js';
3
+ import 'node:vm';
4
+ import '@vitest/spy';
5
+ import 'vite/module-runner';
6
+ import '../chunks/startModuleRunner.p67gbNo9.js';
5
7
  import 'node:fs';
8
+ import 'node:module';
9
+ import '@vitest/utils';
6
10
  import 'node:url';
7
- import 'node:vm';
8
- import '@vitest/utils/error';
9
11
  import 'pathe';
10
- import 'vite-node/utils';
11
12
  import '../path.js';
12
13
  import 'node:path';
14
+ import '@vitest/utils/error';
15
+ import '../module-evaluator.js';
13
16
  import '@vitest/mocker';
14
- import 'node:module';
15
- import '@vitest/utils';
16
- import '../chunks/utils.XdZDrNZV.js';
17
+ import '../chunks/moduleTransport.I-bgQy0S.js';
18
+ import 'node:perf_hooks';
19
+ import '@vitest/runner';
20
+ import '../chunks/resolveSnapshotEnvironment.Bkht6Yor.js';
21
+ import '@vitest/expect';
22
+ import '../chunks/setup-common.uiMcU3cv.js';
23
+ import '../chunks/coverage.D_JHT54q.js';
24
+ import '@vitest/snapshot';
25
+ import '../chunks/utils.D2R2NiOH.js';
26
+ import '../chunks/rpc.BKr6mtxz.js';
27
+ import '../chunks/index.Bgo3tNWt.js';
28
+ import '../chunks/test.BiqSKISg.js';
29
+ import '../chunks/benchmark.CJUa-Hsa.js';
30
+ import '@vitest/runner/utils';
31
+ import '../chunks/vi.ZPgvtBao.js';
32
+ import '../chunks/_commonjsHelpers.BFTU3MAI.js';
33
+ import '@vitest/utils/source-map';
34
+ import '../chunks/date.-jtEtIeV.js';
35
+ import '../chunks/inspector.CvQD-Nie.js';
36
+ import 'node:timers';
37
+ import 'node:timers/promises';
38
+ import 'node:util';
39
+ import '../chunks/index.CMfqw92x.js';
40
+ import 'expect-type';
17
41
 
18
42
  class ThreadsBaseWorker {
19
43
  getRpcOptions(ctx) {
@@ -1,26 +1,27 @@
1
1
  import v8 from 'node:v8';
2
- import { c as createForksRpcOptions, u as unwrapSerializableConfig } from '../chunks/utils.CAioKnHs.js';
3
- import { r as runVmTests } from '../chunks/vm.BThCzidc.js';
2
+ import { c as createForksRpcOptions, u as unwrapSerializableConfig } from '../chunks/utils.C2YI6McM.js';
3
+ import { r as runVmTests } from '../chunks/vm.Ca0Y0W5f.js';
4
4
  import '@vitest/utils';
5
5
  import 'node:url';
6
6
  import 'node:vm';
7
7
  import 'pathe';
8
8
  import '../path.js';
9
9
  import 'node:path';
10
- import '../chunks/console.CtFJOzRO.js';
10
+ import '../chunks/console.7h5kHUIf.js';
11
11
  import 'node:console';
12
12
  import 'node:stream';
13
13
  import 'tinyrainbow';
14
- import '../chunks/date.Bq6ZW5rf.js';
15
- import '../chunks/utils.XdZDrNZV.js';
16
- import '../chunks/execute.B7h3T_Hc.js';
14
+ import '../chunks/date.-jtEtIeV.js';
15
+ import '../chunks/utils.D2R2NiOH.js';
17
16
  import 'node:fs';
17
+ import 'node:module';
18
+ import '../chunks/resolver.Bx6lE0iq.js';
19
+ import '../module-evaluator.js';
20
+ import 'vite/module-runner';
21
+ import '../chunks/startModuleRunner.p67gbNo9.js';
18
22
  import '@vitest/utils/error';
19
- import 'vite-node/client';
20
- import 'vite-node/utils';
21
23
  import '@vitest/mocker';
22
- import 'node:module';
23
- import 'vite-node/constants';
24
+ import '../chunks/moduleTransport.I-bgQy0S.js';
24
25
 
25
26
  class ForksVmWorker {
26
27
  getRpcOptions() {
@@ -1,25 +1,26 @@
1
- import { a as createThreadsRpcOptions } from '../chunks/utils.CAioKnHs.js';
2
- import { r as runVmTests } from '../chunks/vm.BThCzidc.js';
1
+ import { a as createThreadsRpcOptions } from '../chunks/utils.C2YI6McM.js';
2
+ import { r as runVmTests } from '../chunks/vm.Ca0Y0W5f.js';
3
3
  import '@vitest/utils';
4
4
  import 'node:url';
5
5
  import 'node:vm';
6
6
  import 'pathe';
7
7
  import '../path.js';
8
8
  import 'node:path';
9
- import '../chunks/console.CtFJOzRO.js';
9
+ import '../chunks/console.7h5kHUIf.js';
10
10
  import 'node:console';
11
11
  import 'node:stream';
12
12
  import 'tinyrainbow';
13
- import '../chunks/date.Bq6ZW5rf.js';
14
- import '../chunks/utils.XdZDrNZV.js';
15
- import '../chunks/execute.B7h3T_Hc.js';
13
+ import '../chunks/date.-jtEtIeV.js';
14
+ import '../chunks/utils.D2R2NiOH.js';
16
15
  import 'node:fs';
16
+ import 'node:module';
17
+ import '../chunks/resolver.Bx6lE0iq.js';
18
+ import '../module-evaluator.js';
19
+ import 'vite/module-runner';
20
+ import '../chunks/startModuleRunner.p67gbNo9.js';
17
21
  import '@vitest/utils/error';
18
- import 'vite-node/client';
19
- import 'vite-node/utils';
20
22
  import '@vitest/mocker';
21
- import 'node:module';
22
- import 'vite-node/constants';
23
+ import '../chunks/moduleTransport.I-bgQy0S.js';
23
24
 
24
25
  class ThreadsVmWorker {
25
26
  getRpcOptions(ctx) {
package/dist/workers.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { W as WorkerGlobalState, C as ContextRPC, B as BirpcOptions, R as RuntimeRPC } from './chunks/worker.d.DoNjFAiv.js';
1
+ import { W as WorkerGlobalState, C as ContextRPC, B as BirpcOptions, R as RuntimeRPC } from './chunks/worker.d.BDsXGkwh.js';
2
2
  import { Awaitable } from '@vitest/utils';
3
3
  import * as v8 from 'v8';
4
- import { a as SerializedConfig } from './chunks/config.d.HJdfX-8k.js';
5
- import { W as WorkerContext } from './chunks/worker.d.CmvJfRGs.js';
4
+ import { a as SerializedConfig } from './chunks/config.d.B_LthbQq.js';
5
+ import { W as WorkerContext } from './chunks/worker.d.BNcX_2mH.js';
6
6
  import '@vitest/runner';
7
- import './chunks/environment.d.CUq4cUgQ.js';
7
+ import 'vite/module-runner';
8
+ import './chunks/environment.d.BsToaxti.js';
8
9
  import '@vitest/snapshot';
9
10
  import '@vitest/pretty-format';
10
11
  import '@vitest/utils/diff';
package/dist/workers.js CHANGED
@@ -1,30 +1,48 @@
1
- export { p as provideWorkerState } from './chunks/utils.XdZDrNZV.js';
1
+ export { p as provideWorkerState } from './chunks/utils.D2R2NiOH.js';
2
2
  export { collect as collectVitestWorkerTests, run as runVitestWorker } from './worker.js';
3
- export { r as runBaseTests } from './chunks/base.Bj3pWTr1.js';
4
- export { c as createForksRpcOptions, a as createThreadsRpcOptions, u as unwrapSerializableConfig } from './chunks/utils.CAioKnHs.js';
5
- export { r as runVmTests } from './chunks/vm.BThCzidc.js';
3
+ export { r as runBaseTests } from './chunks/base.Cjha6usc.js';
4
+ export { c as createForksRpcOptions, a as createThreadsRpcOptions, u as unwrapSerializableConfig } from './chunks/utils.C2YI6McM.js';
5
+ export { r as runVmTests } from './chunks/vm.Ca0Y0W5f.js';
6
6
  import '@vitest/utils';
7
7
  import 'node:url';
8
8
  import '@vitest/utils/source-map';
9
- import 'tinypool';
10
- import 'vite-node/client';
9
+ import 'vite/module-runner';
11
10
  import 'node:fs';
11
+ import 'node:module';
12
12
  import 'pathe';
13
- import './chunks/index.CmSc2RE5.js';
13
+ import './chunks/moduleTransport.I-bgQy0S.js';
14
+ import './chunks/index.DIWhzsUh.js';
14
15
  import 'node:console';
15
- import './chunks/inspector.C914Efll.js';
16
- import 'node:module';
17
- import './chunks/rpc.CsFtxqeq.js';
18
- import './chunks/index.B521nVV-.js';
19
- import './chunks/execute.B7h3T_Hc.js';
16
+ import './chunks/inspector.CvQD-Nie.js';
17
+ import './chunks/rpc.BKr6mtxz.js';
18
+ import './chunks/index.Bgo3tNWt.js';
20
19
  import 'node:vm';
21
- import '@vitest/utils/error';
22
- import 'vite-node/utils';
20
+ import '@vitest/spy';
21
+ import './chunks/startModuleRunner.p67gbNo9.js';
23
22
  import './path.js';
24
23
  import 'node:path';
24
+ import '@vitest/utils/error';
25
+ import './module-evaluator.js';
25
26
  import '@vitest/mocker';
26
- import './chunks/console.CtFJOzRO.js';
27
+ import 'node:perf_hooks';
28
+ import '@vitest/runner';
29
+ import './chunks/resolveSnapshotEnvironment.Bkht6Yor.js';
30
+ import '@vitest/expect';
31
+ import './chunks/setup-common.uiMcU3cv.js';
32
+ import './chunks/coverage.D_JHT54q.js';
33
+ import '@vitest/snapshot';
34
+ import './chunks/test.BiqSKISg.js';
35
+ import './chunks/benchmark.CJUa-Hsa.js';
36
+ import '@vitest/runner/utils';
37
+ import './chunks/vi.ZPgvtBao.js';
38
+ import './chunks/_commonjsHelpers.BFTU3MAI.js';
39
+ import './chunks/date.-jtEtIeV.js';
40
+ import 'node:timers';
41
+ import 'node:timers/promises';
42
+ import 'node:util';
43
+ import './chunks/index.CMfqw92x.js';
44
+ import 'expect-type';
45
+ import './chunks/console.7h5kHUIf.js';
27
46
  import 'node:stream';
28
47
  import 'tinyrainbow';
29
- import './chunks/date.Bq6ZW5rf.js';
30
- import 'vite-node/constants';
48
+ import './chunks/resolver.Bx6lE0iq.js';
package/globals.d.ts CHANGED
@@ -1,20 +1,20 @@
1
1
  declare global {
2
- const suite: typeof import('vitest')['suite']
3
- const test: typeof import('vitest')['test']
4
- const chai: typeof import("vitest")["chai"]
5
- const describe: typeof import('vitest')['describe']
6
- const it: typeof import('vitest')['it']
7
- const expectTypeOf: typeof import('vitest')['expectTypeOf']
8
- const assertType: typeof import('vitest')['assertType']
9
- const expect: typeof import('vitest')['expect']
10
- const assert: typeof import('vitest')['assert']
11
- const vitest: typeof import('vitest')['vitest']
12
- const vi: typeof import('vitest')['vitest']
13
- const beforeAll: typeof import('vitest')['beforeAll']
14
- const afterAll: typeof import('vitest')['afterAll']
15
- const beforeEach: typeof import('vitest')['beforeEach']
16
- const afterEach: typeof import('vitest')['afterEach']
17
- const onTestFailed: typeof import('vitest')['onTestFailed']
18
- const onTestFinished: typeof import('vitest')['onTestFinished']
2
+ let suite: typeof import('vitest')['suite']
3
+ let test: typeof import('vitest')['test']
4
+ let chai: typeof import("vitest")["chai"]
5
+ let describe: typeof import('vitest')['describe']
6
+ let it: typeof import('vitest')['it']
7
+ let expectTypeOf: typeof import('vitest')['expectTypeOf']
8
+ let assertType: typeof import('vitest')['assertType']
9
+ let expect: typeof import('vitest')['expect']
10
+ let assert: typeof import('vitest')['assert']
11
+ let vitest: typeof import('vitest')['vitest']
12
+ let vi: typeof import('vitest')['vitest']
13
+ let beforeAll: typeof import('vitest')['beforeAll']
14
+ let afterAll: typeof import('vitest')['afterAll']
15
+ let beforeEach: typeof import('vitest')['beforeEach']
16
+ let afterEach: typeof import('vitest')['afterEach']
17
+ let onTestFailed: typeof import('vitest')['onTestFailed']
18
+ let onTestFinished: typeof import('vitest')['onTestFinished']
19
19
  }
20
20
  export {}