123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385 |
- import { createRequire } from 'module';
- import { pathToFileURL, fileURLToPath } from 'url';
- import vm from 'vm';
- import { a as resolve, d as dirname, i as isAbsolute, h as extname } from './chunk-constants.71e8a211.mjs';
- import { s as slash, n as normalizeRequestId, b as toFilePath, i as isNodeBuiltin, c as isPrimitive, d as normalizeModuleId, m as mergeSlashes } from './chunk-vite-node-utils.473cd0b2.mjs';
- import createDebug from 'debug';
- const debugExecute = createDebug("vite-node:client:execute");
- const debugNative = createDebug("vite-node:client:native");
- const DEFAULT_REQUEST_STUBS = {
- "/@vite/client": {
- injectQuery: (id) => id,
- createHotContext() {
- return {
- accept: () => {
- },
- prune: () => {
- },
- dispose: () => {
- },
- decline: () => {
- },
- invalidate: () => {
- },
- on: () => {
- }
- };
- },
- updateStyle(id, css) {
- if (typeof document === "undefined")
- return;
- const element = document.getElementById(id);
- if (element)
- element.remove();
- const head = document.querySelector("head");
- const style = document.createElement("style");
- style.setAttribute("type", "text/css");
- style.id = id;
- style.innerHTML = css;
- head == null ? void 0 : head.appendChild(style);
- }
- }
- };
- class ModuleCacheMap extends Map {
- normalizePath(fsPath) {
- return normalizeModuleId(fsPath);
- }
- update(fsPath, mod) {
- fsPath = this.normalizePath(fsPath);
- if (!super.has(fsPath))
- super.set(fsPath, mod);
- else
- Object.assign(super.get(fsPath), mod);
- return this;
- }
- set(fsPath, mod) {
- fsPath = this.normalizePath(fsPath);
- return super.set(fsPath, mod);
- }
- get(fsPath) {
- fsPath = this.normalizePath(fsPath);
- if (!super.has(fsPath))
- super.set(fsPath, {});
- return super.get(fsPath);
- }
- delete(fsPath) {
- fsPath = this.normalizePath(fsPath);
- return super.delete(fsPath);
- }
- invalidateDepTree(ids, invalidated = /* @__PURE__ */ new Set()) {
- for (const _id of ids) {
- const id = this.normalizePath(_id);
- if (invalidated.has(id))
- continue;
- invalidated.add(id);
- const mod = super.get(id);
- if (mod == null ? void 0 : mod.importers)
- this.invalidateDepTree(mod.importers, invalidated);
- super.delete(id);
- }
- return invalidated;
- }
- invalidateSubDepTree(ids, invalidated = /* @__PURE__ */ new Set()) {
- for (const _id of ids) {
- const id = this.normalizePath(_id);
- if (invalidated.has(id))
- continue;
- invalidated.add(id);
- const subIds = Array.from(super.entries()).filter(([, mod]) => {
- var _a;
- return (_a = mod.importers) == null ? void 0 : _a.has(id);
- }).map(([key]) => key);
- subIds.length && this.invalidateSubDepTree(subIds, invalidated);
- super.delete(id);
- }
- return invalidated;
- }
- }
- class ViteNodeRunner {
- constructor(options) {
- this.options = options;
- this.root = options.root ?? process.cwd();
- this.moduleCache = options.moduleCache ?? new ModuleCacheMap();
- this.debug = options.debug ?? (typeof process !== "undefined" ? !!process.env.VITE_NODE_DEBUG_RUNNER : false);
- }
- async executeFile(file) {
- return await this.cachedRequest(`/@fs/${slash(resolve(file))}`, []);
- }
- async executeId(id) {
- return await this.cachedRequest(id, []);
- }
- async cachedRequest(rawId, callstack) {
- const id = normalizeRequestId(rawId, this.options.base);
- const fsPath = toFilePath(id, this.root);
- const mod = this.moduleCache.get(fsPath);
- const importee = callstack[callstack.length - 1];
- if (!mod.importers)
- mod.importers = /* @__PURE__ */ new Set();
- if (importee)
- mod.importers.add(importee);
- if (callstack.includes(fsPath) && mod.exports)
- return mod.exports;
- if (mod.promise)
- return mod.promise;
- const promise = this.directRequest(id, fsPath, callstack);
- Object.assign(mod, { promise });
- return await promise;
- }
- async directRequest(id, fsPath, _callstack) {
- const callstack = [..._callstack, fsPath];
- const mod = this.moduleCache.get(fsPath);
- const request = async (dep) => {
- var _a;
- const depFsPath = toFilePath(normalizeRequestId(dep, this.options.base), this.root);
- const getStack = () => {
- return `stack:
- ${[...callstack, depFsPath].reverse().map((p) => `- ${p}`).join("\n")}`;
- };
- let debugTimer;
- if (this.debug)
- debugTimer = setTimeout(() => console.warn(() => `module ${depFsPath} takes over 2s to load.
- ${getStack()}`), 2e3);
- try {
- if (callstack.includes(depFsPath)) {
- const depExports = (_a = this.moduleCache.get(depFsPath)) == null ? void 0 : _a.exports;
- if (depExports)
- return depExports;
- throw new Error(`[vite-node] Failed to resolve circular dependency, ${getStack()}`);
- }
- return await this.cachedRequest(dep, callstack);
- } finally {
- if (debugTimer)
- clearTimeout(debugTimer);
- }
- };
- Object.defineProperty(request, "callstack", { get: () => callstack });
- const resolveId = async (dep, callstackPosition = 1) => {
- if (this.options.resolveId && this.shouldResolveId(dep)) {
- let importer = callstack[callstack.length - callstackPosition];
- if (importer && importer.startsWith("mock:"))
- importer = importer.slice(5);
- const { id: id2 } = await this.options.resolveId(dep, importer) || {};
- dep = id2 && isAbsolute(id2) ? mergeSlashes(`/@fs/${id2}`) : id2 || dep;
- }
- return dep;
- };
- id = await resolveId(id, 2);
- const requestStubs = this.options.requestStubs || DEFAULT_REQUEST_STUBS;
- if (id in requestStubs)
- return requestStubs[id];
- let { code: transformed, externalize } = await this.options.fetchModule(id);
- if (externalize) {
- debugNative(externalize);
- const exports2 = await this.interopedImport(externalize);
- mod.exports = exports2;
- return exports2;
- }
- if (transformed == null)
- throw new Error(`[vite-node] Failed to load ${id}`);
- const url = pathToFileURL(fsPath).href;
- const meta = { url };
- const exports = /* @__PURE__ */ Object.create(null);
- Object.defineProperty(exports, Symbol.toStringTag, {
- value: "Module",
- enumerable: false,
- configurable: false
- });
- const cjsExports = new Proxy(exports, {
- get(_, p, receiver) {
- return Reflect.get(exports, p, receiver);
- },
- set(_, p, value) {
- if (p !== "default") {
- if (!Reflect.has(exports, "default"))
- exports.default = {};
- if (exports.default === null || typeof exports.default !== "object") {
- defineExport(exports, p, () => void 0);
- return true;
- }
- exports.default[p] = value;
- defineExport(exports, p, () => value);
- return true;
- }
- return Reflect.set(exports, p, value);
- }
- });
- Object.assign(mod, { code: transformed, exports });
- const __filename = fileURLToPath(url);
- const moduleProxy = {
- set exports(value) {
- exportAll(cjsExports, value);
- cjsExports.default = value;
- },
- get exports() {
- return cjsExports;
- }
- };
- let hotContext;
- if (this.options.createHotContext) {
- Object.defineProperty(meta, "hot", {
- enumerable: true,
- get: () => {
- var _a, _b;
- hotContext || (hotContext = (_b = (_a = this.options).createHotContext) == null ? void 0 : _b.call(_a, this, `/@fs/${fsPath}`));
- return hotContext;
- }
- });
- }
- const context = this.prepareContext({
- __vite_ssr_import__: request,
- __vite_ssr_dynamic_import__: request,
- __vite_ssr_exports__: exports,
- __vite_ssr_exportAll__: (obj) => exportAll(exports, obj),
- __vite_ssr_import_meta__: meta,
- __vitest_resolve_id__: resolveId,
- require: createRequire(url),
- exports: cjsExports,
- module: moduleProxy,
- __filename,
- __dirname: dirname(__filename)
- });
- debugExecute(__filename);
- if (transformed[0] === "#")
- transformed = transformed.replace(/^\#\!.*/, (s) => " ".repeat(s.length));
- const fn = vm.runInThisContext(`'use strict';async (${Object.keys(context).join(",")})=>{{${transformed}
- }}`, {
- filename: fsPath,
- lineOffset: 0
- });
- await fn(...Object.values(context));
- return exports;
- }
- prepareContext(context) {
- return context;
- }
- shouldResolveId(dep) {
- if (isNodeBuiltin(dep) || dep in (this.options.requestStubs || DEFAULT_REQUEST_STUBS) || dep.startsWith("/@vite"))
- return false;
- return !isAbsolute(dep) || !extname(dep);
- }
- shouldInterop(path, mod) {
- if (this.options.interopDefault === false)
- return false;
- return !path.endsWith(".mjs") && "default" in mod;
- }
- async interopedImport(path) {
- const mod = await import(path);
- if (this.shouldInterop(path, mod)) {
- const tryDefault = this.hasNestedDefault(mod);
- return new Proxy(mod, {
- get: proxyMethod("get", tryDefault),
- set: proxyMethod("set", tryDefault),
- has: proxyMethod("has", tryDefault),
- deleteProperty: proxyMethod("deleteProperty", tryDefault)
- });
- }
- return mod;
- }
- hasNestedDefault(target) {
- return "__esModule" in target && target.__esModule && "default" in target.default;
- }
- }
- function proxyMethod(name, tryDefault) {
- return function(target, key, ...args) {
- const result = Reflect[name](target, key, ...args);
- if (isPrimitive(target.default))
- return result;
- if (tryDefault && key === "default" || typeof result === "undefined")
- return Reflect[name](target.default, key, ...args);
- return result;
- };
- }
- function defineExport(exports, key, value) {
- Object.defineProperty(exports, key, {
- enumerable: true,
- configurable: true,
- get: value
- });
- }
- function exportAll(exports, sourceModule) {
- if (exports === sourceModule)
- return;
- if (typeof sourceModule !== "object" || Array.isArray(sourceModule) || !sourceModule)
- return;
- for (const key in sourceModule) {
- if (key !== "default") {
- try {
- defineExport(exports, key, () => sourceModule[key]);
- } catch (_err) {
- }
- }
- }
- }
- const DEFAULT_TIMEOUT = 6e4;
- function createBirpc(functions, options) {
- const {
- post,
- on,
- eventNames = [],
- serialize = (i) => i,
- deserialize = (i) => i,
- timeout = DEFAULT_TIMEOUT
- } = options;
- const rpcPromiseMap = /* @__PURE__ */ new Map();
- const rpc = new Proxy({}, {
- get(_, method) {
- const sendEvent = (...args) => {
- post(serialize({ m: method, a: args, t: "q" }));
- };
- if (eventNames.includes(method)) {
- sendEvent.asEvent = sendEvent;
- return sendEvent;
- }
- const sendCall = (...args) => {
- return new Promise((resolve, reject) => {
- const id = nanoid();
- rpcPromiseMap.set(id, { resolve, reject });
- post(serialize({ m: method, a: args, i: id, t: "q" }));
- if (timeout >= 0) {
- setTimeout(() => {
- reject(new Error(`[birpc] timeout on calling "${method}"`));
- rpcPromiseMap.delete(id);
- }, timeout);
- }
- });
- };
- sendCall.asEvent = sendEvent;
- return sendCall;
- }
- });
- on(async (data, ...extra) => {
- const msg = deserialize(data);
- if (msg.t === "q") {
- const { m: method, a: args } = msg;
- let result, error;
- try {
- result = await functions[method].apply(rpc, args);
- } catch (e) {
- error = e;
- }
- if (msg.i)
- post(serialize({ t: "s", i: msg.i, r: result, e: error }), ...extra);
- } else {
- const { i: ack, r: result, e: error } = msg;
- const promise = rpcPromiseMap.get(ack);
- if (error)
- promise?.reject(error);
- else
- promise?.resolve(result);
- rpcPromiseMap.delete(ack);
- }
- });
- return rpc;
- }
- const urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
- function nanoid(size = 21) {
- let id = "";
- let i = size;
- while (i--)
- id += urlAlphabet[Math.random() * 64 | 0];
- return id;
- }
- export { ModuleCacheMap as M, ViteNodeRunner as V, createBirpc as c };
|