env-runner 0.1.9 → 0.1.11

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 (45) hide show
  1. package/README.md +130 -16
  2. package/dist/THIRD-PARTY-LICENSES.md +19 -0
  3. package/dist/_chunks/base-runner.d.mts +80 -3
  4. package/dist/_chunks/base-runner.mjs +108 -44
  5. package/dist/_chunks/libs/cjs-module-lexer.mjs +1 -1
  6. package/dist/_chunks/libs/es-module-lexer.mjs +83 -0
  7. package/dist/_chunks/runner.d.mts +3 -3
  8. package/dist/_chunks/runner.mjs +6 -3
  9. package/dist/_chunks/runner2.d.mts +15 -3
  10. package/dist/_chunks/runner2.mjs +145 -56
  11. package/dist/_chunks/runner3.d.mts +3 -3
  12. package/dist/_chunks/runner3.mjs +3 -3
  13. package/dist/_chunks/runner4.d.mts +4 -4
  14. package/dist/_chunks/runner4.mjs +3 -2
  15. package/dist/_chunks/runner5.d.mts +4 -4
  16. package/dist/_chunks/runner5.mjs +3 -2
  17. package/dist/_chunks/server.mjs +60 -17
  18. package/dist/_chunks/types.d.mts +15 -3
  19. package/dist/_chunks/virtual-loader.mjs +63 -0
  20. package/dist/_chunks/worker-utils.mjs +123 -9
  21. package/dist/cli.mjs +1 -1
  22. package/dist/index.d.mts +52 -14
  23. package/dist/index.mjs +6 -6
  24. package/dist/runners/bun-process/runner.d.mts +2 -2
  25. package/dist/runners/bun-process/runner.mjs +12 -2
  26. package/dist/runners/bun-process/worker.mjs +23 -3
  27. package/dist/runners/deno-process/runner.d.mts +2 -2
  28. package/dist/runners/deno-process/runner.mjs +1 -1
  29. package/dist/runners/deno-process/worker.mjs +22 -3
  30. package/dist/runners/miniflare/runner.d.mts +2 -2
  31. package/dist/runners/miniflare/runner.mjs +1 -1
  32. package/dist/runners/netlify/runner.d.mts +2 -2
  33. package/dist/runners/netlify/runner.mjs +1 -1
  34. package/dist/runners/node-process/runner.d.mts +2 -2
  35. package/dist/runners/node-process/runner.mjs +4 -2
  36. package/dist/runners/node-process/worker.mjs +23 -3
  37. package/dist/runners/node-worker/runner.d.mts +2 -2
  38. package/dist/runners/node-worker/runner.mjs +1 -1
  39. package/dist/runners/node-worker/worker.mjs +22 -3
  40. package/dist/runners/self/runner.d.mts +3 -2
  41. package/dist/runners/self/runner.mjs +6 -3
  42. package/dist/runners/vercel/runner.d.mts +2 -2
  43. package/dist/runners/vercel/runner.mjs +1 -1
  44. package/dist/vite.d.mts +1 -1
  45. package/package.json +12 -11
@@ -0,0 +1,83 @@
1
+ var ImportType;
2
+ (function(A) {
3
+ A[A.Static = 1] = "Static", A[A.Dynamic = 2] = "Dynamic", A[A.ImportMeta = 3] = "ImportMeta", A[A.StaticSourcePhase = 4] = "StaticSourcePhase", A[A.DynamicSourcePhase = 5] = "DynamicSourcePhase", A[A.StaticDeferPhase = 6] = "StaticDeferPhase", A[A.DynamicDeferPhase = 7] = "DynamicDeferPhase";
4
+ })(ImportType || (ImportType = {}));
5
+ const A = 1 === new Uint8Array(new Uint16Array([1]).buffer)[0];
6
+ function parse(E, g = "@") {
7
+ if (!C) return init.then((() => parse(E)));
8
+ const I = E.length + 1, o = (C.__heap_base.value || C.__heap_base) + 4 * I - C.memory.buffer.byteLength;
9
+ o > 0 && C.memory.grow(Math.ceil(o / 65536));
10
+ const D = C.sa(I - 1);
11
+ if ((A ? B : Q)(E, new Uint16Array(C.memory.buffer, D, I)), !C.parse()) throw Object.assign(/* @__PURE__ */ new Error(`Parse error ${g}:${E.slice(0, C.e()).split("\n").length}:${C.e() - E.lastIndexOf("\n", C.e() - 1)}`), { idx: C.e() });
12
+ const K = [], k = [];
13
+ for (; C.ri();) {
14
+ const A = C.is(), Q = C.ie(), B = C.it(), g = C.ai(), I = C.id(), o = C.ss(), D = C.se();
15
+ let k;
16
+ C.ip() && (k = w(E.slice(-1 === I ? A - 1 : A, -1 === I ? Q + 1 : Q)));
17
+ const i = [];
18
+ for (C.rsa(); C.ra();) {
19
+ const A = C.aks(), Q = C.ake(), B = C.avs(), g = C.ave();
20
+ i.push([N(E.slice(A, Q)), N(E.slice(B, g))]);
21
+ }
22
+ K.push({
23
+ n: k,
24
+ t: B,
25
+ s: A,
26
+ e: Q,
27
+ ss: o,
28
+ se: D,
29
+ d: I,
30
+ a: g,
31
+ at: i.length > 0 ? i : null
32
+ });
33
+ }
34
+ for (; C.re();) {
35
+ const A = C.es(), Q = C.ee(), B = C.els(), g = C.ele(), I = N(E.slice(A, Q)), o = B < 0 ? void 0 : N(E.slice(B, g));
36
+ k.push({
37
+ s: A,
38
+ e: Q,
39
+ ls: B,
40
+ le: g,
41
+ n: I,
42
+ ln: o
43
+ });
44
+ }
45
+ function w(A) {
46
+ try {
47
+ return (0, eval)(A);
48
+ } catch (A) {}
49
+ }
50
+ function N(A) {
51
+ if (!A) return A;
52
+ const Q = A[0];
53
+ return ("\"" === Q || "'" === Q) && w(A) || A;
54
+ }
55
+ return [
56
+ K,
57
+ k,
58
+ !!C.f(),
59
+ !!C.ms()
60
+ ];
61
+ }
62
+ function Q(A, Q) {
63
+ const B = A.length;
64
+ let C = 0;
65
+ for (; C < B;) {
66
+ const B = A.charCodeAt(C);
67
+ Q[C++] = (255 & B) << 8 | B >>> 8;
68
+ }
69
+ }
70
+ function B(A, Q) {
71
+ const B = A.length;
72
+ let C = 0;
73
+ for (; C < B;) Q[C] = A.charCodeAt(C++);
74
+ }
75
+ let C;
76
+ const E = () => {
77
+ return A = "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", "undefined" != typeof Buffer ? Buffer.from(A, "base64") : Uint8Array.from(atob(A), ((A) => A.charCodeAt(0)));
78
+ var A;
79
+ };
80
+ const init = WebAssembly.compile(E()).then(WebAssembly.instantiate).then((({ exports: A }) => {
81
+ C = A;
82
+ }));
83
+ export { init, parse };
@@ -1,5 +1,5 @@
1
- import { u as WorkerHooks } from "./types.mjs";
2
- import { n as EnvRunnerData, t as BaseEnvRunner } from "./base-runner.mjs";
1
+ import { WorkerHooks } from "./types.mjs";
2
+ import { BaseEnvRunner, EnvRunnerData } from "./base-runner.mjs";
3
3
  declare class DenoProcessEnvRunner extends BaseEnvRunner {
4
4
  #private;
5
5
  constructor(opts: {
@@ -14,4 +14,4 @@ declare class DenoProcessEnvRunner extends BaseEnvRunner {
14
14
  protected _runtimeType(): string;
15
15
  protected _closeRuntime(): Promise<void>;
16
16
  }
17
- export { DenoProcessEnvRunner as t };
17
+ export { DenoProcessEnvRunner };
@@ -1,4 +1,4 @@
1
- import { t as BaseEnvRunner } from "./base-runner.mjs";
1
+ import { BaseEnvRunner } from "./base-runner.mjs";
2
2
  import { existsSync } from "node:fs";
3
3
  import { spawn } from "node:child_process";
4
4
  import { fileURLToPath } from "node:url";
@@ -11,7 +11,7 @@ var DenoProcessEnvRunner = class extends BaseEnvRunner {
11
11
  ...opts,
12
12
  workerEntry: opts.workerEntry || _defaultEntry
13
13
  });
14
- this.#initProcess(opts.execArgv);
14
+ this._initWithVirtualData(() => this.#initProcess(opts.execArgv));
15
15
  }
16
16
  sendMessage(message) {
17
17
  if (!this.#process) throw new Error("Deno env process should be initialized before sending messages.");
@@ -88,10 +88,13 @@ var DenoProcessEnvRunner = class extends BaseEnvRunner {
88
88
  buffer = buffer.slice(newlineIdx + 1);
89
89
  if (line.startsWith("{")) try {
90
90
  this._handleMessage(JSON.parse(line));
91
+ continue;
91
92
  } catch {}
93
+ process.stdout.write(line + "\n");
92
94
  }
93
95
  });
96
+ child.stderr?.pipe(process.stderr);
94
97
  this.#process = handle;
95
98
  }
96
99
  };
97
- export { DenoProcessEnvRunner as t };
100
+ export { DenoProcessEnvRunner };
@@ -1,5 +1,5 @@
1
- import { u as WorkerHooks } from "./types.mjs";
2
- import { n as EnvRunnerData, t as BaseEnvRunner } from "./base-runner.mjs";
1
+ import { WorkerHooks } from "./types.mjs";
2
+ import { BaseEnvRunner, EnvRunnerData } from "./base-runner.mjs";
3
3
  import { IncomingMessage } from "node:http";
4
4
  import { Socket } from "node:net";
5
5
  /** Result from a module transform (compatible with Vite's `TransformResult`). */
@@ -70,6 +70,18 @@ declare class MiniflareEnvRunner extends BaseEnvRunner {
70
70
  * and responds with `module-reloaded` when done.
71
71
  */
72
72
  reloadModule(timeout?: number): Promise<void>;
73
+ /**
74
+ * Invalidate a virtual module so the next `reloadModule()` re-evaluates it.
75
+ *
76
+ * Host-side only (no worker round-trip): the module fallback service serves
77
+ * virtual sources from a live map, so re-running a factory source and
78
+ * bumping the per-specifier versions — the module plus its transitive
79
+ * virtual importers — is enough. Import specifiers in re-served module code
80
+ * are rewritten to the versioned form, giving workerd fresh module
81
+ * identities (it caches by name). A `persistent` instance is evicted from
82
+ * the cache, since its served sources no longer match the cache key.
83
+ */
84
+ invalidateModule(specifier: string, _timeout?: number): Promise<void>;
73
85
  protected _hasRuntime(): boolean;
74
86
  protected _runtimeType(): string;
75
87
  protected _closeRuntime(): Promise<void>;
@@ -81,4 +93,4 @@ declare class MiniflareEnvRunner extends BaseEnvRunner {
81
93
  };
82
94
  }): Promise<void>;
83
95
  }
84
- export { TransformResult as i, MiniflareEnvRunnerOptions as n, MiniflareExportInfo as r, MiniflareEnvRunner as t };
96
+ export { MiniflareEnvRunner, MiniflareEnvRunnerOptions, MiniflareExportInfo, TransformResult };
@@ -1,10 +1,13 @@
1
- import { t as BaseEnvRunner } from "./base-runner.mjs";
2
- import { n as parse, t as init } from "./libs/cjs-module-lexer.mjs";
1
+ import { expandVirtualInvalidation, stripVirtualTypeScript, virtualModuleFormat } from "./virtual-loader.mjs";
2
+ import { BaseEnvRunner } from "./base-runner.mjs";
3
+ import { init, parse } from "./libs/cjs-module-lexer.mjs";
4
+ import { init as init$1, parse as parse$1 } from "./libs/es-module-lexer.mjs";
5
+ import { isVirtualSpecifier } from "./worker-utils.mjs";
3
6
  import { createRequire } from "node:module";
4
7
  import { proxyUpgrade } from "httpxy";
5
8
  import { readFileSync } from "node:fs";
6
9
  import { fileURLToPath } from "node:url";
7
- import { basename, dirname, resolve } from "node:path";
10
+ import { basename, dirname, isAbsolute, resolve } from "node:path";
8
11
  import { resolveModulePath } from "exsolve";
9
12
  const IPC_PATH = "/__env_runner_ipc";
10
13
  const IPC_BINDING = "__ENV_RUNNER_IPC";
@@ -182,6 +185,9 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
182
185
  #miniflareOptions;
183
186
  #transformRequest;
184
187
  #reloadCounter = 0;
188
+ #virtual;
189
+ #virtualVersions = /* @__PURE__ */ new Map();
190
+ #cacheEntry;
185
191
  #ws;
186
192
  #persistent;
187
193
  #cacheKey;
@@ -199,7 +205,7 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
199
205
  this.#exports = opts.exports ?? {};
200
206
  this.#captureErrors = opts.captureErrors ?? true;
201
207
  this.#exportConditions = opts.exportConditions ?? ["workerd", "worker"];
202
- this.#init();
208
+ this._initWithVirtualData(() => this.#init());
203
209
  }
204
210
  static async disposeAll() {
205
211
  const entries = [..._miniflareCache.values()];
@@ -213,15 +219,17 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
213
219
  this.#ws.close();
214
220
  this.#ws = void 0;
215
221
  }
216
- if (this.#cacheKey) _miniflareCache.delete(this.#cacheKey);
222
+ if (this.#cacheKey && _miniflareCache.get(this.#cacheKey)?.mf === this.#miniflare) _miniflareCache.delete(this.#cacheKey);
217
223
  await this.#miniflare.dispose();
218
224
  this.#miniflare = void 0;
219
225
  }
220
226
  if (!this.closed) await this.close();
221
227
  }
222
228
  async fetch(input, init) {
229
+ for (let i = 0; i < 5 && !this._address && !this.closed; i++) await new Promise((r) => setTimeout(r, 100 * Math.pow(2, i)));
223
230
  if (!this.#miniflare || this.closed) return new Response("miniflare env runner is unavailable", { status: 503 });
224
- const url = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
231
+ const resolved = this._resolveFetchInput(input);
232
+ const url = typeof resolved === "string" ? resolved : resolved instanceof URL ? resolved.href : resolved.url;
225
233
  const res = await this.#miniflare.dispatchFetch(url, init);
226
234
  if (res instanceof Response) return res;
227
235
  return new Response(res.body, {
@@ -248,30 +256,27 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
248
256
  if (!this.#ws) throw new Error("Miniflare env runner should be initialized before reloading.");
249
257
  if (!this._data?.entry) return;
250
258
  this.#reloadCounter++;
251
- const version = this.#reloadCounter;
252
- return new Promise((resolve, reject) => {
253
- const timer = setTimeout(() => {
254
- cleanup();
255
- reject(/* @__PURE__ */ new Error("Module reload timed out"));
256
- }, timeout);
257
- const listener = (msg) => {
258
- if (msg?.event === "module-reloaded") {
259
- cleanup();
260
- if (msg.error) reject(typeof msg.error === "string" ? new Error(msg.error) : msg.error);
261
- else resolve();
262
- }
263
- };
264
- const cleanup = () => {
265
- clearTimeout(timer);
266
- this.offMessage(listener);
267
- };
268
- this.onMessage(listener);
269
- this.#ws.send(JSON.stringify({
270
- type: "reload",
271
- version
272
- }));
259
+ await this._request({
260
+ type: "reload",
261
+ version: this.#reloadCounter
262
+ }, {
263
+ match: (msg) => msg?.event === "module-reloaded",
264
+ timeout,
265
+ timeoutError: "Module reload timed out",
266
+ send: (message) => this.#ws.send(JSON.stringify(message))
273
267
  });
274
268
  }
269
+ async invalidateModule(specifier, _timeout) {
270
+ const virtual = this.#virtual;
271
+ if (!virtual || !Object.hasOwn(virtual, specifier)) {
272
+ const hasVirtual = Object.keys(this._data?.virtual ?? {}).length > 0;
273
+ throw !virtual && hasVirtual && !this.closed ? /* @__PURE__ */ new Error("Miniflare env runner should be initialized before invalidating modules.") : /* @__PURE__ */ new Error(`Cannot invalidate "${specifier}" (not a registered virtual module)`);
274
+ }
275
+ const source = await this._refreshVirtualSource(specifier);
276
+ if (source !== void 0) virtual[specifier] = await this.#prepareVirtualSource(specifier, source);
277
+ for (const key of expandVirtualInvalidation(virtual, specifier)) this.#virtualVersions.set(key, (this.#virtualVersions.get(key) ?? 0) + 1);
278
+ if (this.#cacheKey && _miniflareCache.get(this.#cacheKey) === this.#cacheEntry) _miniflareCache.delete(this.#cacheKey);
279
+ }
275
280
  _hasRuntime() {
276
281
  return Boolean(this.#miniflare);
277
282
  }
@@ -285,14 +290,12 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
285
290
  this.#ws.close();
286
291
  this.#ws = void 0;
287
292
  }
288
- if (this.#persistent && this.#cacheKey) {
289
- const cached = _miniflareCache.get(this.#cacheKey);
290
- if (cached) {
291
- cached.refCount--;
292
- if (cached.refCount <= 0) {
293
- _miniflareCache.delete(this.#cacheKey);
294
- await this.#miniflare.dispose();
295
- }
293
+ const entry = this.#cacheEntry;
294
+ if (entry) {
295
+ entry.refCount--;
296
+ if (entry.refCount <= 0) {
297
+ if (this.#cacheKey && _miniflareCache.get(this.#cacheKey) === entry) _miniflareCache.delete(this.#cacheKey);
298
+ await this.#miniflare.dispose();
296
299
  }
297
300
  } else await this.#miniflare.dispose();
298
301
  this.#miniflare = void 0;
@@ -315,9 +318,25 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
315
318
  port: Number(address.port)
316
319
  }, context.node.req, context.node.socket, context.node.head);
317
320
  }
321
+ async #prepareVirtualModules() {
322
+ const virtual = this._data?.virtual;
323
+ if (!virtual || Object.keys(virtual).length === 0) return;
324
+ const out = {};
325
+ for (const [specifier, source] of Object.entries(virtual)) out[specifier] = await this.#prepareVirtualSource(specifier, source);
326
+ return out;
327
+ }
328
+ async #prepareVirtualSource(specifier, source) {
329
+ if (virtualModuleFormat(specifier) !== "module-typescript") return source;
330
+ return stripVirtualTypeScript(specifier, source, await _getStripTypeScriptTypes(), {
331
+ requirement: "on the host (workerd does not parse TypeScript)",
332
+ remedy: "upgrade Node.js"
333
+ });
334
+ }
318
335
  async #initAsync() {
319
336
  const { Miniflare } = await import("miniflare");
320
337
  const entryPath = this._data?.entry;
338
+ const virtual = await this.#prepareVirtualModules();
339
+ this.#virtual = virtual;
321
340
  const userFlags = this.#miniflareOptions.compatibilityFlags || [];
322
341
  const userDirectSockets = this.#miniflareOptions.unsafeDirectSockets || [];
323
342
  const options = {
@@ -331,9 +350,13 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
331
350
  }, ...userDirectSockets]
332
351
  };
333
352
  if (entryPath && !options.script && !options.scriptPath) {
334
- const resolvedEntry = resolve(entryPath);
335
- const entryDir = dirname(resolvedEntry);
336
- const detectedExports = this.#exports === false || this.#exports === void 0 ? [] : detectExportedClasses(resolvedEntry, typeof this.#exports === "object" ? this.#exports : {});
353
+ const entryIsVirtual = isVirtualSpecifier(entryPath, virtual);
354
+ const resolvedEntry = entryIsVirtual ? entryPath : resolve(entryPath);
355
+ const entryBase = isAbsolute(resolvedEntry) ? resolvedEntry : resolve("__env_runner_virtual_entry__.mjs");
356
+ const entryDir = dirname(entryBase);
357
+ const entrySource = entryIsVirtual ? virtual[entryPath] : _tryReadFile(resolvedEntry);
358
+ const detectedExports = this.#exports === false || this.#exports === void 0 ? [] : detectExportedClasses(entrySource, typeof this.#exports === "object" ? this.#exports : {});
359
+ if (entryIsVirtual && detectedExports.length > 0) throw new Error(`[env-runner] named exports (${detectedExports.join(", ")}) are not supported with a virtual entry on the miniflare runner; pass \`exports: false\` or use a real entry file.`);
337
360
  if (detectedExports.length > 0 && !options.durableObjects) {
338
361
  const autoDOs = { ...this.#miniflareOptions.durableObjects || {} };
339
362
  for (const name of detectedExports) {
@@ -370,14 +393,17 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
370
393
  ]
371
394
  }];
372
395
  if (!options.unsafeModuleFallbackService) {
373
- const _require = createRequire(resolvedEntry);
396
+ const _require = createRequire(entryBase);
397
+ const _virtual = virtual;
398
+ const _virtualVersions = this.#virtualVersions;
374
399
  const _transformRequest = this.#transformRequest;
375
400
  const _exportConditions = this.#exportConditions;
401
+ const _applyVirtualVersions = (code) => applyVirtualVersions(code, _virtualVersions);
376
402
  options.unsafeUseModuleFallbackService = true;
377
403
  const modulePathMap = /* @__PURE__ */ new Map();
378
- const _cjsLexerReady = ensureCjsLexer();
404
+ const _lexersReady = Promise.all([ensureCjsLexer(), init$1]);
379
405
  options.unsafeModuleFallbackService = async (request) => {
380
- await _cjsLexerReady;
406
+ await _lexersReady;
381
407
  const url = new URL(request.url);
382
408
  const specifier = url.searchParams.get("specifier");
383
409
  const rawSpecifier = url.searchParams.get("rawSpecifier");
@@ -385,6 +411,25 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
385
411
  if (!specifier) return new Response(null, { status: 404 });
386
412
  const cleanSpecifier = specifier.split("?")[0] || specifier;
387
413
  const cleanRaw = rawSpecifier?.split("?")[0];
414
+ if (_virtual) {
415
+ const bareSpecifier = cleanSpecifier.startsWith("/") ? cleanSpecifier.slice(1) : cleanSpecifier;
416
+ const virtualKey = [
417
+ cleanRaw,
418
+ cleanSpecifier,
419
+ bareSpecifier
420
+ ].find((key) => key !== void 0 && Object.hasOwn(_virtual, key));
421
+ if (virtualKey !== void 0) {
422
+ const name = bareSpecifier + (specifier.includes("?") ? specifier.slice(specifier.indexOf("?")) : "");
423
+ const source = _virtual[virtualKey];
424
+ return virtualModuleFormat(virtualKey) === "json" ? Response.json({
425
+ name,
426
+ json: source
427
+ }) : Response.json({
428
+ name,
429
+ esModule: _applyVirtualVersions(source)
430
+ });
431
+ }
432
+ }
388
433
  let resolvedPath;
389
434
  const fileUrlRaw = cleanRaw || cleanSpecifier;
390
435
  if (fileUrlRaw.startsWith("file://")) try {
@@ -406,7 +451,7 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
406
451
  }
407
452
  } else try {
408
453
  resolvedPath = resolveModulePath(cleanRaw, {
409
- from: referrerReal || resolvedEntry,
454
+ from: referrerReal || entryBase,
410
455
  conditions: _exportConditions,
411
456
  try: true
412
457
  }) || contextRequire.resolve(cleanRaw);
@@ -437,7 +482,7 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
437
482
  modulePathMap.set(name, resolvedPath);
438
483
  return Response.json({
439
484
  name,
440
- esModule: result.code
485
+ esModule: _applyVirtualVersions(result.code)
441
486
  });
442
487
  }
443
488
  } catch {}
@@ -446,7 +491,7 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
446
491
  modulePathMap.set(name, resolvedPath);
447
492
  if (resolvedPath.endsWith(".mjs") || !resolvedPath.endsWith(".cjs") && /\b(import\s|import\(|export\s|export\{|import\.meta\b)/.test(contents)) return Response.json({
448
493
  name,
449
- esModule: contents
494
+ esModule: _applyVirtualVersions(contents)
450
495
  });
451
496
  const cjsSuffix = "?__cjs";
452
497
  if (specifier.endsWith(cjsSuffix)) return Response.json({
@@ -467,21 +512,30 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
467
512
  if (this.#persistent && entryPath) {
468
513
  this.#cacheKey = computeCacheKey(entryPath, {
469
514
  ...this.#miniflareOptions,
470
- _exportConditions: this.#exportConditions
515
+ _exportConditions: this.#exportConditions,
516
+ _virtual: virtual
471
517
  });
472
518
  const cached = _miniflareCache.get(this.#cacheKey);
473
519
  if (cached) {
474
520
  this.#miniflare = cached.mf;
475
521
  cached.refCount++;
522
+ this.#cacheEntry = cached;
523
+ this.#virtual = cached.virtual;
524
+ this.#virtualVersions = cached.versions;
476
525
  }
477
526
  }
478
527
  if (!this.#miniflare) {
479
528
  this.#miniflare = new Miniflare(options);
480
529
  await this.#miniflare.ready;
481
- if (this.#persistent && this.#cacheKey) _miniflareCache.set(this.#cacheKey, {
482
- mf: this.#miniflare,
483
- refCount: 1
484
- });
530
+ if (this.#persistent && this.#cacheKey) {
531
+ this.#cacheEntry = {
532
+ mf: this.#miniflare,
533
+ refCount: 1,
534
+ virtual,
535
+ versions: this.#virtualVersions
536
+ };
537
+ _miniflareCache.set(this.#cacheKey, this.#cacheEntry);
538
+ }
485
539
  }
486
540
  const initRes = await this.#miniflare.dispatchFetch("http://localhost/__env_runner_ipc", { headers: { upgrade: "websocket" } });
487
541
  const ws = initRes.webSocket;
@@ -503,16 +557,22 @@ var MiniflareEnvRunner = class extends BaseEnvRunner {
503
557
  } });
504
558
  }
505
559
  };
506
- function detectExportedClasses(entryPath, explicit) {
560
+ function detectExportedClasses(entrySource, explicit) {
507
561
  const names = new Set(Object.keys(explicit));
508
- try {
509
- const source = readFileSync(entryPath, "utf8");
562
+ if (entrySource) {
510
563
  const re = /\bexport\s+class\s+(\w+)/g;
511
564
  let match;
512
- while (match = re.exec(source)) if (match[1]) names.add(match[1]);
513
- } catch {}
565
+ while (match = re.exec(entrySource)) if (match[1]) names.add(match[1]);
566
+ }
514
567
  return [...names];
515
568
  }
569
+ function _tryReadFile(path) {
570
+ try {
571
+ return readFileSync(path, "utf8");
572
+ } catch {
573
+ return;
574
+ }
575
+ }
516
576
  function toScreamingSnakeCase(name) {
517
577
  return name.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toUpperCase();
518
578
  }
@@ -521,6 +581,35 @@ function computeCacheKey(entryPath, opts) {
521
581
  for (const [k, v] of Object.entries(opts)) if (typeof v !== "function") serializableOpts[k] = v;
522
582
  return `${resolve(entryPath)}::${JSON.stringify(serializableOpts)}`;
523
583
  }
584
+ function applyVirtualVersions(code, versions) {
585
+ if (versions.size === 0) return code;
586
+ let imports;
587
+ try {
588
+ [imports] = parse$1(code);
589
+ } catch {
590
+ return code;
591
+ }
592
+ let out = "";
593
+ let last = 0;
594
+ for (const imp of imports) {
595
+ let specifier = imp.n;
596
+ if (specifier === void 0 && imp.d > -1) {
597
+ const expr = code.slice(imp.s, imp.e);
598
+ if (expr.length > 1 && expr[0] === "`" && expr.endsWith("`") && !expr.includes("${")) specifier = expr.slice(1, -1);
599
+ }
600
+ const version = specifier === void 0 ? void 0 : versions.get(specifier);
601
+ if (!version) continue;
602
+ const versioned = `${specifier}?v=${version}`;
603
+ out += code.slice(last, imp.s) + (imp.d > -1 ? JSON.stringify(versioned) : versioned);
604
+ last = imp.e;
605
+ }
606
+ return out + code.slice(last);
607
+ }
608
+ let _stripTypesPromise;
609
+ function _getStripTypeScriptTypes() {
610
+ _stripTypesPromise ??= import("node:module").then((m) => m.stripTypeScriptTypes);
611
+ return _stripTypesPromise;
612
+ }
524
613
  let _cjsLexerReady;
525
614
  function ensureCjsLexer() {
526
615
  if (!_cjsLexerReady) _cjsLexerReady = init();
@@ -536,4 +625,4 @@ function createCjsEsmShim(cjsSpecifier, contents) {
536
625
  for (const name of namedExports) shim += `export var ${name} = __cjs_mod__["${name}"];\n`;
537
626
  return shim;
538
627
  }
539
- export { MiniflareEnvRunner as t };
628
+ export { MiniflareEnvRunner };
@@ -1,5 +1,5 @@
1
- import { u as WorkerHooks } from "./types.mjs";
2
- import { n as EnvRunnerData, t as BaseEnvRunner } from "./base-runner.mjs";
1
+ import { WorkerHooks } from "./types.mjs";
2
+ import { BaseEnvRunner, EnvRunnerData } from "./base-runner.mjs";
3
3
  declare class NodeWorkerEnvRunner extends BaseEnvRunner {
4
4
  #private;
5
5
  constructor(opts: {
@@ -13,4 +13,4 @@ declare class NodeWorkerEnvRunner extends BaseEnvRunner {
13
13
  protected _runtimeType(): string;
14
14
  protected _closeRuntime(): Promise<void>;
15
15
  }
16
- export { NodeWorkerEnvRunner as t };
16
+ export { NodeWorkerEnvRunner };
@@ -1,4 +1,4 @@
1
- import { t as BaseEnvRunner } from "./base-runner.mjs";
1
+ import { BaseEnvRunner } from "./base-runner.mjs";
2
2
  import { existsSync } from "node:fs";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { Worker } from "node:worker_threads";
@@ -11,7 +11,7 @@ var NodeWorkerEnvRunner = class extends BaseEnvRunner {
11
11
  ...opts,
12
12
  workerEntry: opts.workerEntry || _defaultEntry
13
13
  });
14
- this.#initWorker();
14
+ this._initWithVirtualData(() => this.#initWorker());
15
15
  }
16
16
  sendMessage(message) {
17
17
  if (!this.#worker) throw new Error("Worker thread should be initialized before sending messages.");
@@ -57,4 +57,4 @@ var NodeWorkerEnvRunner = class extends BaseEnvRunner {
57
57
  this.#worker = worker;
58
58
  }
59
59
  };
60
- export { NodeWorkerEnvRunner as t };
60
+ export { NodeWorkerEnvRunner };
@@ -1,6 +1,6 @@
1
- import { u as WorkerHooks } from "./types.mjs";
2
- import { n as EnvRunnerData } from "./base-runner.mjs";
3
- import { t as NodeWorkerEnvRunner } from "./runner3.mjs";
1
+ import { WorkerHooks } from "./types.mjs";
2
+ import { EnvRunnerData } from "./base-runner.mjs";
3
+ import { NodeWorkerEnvRunner } from "./runner3.mjs";
4
4
  declare class VercelEnvRunner extends NodeWorkerEnvRunner {
5
5
  constructor(opts: {
6
6
  name: string;
@@ -11,4 +11,4 @@ declare class VercelEnvRunner extends NodeWorkerEnvRunner {
11
11
  fetch(input: string | URL | Request, init?: RequestInit): Promise<Response>;
12
12
  protected _runtimeType(): string;
13
13
  }
14
- export { VercelEnvRunner as t };
14
+ export { VercelEnvRunner };
@@ -1,4 +1,4 @@
1
- import { t as NodeWorkerEnvRunner } from "./runner3.mjs";
1
+ import { NodeWorkerEnvRunner } from "./runner3.mjs";
2
2
  import { fileURLToPath } from "node:url";
3
3
  import { randomBytes } from "node:crypto";
4
4
  let _warned = false;
@@ -56,6 +56,7 @@ var VercelEnvRunner = class extends NodeWorkerEnvRunner {
56
56
  warnIfVercelOidcTokenInvalid();
57
57
  }
58
58
  async fetch(input, init) {
59
+ input = this._resolveFetchInput(input);
59
60
  const headers = new Headers(input instanceof Request ? input.headers : init?.headers);
60
61
  const requestId = generateVercelId();
61
62
  if (this._address && this._address.port != null && !headers.has("x-vercel-deployment-url")) {
@@ -90,4 +91,4 @@ var VercelEnvRunner = class extends NodeWorkerEnvRunner {
90
91
  return "vercel";
91
92
  }
92
93
  };
93
- export { VercelEnvRunner as t };
94
+ export { VercelEnvRunner };
@@ -1,6 +1,6 @@
1
- import { u as WorkerHooks } from "./types.mjs";
2
- import { n as EnvRunnerData } from "./base-runner.mjs";
3
- import { t as NodeWorkerEnvRunner } from "./runner3.mjs";
1
+ import { WorkerHooks } from "./types.mjs";
2
+ import { EnvRunnerData } from "./base-runner.mjs";
3
+ import { NodeWorkerEnvRunner } from "./runner3.mjs";
4
4
  declare class NetlifyEnvRunner extends NodeWorkerEnvRunner {
5
5
  constructor(opts: {
6
6
  name: string;
@@ -11,4 +11,4 @@ declare class NetlifyEnvRunner extends NodeWorkerEnvRunner {
11
11
  fetch(input: string | URL | Request, init?: RequestInit): Promise<Response>;
12
12
  protected _runtimeType(): string;
13
13
  }
14
- export { NetlifyEnvRunner as t };
14
+ export { NetlifyEnvRunner };
@@ -1,4 +1,4 @@
1
- import { t as NodeWorkerEnvRunner } from "./runner3.mjs";
1
+ import { NodeWorkerEnvRunner } from "./runner3.mjs";
2
2
  import { fileURLToPath } from "node:url";
3
3
  let _defaultEntry;
4
4
  var NetlifyEnvRunner = class extends NodeWorkerEnvRunner {
@@ -10,6 +10,7 @@ var NetlifyEnvRunner = class extends NodeWorkerEnvRunner {
10
10
  });
11
11
  }
12
12
  async fetch(input, init) {
13
+ input = this._resolveFetchInput(input);
13
14
  const headers = new Headers(input instanceof Request ? input.headers : init?.headers);
14
15
  const clientIp = headers.get("x-forwarded-for")?.split(",")[0]?.trim() || headers.get("x-real-ip") || "127.0.0.1";
15
16
  if (!headers.has("x-nf-client-connection-ip")) headers.set("x-nf-client-connection-ip", clientIp);
@@ -42,4 +43,4 @@ var NetlifyEnvRunner = class extends NodeWorkerEnvRunner {
42
43
  return "netlify";
43
44
  }
44
45
  };
45
- export { NetlifyEnvRunner as t };
46
+ export { NetlifyEnvRunner };