@cloudflare/vitest-pool-workers 0.12.20 → 0.13.0

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 (40) hide show
  1. package/dist/codemods/vitest-v3-to-v4.mjs +45 -0
  2. package/dist/codemods/vitest-v3-to-v4.mjs.map +1 -0
  3. package/dist/pool/index.d.mts +133 -0
  4. package/dist/pool/index.mjs +2784 -7847
  5. package/dist/pool/index.mjs.map +1 -6
  6. package/dist/worker/index.mjs +753 -792
  7. package/dist/worker/index.mjs.map +1 -6
  8. package/dist/worker/lib/cloudflare/snapshot.mjs +39 -0
  9. package/dist/worker/lib/cloudflare/snapshot.mjs.map +1 -0
  10. package/dist/worker/lib/cloudflare/test-internal.mjs +788 -1276
  11. package/dist/worker/lib/cloudflare/test-internal.mjs.map +1 -6
  12. package/dist/worker/lib/cloudflare/test.mjs +3 -36
  13. package/dist/worker/node/console.mjs +95 -116
  14. package/dist/worker/node/console.mjs.map +1 -6
  15. package/dist/worker/node/vm.mjs +10 -11
  16. package/dist/worker/node/vm.mjs.map +1 -6
  17. package/package.json +25 -21
  18. package/types/cloudflare-test.d.ts +5 -30
  19. package/dist/config/d1.d.ts +0 -7
  20. package/dist/config/index.cjs +0 -230
  21. package/dist/config/index.cjs.map +0 -6
  22. package/dist/config/index.d.ts +0 -27
  23. package/dist/config/pages.d.ts +0 -2
  24. package/dist/pool/config.d.ts +0 -112
  25. package/dist/pool/helpers.d.ts +0 -5
  26. package/dist/shared/builtin-modules.d.ts +0 -1
  27. package/dist/shared/d1.d.ts +0 -4
  28. package/dist/worker/lib/cloudflare/empty-internal.cjs +0 -27
  29. package/dist/worker/lib/cloudflare/empty-internal.cjs.map +0 -6
  30. package/dist/worker/lib/cloudflare/mock-agent.cjs +0 -3433
  31. package/dist/worker/lib/cloudflare/mock-agent.cjs.map +0 -6
  32. package/dist/worker/lib/cloudflare/test-runner.mjs +0 -246
  33. package/dist/worker/lib/cloudflare/test-runner.mjs.map +0 -6
  34. package/dist/worker/lib/cloudflare/test.mjs.map +0 -6
  35. package/dist/worker/lib/debug.mjs +0 -9
  36. package/dist/worker/lib/debug.mjs.map +0 -6
  37. package/dist/worker/lib/mlly.mjs +0 -48
  38. package/dist/worker/lib/mlly.mjs.map +0 -6
  39. package/dist/worker/lib/tinypool.mjs +0 -6
  40. package/dist/worker/lib/tinypool.mjs.map +0 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/vitest-pool-workers",
3
- "version": "0.12.20",
3
+ "version": "0.13.0",
4
4
  "description": "Workers Vitest integration for writing Vitest unit and integration tests that run inside the Workers runtime",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -28,17 +28,18 @@
28
28
  "type": "module",
29
29
  "exports": {
30
30
  ".": {
31
- "types": "./types/cloudflare-test.d.ts",
31
+ "types": "./dist/pool/index.d.mts",
32
32
  "import": "./dist/pool/index.mjs"
33
33
  },
34
- "./config": {
35
- "types": "./dist/config/index.d.ts",
36
- "import": "./dist/config/index.cjs",
37
- "require": "./dist/config/index.cjs"
34
+ "./types": {
35
+ "types": "./types/cloudflare-test.d.ts"
36
+ },
37
+ "./codemods/vitest-v3-to-v4": {
38
+ "import": "./dist/codemods/vitest-v3-to-v4.mjs"
38
39
  }
39
40
  },
40
41
  "main": "dist/pool/index.mjs",
41
- "types": "types/cloudflare-test.d.ts",
42
+ "types": "dist/pool/index.d.mts",
42
43
  "files": [
43
44
  "dist",
44
45
  "types/cloudflare-test.d.ts"
@@ -46,37 +47,40 @@
46
47
  "dependencies": {
47
48
  "cjs-module-lexer": "^1.2.3",
48
49
  "esbuild": "0.27.3",
49
- "miniflare": "4.20260301.1",
50
- "wrangler": "4.71.0"
50
+ "zod": "^3.25.76",
51
+ "miniflare": "4.20260312.0",
52
+ "wrangler": "4.73.0"
51
53
  },
52
54
  "devDependencies": {
53
- "@cloudflare/workers-types": "^4.20260226.1",
55
+ "@cloudflare/workers-types": "^4.20260312.1",
56
+ "@types/jscodeshift": "^17.3.0",
54
57
  "@types/node": "^20.19.9",
55
58
  "@types/semver": "^7.5.1",
56
- "@vitest/runner": "~3.2.0",
57
- "@vitest/snapshot": "~3.2.0",
59
+ "@vitest/runner": "4.1.0",
60
+ "@vitest/snapshot": "4.1.0",
58
61
  "birpc": "0.2.14",
59
62
  "capnp-es": "^0.0.14",
60
- "devalue": "^5.3.2",
63
+ "devalue": "^5.6.3",
61
64
  "eslint": "^9.39.1",
62
65
  "get-port": "^7.1.0",
66
+ "jscodeshift": "^17.3.0",
63
67
  "semver": "^7.7.1",
64
68
  "tree-kill": "^1.2.2",
65
69
  "ts-dedent": "^2.2.0",
70
+ "tsdown": "0.16.3",
66
71
  "typescript": "~5.8.3",
67
72
  "undici": "7.18.2",
68
- "vitest": "~3.2.0",
69
- "zod": "^3.25.76",
70
- "@cloudflare/eslint-config-shared": "1.2.1",
73
+ "vitest": "4.1.0",
71
74
  "@cloudflare/mock-npm-registry": "0.0.0",
75
+ "@cloudflare/eslint-config-shared": "1.2.1",
72
76
  "@cloudflare/workers-tsconfig": "0.0.0",
73
77
  "@cloudflare/workers-utils": "0.12.0",
74
78
  "@cloudflare/workflows-shared": "0.6.0"
75
79
  },
76
80
  "peerDependencies": {
77
- "@vitest/runner": "2.0.x - 3.2.x",
78
- "@vitest/snapshot": "2.0.x - 3.2.x",
79
- "vitest": "2.0.x - 3.2.x"
81
+ "@vitest/runner": "^4.1.0",
82
+ "@vitest/snapshot": "^4.1.0",
83
+ "vitest": "^4.1.0"
80
84
  },
81
85
  "volta": {
82
86
  "extends": "../../package.json"
@@ -85,11 +89,11 @@
85
89
  "prerelease": true
86
90
  },
87
91
  "scripts": {
88
- "build": "node scripts/bundle.mjs && tsc -p tsconfig.emit.json",
92
+ "build": "tsdown",
89
93
  "capnp:rtti": "capnp-es scripts/rtti/rtti.capnp -ojs",
90
94
  "check:lint": "eslint . --max-warnings=0 --cache",
91
95
  "check:type": "tsc && tsc -p src/worker/tsconfig.json && tsc -p types/tsconfig.json",
92
- "dev": "node scripts/bundle.mjs watch",
96
+ "dev": "tsdown --watch",
93
97
  "test": "vitest run",
94
98
  "test:ci": "vitest run"
95
99
  }
@@ -1,41 +1,18 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  declare module "cloudflare:test" {
3
- // eslint-disable-next-line @typescript-eslint/no-empty-object-type
4
- interface ProvidedEnv {}
5
-
6
3
  /**
7
- * 2nd argument passed to modules-format exported handlers. Contains bindings
8
- * configured in top-level `miniflare` pool options. To configure the type
9
- * of this value, use an ambient module type:
10
- *
11
- * ```ts
12
- * declare module "cloudflare:test" {
13
- * interface ProvidedEnv {
14
- * NAMESPACE: KVNamespace;
15
- * }
16
- *
17
- * // ...or if you have an existing `Env` type...
18
- * interface ProvidedEnv extends Env {}
19
- * }
20
- * ```
4
+ * @deprecated Instead, use `import { env } from "cloudflare:workers"`
21
5
  */
22
- export const env: ProvidedEnv;
6
+ export const env: Cloudflare.Env;
23
7
 
24
8
  /**
25
9
  * Service binding to the default export defined in the `main` worker. Note
26
10
  * this `main` worker runs in the same isolate/context as tests, so any global
27
11
  * mocks will apply to it too.
12
+ * @deprecated Instead, use `import { exports } from "cloudflare:workers"` and `exports.default.fetch()`
28
13
  */
29
14
  export const SELF: Fetcher;
30
15
 
31
- /**
32
- * Declarative interface for mocking outbound `fetch()` requests. Deactivated
33
- * by default and reset before running each test file. Only mocks `fetch()`
34
- * requests for the current test runner worker. Auxiliary workers should mock
35
- * `fetch()`es with the Miniflare `fetchMock`/`outboundService` options.
36
- */
37
- export const fetchMock: MockAgent;
38
-
39
16
  /**
40
17
  * Runs `callback` inside the Durable Object pointed-to by `stub`'s context.
41
18
  * Conceptually, this temporarily replaces your Durable Object's `fetch()`
@@ -63,8 +40,6 @@ declare module "cloudflare:test" {
63
40
  ): Promise<boolean /* ran */>;
64
41
  /**
65
42
  * Gets the IDs of all objects that have been created in the `namespace`.
66
- * Respects `isolatedStorage` if enabled, i.e. objects created in a different
67
- * test won't be returned.
68
43
  */
69
44
  export function listDurableObjectIds<T>(
70
45
  namespace: DurableObjectNamespace<T>
@@ -81,7 +56,7 @@ declare module "cloudflare:test" {
81
56
  * `EventContext`s return by `createPagesEventContext()`.
82
57
  */
83
58
  export function waitOnExecutionContext(
84
- ctx: ExecutionContext | EventContext<ProvidedEnv, string, any>
59
+ ctx: ExecutionContext | EventContext<Cloudflare.Env, string, any>
85
60
  ): Promise<void>;
86
61
  /**
87
62
  * Creates an instance of `ScheduledController` for use as the 1st argument to
@@ -566,7 +541,7 @@ declare module "cloudflare:test" {
566
541
  * Functions.
567
542
  */
568
543
  export function createPagesEventContext<
569
- F extends PagesFunction<ProvidedEnv, string, any>,
544
+ F extends PagesFunction<Cloudflare.Env, string, any>,
570
545
  >(init: EventContextInit<Parameters<F>[0]>): Parameters<F>[0];
571
546
 
572
547
  // Taken from `undici` (https://github.com/nodejs/undici/tree/main/types) with
@@ -1,7 +0,0 @@
1
- import type { D1Migration } from "../shared/d1";
2
- /**
3
- * Reads all migrations in `migrationsPath`, ordered by migration number.
4
- * Each migration will have its contents split into an array of SQL queries.
5
- */
6
- export declare function readD1Migrations(migrationsPath: string): Promise<D1Migration[]>;
7
- export type { D1Migration };
@@ -1,230 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/config/index.ts
31
- var config_exports = {};
32
- __export(config_exports, {
33
- buildPagesASSETSBinding: () => buildPagesASSETSBinding,
34
- defineWorkersConfig: () => defineWorkersConfig,
35
- defineWorkersProject: () => defineWorkersProject,
36
- readD1Migrations: () => readD1Migrations
37
- });
38
- module.exports = __toCommonJS(config_exports);
39
-
40
- // <define:VITEST_POOL_WORKERS_DEFINE_BUILTIN_MODULES>
41
- var define_VITEST_POOL_WORKERS_DEFINE_BUILTIN_MODULES_default = ["node-internal:async_hooks", "node-internal:buffer", "node-internal:crypto", "node-internal:module", "node-internal:process", "node-internal:util", "node-internal:diagnostics_channel", "node-internal:zlib", "node-internal:url", "node-internal:timers", "node-internal:sqlite", "node-internal:dns", "node:_stream_duplex", "node:_stream_passthrough", "node:_stream_readable", "node:_stream_transform", "node:_stream_writable", "node:_tls_common", "node:_tls_wrap", "node:assert", "node:assert/strict", "node:async_hooks", "node:buffer", "node:constants", "node:crypto", "node:diagnostics_channel", "node:dns", "node:dns/promises", "node:events", "node:fs/promises", "node:module", "node:net", "node:path", "node:path/posix", "node:path/win32", "node:querystring", "node:stream", "node:stream/consumers", "node:stream/promises", "node:stream/web", "node:string_decoder", "node:test", "node:timers", "node:timers/promises", "node:tls", "node:url", "node:util", "node:util/types", "node:zlib", "node-internal:constants", "node-internal:crypto_cipher", "node-internal:crypto_dh", "node-internal:crypto_hash", "node-internal:crypto_hkdf", "node-internal:crypto_keys", "node-internal:crypto_pbkdf2", "node-internal:crypto_random", "node-internal:crypto_scrypt", "node-internal:crypto_sign", "node-internal:crypto_spkac", "node-internal:crypto_util", "node-internal:crypto_x509", "node-internal:debuglog", "node-internal:events", "node-internal:internal_assert", "node-internal:internal_assertionerror", "node-internal:internal_buffer", "node-internal:internal_comparisons", "node-internal:internal_diffs", "node-internal:internal_dns", "node-internal:internal_dns_client", "node-internal:internal_dns_constants", "node-internal:internal_dns_promises", "node-internal:internal_errors", "node-internal:internal_fs", "node-internal:internal_fs_callback", "node-internal:internal_fs_constants", "node-internal:internal_fs_promises", "node-internal:internal_fs_streams", "node-internal:internal_fs_sync", "node-internal:internal_fs_utils", "node-internal:internal_http", "node-internal:internal_http2_constants", "node-internal:internal_http_agent", "node-internal:internal_http_client", "node-internal:internal_http_constants", "node-internal:internal_http_incoming", "node-internal:internal_http_outgoing", "node-internal:internal_http_server", "node-internal:internal_http_util", "node-internal:internal_https_agent", "node-internal:internal_https_server", "node-internal:internal_inspect", "node-internal:internal_module", "node-internal:internal_net", "node-internal:internal_path", "node-internal:internal_process", "node-internal:internal_querystring", "node-internal:internal_readline", "node-internal:internal_readline_promises", "node-internal:internal_stringdecoder", "node-internal:internal_timers", "node-internal:internal_timers_global_override", "node-internal:internal_timers_promises", "node-internal:internal_tls", "node-internal:internal_tls_common", "node-internal:internal_tls_constants", "node-internal:internal_tls_jsstream", "node-internal:internal_tls_wrap", "node-internal:internal_types", "node-internal:internal_url", "node-internal:internal_utils", "node-internal:internal_zlib", "node-internal:internal_zlib_base", "node-internal:internal_zlib_constants", "node-internal:legacy_process", "node-internal:legacy_url", "node-internal:mock", "node-internal:public_process", "node-internal:streams_add_abort_signal", "node-internal:streams_compose", "node-internal:streams_destroy", "node-internal:streams_duplex", "node-internal:streams_end_of_stream", "node-internal:streams_legacy", "node-internal:streams_pipeline", "node-internal:streams_promises", "node-internal:streams_readable", "node-internal:streams_state", "node-internal:streams_transform", "node-internal:streams_util", "node-internal:streams_writable", "node-internal:validators", "internal:unsafe-eval", "cloudflare-internal:sockets", "cloudflare-internal:base64", "cloudflare-internal:messagechannel", "cloudflare:ai", "cloudflare:br", "cloudflare:email", "cloudflare:node", "cloudflare:pipelines", "cloudflare:sockets", "cloudflare:vectorize", "cloudflare:workers", "cloudflare:workflows", "cloudflare-internal:ai-api", "cloudflare-internal:aig-api", "cloudflare-internal:autorag-api", "cloudflare-internal:br-api", "cloudflare-internal:d1-api", "cloudflare-internal:http", "cloudflare-internal:images-api", "cloudflare-internal:pipeline-transform", "cloudflare-internal:streaming-base64", "cloudflare-internal:streaming-forms", "cloudflare-internal:test-tracing-wrapper", "cloudflare-internal:to-markdown-api", "cloudflare-internal:tracing-helpers", "cloudflare-internal:vectorize-api", "cloudflare-internal:workflows-api", "cloudflare-internal:workers", "cloudflare-internal:tracing", "cloudflare-internal:env", "cloudflare-internal:filesystem", "workerd:unsafe"];
42
-
43
- // src/config/index.ts
44
- var import_node_assert = __toESM(require("node:assert"), 1);
45
- var import_node_crypto = __toESM(require("node:crypto"), 1);
46
- var import_promises = __toESM(require("node:fs/promises"), 1);
47
- var import_node_module = require("node:module");
48
- var import_node_path2 = __toESM(require("node:path"), 1);
49
- var import_node_worker_threads = require("node:worker_threads");
50
-
51
- // src/shared/builtin-modules.ts
52
- var workerdBuiltinModules = /* @__PURE__ */ new Set([
53
- ...define_VITEST_POOL_WORKERS_DEFINE_BUILTIN_MODULES_default,
54
- "__STATIC_CONTENT_MANIFEST"
55
- ]);
56
-
57
- // src/config/d1.ts
58
- var import_node_fs = __toESM(require("node:fs"), 1);
59
- var import_node_path = __toESM(require("node:path"), 1);
60
- async function readD1Migrations(migrationsPath) {
61
- if (typeof migrationsPath !== "string") {
62
- throw new TypeError(
63
- "Failed to execute 'readD1Migrations': parameter 1 is not of type 'string'."
64
- );
65
- }
66
- const { unstable_splitSqlQuery } = await import("wrangler");
67
- const names = import_node_fs.default.readdirSync(migrationsPath).filter((name) => name.endsWith(".sql"));
68
- names.sort((a, b) => {
69
- const aNumber = parseInt(a.split("_")[0]);
70
- const bNumber = parseInt(b.split("_")[0]);
71
- return aNumber - bNumber;
72
- });
73
- return names.map((name) => {
74
- const migrationPath = import_node_path.default.join(migrationsPath, name);
75
- const migration = import_node_fs.default.readFileSync(migrationPath, "utf8");
76
- const queries = unstable_splitSqlQuery(migration);
77
- return { name, queries };
78
- });
79
- }
80
-
81
- // src/config/pages.ts
82
- async function buildPagesASSETSBinding(assetsPath) {
83
- if (typeof assetsPath !== "string") {
84
- throw new TypeError(
85
- "Failed to execute 'buildPagesASSETSBinding': parameter 1 is not of type 'string'."
86
- );
87
- }
88
- const { unstable_generateASSETSBinding } = await import("wrangler");
89
- const log = {
90
- ...console,
91
- debugWithSanitization: console.debug,
92
- loggerLevel: "info",
93
- columns: process.stdout.columns
94
- };
95
- return unstable_generateASSETSBinding({ log, directory: assetsPath });
96
- }
97
-
98
- // src/config/index.ts
99
- var cloudflareTestPath = import_node_path2.default.resolve(
100
- __dirname,
101
- "../worker/lib/cloudflare/test.mjs"
102
- );
103
- var channel;
104
- globalThis.structuredClone ??= function(value, options) {
105
- channel ??= new import_node_worker_threads.MessageChannel();
106
- channel.port1.unref();
107
- channel.port2.unref();
108
- channel.port1.postMessage(value, options?.transfer);
109
- const message = (0, import_node_worker_threads.receiveMessageOnPort)(channel.port2);
110
- (0, import_node_assert.default)(message !== void 0);
111
- return message.message;
112
- };
113
- function mapAnyConfigExport(f, config) {
114
- if (typeof config === "function") {
115
- return (env) => {
116
- const t = config(env);
117
- if (t instanceof Promise) {
118
- return t.then(f);
119
- } else {
120
- return f(t);
121
- }
122
- };
123
- } else if (config instanceof Promise) {
124
- return config.then(f);
125
- } else {
126
- return f(config);
127
- }
128
- }
129
- function ensureArrayIncludes(array, items) {
130
- for (const item of items) {
131
- if (!array.includes(item)) {
132
- array.push(item);
133
- }
134
- }
135
- }
136
- function ensureArrayExcludes(array, items) {
137
- for (let i = 0; i < array.length; i++) {
138
- if (items.includes(array[i])) {
139
- array.splice(i, 1);
140
- i--;
141
- }
142
- }
143
- }
144
- var requiredConditions = ["workerd", "worker", "browser"];
145
- var requiredMainFields = ["browser", "module", "jsnext:main", "jsnext"];
146
- function createConfigPlugin() {
147
- const uuid = import_node_crypto.default.randomUUID();
148
- let main;
149
- return {
150
- name: "@cloudflare/vitest-pool-workers:config",
151
- api: {
152
- setMain(newMain) {
153
- main = newMain;
154
- }
155
- },
156
- // Run after `vitest:project` plugin:
157
- // https://github.com/vitest-dev/vitest/blob/v3.0.5/packages/vitest/src/node/plugins/workspace.ts#L37
158
- config(config) {
159
- config.resolve ??= {};
160
- config.resolve.conditions ??= [];
161
- config.resolve.mainFields ??= [];
162
- config.ssr ??= {};
163
- config.test ??= {};
164
- ensureArrayExcludes(config.resolve.conditions, ["node"]);
165
- ensureArrayIncludes(config.resolve.conditions, requiredConditions);
166
- ensureArrayIncludes(config.resolve.mainFields, requiredMainFields);
167
- config.ssr.target = "webworker";
168
- config.test.deps ??= {};
169
- config.test.deps.optimizer ??= {};
170
- config.test.deps.optimizer.ssr ??= {};
171
- config.test.deps.optimizer.ssr.enabled ??= true;
172
- config.test.deps.optimizer.ssr.include ??= [];
173
- ensureArrayIncludes(config.test.deps.optimizer.ssr.include, [
174
- "vitest > @vitest/snapshot > magic-string"
175
- ]);
176
- ensureArrayIncludes(config.test.deps.optimizer.ssr.include, [
177
- "vitest > @vitest/expect > chai"
178
- ]);
179
- config.test.deps.optimizer.ssr.exclude ??= [];
180
- ensureArrayIncludes(config.test.deps.optimizer.ssr.exclude, [
181
- ...workerdBuiltinModules,
182
- ...import_node_module.builtinModules.concat(import_node_module.builtinModules.map((m) => `node:${m}`))
183
- ]);
184
- config.test.pool ??= "@cloudflare/vitest-pool-workers";
185
- },
186
- resolveId(id) {
187
- if (id === "cloudflare:test") {
188
- return `\0cloudflare:test-${uuid}`;
189
- }
190
- },
191
- async load(id) {
192
- if (id === `\0cloudflare:test-${uuid}`) {
193
- let contents = await import_promises.default.readFile(cloudflareTestPath, "utf8");
194
- if (main !== void 0) {
195
- contents += `import ${JSON.stringify(main)};`;
196
- }
197
- return contents;
198
- }
199
- }
200
- };
201
- }
202
- function ensureWorkersConfig(config) {
203
- config.plugins ??= [];
204
- config.plugins.push(createConfigPlugin());
205
- return config;
206
- }
207
- function defineWorkersConfig(config) {
208
- if (typeof config === "function") {
209
- return mapAnyConfigExport(ensureWorkersConfig, config);
210
- } else if (config instanceof Promise) {
211
- return mapAnyConfigExport(ensureWorkersConfig, config);
212
- }
213
- return mapAnyConfigExport(ensureWorkersConfig, config);
214
- }
215
- function defineWorkersProject(config) {
216
- if (typeof config === "function") {
217
- return mapAnyConfigExport(ensureWorkersConfig, config);
218
- } else if (config instanceof Promise) {
219
- return mapAnyConfigExport(ensureWorkersConfig, config);
220
- }
221
- return mapAnyConfigExport(ensureWorkersConfig, config);
222
- }
223
- // Annotate the CommonJS export names for ESM import in node:
224
- 0 && (module.exports = {
225
- buildPagesASSETSBinding,
226
- defineWorkersConfig,
227
- defineWorkersProject,
228
- readD1Migrations
229
- });
230
- //# sourceMappingURL=index.cjs.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/config/index.ts", "<define:VITEST_POOL_WORKERS_DEFINE_BUILTIN_MODULES>", "../../src/shared/builtin-modules.ts", "../../src/config/d1.ts", "../../src/config/pages.ts"],
4
- "mappings": "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",
5
- "names": ["import_node_path", "fs", "path", "path", "assert", "crypto", "fs"]
6
- }
@@ -1,27 +0,0 @@
1
- import type { WorkersPoolOptions } from "../pool/config";
2
- import type { Awaitable, inject } from "vitest";
3
- import type { ConfigEnv, UserConfig, UserWorkspaceConfig } from "vitest/config";
4
- type ConfigFn<T extends UserConfig> = (env: ConfigEnv) => T | Promise<T>;
5
- export type AnyConfigExport<T extends UserConfig> = T | Promise<T> | ConfigFn<T>;
6
- export interface WorkerPoolOptionsContext {
7
- inject: typeof inject;
8
- }
9
- export type WorkersUserConfig<T extends UserConfig> = T & {
10
- test?: {
11
- pool?: "@cloudflare/vitest-pool-workers";
12
- poolMatchGlobs?: never;
13
- poolOptions?: {
14
- workers?: WorkersPoolOptions | ((ctx: WorkerPoolOptionsContext) => Awaitable<WorkersPoolOptions>);
15
- };
16
- };
17
- };
18
- export type WorkersUserConfigExport = WorkersUserConfig<UserConfig>;
19
- export type WorkersProjectConfigExport = WorkersUserConfig<UserWorkspaceConfig>;
20
- export declare function defineWorkersConfig(config: WorkersUserConfigExport): WorkersUserConfigExport;
21
- export declare function defineWorkersConfig(config: Promise<WorkersUserConfigExport>): Promise<WorkersUserConfigExport>;
22
- export declare function defineWorkersConfig(config: ConfigFn<WorkersUserConfigExport>): ConfigFn<WorkersUserConfigExport>;
23
- export declare function defineWorkersProject(config: WorkersProjectConfigExport): WorkersProjectConfigExport;
24
- export declare function defineWorkersProject(config: Promise<WorkersProjectConfigExport>): Promise<WorkersProjectConfigExport>;
25
- export declare function defineWorkersProject(config: ConfigFn<WorkersProjectConfigExport>): ConfigFn<WorkersProjectConfigExport>;
26
- export * from "./d1";
27
- export * from "./pages";
@@ -1,2 +0,0 @@
1
- import type { Request, Response } from "miniflare";
2
- export declare function buildPagesASSETSBinding(assetsPath: string): Promise<(request: Request) => Promise<Response>>;
@@ -1,112 +0,0 @@
1
- import { z } from "zod";
2
- import type { ModuleRule, WorkerOptions } from "miniflare";
3
- import type { WorkspaceProject } from "vitest/node";
4
- import type { Binding, RemoteProxySession } from "wrangler";
5
- export interface WorkersConfigPluginAPI {
6
- setMain(newMain?: string): void;
7
- }
8
- export declare const OPTIONS_PATH: string;
9
- declare const WorkersPoolOptionsSchema: z.ZodObject<{
10
- /**
11
- * Entrypoint to Worker run in the same isolate/context as tests. This is
12
- * required to use `import { SELF } from "cloudflare:test"`, or Durable
13
- * Objects without an explicit `scriptName`. Note this goes through Vite
14
- * transforms and can be a TypeScript file. Note also
15
- * `import module from "<path-to-main>"` inside tests gives exactly the same
16
- * `module` instance as is used internally for the `SELF` and Durable Object
17
- * bindings.
18
- */
19
- main: z.ZodOptional<z.ZodString>;
20
- /**
21
- * Enables per-test isolated storage. If enabled, any writes to storage
22
- * performed in a test will be undone at the end of the test. The test storage
23
- * environment is copied from the containing suite, meaning `beforeAll()`
24
- * hooks can be used to seed data. If this is disabled, all tests will share
25
- * the same storage.
26
- */
27
- isolatedStorage: z.ZodDefault<z.ZodBoolean>;
28
- /**
29
- * Enables remote bindings to access remote resources configured
30
- * with `remote: true` in the wrangler configuration file.
31
- */
32
- remoteBindings: z.ZodDefault<z.ZodBoolean>;
33
- /**
34
- * Additional exports.
35
- * A map of module exports to be made available on the `ctx.exports`
36
- * that cannot be automatically inferred by analyzing the Worker source code.
37
- *
38
- * This is useful for exports that are re-exported implicitly, for example
39
- * through wildcard (`export * from "..."`) re-exports from virtual modules.
40
- */
41
- additionalExports: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodLiteral<"WorkerEntrypoint">, z.ZodLiteral<"DurableObject">, z.ZodLiteral<"WorkflowEntrypoint">]>>>;
42
- /**
43
- * If enabled, Workers will be run in a single shared worker instance.
44
- */
45
- /**
46
- * Runs all tests in this project serially in the same worker, using the same
47
- * module cache. This can significantly speed up tests if you've got lots of
48
- * small test files.
49
- */
50
- singleWorker: z.ZodDefault<z.ZodBoolean>;
51
- miniflare: z.ZodOptional<z.ZodObject<{
52
- workers: z.ZodOptional<z.ZodArray<z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>, "many">>;
53
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
54
- workers: z.ZodOptional<z.ZodArray<z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>, "many">>;
55
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
56
- workers: z.ZodOptional<z.ZodArray<z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>, "many">>;
57
- }, z.ZodTypeAny, "passthrough">>>;
58
- wrangler: z.ZodOptional<z.ZodObject<{
59
- configPath: z.ZodOptional<z.ZodString>;
60
- environment: z.ZodOptional<z.ZodString>;
61
- }, "strip", z.ZodTypeAny, {
62
- environment?: string | undefined;
63
- configPath?: string | undefined;
64
- }, {
65
- environment?: string | undefined;
66
- configPath?: string | undefined;
67
- }>>;
68
- }, "strip", z.ZodTypeAny, {
69
- isolatedStorage: boolean;
70
- remoteBindings: boolean;
71
- additionalExports: Record<string, "WorkerEntrypoint" | "DurableObject" | "WorkflowEntrypoint">;
72
- singleWorker: boolean;
73
- wrangler?: {
74
- environment?: string | undefined;
75
- configPath?: string | undefined;
76
- } | undefined;
77
- main?: string | undefined;
78
- miniflare?: z.objectOutputType<{
79
- workers: z.ZodOptional<z.ZodArray<z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>, "many">>;
80
- }, z.ZodTypeAny, "passthrough"> | undefined;
81
- }, {
82
- wrangler?: {
83
- environment?: string | undefined;
84
- configPath?: string | undefined;
85
- } | undefined;
86
- main?: string | undefined;
87
- isolatedStorage?: boolean | undefined;
88
- remoteBindings?: boolean | undefined;
89
- additionalExports?: Record<string, "WorkerEntrypoint" | "DurableObject" | "WorkflowEntrypoint"> | undefined;
90
- singleWorker?: boolean | undefined;
91
- miniflare?: z.objectInputType<{
92
- workers: z.ZodOptional<z.ZodArray<z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>, "many">>;
93
- }, z.ZodTypeAny, "passthrough"> | undefined;
94
- }>;
95
- export type SourcelessWorkerOptions = Omit<WorkerOptions, "script" | "scriptPath" | "modules" | "modulesRoot"> & {
96
- modulesRules?: ModuleRule[];
97
- };
98
- export type WorkersPoolOptions = z.input<typeof WorkersPoolOptionsSchema> & {
99
- miniflare?: SourcelessWorkerOptions & {
100
- workers?: WorkerOptions[];
101
- };
102
- };
103
- export type WorkersPoolOptionsWithDefines = WorkersPoolOptions & {
104
- defines?: Record<string, string>;
105
- };
106
- /** Map that maps worker configPaths to their existing remote proxy session data (if any) */
107
- export declare const remoteProxySessionsDataMap: Map<string, {
108
- session: RemoteProxySession;
109
- remoteBindings: Record<string, Binding>;
110
- } | null>;
111
- export declare function parseProjectOptions(project: WorkspaceProject): Promise<WorkersPoolOptionsWithDefines>;
112
- export {};
@@ -1,5 +0,0 @@
1
- import type { WorkspaceProject } from "vitest/node";
2
- export declare const WORKER_NAME_PREFIX = "vitest-pool-workers-";
3
- export declare function isFileNotFoundError(e: unknown): boolean;
4
- export declare function getProjectPath(project: WorkspaceProject): string | number;
5
- export declare function getRelativeProjectPath(project: WorkspaceProject): string | number;
@@ -1 +0,0 @@
1
- export declare const workerdBuiltinModules: Set<string>;
@@ -1,4 +0,0 @@
1
- export type D1Migration = {
2
- name: string;
3
- queries: string[];
4
- };
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/worker/lib/cloudflare/empty-internal.cts
21
- var empty_internal_exports = {};
22
- __export(empty_internal_exports, {
23
- default: () => empty_internal_default
24
- });
25
- module.exports = __toCommonJS(empty_internal_exports);
26
- var empty_internal_default = {};
27
- //# sourceMappingURL=empty-internal.cjs.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/worker/lib/cloudflare/empty-internal.cts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAO,yBAAQ,CAAC;",
5
- "names": []
6
- }