vite-node 0.32.4 → 0.34.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.
@@ -3,6 +3,7 @@
3
3
  var node_events = require('node:events');
4
4
  var c = require('picocolors');
5
5
  var createDebug = require('debug');
6
+ var utils = require('./utils.cjs');
6
7
 
7
8
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
9
 
@@ -17,6 +18,18 @@ function viteNodeHmrPlugin() {
17
18
  const emitter = createHmrEmitter();
18
19
  return {
19
20
  name: "vite-node:hmr",
21
+ config() {
22
+ if (process.platform === "darwin" && process.env.VITE_TEST_WATCHER_DEBUG) {
23
+ return {
24
+ server: {
25
+ watch: {
26
+ useFsEvents: false,
27
+ usePolling: false
28
+ }
29
+ }
30
+ };
31
+ }
32
+ },
20
33
  configureServer(server) {
21
34
  const _send = server.ws.send;
22
35
  server.emitter = emitter;
@@ -24,6 +37,11 @@ function viteNodeHmrPlugin() {
24
37
  _send(payload);
25
38
  emitter.emit("message", payload);
26
39
  };
40
+ if (process.env.VITE_TEST_WATCHER_DEBUG) {
41
+ server.watcher.on("ready", () => {
42
+ console.log("[debug] watcher is ready");
43
+ });
44
+ }
27
45
  }
28
46
  };
29
47
  }
@@ -59,11 +77,11 @@ async function reload(runner, files) {
59
77
  });
60
78
  return Promise.all(files.map((file) => runner.executeId(file)));
61
79
  }
62
- function notifyListeners(runner, event, data) {
80
+ async function notifyListeners(runner, event, data) {
63
81
  const maps = getCache(runner);
64
82
  const cbs = maps.customListenersMap.get(event);
65
83
  if (cbs)
66
- cbs.forEach((cb) => cb(data));
84
+ await Promise.all(cbs.map((cb) => cb(data)));
67
85
  }
68
86
  async function queueUpdate(runner, p) {
69
87
  const maps = getCache(runner);
@@ -78,43 +96,31 @@ async function queueUpdate(runner, p) {
78
96
  }
79
97
  }
80
98
  async function fetchUpdate(runner, { path, acceptedPath }) {
99
+ path = utils.normalizeRequestId(path);
100
+ acceptedPath = utils.normalizeRequestId(acceptedPath);
81
101
  const maps = getCache(runner);
82
102
  const mod = maps.hotModulesMap.get(path);
83
103
  if (!mod) {
84
104
  return;
85
105
  }
86
- const moduleMap = /* @__PURE__ */ new Map();
87
106
  const isSelfUpdate = path === acceptedPath;
88
- const modulesToUpdate = /* @__PURE__ */ new Set();
89
- if (isSelfUpdate) {
90
- modulesToUpdate.add(path);
91
- } else {
92
- for (const { deps } of mod.callbacks) {
93
- deps.forEach((dep) => {
94
- if (acceptedPath === dep)
95
- modulesToUpdate.add(dep);
96
- });
107
+ let fetchedModule;
108
+ const qualifiedCallbacks = mod.callbacks.filter(
109
+ ({ deps }) => deps.includes(acceptedPath)
110
+ );
111
+ if (isSelfUpdate || qualifiedCallbacks.length > 0) {
112
+ const disposer = maps.disposeMap.get(acceptedPath);
113
+ if (disposer)
114
+ await disposer(maps.dataMap.get(acceptedPath));
115
+ try {
116
+ [fetchedModule] = await reload(runner, [acceptedPath]);
117
+ } catch (e) {
118
+ warnFailedFetch(e, acceptedPath);
97
119
  }
98
120
  }
99
- const qualifiedCallbacks = mod.callbacks.filter(({ deps }) => {
100
- return deps.some((dep) => modulesToUpdate.has(dep));
101
- });
102
- await Promise.all(
103
- Array.from(modulesToUpdate).map(async (dep) => {
104
- const disposer = maps.disposeMap.get(dep);
105
- if (disposer)
106
- await disposer(maps.dataMap.get(dep));
107
- try {
108
- const newMod = await reload(runner, [dep]);
109
- moduleMap.set(dep, newMod);
110
- } catch (e) {
111
- warnFailedFetch(e, dep);
112
- }
113
- })
114
- );
115
121
  return () => {
116
122
  for (const { deps, fn } of qualifiedCallbacks)
117
- fn(deps.map((dep) => moduleMap.get(dep)));
123
+ fn(deps.map((dep) => dep === acceptedPath ? fetchedModule : void 0));
118
124
  const loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}`;
119
125
  console.log(`${c__default["default"].cyan("[vite-node]")} hot updated: ${loggedPath}`);
120
126
  };
@@ -133,26 +139,25 @@ async function handleMessage(runner, emitter, files, payload) {
133
139
  sendMessageBuffer(runner, emitter);
134
140
  break;
135
141
  case "update":
136
- notifyListeners(runner, "vite:beforeUpdate", payload);
137
- if (maps.isFirstUpdate) {
138
- reload(runner, files);
139
- maps.isFirstUpdate = true;
140
- }
141
- payload.updates.forEach((update) => {
142
- if (update.type === "js-update") {
143
- queueUpdate(runner, fetchUpdate(runner, update));
144
- } else {
145
- console.error(`${c__default["default"].cyan("[vite-node]")} no support css hmr.}`);
146
- }
147
- });
142
+ await notifyListeners(runner, "vite:beforeUpdate", payload);
143
+ await Promise.all(payload.updates.map((update) => {
144
+ if (update.type === "js-update")
145
+ return queueUpdate(runner, fetchUpdate(runner, update));
146
+ console.error(`${c__default["default"].cyan("[vite-node]")} no support css hmr.}`);
147
+ return null;
148
+ }));
149
+ await notifyListeners(runner, "vite:afterUpdate", payload);
148
150
  break;
149
151
  case "full-reload":
150
- notifyListeners(runner, "vite:beforeFullReload", payload);
152
+ await notifyListeners(runner, "vite:beforeFullReload", payload);
151
153
  maps.customListenersMap.delete("vite:beforeFullReload");
152
- reload(runner, files);
154
+ await reload(runner, files);
155
+ break;
156
+ case "custom":
157
+ await notifyListeners(runner, payload.event, payload.data);
153
158
  break;
154
159
  case "prune":
155
- notifyListeners(runner, "vite:beforePrune", payload);
160
+ await notifyListeners(runner, "vite:beforePrune", payload);
156
161
  payload.paths.forEach((path) => {
157
162
  const fn = maps.pruneMap.get(path);
158
163
  if (fn)
@@ -160,7 +165,7 @@ async function handleMessage(runner, emitter, files, payload) {
160
165
  });
161
166
  break;
162
167
  case "error": {
163
- notifyListeners(runner, "vite:error", payload);
168
+ await notifyListeners(runner, "vite:error", payload);
164
169
  const err = payload.err;
165
170
  console.error(`${c__default["default"].cyan("[vite-node]")} Internal Server Error
166
171
  ${err.message}
@@ -1,6 +1,7 @@
1
1
  import { EventEmitter } from 'node:events';
2
2
  import c from 'picocolors';
3
3
  import createDebug from 'debug';
4
+ import { normalizeRequestId } from './utils.mjs';
4
5
 
5
6
  function createHmrEmitter() {
6
7
  const emitter = new EventEmitter();
@@ -10,6 +11,18 @@ function viteNodeHmrPlugin() {
10
11
  const emitter = createHmrEmitter();
11
12
  return {
12
13
  name: "vite-node:hmr",
14
+ config() {
15
+ if (process.platform === "darwin" && process.env.VITE_TEST_WATCHER_DEBUG) {
16
+ return {
17
+ server: {
18
+ watch: {
19
+ useFsEvents: false,
20
+ usePolling: false
21
+ }
22
+ }
23
+ };
24
+ }
25
+ },
13
26
  configureServer(server) {
14
27
  const _send = server.ws.send;
15
28
  server.emitter = emitter;
@@ -17,6 +30,11 @@ function viteNodeHmrPlugin() {
17
30
  _send(payload);
18
31
  emitter.emit("message", payload);
19
32
  };
33
+ if (process.env.VITE_TEST_WATCHER_DEBUG) {
34
+ server.watcher.on("ready", () => {
35
+ console.log("[debug] watcher is ready");
36
+ });
37
+ }
20
38
  }
21
39
  };
22
40
  }
@@ -52,11 +70,11 @@ async function reload(runner, files) {
52
70
  });
53
71
  return Promise.all(files.map((file) => runner.executeId(file)));
54
72
  }
55
- function notifyListeners(runner, event, data) {
73
+ async function notifyListeners(runner, event, data) {
56
74
  const maps = getCache(runner);
57
75
  const cbs = maps.customListenersMap.get(event);
58
76
  if (cbs)
59
- cbs.forEach((cb) => cb(data));
77
+ await Promise.all(cbs.map((cb) => cb(data)));
60
78
  }
61
79
  async function queueUpdate(runner, p) {
62
80
  const maps = getCache(runner);
@@ -71,43 +89,31 @@ async function queueUpdate(runner, p) {
71
89
  }
72
90
  }
73
91
  async function fetchUpdate(runner, { path, acceptedPath }) {
92
+ path = normalizeRequestId(path);
93
+ acceptedPath = normalizeRequestId(acceptedPath);
74
94
  const maps = getCache(runner);
75
95
  const mod = maps.hotModulesMap.get(path);
76
96
  if (!mod) {
77
97
  return;
78
98
  }
79
- const moduleMap = /* @__PURE__ */ new Map();
80
99
  const isSelfUpdate = path === acceptedPath;
81
- const modulesToUpdate = /* @__PURE__ */ new Set();
82
- if (isSelfUpdate) {
83
- modulesToUpdate.add(path);
84
- } else {
85
- for (const { deps } of mod.callbacks) {
86
- deps.forEach((dep) => {
87
- if (acceptedPath === dep)
88
- modulesToUpdate.add(dep);
89
- });
100
+ let fetchedModule;
101
+ const qualifiedCallbacks = mod.callbacks.filter(
102
+ ({ deps }) => deps.includes(acceptedPath)
103
+ );
104
+ if (isSelfUpdate || qualifiedCallbacks.length > 0) {
105
+ const disposer = maps.disposeMap.get(acceptedPath);
106
+ if (disposer)
107
+ await disposer(maps.dataMap.get(acceptedPath));
108
+ try {
109
+ [fetchedModule] = await reload(runner, [acceptedPath]);
110
+ } catch (e) {
111
+ warnFailedFetch(e, acceptedPath);
90
112
  }
91
113
  }
92
- const qualifiedCallbacks = mod.callbacks.filter(({ deps }) => {
93
- return deps.some((dep) => modulesToUpdate.has(dep));
94
- });
95
- await Promise.all(
96
- Array.from(modulesToUpdate).map(async (dep) => {
97
- const disposer = maps.disposeMap.get(dep);
98
- if (disposer)
99
- await disposer(maps.dataMap.get(dep));
100
- try {
101
- const newMod = await reload(runner, [dep]);
102
- moduleMap.set(dep, newMod);
103
- } catch (e) {
104
- warnFailedFetch(e, dep);
105
- }
106
- })
107
- );
108
114
  return () => {
109
115
  for (const { deps, fn } of qualifiedCallbacks)
110
- fn(deps.map((dep) => moduleMap.get(dep)));
116
+ fn(deps.map((dep) => dep === acceptedPath ? fetchedModule : void 0));
111
117
  const loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}`;
112
118
  console.log(`${c.cyan("[vite-node]")} hot updated: ${loggedPath}`);
113
119
  };
@@ -126,26 +132,25 @@ async function handleMessage(runner, emitter, files, payload) {
126
132
  sendMessageBuffer(runner, emitter);
127
133
  break;
128
134
  case "update":
129
- notifyListeners(runner, "vite:beforeUpdate", payload);
130
- if (maps.isFirstUpdate) {
131
- reload(runner, files);
132
- maps.isFirstUpdate = true;
133
- }
134
- payload.updates.forEach((update) => {
135
- if (update.type === "js-update") {
136
- queueUpdate(runner, fetchUpdate(runner, update));
137
- } else {
138
- console.error(`${c.cyan("[vite-node]")} no support css hmr.}`);
139
- }
140
- });
135
+ await notifyListeners(runner, "vite:beforeUpdate", payload);
136
+ await Promise.all(payload.updates.map((update) => {
137
+ if (update.type === "js-update")
138
+ return queueUpdate(runner, fetchUpdate(runner, update));
139
+ console.error(`${c.cyan("[vite-node]")} no support css hmr.}`);
140
+ return null;
141
+ }));
142
+ await notifyListeners(runner, "vite:afterUpdate", payload);
141
143
  break;
142
144
  case "full-reload":
143
- notifyListeners(runner, "vite:beforeFullReload", payload);
145
+ await notifyListeners(runner, "vite:beforeFullReload", payload);
144
146
  maps.customListenersMap.delete("vite:beforeFullReload");
145
- reload(runner, files);
147
+ await reload(runner, files);
148
+ break;
149
+ case "custom":
150
+ await notifyListeners(runner, payload.event, payload.data);
146
151
  break;
147
152
  case "prune":
148
- notifyListeners(runner, "vite:beforePrune", payload);
153
+ await notifyListeners(runner, "vite:beforePrune", payload);
149
154
  payload.paths.forEach((path) => {
150
155
  const fn = maps.pruneMap.get(path);
151
156
  if (fn)
@@ -153,7 +158,7 @@ async function handleMessage(runner, emitter, files, payload) {
153
158
  });
154
159
  break;
155
160
  case "error": {
156
- notifyListeners(runner, "vite:error", payload);
161
+ await notifyListeners(runner, "vite:error", payload);
157
162
  const err = payload.err;
158
163
  console.error(`${c.cyan("[vite-node]")} Internal Server Error
159
164
  ${err.message}
package/dist/cli.cjs CHANGED
@@ -6,17 +6,18 @@ var vite = require('vite');
6
6
  var server = require('./server.cjs');
7
7
  var client = require('./client.cjs');
8
8
  var utils = require('./utils.cjs');
9
- var hmr = require('./chunk-hmr.cjs');
10
9
  var sourceMap = require('./source-map.cjs');
10
+ var hmr = require('./chunk-hmr.cjs');
11
11
  require('perf_hooks');
12
12
  require('fs');
13
13
  require('pathe');
14
14
  require('debug');
15
15
  require('mlly');
16
+ require('./constants.cjs');
16
17
  require('node:url');
17
18
  require('module');
18
19
  require('path');
19
- require('vm');
20
+ require('node:vm');
20
21
  require('node:events');
21
22
 
22
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -24,12 +25,20 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
24
25
  var cac__default = /*#__PURE__*/_interopDefaultLegacy(cac);
25
26
  var c__default = /*#__PURE__*/_interopDefaultLegacy(c);
26
27
 
27
- var version = "0.32.4";
28
+ var version = "0.34.0";
28
29
 
29
30
  const cli = cac__default["default"]("vite-node");
30
- cli.version(version).option("-r, --root <path>", "Use specified root directory").option("-c, --config <path>", "Use specified config file").option("-m, --mode <mode>", "Set env mode").option("-w, --watch", 'Restart on file changes, similar to "nodemon"').option("--script", "Use vite-node as a script runner").option("--options <options>", "Use specified Vite server options").help();
31
+ cli.option("-r, --root <path>", "Use specified root directory").option("-c, --config <path>", "Use specified config file").option("-m, --mode <mode>", "Set env mode").option("-w, --watch", 'Restart on file changes, similar to "nodemon"').option("--script", "Use vite-node as a script runner").option("--options <options>", "Use specified Vite server options").option("-v, --version", "Output the version number").option("-h, --help", "Display help for command");
31
32
  cli.command("[...files]").allowUnknownOptions().action(run);
32
- cli.parse();
33
+ cli.parse(process.argv, { run: false });
34
+ if (cli.args.length === 0) {
35
+ cli.runMatchedCommand();
36
+ } else {
37
+ const i = cli.rawArgs.indexOf(cli.args[0]) + 1;
38
+ const scriptArgs = cli.rawArgs.slice(i).filter((it) => it !== "--");
39
+ const executeArgs = [...cli.rawArgs.slice(0, i), "--", ...scriptArgs];
40
+ cli.parse(executeArgs);
41
+ }
33
42
  async function run(files, options = {}) {
34
43
  var _a;
35
44
  if (options.script) {
@@ -39,9 +48,18 @@ async function run(files, options = {}) {
39
48
  } else {
40
49
  process.argv = [...process.argv.slice(0, 2), ...options["--"] || []];
41
50
  }
51
+ if (options.version) {
52
+ cli.version(version);
53
+ cli.outputVersion();
54
+ process.exit(0);
55
+ }
56
+ if (options.help) {
57
+ cli.version(version).outputHelp();
58
+ process.exit(0);
59
+ }
42
60
  if (!files.length) {
43
61
  console.error(c__default["default"].red("No files specified."));
44
- cli.outputHelp();
62
+ cli.version(version).outputHelp();
45
63
  process.exit(1);
46
64
  }
47
65
  const serverOptions = options.options ? parseServerOptions(options.options) : {};
@@ -50,6 +68,9 @@ async function run(files, options = {}) {
50
68
  configFile: options.config,
51
69
  root: options.root,
52
70
  mode: options.mode,
71
+ server: {
72
+ hmr: !!options.watch
73
+ },
53
74
  plugins: [
54
75
  options.watch && hmr.viteNodeHmrPlugin()
55
76
  ]
package/dist/cli.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { f as ViteNodeServerOptions } from './types-516036fa.js';
1
+ import { f as ViteNodeServerOptions } from './types-e8623e9c.js';
2
2
  import 'vite/types/hot';
3
3
  import './types.d-7442d07f.js';
4
4
 
@@ -9,6 +9,8 @@ interface CliOptions {
9
9
  mode?: string;
10
10
  watch?: boolean;
11
11
  options?: ViteNodeServerOptionsCLI;
12
+ version?: boolean;
13
+ help?: boolean;
12
14
  '--'?: string[];
13
15
  }
14
16
  type Optional<T> = T | undefined;
package/dist/cli.mjs CHANGED
@@ -11,18 +11,27 @@ import 'node:fs';
11
11
  import 'pathe';
12
12
  import 'debug';
13
13
  import 'mlly';
14
+ import './constants.mjs';
14
15
  import 'node:url';
15
16
  import 'node:module';
16
17
  import 'node:path';
17
18
  import 'node:vm';
18
19
  import 'node:events';
19
20
 
20
- var version = "0.32.4";
21
+ var version = "0.34.0";
21
22
 
22
23
  const cli = cac("vite-node");
23
- cli.version(version).option("-r, --root <path>", "Use specified root directory").option("-c, --config <path>", "Use specified config file").option("-m, --mode <mode>", "Set env mode").option("-w, --watch", 'Restart on file changes, similar to "nodemon"').option("--script", "Use vite-node as a script runner").option("--options <options>", "Use specified Vite server options").help();
24
+ cli.option("-r, --root <path>", "Use specified root directory").option("-c, --config <path>", "Use specified config file").option("-m, --mode <mode>", "Set env mode").option("-w, --watch", 'Restart on file changes, similar to "nodemon"').option("--script", "Use vite-node as a script runner").option("--options <options>", "Use specified Vite server options").option("-v, --version", "Output the version number").option("-h, --help", "Display help for command");
24
25
  cli.command("[...files]").allowUnknownOptions().action(run);
25
- cli.parse();
26
+ cli.parse(process.argv, { run: false });
27
+ if (cli.args.length === 0) {
28
+ cli.runMatchedCommand();
29
+ } else {
30
+ const i = cli.rawArgs.indexOf(cli.args[0]) + 1;
31
+ const scriptArgs = cli.rawArgs.slice(i).filter((it) => it !== "--");
32
+ const executeArgs = [...cli.rawArgs.slice(0, i), "--", ...scriptArgs];
33
+ cli.parse(executeArgs);
34
+ }
26
35
  async function run(files, options = {}) {
27
36
  var _a;
28
37
  if (options.script) {
@@ -32,9 +41,18 @@ async function run(files, options = {}) {
32
41
  } else {
33
42
  process.argv = [...process.argv.slice(0, 2), ...options["--"] || []];
34
43
  }
44
+ if (options.version) {
45
+ cli.version(version);
46
+ cli.outputVersion();
47
+ process.exit(0);
48
+ }
49
+ if (options.help) {
50
+ cli.version(version).outputHelp();
51
+ process.exit(0);
52
+ }
35
53
  if (!files.length) {
36
54
  console.error(c.red("No files specified."));
37
- cli.outputHelp();
55
+ cli.version(version).outputHelp();
38
56
  process.exit(1);
39
57
  }
40
58
  const serverOptions = options.options ? parseServerOptions(options.options) : {};
@@ -43,6 +61,9 @@ async function run(files, options = {}) {
43
61
  configFile: options.config,
44
62
  root: options.root,
45
63
  mode: options.mode,
64
+ server: {
65
+ hmr: !!options.watch
66
+ },
46
67
  plugins: [
47
68
  options.watch && viteNodeHmrPlugin()
48
69
  ]
package/dist/client.cjs CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var module$1 = require('module');
6
6
  var path = require('path');
7
7
  var node_url = require('node:url');
8
- var vm = require('vm');
8
+ var vm = require('node:vm');
9
9
  var pathe = require('pathe');
10
10
  var createDebug = require('debug');
11
11
  var utils = require('./utils.cjs');
@@ -40,7 +40,7 @@ const debugExecute = createDebug__default["default"]("vite-node:client:execute")
40
40
  const debugNative = createDebug__default["default"]("vite-node:client:native");
41
41
  const clientStub = {
42
42
  injectQuery: (id) => id,
43
- createHotContext() {
43
+ createHotContext: () => {
44
44
  return {
45
45
  accept: () => {
46
46
  },
@@ -58,18 +58,9 @@ const clientStub = {
58
58
  }
59
59
  };
60
60
  },
61
- updateStyle(id, css) {
62
- if (typeof document === "undefined")
63
- return;
64
- const element = document.getElementById(id);
65
- if (element)
66
- element.remove();
67
- const head = document.querySelector("head");
68
- const style = document.createElement("style");
69
- style.setAttribute("type", "text/css");
70
- style.id = id;
71
- style.innerHTML = css;
72
- head == null ? void 0 : head.appendChild(style);
61
+ updateStyle: () => {
62
+ },
63
+ removeStyle: () => {
73
64
  }
74
65
  };
75
66
  const DEFAULT_REQUEST_STUBS = {
@@ -281,29 +272,30 @@ ${getStack()}`), 2e3);
281
272
  }
282
273
  if (transformed == null)
283
274
  throw new Error(`[vite-node] Failed to load "${id}" imported from ${callstack[callstack.length - 2]}`);
275
+ const { Object: Object2, Reflect: Reflect2, Symbol: Symbol2 } = this.getContextPrimitives();
284
276
  const modulePath = utils.cleanUrl(moduleId);
285
277
  const href = node_url.pathToFileURL(modulePath).href;
286
278
  const meta = { url: href };
287
- const exports = /* @__PURE__ */ Object.create(null);
288
- Object.defineProperty(exports, Symbol.toStringTag, {
279
+ const exports = Object2.create(null);
280
+ Object2.defineProperty(exports, Symbol2.toStringTag, {
289
281
  value: "Module",
290
282
  enumerable: false,
291
283
  configurable: false
292
284
  });
293
285
  const cjsExports = new Proxy(exports, {
294
286
  get: (target, p, receiver) => {
295
- if (Reflect.has(target, p))
296
- return Reflect.get(target, p, receiver);
297
- return Reflect.get(Object.prototype, p, receiver);
287
+ if (Reflect2.has(target, p))
288
+ return Reflect2.get(target, p, receiver);
289
+ return Reflect2.get(Object2.prototype, p, receiver);
298
290
  },
299
- getPrototypeOf: () => Object.prototype,
291
+ getPrototypeOf: () => Object2.prototype,
300
292
  set: (_, p, value) => {
301
293
  if (p === "default" && this.shouldInterop(modulePath, { default: value }) && cjsExports !== value) {
302
294
  exportAll(cjsExports, value);
303
295
  exports.default = value;
304
296
  return true;
305
297
  }
306
- if (!Reflect.has(exports, "default"))
298
+ if (!Reflect2.has(exports, "default"))
307
299
  exports.default = {};
308
300
  if (utils.isPrimitive(exports.default)) {
309
301
  defineExport(exports, p, () => void 0);
@@ -315,7 +307,7 @@ ${getStack()}`), 2e3);
315
307
  return true;
316
308
  }
317
309
  });
318
- Object.assign(mod, { code: transformed, exports });
310
+ Object2.assign(mod, { code: transformed, exports });
319
311
  const __filename = node_url.fileURLToPath(href);
320
312
  const moduleProxy = {
321
313
  set exports(value) {
@@ -328,11 +320,11 @@ ${getStack()}`), 2e3);
328
320
  };
329
321
  let hotContext;
330
322
  if (this.options.createHotContext) {
331
- Object.defineProperty(meta, "hot", {
323
+ Object2.defineProperty(meta, "hot", {
332
324
  enumerable: true,
333
325
  get: () => {
334
326
  var _a, _b;
335
- hotContext || (hotContext = (_b = (_a = this.options).createHotContext) == null ? void 0 : _b.call(_a, this, `/@fs/${fsPath}`));
327
+ hotContext || (hotContext = (_b = (_a = this.options).createHotContext) == null ? void 0 : _b.call(_a, this, moduleId));
336
328
  return hotContext;
337
329
  },
338
330
  set: (value) => {
@@ -357,16 +349,23 @@ ${getStack()}`), 2e3);
357
349
  debugExecute(__filename);
358
350
  if (transformed[0] === "#")
359
351
  transformed = transformed.replace(/^\#\!.*/, (s) => " ".repeat(s.length));
352
+ await this.runModule(context, transformed);
353
+ return exports;
354
+ }
355
+ getContextPrimitives() {
356
+ return { Object, Reflect, Symbol };
357
+ }
358
+ async runModule(context, transformed) {
360
359
  const codeDefinition = `'use strict';async (${Object.keys(context).join(",")})=>{{`;
361
360
  const code = `${codeDefinition}${transformed}
362
361
  }}`;
363
- const fn = vm__default["default"].runInThisContext(code, {
364
- filename: __filename,
362
+ const options = {
363
+ filename: context.__filename,
365
364
  lineOffset: 0,
366
365
  columnOffset: -codeDefinition.length
367
- });
366
+ };
367
+ const fn = vm__default["default"].runInThisContext(code, options);
368
368
  await fn(...Object.values(context));
369
- return exports;
370
369
  }
371
370
  prepareContext(context) {
372
371
  return context;
@@ -380,11 +379,14 @@ ${getStack()}`), 2e3);
380
379
  return false;
381
380
  return !path.endsWith(".mjs") && "default" in mod;
382
381
  }
382
+ importExternalModule(path) {
383
+ return (function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(t)); }); })(path);
384
+ }
383
385
  /**
384
386
  * Import a module and interop it
385
387
  */
386
388
  async interopedImport(path) {
387
- const importedModule = await (function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(t)); }); })(path);
389
+ const importedModule = await this.importExternalModule(path);
388
390
  if (!this.shouldInterop(path, importedModule))
389
391
  return importedModule;
390
392
  const { mod, defaultExport } = interopModule(importedModule);
@@ -439,7 +441,7 @@ function defineExport(exports, key, value) {
439
441
  function exportAll(exports, sourceModule) {
440
442
  if (exports === sourceModule)
441
443
  return;
442
- if (utils.isPrimitive(sourceModule) || Array.isArray(sourceModule))
444
+ if (utils.isPrimitive(sourceModule) || Array.isArray(sourceModule) || sourceModule instanceof Promise)
443
445
  return;
444
446
  for (const key in sourceModule) {
445
447
  if (key !== "default") {
package/dist/client.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import './types.d-7442d07f.js';
2
- export { i as DEFAULT_REQUEST_STUBS, M as ModuleCacheMap, h as ViteNodeRunner } from './types-516036fa.js';
2
+ export { i as DEFAULT_REQUEST_STUBS, M as ModuleCacheMap, h as ViteNodeRunner } from './types-e8623e9c.js';
3
3
  import 'vite/types/hot';